void CvReplayInfo::createInfo(PlayerTypes ePlayer) { CvGame& game = GC.getGameINLINE(); CvMap& map = GC.getMapINLINE(); if (ePlayer == NO_PLAYER) { ePlayer = game.getActivePlayer(); } if (NO_PLAYER != ePlayer) { CvPlayer& player = GET_PLAYER(ePlayer); m_eDifficulty = player.getHandicapType(); m_szLeaderName = player.getName(); m_szCivDescription = player.getCivilizationDescription(); m_szShortCivDescription = player.getCivilizationShortDescription(); m_szCivAdjective = player.getCivilizationAdjective(); m_szMapScriptName = GC.getInitCore().getMapScriptName(); m_eWorldSize = map.getWorldSize(); m_eClimate = map.getClimate(); m_eSeaLevel = map.getSeaLevel(); m_eEra = game.getStartEra(); m_eGameSpeed = game.getGameSpeedType(); m_listGameOptions.clear(); for (int i = 0; i < NUM_GAMEOPTION_TYPES; i++) { GameOptionTypes eOption = (GameOptionTypes)i; if (game.isOption(eOption)) { m_listGameOptions.push_back(eOption); } } m_listVictoryTypes.clear(); for (int i = 0; i < GC.getNumVictoryInfos(); i++) { VictoryTypes eVictory = (VictoryTypes)i; if (game.isVictoryValid(eVictory)) { m_listVictoryTypes.push_back(eVictory); } } if (game.getWinner() == player.getTeam()) { m_eVictoryType = game.getVictory(); } else { m_eVictoryType = NO_VICTORY; } m_iNormalizedScore = player.calculateScore(true, player.getTeam() == GC.getGameINLINE().getWinner()); } m_bMultiplayer = game.isGameMultiPlayer(); m_iInitialTurn = GC.getGameINLINE().getStartTurn(); m_iStartYear = GC.getGameINLINE().getStartYear(); m_iFinalTurn = game.getGameTurn(); GAMETEXT.setYearStr(m_szFinalDate, m_iFinalTurn, false, GC.getGameINLINE().getCalendar(), GC.getGameINLINE().getStartYear(), GC.getGameINLINE().getGameSpeedType()); m_eCalendar = GC.getGameINLINE().getCalendar(); std::map<PlayerTypes, int> mapPlayers; m_listPlayerScoreHistory.clear(); int iPlayerIndex = 0; for (int iPlayer = 0; iPlayer < MAX_PLAYERS; iPlayer++) { CvPlayer& player = GET_PLAYER((PlayerTypes)iPlayer); if (player.isEverAlive()) { mapPlayers[(PlayerTypes)iPlayer] = iPlayerIndex; if ((PlayerTypes)iPlayer == game.getActivePlayer()) { m_iActivePlayer = iPlayerIndex; } ++iPlayerIndex; PlayerInfo playerInfo; playerInfo.m_eLeader = player.getLeaderType(); //playerInfo.m_eColor = (ColorTypes)GC.getPlayerColorInfo(player.getPlayerColor()).getColorTypePrimary(); playerInfo.m_eColor = (ColorTypes)GC.getPlayerColorInfo(GC.getInitCore().getColor((PlayerTypes)iPlayer)).getColorTypePrimary(); // K-Mod. (bypass the conceal colour check.) for (int iTurn = m_iInitialTurn; iTurn <= m_iFinalTurn; iTurn++) { TurnData score; score.m_iScore = player.getScoreHistory(iTurn); score.m_iAgriculture = player.getAgricultureHistory(iTurn); score.m_iIndustry = player.getIndustryHistory(iTurn); score.m_iEconomy = player.getEconomyHistory(iTurn); playerInfo.m_listScore.push_back(score); } m_listPlayerScoreHistory.push_back(playerInfo); } } m_listReplayMessages.clear(); for (uint i = 0; i < game.getNumReplayMessages(); i++) { std::map<PlayerTypes, int>::iterator it = mapPlayers.find(game.getReplayMessagePlayer(i)); if (it != mapPlayers.end()) { CvReplayMessage* pMsg = new CvReplayMessage(game.getReplayMessageTurn(i), game.getReplayMessageType(i), (PlayerTypes)it->second); if (NULL != pMsg) { pMsg->setColor(game.getReplayMessageColor(i)); pMsg->setText(game.getReplayMessageText(i)); pMsg->setPlot(game.getReplayMessagePlotX(i), game.getReplayMessagePlotY(i)); m_listReplayMessages.push_back(pMsg); } } else { CvReplayMessage* pMsg = new CvReplayMessage(game.getReplayMessageTurn(i), game.getReplayMessageType(i), NO_PLAYER); if (NULL != pMsg) { pMsg->setColor(game.getReplayMessageColor(i)); pMsg->setText(game.getReplayMessageText(i)); pMsg->setPlot(game.getReplayMessagePlotX(i), game.getReplayMessagePlotY(i)); m_listReplayMessages.push_back(pMsg); } } } m_iMapWidth = GC.getMapINLINE().getGridWidthINLINE(); m_iMapHeight = GC.getMapINLINE().getGridHeightINLINE(); SAFE_DELETE(m_pcMinimapPixels); m_pcMinimapPixels = new unsigned char[m_nMinimapSize]; void *ptexture = (void*)gDLL->getInterfaceIFace()->getMinimapBaseTexture(); if (ptexture) memcpy((void*)m_pcMinimapPixels, ptexture, m_nMinimapSize); m_szModName = gDLL->getModName(); }