#include "fns.h"
#include <string>
+Game::Game() : mCurrentLevel(0), mScreen(0)
+{
+}
+Game::Game(SDL_Surface* screen) : mCurrentLevel(0), mScreen(screen)
+{
+}
+
+Game::~Game()
+{
+}
+
+Level* Game::getCurrentLevel() {
+ if (mCurrentLevel < mLevels.size()) {
+ return mLevels[mCurrentLevel];
+ } else {
+ return NULL;
+ }
+}
+
+int Game::getLevelIndex() {
+ return mCurrentLevel;
+}
-#ifndef GAME
-#define GAME
+#ifndef __GAME_H__
+#define __GAME_H__
+
#include "Level.h"
+
#include <vector>
#include <string>
-using namespace std;
+/**
+ High-level controller for the game
+
+ This class is tasked with the following:
+ - creating the SDL screen
+ - loading levels from appropriate locations
+ - switching levels as appropriate
+ */
class Game
{
- public:
- Game():mCurrentLevel(0) {}
- Game(SDL_Surface *screen):mCurrentLevel(0),screen(screen) {}
- ~Game() {}
- void addLevel(Level level);
- void removeLevel(string levelName);
- void loadLevel(string levelName);
- int currentLevel(){ return mCurrentLevel; } bool init();
+public:
+ Game();
+ Game(SDL_Surface *screen);
+ ~Game();
+
+ /**
+ Gets the current level being played.
+ \return current level
+ */
+ Level* getCurrentLevel();
+
+ /**
+ Gets the index of the current level being played.
+ \return index of the current level
+ */
+ int getLevelIndex();
- private:
- int mCurrentLevel;
- std::vector<Level> mLevels;
- SDL_Surface *screen;
+private:
+ int mCurrentLevel; /**< current index */
+ std::vector<Level*> mLevels;
+ SDL_Surface *mScreen;
+
+ void addLevel(Level level);
+ void removeLevel(std::string levelName);
+ void loadLevel(std::string levelName);
};
+
#endif