diff options
author | Star Rauchenberger <fefferburbia@gmail.com> | 2023-11-02 18:38:53 -0400 |
---|---|---|
committer | Star Rauchenberger <fefferburbia@gmail.com> | 2023-11-02 18:38:53 -0400 |
commit | a59fcafb2e81f3cb40ff320b106030e8fed4bd66 (patch) | |
tree | 7e7396a9422814365a5f903a53d7391d3e7b22fd /titlestate.cpp | |
parent | 45d6e635c880a7fae8711fba366519dd314d9faf (diff) | |
download | mazeoflife-a59fcafb2e81f3cb40ff320b106030e8fed4bd66.tar.gz mazeoflife-a59fcafb2e81f3cb40ff320b106030e8fed4bd66.tar.bz2 mazeoflife-a59fcafb2e81f3cb40ff320b106030e8fed4bd66.zip |
Diffstat (limited to 'titlestate.cpp')
-rw-r--r-- | titlestate.cpp | 182 |
1 files changed, 95 insertions, 87 deletions
diff --git a/titlestate.cpp b/titlestate.cpp index 166a55b..b68e8fa 100644 --- a/titlestate.cpp +++ b/titlestate.cpp | |||
@@ -1,116 +1,124 @@ | |||
1 | #include "titlestate.h" | 1 | #include "titlestate.h" |
2 | 2 | ||
3 | #include "gamestate.h" | 3 | #include "gamestate.h" |
4 | #include "hslist.h" | 4 | #include "hs_state.h" |
5 | #include "util.h" | 5 | #include "util.h" |
6 | 6 | ||
7 | State* TitleState::operator()(SDL_Window* window, SDL_Renderer* renderer) { | 7 | TitleState::TitleState(Game& game) { |
8 | SDL_Texture* background = loadImage(renderer, "resources/title.bmp"); | 8 | background_ = loadImage(game.renderer.get(), "resources/title.bmp"); |
9 | SDL_Texture* pointer = loadImage(renderer, "resources/pointer.bmp"); | 9 | pointer_ = loadImage(game.renderer.get(), "resources/pointer.bmp"); |
10 | int selection = 0; | 10 | } |
11 | |||
12 | std::unique_ptr<State> TitleState::operator()(Game& game) { | ||
11 | SDL_Event e; | 13 | SDL_Event e; |
12 | 14 | ||
13 | for (;;) { | 15 | SDL_RenderClear(game.renderer.get()); |
14 | SDL_RenderClear(renderer); | 16 | SDL_RenderCopy(game.renderer.get(), background_.get(), NULL, NULL); |
15 | SDL_RenderCopy(renderer, background, NULL, NULL); | 17 | applyTexture(game.renderer.get(), pointer_.get(), 136, |
16 | applyTexture(renderer, pointer, 136, | 18 | selection_ == 0 |
17 | selection == 0 | 19 | ? 316 |
18 | ? 316 | 20 | : (selection_ == 1 ? 350 : (selection_ == 2 ? 381 : 417))); |
19 | : (selection == 1 ? 350 : (selection == 2 ? 381 : 417))); | 21 | SDL_RenderPresent(game.renderer.get()); |
20 | SDL_RenderPresent(renderer); | 22 | |
21 | 23 | while (SDL_PollEvent(&e)) { | |
22 | while (SDL_PollEvent(&e)) { | 24 | if (e.type == SDL_QUIT) { |
23 | if (e.type == SDL_QUIT) { | 25 | game.should_quit = true; |
24 | return NULL; | 26 | break; |
25 | } else if (e.type == SDL_KEYDOWN) { | 27 | } else if (e.type == SDL_KEYDOWN) { |
26 | if ((e.key.keysym.sym == SDLK_UP) && (selection != 0)) { | 28 | if ((e.key.keysym.sym == SDLK_UP) && (selection_ != 0)) { |
27 | selection--; | 29 | selection_--; |
28 | } else if ((e.key.keysym.sym == SDLK_DOWN) && (selection != 3)) { | 30 | } else if ((e.key.keysym.sym == SDLK_DOWN) && (selection_ != 3)) { |
29 | selection++; | 31 | selection_++; |
30 | } else if (e.key.keysym.sym == SDLK_RETURN) { | 32 | } else if (e.key.keysym.sym == SDLK_RETURN) { |
31 | switch (selection) { | 33 | switch (selection_) { |
32 | case 0: | 34 | case 0: |
33 | return new GameState(); | 35 | return std::make_unique<GameState>(); |
34 | case 1: | 36 | case 1: |
35 | return new HowToPlayState(); | 37 | return std::make_unique<HowToPlayState>(game); |
36 | case 2: | 38 | case 2: |
37 | return new ChooseHighscoreListState(); | 39 | return std::make_unique<DisplayLocalHighscoreListState>(game); |
38 | case 3: | 40 | case 3: { |
39 | return NULL; | 41 | game.should_quit = true; |
42 | break; | ||
40 | } | 43 | } |
41 | } | 44 | } |
42 | } | 45 | } |
43 | } | 46 | } |
44 | } | 47 | } |
48 | |||
49 | return nullptr; | ||
45 | } | 50 | } |
46 | 51 | ||
47 | State* HowToPlayState::operator()(SDL_Window* window, SDL_Renderer* renderer) { | 52 | HowToPlayState::HowToPlayState(Game& game) { |
48 | SDL_Texture* background = loadImage(renderer, "resources/htp1.bmp"); | 53 | background_ = loadImage(game.renderer.get(), "resources/htp1.bmp"); |
49 | SDL_Texture* pointer = loadImage(renderer, "resources/pointer.bmp"); | 54 | pointer_ = loadImage(game.renderer.get(), "resources/pointer.bmp"); |
50 | int selection = 0; | 55 | } |
56 | |||
57 | std::unique_ptr<State> HowToPlayState::operator()(Game& game) { | ||
51 | SDL_Event e; | 58 | SDL_Event e; |
52 | 59 | ||
53 | for (;;) { | 60 | SDL_RenderClear(game.renderer.get()); |
54 | SDL_RenderClear(renderer); | 61 | SDL_RenderCopy(game.renderer.get(), background_.get(), NULL, NULL); |
55 | SDL_RenderCopy(renderer, background, NULL, NULL); | 62 | applyTexture(game.renderer.get(), pointer_.get(), selection_ == 0 ? 74 : 216, |
56 | applyTexture(renderer, pointer, selection == 0 ? 74 : 216, 430); | 63 | 430); |
57 | SDL_RenderPresent(renderer); | 64 | SDL_RenderPresent(game.renderer.get()); |
58 | 65 | ||
59 | while (SDL_PollEvent(&e)) { | 66 | while (SDL_PollEvent(&e)) { |
60 | if (e.type == SDL_QUIT) { | 67 | if (e.type == SDL_QUIT) { |
61 | return NULL; | 68 | game.should_quit = true; |
62 | } else if (e.type == SDL_KEYDOWN) { | 69 | break; |
63 | if ((e.key.keysym.sym == SDLK_LEFT) && (selection != 0)) { | 70 | } else if (e.type == SDL_KEYDOWN) { |
64 | selection--; | 71 | if ((e.key.keysym.sym == SDLK_LEFT) && (selection_ != 0)) { |
65 | } else if ((e.key.keysym.sym == SDLK_RIGHT) && (selection != 1)) { | 72 | selection_--; |
66 | selection++; | 73 | } else if ((e.key.keysym.sym == SDLK_RIGHT) && (selection_ != 1)) { |
67 | } else if (e.key.keysym.sym == SDLK_RETURN) { | 74 | selection_++; |
68 | switch (selection) { | 75 | } else if (e.key.keysym.sym == SDLK_RETURN) { |
69 | case 0: | 76 | switch (selection_) { |
70 | return new HowToPlayPageTwoState(); | 77 | case 0: |
71 | 78 | return std::make_unique<HowToPlayPageTwoState>(game); | |
72 | break; | 79 | case 1: |
73 | case 1: | 80 | return std::make_unique<TitleState>(game); |
74 | return new TitleState(); | ||
75 | } | ||
76 | } | 81 | } |
77 | } | 82 | } |
78 | } | 83 | } |
79 | } | 84 | } |
85 | |||
86 | return nullptr; | ||
87 | } | ||
88 | |||
89 | HowToPlayPageTwoState::HowToPlayPageTwoState(Game& game) { | ||
90 | background_ = loadImage(game.renderer.get(), "resources/htp2.bmp"); | ||
91 | pointer_ = loadImage(game.renderer.get(), "resources/pointer.bmp"); | ||
80 | } | 92 | } |
81 | 93 | ||
82 | State* HowToPlayPageTwoState::operator()(SDL_Window* window, | 94 | std::unique_ptr<State> HowToPlayPageTwoState::operator()(Game& game) { |
83 | SDL_Renderer* renderer) { | ||
84 | SDL_Texture* background = loadImage(renderer, "resources/htp2.bmp"); | ||
85 | SDL_Texture* pointer = loadImage(renderer, "resources/pointer.bmp"); | ||
86 | int selection = 0; | ||
87 | SDL_Event e; | 95 | SDL_Event e; |
88 | 96 | ||
89 | for (;;) { | 97 | SDL_RenderClear(game.renderer.get()); |
90 | SDL_RenderClear(renderer); | 98 | SDL_RenderCopy(game.renderer.get(), background_.get(), NULL, NULL); |
91 | SDL_RenderCopy(renderer, background, NULL, NULL); | 99 | applyTexture(game.renderer.get(), pointer_.get(), selection_ == 0 ? 45 : 238, |
92 | applyTexture(renderer, pointer, selection == 0 ? 45 : 238, 430); | 100 | 430); |
93 | SDL_RenderPresent(renderer); | 101 | SDL_RenderPresent(game.renderer.get()); |
94 | 102 | ||
95 | while (SDL_PollEvent(&e)) { | 103 | while (SDL_PollEvent(&e)) { |
96 | if (e.type == SDL_QUIT) { | 104 | if (e.type == SDL_QUIT) { |
97 | return NULL; | 105 | game.should_quit = true; |
98 | } else if (e.type == SDL_KEYDOWN) { | 106 | break; |
99 | if ((e.key.keysym.sym == SDLK_LEFT) && (selection != 0)) { | 107 | } else if (e.type == SDL_KEYDOWN) { |
100 | selection--; | 108 | if ((e.key.keysym.sym == SDLK_LEFT) && (selection_ != 0)) { |
101 | } else if ((e.key.keysym.sym == SDLK_RIGHT) && (selection != 1)) { | 109 | selection_--; |
102 | selection++; | 110 | } else if ((e.key.keysym.sym == SDLK_RIGHT) && (selection_ != 1)) { |
103 | } else if (e.key.keysym.sym == SDLK_RETURN) { | 111 | selection_++; |
104 | switch (selection) { | 112 | } else if (e.key.keysym.sym == SDLK_RETURN) { |
105 | case 0: | 113 | switch (selection_) { |
106 | return new HowToPlayState(); | 114 | case 0: |
107 | 115 | return std::make_unique<HowToPlayState>(game); | |
108 | break; | 116 | case 1: |
109 | case 1: | 117 | return std::make_unique<TitleState>(game); |
110 | return new TitleState(); | ||
111 | } | ||
112 | } | 118 | } |
113 | } | 119 | } |
114 | } | 120 | } |
115 | } | 121 | } |
122 | |||
123 | return nullptr; | ||
116 | } | 124 | } |