diff options
author | Justin Worthe <justin.worthe@gmail.com> | 2015-06-03 22:11:59 +0200 |
---|---|---|
committer | Justin Worthe <justin.worthe@gmail.com> | 2015-06-03 22:11:59 +0200 |
commit | a197a92893cff416b63da359db8c8059c7f333bf (patch) | |
tree | 7ff3c908a73231edda1f2ba7308a98da599f9169 /src/game_state.cpp | |
parent | e42727977b3dab7aecff0ce8afa5b16abcd8b26b (diff) |
Added remaining objects for game state
Diffstat (limited to 'src/game_state.cpp')
-rw-r--r-- | src/game_state.cpp | 35 |
1 files changed, 28 insertions, 7 deletions
diff --git a/src/game_state.cpp b/src/game_state.cpp index 48a9e42..340bcd3 100644 --- a/src/game_state.cpp +++ b/src/game_state.cpp @@ -1,27 +1,48 @@ #include "game_state.h" #include <iostream> +#include <fstream> +#include <limits> const int OPENING_LINES = 6; const int GAME_AREA_LINES = 25; -GameState::GameState(std::istream& file) +GameState::GameState(std::string mapFilename) { + std::ifstream mapFile(mapFilename); for (int i=0; i<OPENING_LINES; ++i) { - file.ignore(numeric_limits<streamsize>::max(), '\n'); + mapFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); } - int x = -1; int y = 0; - char nextChar = ' '; - while (char nextChar = file.get()) + + for (int x=-1; y <= GAME_AREA_LINES; ++x) { - ++x; + char nextChar = mapFile.get(); + if (nextChar == EOF) + { + break; + } + switch (nextChar) { - case Alien.MAP_CHAR: + case Alien::MAP_CHAR: aliens.push_back(Alien(x,y)); break; + case EnemyBullet::ALIEN_MAP_CHAR: + case EnemyBullet::ENEMY_MISSILE_MAP_CHAR: + bullets.push_back(EnemyBullet(x,y)); + break; + case PlayerMissile::MAP_CHAR: + missiles.push_back(PlayerMissile(x,y)); + break; + case Shield::MAP_CHAR: + shields.push_back(Shield(x,y)); + break; + case Spaceship::ENEMY_MAP_CHAR: + case Spaceship::PLAYER_MAP_CHAR: + spaceships.push_back(Spaceship(x,y)); + break; case '\n': ++y; x = -1; |