LCOV - code coverage report
Current view: top level - src - game.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 4 4 100.0 %
Date: 2020-10-15 20:26:03 Functions: 2 2 100.0 %

          Line data    Source code
       1             : #ifndef game_hpp
       2             : #define game_hpp
       3             : 
       4             : #include "entity.h"
       5             : #include "event.h"
       6             : #include "mob.h"
       7             : #include "mobsystem.h"
       8             : #include "physics.h"
       9             : #include "physicssystem.h"
      10             : #include "rendersystem.h"
      11             : #include "system.h"
      12             : #include "util.h"
      13             : #include "window.h"
      14             : 
      15             : #include <deque>
      16             : #include <memory>
      17             : #include <string>
      18             : #include <utility>
      19             : 
      20           5 : class Game {
      21             : public:
      22             :     Game(Window& window);
      23             :     void setup();
      24             :     void queueEvent(const EvAny& ev);
      25             :     bool update();
      26             :     void render();
      27             : 
      28             :     vec2i worldCoord(vec2i screenCoord) const; // Map screen point to world point
      29             :     vec2i screenCoord(vec2i worldCoord) const; // Map world point to screen point
      30             :     bool onScreen(vec2i worldCoord) const;
      31             : 
      32       35140 :     char& groundTile(vec2i p) {
      33       35140 :         vec2i q{p.x - worldBounds.left, worldBounds.top - p.y};
      34       35140 :         return groundTiles_(q);
      35             :     }
      36             : 
      37             : public:
      38             :     Window& window;
      39             :     recti worldBounds{-64, 24, 128, 48};
      40             :     ident player{invalid_id};
      41             :     vec2i cameraPosition{0, 0};
      42             :     vec2i cameraTarget{0, 0};
      43             : 
      44             :     bool cameraShake = false;
      45             :     int cameraShakeTimer = 0;
      46             :     int cameraShakeStrength = 2;
      47             :     vec2i cameraShakeOffset{0, 0};
      48             :     int freezeTimer = 0;
      49             : 
      50             :     buffered_container<Entity> entities;
      51             :     buffered_container<Mob> mobs;
      52             :     buffered_container<Sprite> sprites;
      53             :     buffered_container<Physics> physics;
      54             : 
      55             : protected:
      56             :     int tick_ = 0;
      57             :     int subTick_ = 0;
      58             : 
      59             :     std::array<std::vector<EvAny>, 2> events_{};
      60             :     int eventsIndex_ = 0;
      61             : 
      62             :     std::deque<std::pair<std::string, int>> log_;
      63             : 
      64             :     Array2D<char> groundTiles_;
      65             : 
      66             :     std::deque<WindowEvent> windowEvents_;
      67             : 
      68             :     MobSystem mobSystem_;
      69             :     PhysicsSystem physicsSystem_;
      70             :     RenderSystem renderSystem_;
      71             :     std::vector<System*> systems_{
      72             :         &mobSystem_,
      73             :         &physicsSystem_,
      74             :         &renderSystem_,
      75             :     };
      76             : 
      77             :     void sync();
      78             :     void handleInput();
      79             :     void updatePlayer();
      80             :     void updateCamera();
      81             : 
      82             :     void log(const std::string message);
      83             : 
      84             :     // Factories
      85             :     Sprite& createSprite(std::string frames, bool animated, int frameRate, uint16_t fg, uint16_t bg,
      86             :                          vec2i position, RenderLayer layer);
      87             :     Mob& createMob(MobType type, vec2i position);
      88             :     void createBloodSplatter(vec2i position);
      89             :     void createBones(char c, vec2i position);
      90             : };
      91             : 
      92             : #endif

Generated by: LCOV version 1.13