From c027f1b9cd6c9deb60931a7f9f75bb4ee130291b Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Sun, 18 Oct 2009 15:24:07 -0400 Subject: Added local highscore list You can now view and add to a local highscore list. A change to State was necessary due to how the user's name would be entered into the highscore list and thus all states have been modified. Refs #104 --- gamestate.cpp | 47 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 3 deletions(-) (limited to 'gamestate.cpp') diff --git a/gamestate.cpp b/gamestate.cpp index c312bfe..9a50b32 100644 --- a/gamestate.cpp +++ b/gamestate.cpp @@ -16,11 +16,11 @@ GameState::GameState() SDL_WM_SetCaption("Maze Of Life - Level 1", NULL); } -void GameState::input(SDLKey key) +void GameState::input(SDL_keysym key) { if (info.doneMaking) { - switch (key) + switch (key.sym) { case SDLK_LEFT: move(info.playerx-1, info.playery); @@ -39,7 +39,48 @@ void GameState::input(SDLKey key) break; case SDLK_ESCAPE: - changeState(new TitleState()); + std::ifstream exists(getDataFile()); + if (exists) + { + FILE* hslist = fopen(getDataFile(), "r"); + int scores; + Highscore* h; + + fscanf(hslist, "%d%*c", &scores); + + if (scores < 10) + { + fclose(hslist); + + changeState(new NewHighscoreState(info.level.getLevel())); + } else { + for (int i=0; igetLevel() < info.level.getLevel()) + { + changeState(new NewHighscoreState(info.level.getLevel())); + } else { + changeState(new LocalHighscoreListState(true)); + } + } + } else { + changeState(new NewHighscoreState(info.level.getLevel())); + } break; } -- cgit 1.4.1