diff options
Diffstat (limited to 'gamestate.cpp')
| -rw-r--r-- | gamestate.cpp | 47 |
1 files changed, 44 insertions, 3 deletions
| diff --git a/gamestate.cpp b/gamestate.cpp index c312bfe..9a50b32 100644 --- a/gamestate.cpp +++ b/gamestate.cpp | |||
| @@ -16,11 +16,11 @@ GameState::GameState() | |||
| 16 | SDL_WM_SetCaption("Maze Of Life - Level 1", NULL); | 16 | SDL_WM_SetCaption("Maze Of Life - Level 1", NULL); |
| 17 | } | 17 | } |
| 18 | 18 | ||
| 19 | void GameState::input(SDLKey key) | 19 | void GameState::input(SDL_keysym key) |
| 20 | { | 20 | { |
| 21 | if (info.doneMaking) | 21 | if (info.doneMaking) |
| 22 | { | 22 | { |
| 23 | switch (key) | 23 | switch (key.sym) |
| 24 | { | 24 | { |
| 25 | case SDLK_LEFT: | 25 | case SDLK_LEFT: |
| 26 | move(info.playerx-1, info.playery); | 26 | move(info.playerx-1, info.playery); |
| @@ -39,7 +39,48 @@ void GameState::input(SDLKey key) | |||
| 39 | 39 | ||
| 40 | break; | 40 | break; |
| 41 | case SDLK_ESCAPE: | 41 | case SDLK_ESCAPE: |
| 42 | changeState(new TitleState()); | 42 | std::ifstream exists(getDataFile()); |
| 43 | if (exists) | ||
| 44 | { | ||
| 45 | FILE* hslist = fopen(getDataFile(), "r"); | ||
| 46 | int scores; | ||
| 47 | Highscore* h; | ||
| 48 | |||
| 49 | fscanf(hslist, "%d%*c", &scores); | ||
| 50 | |||
| 51 | if (scores < 10) | ||
| 52 | { | ||
| 53 | fclose(hslist); | ||
| 54 | |||
| 55 | changeState(new NewHighscoreState(info.level.getLevel())); | ||
| 56 | } else { | ||
| 57 | for (int i=0; i<scores; i++) | ||
| 58 | { | ||
| 59 | int namelen; | ||
| 60 | char namelens[4]; | ||
| 61 | char* name = (char*) calloc(25, sizeof(char)); | ||
| 62 | int score; | ||
| 63 | |||
| 64 | fscanf(hslist, "%d", &namelen); | ||
| 65 | sprintf(namelens, "%%%dc", namelen); | ||
| 66 | fscanf(hslist, namelens, name); | ||
| 67 | fscanf(hslist, "%d%*c", &score); | ||
| 68 | |||
| 69 | h = new Highscore(name, score); | ||
| 70 | } | ||
| 71 | |||
| 72 | fclose(hslist); | ||
| 73 | |||
| 74 | if (h->getLevel() < info.level.getLevel()) | ||
| 75 | { | ||
| 76 | changeState(new NewHighscoreState(info.level.getLevel())); | ||
| 77 | } else { | ||
| 78 | changeState(new LocalHighscoreListState(true)); | ||
| 79 | } | ||
| 80 | } | ||
| 81 | } else { | ||
| 82 | changeState(new NewHighscoreState(info.level.getLevel())); | ||
| 83 | } | ||
| 43 | 84 | ||
| 44 | break; | 85 | break; |
| 45 | } | 86 | } |
