void CTimeManager::endDayEventHandler(const IGameEvent &event) { // Only one "NoMoreEventsToday" event is on the events queue at time, // so we need to add a new event of this type for tomorrow CDate date = event.getDate(); date.setDay(date.getDay()+1); date.setHour(23); date.setMin(59); date.setSec(59); CGameEngine::getInstance()->getEventManager()->addEvent(new CEndDayEvent(date)); }
IGame* CSinglePlayerGame::load(const CPfGames &game) { LOG_DEBUG("CSinglePlayerGame::load"); CSinglePlayerGame *singlePlayerGame = new CSinglePlayerGame(game); singlePlayerGame->loadGameEvents(); CDate date = singlePlayerGame->m_optionManager->getGameCurrentDate(); CGameEngine::getInstance()->getTimeManager()->setCurrentTime(date); date.setHour(23); date.setMin(59); date.setSec(59); CGameEngine::getInstance()->getEventManager()->addEvent(new CEndDayEvent(date)); return singlePlayerGame; }
IGame* CSinglePlayerGame::newGame(const CPfUsers &user, const std::string &gameName, const std::string &coachName) { LOG_DEBUG("CSinglePlayerGame::newGame"); CDate nowDate; CPfGames game; game.setDLastSaved(nowDate); game.setSDriverName("SQLite"); game.setSConnectionString(CResourceManager::getInstance()->getDbFileName()); game.setSGameName(gameName); game.setSGameType(S_GAME_TYPE_SINGLEPLAYER); game.setXFkUser(user.getXUser()); // With this way, here we only need to set the initial environment for // a new game, forgetting the creation of attributes for a CSinglePlayerGame // object. This task rests now on constructor. CSinglePlayerGame *singlePlayerGame = new CSinglePlayerGame(game); // retrieve the last season in the database and the end date of the itself CDate maxDate = CDate::MIN_DATE; CPfSeasons *season = singlePlayerGame->m_daoFactory->getIPfSeasonsDAO()->findLastSeason(); if( season->getXSeason() == 0 ){ throw PFEXCEPTION("The last season is NULL"); } IPfCompetitionPhasesBySeasonDAO *competitionBySeasonDAO = singlePlayerGame->m_daoFactory->getIPfCompetitionPhasesBySeasonDAO(); std::vector<CPfCompetitionPhasesBySeason*> *competitionsBySeasonList = competitionBySeasonDAO->findByXFkSeason(season->getXSeason_str()); std::vector<CPfCompetitionPhasesBySeason*>::iterator itCompetitionsBySeason; for( itCompetitionsBySeason=competitionsBySeasonList->begin(); itCompetitionsBySeason!=competitionsBySeasonList->end(); itCompetitionsBySeason++ ){ CPfCompetitionPhasesBySeason *competitionBySeason = *itCompetitionsBySeason; if( competitionBySeason->getDEndCompetitionPhase()>maxDate ){ maxDate = competitionBySeason->getDEndCompetitionPhase(); } } singlePlayerGame->m_optionManager->setGameNew(true); singlePlayerGame->m_optionManager->setGameCurrentDate(maxDate); singlePlayerGame->m_optionManager->setGameCurrentSeason(season->getXSeason()); // Create player's coach // TODO: create coach in another way. Maybe player settings? CPfCoaches *playerCoach = new CPfCoaches(); playerCoach->setSName(coachName); playerCoach->setSShortName(coachName); playerCoach->setSPhoto("p_unknown"); playerCoach->setXFkFormationSelected(1); playerCoach->setXFkCountry(1); singlePlayerGame->m_daoFactory->getIPfCoachesDAO()->insertReg(playerCoach); singlePlayerGame->m_optionManager->setGamePlayerCoach(playerCoach->getXCoach()); delete playerCoach; competitionBySeasonDAO->freeVector(competitionsBySeasonList); delete season; singlePlayerGame->loadGameEvents(); CDate date = singlePlayerGame->m_optionManager->getGameCurrentDate(); CGameEngine::getInstance()->getTimeManager()->setCurrentTime(date); date.setHour(23); date.setMin(59); date.setSec(59); CGameEngine::getInstance()->getEventManager()->addEvent(new CEndDayEvent(date)); return singlePlayerGame; }