summaryrefslogtreecommitdiff
path: root/src/game_state.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game_state.cpp')
-rw-r--r--src/game_state.cpp35
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;