#include "titlestate.h" #include "gamestate.h" #include "hs_state.h" #include "util.h" TitleState::TitleState(Game& game) { background_ = loadImage(game.renderer.get(), "resources/title.bmp"); pointer_ = loadImage(game.renderer.get(), "resources/pointer.bmp"); } std::unique_ptr TitleState::operator()(Game& game) { SDL_Event e; SDL_RenderClear(game.renderer.get()); SDL_RenderCopy(game.renderer.get(), background_.get(), NULL, NULL); applyTexture(game.renderer.get(), pointer_.get(), 136, selection_ == 0 ? 316 : (selection_ == 1 ? 350 : (selection_ == 2 ? 381 : 417))); SDL_RenderPresent(game.renderer.get()); while (SDL_PollEvent(&e)) { if (e.type == SDL_QUIT) { game.should_quit = true; break; } else if (e.type == SDL_KEYDOWN) { if ((e.key.keysym.sym == SDLK_UP) && (selection_ != 0)) { selection_--; } else if ((e.key.keysym.sym == SDLK_DOWN) && (selection_ != 3)) { selection_++; } else if (e.key.keysym.sym == SDLK_RETURN) { switch (selection_) { case 0: return std::make_unique(); case 1: return std::make_unique(game); case 2: return std::make_unique(game); case 3: { game.should_quit = true; break; } } } } } return nullptr; } HowToPlayState::HowToPlayState(Game& game) { background_ = loadImage(game.renderer.get(), "resources/htp1.bmp"); pointer_ = loadImage(game.renderer.get(), "resources/pointer.bmp"); } std::unique_ptr HowToPlayState::operator()(Game& game) { SDL_Event e; SDL_RenderClear(game.renderer.get()); SDL_RenderCopy(game.renderer.get(), background_.get(), NULL, NULL); applyTexture(game.renderer.get(), pointer_.get(), selection_ == 0 ? 74 : 216, 430); SDL_RenderPresent(game.renderer.get()); while (SDL_PollEvent(&e)) { if (e.type == SDL_QUIT) { game.should_quit = true; break; } else if (e.type == SDL_KEYDOWN) { if ((e.key.keysym.sym == SDLK_LEFT) && (selection_ != 0)) { selection_--; } else if ((e.key.keysym.sym == SDLK_RIGHT) && (selection_ != 1)) { selection_++; } else if (e.key.keysym.sym == SDLK_RETURN) { switch (selection_) { case 0: return std::make_unique(game); case 1: return std::make_unique(game); } } } } return nullptr; } HowToPlayPageTwoState::HowToPlayPageTwoState(Game& game) { background_ = loadImage(game.renderer.get(), "resources/htp2.bmp"); pointer_ = loadImage(game.renderer.get(), "resources/pointer.bmp"); } std::unique_ptr HowToPlayPageTwoState::operator()(Game& game) { SDL_Event e; SDL_RenderClear(game.renderer.get()); SDL_RenderCopy(game.renderer.get(), background_.get(), NULL, NULL); applyTexture(game.renderer.get(), pointer_.get(), selection_ == 0 ? 45 : 238, 430); SDL_RenderPresent(game.renderer.get()); while (SDL_PollEvent(&e)) { if (e.type == SDL_QUIT) { game.should_quit = true; break; } else if (e.type == SDL_KEYDOWN) { if ((e.key.keysym.sym == SDLK_LEFT) && (selection_ != 0)) { selection_--; } else if ((e.key.keysym.sym == SDLK_RIGHT) && (selection_ != 1)) { selection_++; } else if (e.key.keysym.sym == SDLK_RETURN) { switch (selection_) { case 0: return std::make_unique(game); case 1: return std::make_unique(game); } } } } return nullptr; }