BQubed
Member
I'm struggling with what should be easy but isn't for me. I have a real problem wrapping my head around arrays. Visualization issue I think. Currently I have everything functioning as it should with the exception of settings values. I can increment them but they ALL increment. I understand why this is happening but I simply don't know how to fix it. I'm going to link all my menu code because it's not much.
So I know that I all the setting values are changing because of
GML:
//Main Menu
menu[0,0] = "New Game";
menu[0,1] = "Continue";
menu[0,2] = "Settings";
menu[0,3] = "Quit";
//Settings Menu
menu[1,0] = "Sound FX";
menu[1,1] = "Music";
menu[1,2] = "Text Speed";
menu[1,3] = "Punctuation Pauses";
menu[1,4] = "Back";
//Settings Values
values[0] = ["10","20","30","40","50","60","70","80","90","100"];
values[1] = ["10","20","30","40","50","60","70","80","90","100"];
values[2] = ["Slow","Medium","Fast","Instant"];
values[3] = ["On","Off"];
values[4] = [];
index = 0;
sub_menu = 0;
value = 0;
GML:
//Input
var _key_right = keyboard_check_pressed(ord("D"));
var _key_left = keyboard_check_pressed(ord("A"));
var _key_down = keyboard_check_pressed(ord("S"));
var _key_up = keyboard_check_pressed(ord("W"));
var _key_select = keyboard_check_pressed(ord("E"));
var _move = (_key_down - _key_up)
var _modify = (_key_right - _key_left)
if (_move !=0)
{
index += _move;
//Loop through menu
var _size = array_length(menu[sub_menu])
if (index < 0) index = _size -1;
else if (index >= _size) index = 0;
}
if _key_select
{
switch(sub_menu)
{
case 0: switch(index)
{
case 0: room_goto(rCaraBedroom); break; //new game
case 1: show_message("Continue not yet coded"); break; //continue
case 2: sub_menu = 1; index = 0; break; //settings
case 3: game_end(); break; //quit
}
break;
}
switch(sub_menu)
{
case 1: switch(index)
{
case 4: sub_menu = 0; index = 0; break;//back
}
break;
}
}
if _key_right or _key_left
{
switch(sub_menu)
{
case 1: switch(index)
{
case 0: value += _modify; break; //sound
case 1: break; //music
case 2: break; //Text speed
case 3: break; //punctuation
}
break;
}
}
GML:
DrawSetTextMainMenu();
var _gap = 40;
var c = c_white;
//Draw Menu/Settings
for (var i = 0; i < array_length(menu[sub_menu]); i++)
{
if i == index { c = c_orange; }
else { c = c_white }
draw_text_color(145,70+(_gap * i),menu[sub_menu, i],c,c,c,c,1);
}
//Draw Values
if sub_menu == 1
{
for (var i = 0; i < 4; i++)
{
if i == index { c = c_orange; }
else { c = c_white }
draw_text_color(350,70+(_gap * i),values[i,value],c,c,c,c,1);
}
}
So I know that I all the setting values are changing because of
case 0: value += _modify; break; //sound
in the step event. I tried giving each setting it's own variable rather than making them all value[0] = etc...
but I still can't get it working properly. I'm pretty sure I need to have a separate array for selections or something like that but I just can't seem to get it to work.