#ifndef __CC3K_H__ #define __CC3K_H__ #include #include "input.h" #include "output.h" #include "game.h" #include "menu.h" #include "result.h" class CC3K final { private: static const int DEFAULT_LVL_CNT = 5; const feature enabled_features; input *in; output *out; RNG *rng; game_result gresult; std::unique_ptr curr_game; std::unique_ptr curr_menu; std::vector lvls; void proc_lvls(std::ifstream &data); void push_tile(const char ch, const position &pos, level_data &lvl); void number_rooms(level_data &lvl); size_t remap_pos(const position &pos); void number_block(std::string &map_data, const position &pos, int num); bool in_bounds(const position &pos); public: CC3K(const feature enabled_features, input *in, output *out, RNG *rng, std::ifstream &data); game_status run(); }; #endif