#pragma once #include "alien.h" #include "enemy_bullet.h" #include "player_missile.h" #include "shield.h" #include "spaceship.h" #include "building.h" #include #include #include #include class GameState { public: GameState(std::istream &&mapFile); void logState() const; const std::vector& aliens() const { return _aliens; } const std::vector& bullets() const { return _bullets; } const std::vector& missiles() const { return _missiles; } const std::vector& shields() const { return _shields; } const std::vector& missileControllers() const { return _missileControllers; } const std::vector& alienFactories() const { return _alienFactories; } const std::unique_ptr& playerSpaceship() const { return _playerSpaceship; } const std::unique_ptr& enemySpaceship() const { return _enemySpaceship; } std::vector toBitArray() const; private: std::vector _aliens; std::vector _bullets; std::vector _missiles; std::vector _shields; std::vector _missileControllers; std::vector _alienFactories; std::unique_ptr _playerSpaceship; std::unique_ptr _enemySpaceship; int addEntity(int x, int y, char type); };