diff options
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); +}; |