diff options
author | Justin Wernick <justin@worthe-it.co.za> | 2022-04-19 21:28:44 +0200 |
---|---|---|
committer | Justin Wernick <justin@worthe-it.co.za> | 2022-04-19 21:28:44 +0200 |
commit | dc01a3e25e6c4ef056467e36f876ebd68f3ade22 (patch) | |
tree | 2147462c4cbe9a7b0de59d13bb20c842e33f75a3 /2015-spacebot/include/game_state.h | |
parent | be89211af895548425be999f660a1195efe9fc8a (diff) | |
parent | 8eebf1079fbed2848ee47cf990f5def5926a0c1f (diff) |
Merge branch 'spacebot-main'
Diffstat (limited to '2015-spacebot/include/game_state.h')
-rw-r--r-- | 2015-spacebot/include/game_state.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/2015-spacebot/include/game_state.h b/2015-spacebot/include/game_state.h new file mode 100644 index 0000000..c129d28 --- /dev/null +++ b/2015-spacebot/include/game_state.h @@ -0,0 +1,44 @@ +#pragma once + +#include "alien.h" +#include "enemy_bullet.h" +#include "player_missile.h" +#include "shield.h" +#include "spaceship.h" +#include "building.h" +#include <vector> +#include <string> +#include <istream> +#include <memory> + +class GameState +{ +public: + GameState(std::istream &&mapFile); + void logState() const; + + const std::vector<Alien>& aliens() const { return _aliens; } + const std::vector<EnemyBullet>& bullets() const { return _bullets; } + const std::vector<PlayerMissile>& missiles() const { return _missiles; } + const std::vector<Shield>& shields() const { return _shields; } + const std::vector<Building>& missileControllers() const { return _missileControllers; } + const std::vector<Building>& alienFactories() const { return _alienFactories; } + + const std::unique_ptr<Spaceship>& playerSpaceship() const { return _playerSpaceship; } + const std::unique_ptr<Spaceship>& enemySpaceship() const { return _enemySpaceship; } + + std::vector<bool> toBitArray() const; + +private: + std::vector<Alien> _aliens; + std::vector<EnemyBullet> _bullets; + std::vector<PlayerMissile> _missiles; + std::vector<Shield> _shields; + std::vector<Building> _missileControllers; + std::vector<Building> _alienFactories; + + std::unique_ptr<Spaceship> _playerSpaceship; + std::unique_ptr<Spaceship> _enemySpaceship; + + int addEntity(int x, int y, char type); +}; |