From 3fa9af58bc907048a8ccadc2bef7736ec554a09d Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Tue, 5 Jun 2018 21:02:51 -0400 Subject: refactored so that the renderer is its own class --- src/game.h | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 src/game.h (limited to 'src/game.h') diff --git a/src/game.h b/src/game.h new file mode 100644 index 0000000..1142efb --- /dev/null +++ b/src/game.h @@ -0,0 +1,104 @@ +#ifndef GAME_H_7D2B65AE +#define GAME_H_7D2B65AE + +#include +#include +#include +#include +#include "map.h" + +const int GAME_WIDTH = 640*2; +const int GAME_HEIGHT = 480*2; +const int TILE_WIDTH = 8*2; +const int TILE_HEIGHT = TILE_WIDTH; +const int INIT_ZOOM = 10; +const int ZOOM_X_FACTOR = 8; +const int ZOOM_Y_FACTOR = 6; +const int RADIUS = 8; + +enum class Tile { + Floor, + Wall, + Dust, + Lamp +}; + +enum class Source { + None, + Dust, + Lamp, + Player +}; + +enum class LoseState { + None, + PoppingLamps, + PoppingPlayer, + Outro +}; + +struct Input { + bool left = false; + bool right = false; + bool up = false; + bool down = false; +}; + +using coord = std::tuple; + +struct Kickup { + int x; + int y; + size_t cur; + size_t radius; + size_t chain; + std::set done; + std::set front; +}; + +struct MapData { + Tile tile = Tile::Floor; + bool lit = false; + bool wasLit = false; + size_t dustLife = 0; + Source lightType = Source::None; + int lightRadius = 0; + std::set litTiles; +}; + +class Game { +public: + + Game(std::mt19937& rng) : + rng(rng), + map( + -INIT_ZOOM * ZOOM_X_FACTOR / 2, + -INIT_ZOOM * ZOOM_Y_FACTOR / 2, + INIT_ZOOM * ZOOM_X_FACTOR, + INIT_ZOOM * ZOOM_Y_FACTOR) + { + } + + std::mt19937& rng; + + Map map; + std::list kickups; + int litSpots = 0; + bool dirtyLighting = true; + size_t numLamps = 0; + size_t numDust = 0; + + int player_x = 0; + int player_y = 0; + bool renderPlayer = true; + + int curZoom = INIT_ZOOM; + int maxZoom = INIT_ZOOM; + + bool zooming = false; + //size_t oldZoom; + int zoomProgress = 0; + +}; + +#endif /* end of include guard: GAME_H_7D2B65AE */ -- cgit 1.4.1