Updated dialogue engine to work with external files
This commit is contained in:
parent
9ff4641278
commit
dc3f3496f3
|
@ -0,0 +1,24 @@
|
||||||
|
0
|
||||||
|
3 Wriggle
|
||||||
|
2 Mystia
|
||||||
|
"So, what are you up to?"
|
||||||
|
0
|
||||||
|
3 Wriggle
|
||||||
|
2 Mystia
|
||||||
|
"on this fine day of Tuesday"
|
||||||
|
1
|
||||||
|
1 Wriggle
|
||||||
|
2 Mystia
|
||||||
|
"not much my good binch"
|
||||||
|
1
|
||||||
|
1 Wriggle
|
||||||
|
2 Mystia
|
||||||
|
"just drinking my soup"
|
||||||
|
0
|
||||||
|
1 Wriggle
|
||||||
|
5 Mystia
|
||||||
|
"cool cool"
|
||||||
|
1
|
||||||
|
2 Wriggle
|
||||||
|
1 Mystia
|
||||||
|
"btw did you hear we're files now"
|
|
@ -0,0 +1,24 @@
|
||||||
|
0
|
||||||
|
3 Wriggle
|
||||||
|
2 Mystia
|
||||||
|
"So, what are you up to?"
|
||||||
|
0
|
||||||
|
3 Wriggle
|
||||||
|
2 Mystia
|
||||||
|
"on this fine day of Tuesday"
|
||||||
|
1
|
||||||
|
1 Wriggle
|
||||||
|
2 Mystia
|
||||||
|
"not much my good binch"
|
||||||
|
1
|
||||||
|
1 Wriggle
|
||||||
|
2 Mystia
|
||||||
|
"just drinking my soup"
|
||||||
|
0
|
||||||
|
1 Wriggle
|
||||||
|
5 Mystia
|
||||||
|
"cool cool"
|
||||||
|
1
|
||||||
|
2 Wriggle
|
||||||
|
1 Mystia
|
||||||
|
"btw did you hear we're files now"
|
|
@ -1,11 +1,11 @@
|
||||||
dialogue_flag = 0;
|
dialogue_mode = false;
|
||||||
dialogue_mode = true;
|
|
||||||
loopdoop = 0;
|
|
||||||
|
|
||||||
textspew = "";
|
textspew = "";
|
||||||
texttarget = "";
|
texttarget = "";
|
||||||
actor_left = "";
|
actor_left = "";
|
||||||
|
actor_left_emote = 0;
|
||||||
actor_right = "";
|
actor_right = "";
|
||||||
|
actor_right_emote = 0;
|
||||||
spewlength = 0;
|
spewlength = 0;
|
||||||
last_active = 0;
|
last_active = 0;
|
||||||
text_advance_ready = -1;
|
text_advance_ready = -1;
|
||||||
|
@ -13,31 +13,42 @@ text_advance_ready = -1;
|
||||||
name_test = ds_queue_create();
|
name_test = ds_queue_create();
|
||||||
text_test = ds_queue_create();
|
text_test = ds_queue_create();
|
||||||
active_test = ds_queue_create();
|
active_test = ds_queue_create();
|
||||||
|
emote_test = ds_queue_create();
|
||||||
|
|
||||||
if (dialogue_flag == 0) {
|
loopdoop = 0;
|
||||||
ds_queue_enqueue(name_test,
|
|
||||||
"", "",
|
//ds_queue_enqueue(name_test,
|
||||||
"Wriggle", "Mystia",
|
// "", "",
|
||||||
"Wriggle", "Mystia",
|
// "Wriggle", "Mystia",
|
||||||
"Wriggle", "Mystia",
|
// "Wriggle", "Mystia",
|
||||||
"Wriggle", "Mystia",
|
// "Wriggle", "Mystia",
|
||||||
"Wriggle", "Mystia"
|
// "Wriggle", "Mystia",
|
||||||
);
|
// "Wriggle", "Mystia"
|
||||||
ds_queue_enqueue(text_test,
|
// );
|
||||||
"",
|
//ds_queue_enqueue(text_test,
|
||||||
"So, what are you up to?",
|
// "",
|
||||||
"on this fine day of Tuesday",
|
// "So, what are you up to?",
|
||||||
"not much my good binch",
|
// "on this fine day of Tuesday",
|
||||||
"just drinking my soup",
|
// "not much my good binch",
|
||||||
"cool cool"
|
// "just drinking my soup",
|
||||||
);
|
// "cool cool"
|
||||||
ds_queue_enqueue(active_test,
|
// );
|
||||||
0,
|
//ds_queue_enqueue(active_test,
|
||||||
0,
|
// 0,
|
||||||
0,
|
// 0,
|
||||||
1,
|
// 0,
|
||||||
1,
|
// 1,
|
||||||
0
|
// 1,
|
||||||
);
|
// 0
|
||||||
dialogue_flag++;
|
// );
|
||||||
}
|
//
|
||||||
|
//ds_queue_enqueue(emote_test,
|
||||||
|
// 3, 2,
|
||||||
|
// 3, 2,
|
||||||
|
// 1, 2,
|
||||||
|
// 1, 2,
|
||||||
|
// 1, 2,
|
||||||
|
// 1, 5
|
||||||
|
// );
|
||||||
|
|
||||||
|
scr_dialogue_start( "dialogue_test.txt" );
|
|
@ -4,20 +4,28 @@ if (dialogue_mode) {
|
||||||
// draw_sprite_ext( actor_left
|
// draw_sprite_ext( actor_left
|
||||||
//TODO: Draw right active character, transparent if "last active"
|
//TODO: Draw right active character, transparent if "last active"
|
||||||
// draw_sprite_ext( actor_right
|
// draw_sprite_ext( actor_right
|
||||||
|
draw_text( 128, 320, actor_left_emote );
|
||||||
|
draw_text( 1000, 320, actor_right_emote );
|
||||||
|
|
||||||
// Draw dialogue box
|
// Draw dialogue box
|
||||||
draw_self();
|
draw_self();
|
||||||
|
|
||||||
//TODO: Draw current active character's name
|
//TODO: Draw current active character's name
|
||||||
|
draw_set_alpha(1);
|
||||||
if ( last_active == 0 ) {
|
if ( last_active == 0 ) {
|
||||||
draw_text( 128, 640, actor_left );
|
draw_set_alpha(.5);
|
||||||
|
}
|
||||||
|
draw_set_halign( fa_right );
|
||||||
|
draw_text( 1080, 640, actor_right );
|
||||||
|
draw_set_halign( fa_left );
|
||||||
|
|
||||||
}
|
draw_set_alpha(1);
|
||||||
if ( last_active == 1 ) {
|
if ( last_active == 1 ) {
|
||||||
draw_set_halign( fa_right );
|
draw_set_alpha(.5);
|
||||||
draw_text( 1080, 640, actor_right );
|
|
||||||
draw_set_halign( fa_left );
|
|
||||||
}
|
}
|
||||||
|
draw_text( 128, 640, actor_left );
|
||||||
|
|
||||||
|
draw_set_alpha(1);
|
||||||
|
|
||||||
//TODO: Draw current active character's text, adding one character at a time
|
//TODO: Draw current active character's text, adding one character at a time
|
||||||
draw_text( 128, 480, textspew );
|
draw_text( 128, 480, textspew );
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
if (dialogue_mode) {
|
if (dialogue_mode) {
|
||||||
if (text_advance_ready == -1 && !ds_queue_empty(name_test) && !ds_queue_empty(name_test) && !ds_queue_empty(active_test)) {
|
if (text_advance_ready == -1 && !ds_queue_empty(name_test) && !ds_queue_empty(name_test) && !ds_queue_empty(active_test) && !ds_queue_empty(emote_test)) {
|
||||||
text_advance_ready = 0;
|
text_advance_ready = 0;
|
||||||
actor_left = ds_queue_dequeue(name_test);
|
actor_left = ds_queue_dequeue(name_test);
|
||||||
|
actor_left_emote = ds_queue_dequeue(emote_test);
|
||||||
actor_right = "";
|
actor_right = "";
|
||||||
if (!ds_queue_empty(name_test)) {
|
if (!ds_queue_empty(name_test) && !ds_queue_empty(emote_test)) {
|
||||||
actor_right = ds_queue_dequeue(name_test);
|
actor_right = ds_queue_dequeue(name_test);
|
||||||
|
actor_right_emote = ds_queue_dequeue(emote_test);
|
||||||
}
|
}
|
||||||
texttarget = ds_queue_dequeue(text_test);
|
texttarget = ds_queue_dequeue(text_test);
|
||||||
textspew = "";
|
textspew = "";
|
||||||
|
@ -27,7 +29,7 @@ if (dialogue_mode) {
|
||||||
if (text_advance_ready == 1) {
|
if (text_advance_ready == 1) {
|
||||||
if (keyboard_check_pressed( ord("Z") ) ) {
|
if (keyboard_check_pressed( ord("Z") ) ) {
|
||||||
text_advance_ready = -1;
|
text_advance_ready = -1;
|
||||||
if (ds_queue_empty(name_test) || ds_queue_empty(text_test) || ds_queue_empty(active_test)) {
|
if (ds_queue_empty(name_test) || ds_queue_empty(text_test) || ds_queue_empty(active_test) || ds_queue_empty(emote_test)) {
|
||||||
dialogue_mode = false;
|
dialogue_mode = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
/// @function: scr_dialogue_start( _filename );
|
||||||
|
/// @param {string} _filename The filename of the dialogue branch
|
||||||
|
|
||||||
|
// Requirements: An instance of obj_dialogue
|
||||||
|
|
||||||
|
function scr_dialogue_start( _filename ) {
|
||||||
|
if (!instance_exists(obj_dialogue) ) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//file format for dialogue:
|
||||||
|
/*
|
||||||
|
last_active {int} active_test
|
||||||
|
actor_left_emote {int} emote_test
|
||||||
|
actor_left {string} name_test
|
||||||
|
actor_right_emote {int} emote_test
|
||||||
|
actor_right {string} name_test
|
||||||
|
texttarget {string} text_test
|
||||||
|
|
||||||
|
repeat until EOF
|
||||||
|
*/
|
||||||
|
|
||||||
|
//clear all queues
|
||||||
|
ds_queue_clear( obj_dialogue.active_test );
|
||||||
|
ds_queue_clear( obj_dialogue.emote_test );
|
||||||
|
ds_queue_clear( obj_dialogue.name_test );
|
||||||
|
ds_queue_clear( obj_dialogue.text_test );
|
||||||
|
|
||||||
|
//open dialogue file matching _filename
|
||||||
|
file = file_text_open_read( _filename );
|
||||||
|
|
||||||
|
//enqueue dialogue
|
||||||
|
while (!file_text_eof(file) ) {
|
||||||
|
ds_queue_enqueue( obj_dialogue.active_test, file_text_read_real(file) );
|
||||||
|
file_text_readln(file);
|
||||||
|
ds_queue_enqueue( obj_dialogue.emote_test, file_text_read_real(file) );
|
||||||
|
ds_queue_enqueue( obj_dialogue.name_test, file_text_read_string(file) );
|
||||||
|
file_text_readln(file);
|
||||||
|
ds_queue_enqueue( obj_dialogue.emote_test, file_text_read_real(file) );
|
||||||
|
ds_queue_enqueue( obj_dialogue.name_test, file_text_read_string(file) );
|
||||||
|
file_text_readln(file);
|
||||||
|
ds_queue_enqueue( obj_dialogue.text_test, file_text_read_string(file) );
|
||||||
|
file_text_readln(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
//close dialogue file
|
||||||
|
file_text_close( file );
|
||||||
|
|
||||||
|
//enter dialogue mode and set variables
|
||||||
|
obj_dialogue.dialogue_mode = true;
|
||||||
|
obj_dialogue.textspew = "";
|
||||||
|
obj_dialogue.texttarget = "";
|
||||||
|
obj_dialogue.actor_left = "";
|
||||||
|
obj_dialogue.actor_left_emote = 0;
|
||||||
|
obj_dialogue.actor_right = "";
|
||||||
|
obj_dialogue.actor_right_emote = 0;
|
||||||
|
obj_dialogue.spewlength = 0;
|
||||||
|
obj_dialogue.last_active = 0;
|
||||||
|
obj_dialogue.text_advance_ready = -1;
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"isDnD": false,
|
||||||
|
"isCompatibility": false,
|
||||||
|
"parent": {
|
||||||
|
"name": "thpj3",
|
||||||
|
"path": "thpj3.yyp",
|
||||||
|
},
|
||||||
|
"resourceVersion": "1.0",
|
||||||
|
"name": "scr_dialogue_start",
|
||||||
|
"tags": [],
|
||||||
|
"resourceType": "GMScript",
|
||||||
|
}
|
|
@ -6,6 +6,7 @@
|
||||||
{"id":{"name":"Sprite7","path":"sprites/Sprite7/Sprite7.yy",},"order":9,},
|
{"id":{"name":"Sprite7","path":"sprites/Sprite7/Sprite7.yy",},"order":9,},
|
||||||
{"id":{"name":"obj_title_moon","path":"objects/obj_title_moon/obj_title_moon.yy",},"order":1,},
|
{"id":{"name":"obj_title_moon","path":"objects/obj_title_moon/obj_title_moon.yy",},"order":1,},
|
||||||
{"id":{"name":"spr_title_star","path":"sprites/spr_title_star/spr_title_star.yy",},"order":8,},
|
{"id":{"name":"spr_title_star","path":"sprites/spr_title_star/spr_title_star.yy",},"order":8,},
|
||||||
|
{"id":{"name":"scr_dialogue_start","path":"scripts/scr_dialogue_start/scr_dialogue_start.yy",},"order":10,},
|
||||||
{"id":{"name":"rm_disclaimer","path":"rooms/rm_disclaimer/rm_disclaimer.yy",},"order":3,},
|
{"id":{"name":"rm_disclaimer","path":"rooms/rm_disclaimer/rm_disclaimer.yy",},"order":3,},
|
||||||
{"id":{"name":"obj_title_text","path":"objects/obj_title_text/obj_title_text.yy",},"order":4,},
|
{"id":{"name":"obj_title_text","path":"objects/obj_title_text/obj_title_text.yy",},"order":4,},
|
||||||
{"id":{"name":"spr_title_bg","path":"sprites/spr_title_bg/spr_title_bg.yy",},"order":6,},
|
{"id":{"name":"spr_title_bg","path":"sprites/spr_title_bg/spr_title_bg.yy",},"order":6,},
|
||||||
|
@ -49,7 +50,9 @@
|
||||||
"TextureGroups": [
|
"TextureGroups": [
|
||||||
{"isScaled":true,"autocrop":true,"border":2,"mipsToGenerate":0,"groupParent":null,"targets":-1,"resourceVersion":"1.3","name":"Default","resourceType":"GMTextureGroup",},
|
{"isScaled":true,"autocrop":true,"border":2,"mipsToGenerate":0,"groupParent":null,"targets":-1,"resourceVersion":"1.3","name":"Default","resourceType":"GMTextureGroup",},
|
||||||
],
|
],
|
||||||
"IncludedFiles": [],
|
"IncludedFiles": [
|
||||||
|
{"CopyToMask":153157610357391598,"filePath":"datafiles","resourceVersion":"1.0","name":"dialogue_test.txt","resourceType":"GMIncludedFile",},
|
||||||
|
],
|
||||||
"MetaData": {
|
"MetaData": {
|
||||||
"IDEVersion": "2.3.2.560",
|
"IDEVersion": "2.3.2.560",
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue