Convert menu names to be an enum instead of being stringly-typed

Stringly-typed things are bad, because if you make a typo when typing
out a string, it's not caught at compile-time. And in the case of this
menu system, you'd have to do an excessive amount of testing to uncover
any bugs caused by a typo. Why do that when you can just use an enum and
catch compile-time errors instead?

Also, you can't use switch-case statements on stringly-typed variables.

So every menu name is now in the enum Menu::MenuName, but you can simply
refer to a menu name by just prefixing it with Menu::.

Unfortunately, I've had to change the "continue" menu name to be
"continuemenu", because "continue" is a keyword in C and C++. Also, it
looks like "timetrialcomplete4" is an unused menu name, even though it
was referenced in Render.cpp.
This commit is contained in:
Misa
2020-04-15 21:53:36 -07:00
committed by Ethan Lee
parent 83ca75a831
commit e8a07f9c3d
7 changed files with 324 additions and 269 deletions

View File

@@ -2183,11 +2183,11 @@ void editorclass::generatecustomminimap()
void editormenurender(int tr, int tg, int tb)
{
if (game.currentmenuname == "ed_settings")
if (game.currentmenuname == Menu::ed_settings)
{
graphics.bigprint( -1, 75, "Map Settings", tr, tg, tb, true);
}
else if (game.currentmenuname=="ed_desc")
else if (game.currentmenuname==Menu::ed_desc)
{
if(ed.titlemod)
{
@@ -2280,7 +2280,7 @@ void editormenurender(int tr, int tg, int tb)
graphics.Print( -1, 110, ed.Desc3, tr, tg, tb, true);
}
}
else if (game.currentmenuname == "ed_music")
else if (game.currentmenuname == Menu::ed_music)
{
graphics.bigprint( -1, 65, "Map Music", tr, tg, tb, true);
@@ -2328,7 +2328,7 @@ void editormenurender(int tr, int tg, int tb)
break;
}
}
else if (game.currentmenuname == "ed_quit")
else if (game.currentmenuname == Menu::ed_quit)
{
graphics.bigprint( -1, 90, "Save before", tr, tg, tb, true);
graphics.bigprint( -1, 110, "quitting?", tr, tg, tb, true);
@@ -3454,14 +3454,14 @@ void editorlogic()
map.nexttowercolour();
ed.settingsmod=false;
graphics.backgrounddrawn=false;
game.createmenu("mainmenu");
game.createmenu(Menu::mainmenu);
}
}
void editormenuactionpress()
{
if (game.currentmenuname == "ed_desc")
if (game.currentmenuname == Menu::ed_desc)
{
switch (game.currentmenuoption)
{
@@ -3491,19 +3491,19 @@ void editormenuactionpress()
break;
case 4:
music.playef(11);
game.createmenu("ed_settings");
game.createmenu(Menu::ed_settings);
map.nexttowercolour();
break;
}
}
else if (game.currentmenuname == "ed_settings")
else if (game.currentmenuname == Menu::ed_settings)
{
switch (game.currentmenuoption)
{
case 0:
//Change level description stuff
music.playef(11);
game.createmenu("ed_desc");
game.createmenu(Menu::ed_desc);
map.nexttowercolour();
break;
case 1:
@@ -3522,7 +3522,7 @@ void editormenuactionpress()
break;
case 2:
music.playef(11);
game.createmenu("ed_music");
game.createmenu(Menu::ed_music);
map.nexttowercolour();
if(ed.levmusic>0) music.play(ed.levmusic);
break;
@@ -3556,12 +3556,12 @@ void editormenuactionpress()
break;
case 5:
music.playef(11);
game.createmenu("ed_quit");
game.createmenu(Menu::ed_quit);
map.nexttowercolour();
break;
}
}
else if (game.currentmenuname == "ed_music")
else if (game.currentmenuname == Menu::ed_music)
{
switch (game.currentmenuoption)
{
@@ -3584,12 +3584,12 @@ void editormenuactionpress()
case 1:
music.playef(11);
music.fadeout();
game.createmenu("ed_settings");
game.createmenu(Menu::ed_settings);
map.nexttowercolour();
break;
}
}
else if (game.currentmenuname == "ed_quit")
else if (game.currentmenuname == Menu::ed_quit)
{
switch (game.currentmenuoption)
{
@@ -3618,7 +3618,7 @@ void editormenuactionpress()
case 2:
//Go back to editor
music.playef(11);
game.createmenu("ed_settings");
game.createmenu(Menu::ed_settings);
map.nexttowercolour();
break;
}
@@ -3701,7 +3701,7 @@ void editorinput()
ed.settingsmod=!ed.settingsmod;
graphics.backgrounddrawn=false;
game.createmenu("ed_settings");
game.createmenu(Menu::ed_settings);
map.nexttowercolour();
}
}