I don't see how that even compiles
this line
int main(GameMode GAMEMODE = Menu) {
seems like it should not work at all
main is supposed to look like this
https://wwwx.cs.unc.edu/~sparkst/howto/cpp_main.php or this for more details (read the one with 97 answers and marked with a Green check mark)
http://stackoverflow.com/questions/4207134/what-is-the-proper-declaration-of-main the purpose of main is to supply an argument (some information) to your program
so if your program is named my_first_game.exe
and your game had a little Italian running around and you wanted to give him a custom name when the program starts you could type
my_first_game.exe Mario
and his name would be Mario
or
my_first_game.exe George
and his name would be George
you could even do
my_first_game.exe Mario 10
and his name would be Mario
and he would have 10 health
but you're supposed to pass strings (or things that can be converted to strings)
I guess an enum can be converted to a string
but main is supposed to receive an array of strings
not an enum