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 = true;
|
||||
loopdoop = 0;
|
||||
dialogue_mode = false;
|
||||
|
||||
textspew = "";
|
||||
texttarget = "";
|
||||
actor_left = "";
|
||||
actor_left_emote = 0;
|
||||
actor_right = "";
|
||||
actor_right_emote = 0;
|
||||
spewlength = 0;
|
||||
last_active = 0;
|
||||
text_advance_ready = -1;
|
||||
|
@ -13,31 +13,42 @@ text_advance_ready = -1;
|
|||
name_test = ds_queue_create();
|
||||
text_test = ds_queue_create();
|
||||
active_test = ds_queue_create();
|
||||
emote_test = ds_queue_create();
|
||||
|
||||
if (dialogue_flag == 0) {
|
||||
ds_queue_enqueue(name_test,
|
||||
"", "",
|
||||
"Wriggle", "Mystia",
|
||||
"Wriggle", "Mystia",
|
||||
"Wriggle", "Mystia",
|
||||
"Wriggle", "Mystia",
|
||||
"Wriggle", "Mystia"
|
||||
);
|
||||
ds_queue_enqueue(text_test,
|
||||
"",
|
||||
"So, what are you up to?",
|
||||
"on this fine day of Tuesday",
|
||||
"not much my good binch",
|
||||
"just drinking my soup",
|
||||
"cool cool"
|
||||
);
|
||||
ds_queue_enqueue(active_test,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
0
|
||||
);
|
||||
dialogue_flag++;
|
||||
}
|
||||
loopdoop = 0;
|
||||
|
||||
//ds_queue_enqueue(name_test,
|
||||
// "", "",
|
||||
// "Wriggle", "Mystia",
|
||||
// "Wriggle", "Mystia",
|
||||
// "Wriggle", "Mystia",
|
||||
// "Wriggle", "Mystia",
|
||||
// "Wriggle", "Mystia"
|
||||
// );
|
||||
//ds_queue_enqueue(text_test,
|
||||
// "",
|
||||
// "So, what are you up to?",
|
||||
// "on this fine day of Tuesday",
|
||||
// "not much my good binch",
|
||||
// "just drinking my soup",
|
||||
// "cool cool"
|
||||
// );
|
||||
//ds_queue_enqueue(active_test,
|
||||
// 0,
|
||||
// 0,
|
||||
// 0,
|
||||
// 1,
|
||||
// 1,
|
||||
// 0
|
||||
// );
|
||||
//
|
||||
//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
|
||||
//TODO: Draw right active character, transparent if "last active"
|
||||
// draw_sprite_ext( actor_right
|
||||
draw_text( 128, 320, actor_left_emote );
|
||||
draw_text( 1000, 320, actor_right_emote );
|
||||
|
||||
// Draw dialogue box
|
||||
draw_self();
|
||||
|
||||
//TODO: Draw current active character's name
|
||||
draw_set_alpha(1);
|
||||
if ( last_active == 0 ) {
|
||||
draw_text( 128, 640, actor_left );
|
||||
|
||||
draw_set_alpha(.5);
|
||||
}
|
||||
if ( last_active == 1 ) {
|
||||
draw_set_halign( fa_right );
|
||||
draw_text( 1080, 640, actor_right );
|
||||
draw_set_halign( fa_left );
|
||||
|
||||
draw_set_alpha(1);
|
||||
if ( last_active == 1 ) {
|
||||
draw_set_alpha(.5);
|
||||
}
|
||||
draw_text( 128, 640, actor_left );
|
||||
|
||||
draw_set_alpha(1);
|
||||
|
||||
//TODO: Draw current active character's text, adding one character at a time
|
||||
draw_text( 128, 480, textspew );
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
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;
|
||||
actor_left = ds_queue_dequeue(name_test);
|
||||
actor_left_emote = ds_queue_dequeue(emote_test);
|
||||
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_emote = ds_queue_dequeue(emote_test);
|
||||
}
|
||||
texttarget = ds_queue_dequeue(text_test);
|
||||
textspew = "";
|
||||
|
@ -27,7 +29,7 @@ if (dialogue_mode) {
|
|||
if (text_advance_ready == 1) {
|
||||
if (keyboard_check_pressed( ord("Z") ) ) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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":"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":"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":"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,},
|
||||
|
@ -49,7 +50,9 @@
|
|||
"TextureGroups": [
|
||||
{"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": {
|
||||
"IDEVersion": "2.3.2.560",
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue