ShowMainMenu::~ShowMainMenu() { _game->reset(); switch( _screen->result() ) { case StartMenu::startNewGame: { std::srand( DateTime::elapsedTime() ); std::string startMission = ":/missions/tutorial.mission"; bool loadOk = _game->load( startMission ); _game->player()->setName( startMenu->playerName() ); Logger::warning( (loadOk ? "Career: start mission " : "Career: cant load mission") + startMission ); _game->setNextScreen( loadOk ? SCREEN_GAME : SCREEN_MENU ); } break; case StartMenu::reloadScreen: _game->setNextScreen( SCREEN_MENU ); break; case StartMenu::loadSavedGame: case StartMenu::loadMission: { bool loadOk = _game->load( startMenu->mapName() ); Logger::warning( (loadOk ? "ScreenMenu: end loading mission/sav" : "ScreenMenu: cant load file") + startMenu->mapName() ); _game->setNextScreen( loadOk ? SCREEN_GAME : SCREEN_MENU ); } break; case StartMenu::loadMap: { bool loadOk = _game->load( startMenu->mapName() ); Logger::warning( (loadOk ? "ScreenMenu: end loading map" : "ScreenMenu: cant load map") + startMenu->mapName() ); game::freeplay::addPopulationMilestones( _game->city() ); game::freeplay::initBuildOptions(_game->city() ); game::freeplay::addEvents( _game->city()); game::freeplay::resetFavour( _game->city() ); _game->setNextScreen( loadOk ? SCREEN_GAME : SCREEN_MENU ); } break; case StartMenu::closeApplication: { _game->setNextScreen( SCREEN_QUIT ); } break; default: _CAESARIA_DEBUG_BREAK_IF( "Unexpected result event" ); } }
PositionAnimator::PositionAnimator( Widget* node, int flags, const Point& stopPos, int time ) : WidgetAnimator( node, flags ), _d( new Impl ) { //"parent must be exist" _CAESARIA_DEBUG_BREAK_IF( !node ); _d->stopPos = stopPos; _d->time = time; _d->lastTimeUpdate = DateTime::elapsedTime(); restart(); }
Directory Directory::up() const { if( toString().empty() ) return Directory(); Path pathToAny = removeEndSlash(); std::string::size_type index = pathToAny.toString().find_last_of( "/" ); if( index != std::string::npos ) { return Path( pathToAny.toString().substr( 0, index ) ); } _CAESARIA_DEBUG_BREAK_IF( !exist() ); return Directory(); }
MissionSelect::~MissionSelect() { switch( _screen->result() ) { case Briefing::loadMission: { bool loadOk = _game->load( _briefing->getMapName() ); Logger::warning( (loadOk ? "Briefing: end loading file" : "Briefing: cant load file") + _briefing->getMapName() ); _game->setNextScreen( loadOk ? SCREEN_GAME : SCREEN_MENU ); } break; default: _CAESARIA_DEBUG_BREAK_IF( "Briefing: unexpected result event" ); } }
/** * parse string with colons */ Variant Json::parseString(const std::string &json, int &index, bool &success) { std::string s; char c; Json::eatWhitespace(json, index); c = json[index++]; bool complete = false; while(!complete) { if(index == (int)json.size()) { break; } c = json[index++]; if(c == '\"') { complete = true; break; } else if(c == '\\') { if(index == (int)json.size()) { break; } c = json[index++]; if( c == '\"' || c == '\\' ) { s += c; } else if(c == '/') { s.append("/"); } else if(c == 'b') { s.append("\b"); } else if(c == 'f') { s.append("\f"); } else if(c == 'n') { s.append("\n"); } else if(c == 'r') { s.append("\r"); } else if(c == 't') { s.append("\t"); } else if(c == 'u') { // int remainingLength = json.size() - index; // // if(remainingLength >= 4) // { // std::string unicodeStr = json.substr(index, 4); // // int symbol = utils::fromHex( unicodeStr.c_str() ); // // s.append( symbol ); // // index += 4; // } // else // { // break; // } _CAESARIA_DEBUG_BREAK_IF( true && "yet not work") } } else { s += c; } }
inline T *operator->() const { _CAESARIA_DEBUG_BREAK_IF( !d ); return d; }
inline T& operator*() const { _CAESARIA_DEBUG_BREAK_IF( !d ); return *d; }