Source

zorkish / ZorkishGame.hpp

Full commit
/*
 * ZorkishGame.hpp
 *
 *  Created on: 24/08/2012
 *      Author: rhys
 */

#ifndef ZORKISH_HPP_
#define ZORKISH_HPP_

#include <memory>
#include "ActiveStageManager.hpp"

class AboutStage;
class HallOfFameStage;
class HelpStage;
class HighScoreStage;
class MainMenuStage;
class SelectAdventureStage;
class AdventureStage;

class ZorkishGame {
private:
    ActiveStageManager smgr;
    std::unique_ptr<AboutStage> about_stg;
    std::unique_ptr<HallOfFameStage> hall_of_fame_stg;
    std::unique_ptr<HelpStage> help_stg;
    std::unique_ptr<HighScoreStage> high_score_stg;
    std::unique_ptr<MainMenuStage> main_menu_stg;
    std::unique_ptr<SelectAdventureStage> select_adv_stg;
    std::unique_ptr<AdventureStage> test_adv_stg;

public:
    ZorkishGame();
    ~ZorkishGame();

    ActiveStageManager& stage_manager();

    const std::unique_ptr<AboutStage>& about();
    const std::unique_ptr<HallOfFameStage>& hall_of_fame();
    const std::unique_ptr<HelpStage>& help();
    const std::unique_ptr<HighScoreStage>& high_score();
    const std::unique_ptr<MainMenuStage>& main_menu();
    const std::unique_ptr<SelectAdventureStage>& select_adventure();
    const std::unique_ptr<AdventureStage>& adventure();
};

#endif /* ZORKISH_HPP_ */