void CSinglePlayerGame::simulateMatch(const CPfMatches &match) { CEventManager *eventMngr = CGameEngine::getInstance()->getEventManager(); std::string currentTimestamp = match.getDMatch().getTimestamp(); IPfTeamPlayersDAO *teamPlayersDAO = m_daoFactory->getIPfTeamPlayersDAO(); IPfTeamAveragesDAO *teamsAvgDAO = m_daoFactory->getIPfTeamAveragesDAO(); eventMngr->addEvent(new CStartMatchEvent(match.getDMatch(), match.getXMatch())); int xHomeTeam = match.getXFkTeamHome(); int xAwayTeam = match.getXFkTeamAway(); CPfTeamAverages *homeTeamAvg = teamsAvgDAO->findByXTeam(xHomeTeam, currentTimestamp); CPfTeamAverages *awayTeamAvg = teamsAvgDAO->findByXTeam(xAwayTeam, currentTimestamp); int nHomeGoals = getRandomNGoals(homeTeamAvg, awayTeamAvg); int nAwayGoals = getRandomNGoals(awayTeamAvg, homeTeamAvg); delete homeTeamAvg; delete awayTeamAvg; if( nHomeGoals>0 ){ std::vector<CPfTeamPlayers*>* teamPlayesList = teamPlayersDAO->findLineUpByXFkTeam(xHomeTeam, currentTimestamp); while( nHomeGoals>0 ){ int numPlayer = rand()%teamPlayesList->size(); if(numPlayer == 0) { //Goalie don't score numPlayer = 10; } CPfTeamPlayers *teamPlayer = teamPlayesList->operator[](numPlayer); int minute = rand()%90; CDate eventDate = match.getDMatch(); eventDate.setMin(eventDate.getMin()+minute); eventMngr->addEvent(new CGoalMatchEvent(eventDate, match.getXMatch(), xHomeTeam, teamPlayer->getXTeamPlayer(), minute, false)); nHomeGoals--; } teamPlayersDAO->freeVector(teamPlayesList); } if( nAwayGoals>0 ){ std::vector<CPfTeamPlayers*>* teamPlayesList = teamPlayersDAO->findLineUpByXFkTeam(xAwayTeam, currentTimestamp); while( nAwayGoals>0 ){ int numPlayer = rand()%teamPlayesList->size(); if(numPlayer == 0) { //Goalie don't score numPlayer = 10; } CPfTeamPlayers *teamPlayer = teamPlayesList->operator[](numPlayer); int minute = rand()%90; CDate eventDate = match.getDMatch(); eventDate.setMin(eventDate.getMin()+minute); eventMngr->addEvent(new CGoalMatchEvent(eventDate, match.getXMatch(), xAwayTeam, teamPlayer->getXTeamPlayer(), minute, false)); nAwayGoals--; } teamPlayersDAO->freeVector(teamPlayesList); } CDate eventDate = match.getDMatch(); eventDate.setMin(eventDate.getMin()+90); eventMngr->addEvent(new CEndMatchEvent(eventDate, match.getXMatch())); }