Bazaar developer reference

CvGame::Read(FDataStream &)

Defined in
CvGame.cpp, line 9499
Class
CvGame
Hook name
CivHooks::CvGame_Read

Hooks

static bool BeforeCvGame_Read(CvGame* self, FDataStream& kStream);static void AfterCvGame_Read(CvGame* self, FDataStream& kStream);static void ReplaceCvGame_Read(void (*original)(CvGame*, FDataStream&), CvGame* self, FDataStream& kStream);CivRegisterBefore<CivHooks::CvGame_Read>(host, &BeforeCvGame_Read);CivRegisterAfter<CivHooks::CvGame_Read>(host, &AfterCvGame_Read);CivRegisterReplace<CivHooks::CvGame_Read>(host, &ReplaceCvGame_Read);

Code

9499void CvGame::Read(FDataStream& kStream)9500{9501	int iI;95029503	reset(NO_HANDICAP);95049505	// Version number to maintain backwards compatibility9506	uint uiVersion;9507	kStream >> uiVersion;9508	MOD_SERIALIZE_INIT_READ(kStream);95099510	kStream >> m_iEndTurnMessagesSent;9511	kStream >> m_iElapsedGameTurns;9512	kStream >> m_iStartTurn;9513	kStream >> m_iWinningTurn;9514	kStream >> m_iStartYear;9515	kStream >> m_iEstimateEndTurn;9516	m_iDefaultEstimateEndTurn = m_iEstimateEndTurn;9517	kStream >> m_iDefaultEstimateEndTurn;9518	kStream >> m_iTurnSlice;9519	kStream >> m_iCutoffSlice;9520	kStream >> m_iNumCities;9521	kStream >> m_iTotalPopulation;9522	kStream >> m_iNoNukesCount;9523	kStream >> m_iNukesExploded;9524	kStream >> m_iMaxPopulation;9525	kStream >> m_iUnused1;9526	kStream >> m_iUnused2;9527	kStream >> m_iUnused3;9528	kStream >> m_iInitPopulation;9529	kStream >> m_iInitLand;9530	kStream >> m_iInitTech;9531	kStream >> m_iInitWonders;9532	kStream >> m_iAIAutoPlay;95339534	if(m_iAIAutoPlay > 0)9535	{9536		m_iAIAutoPlay = 1;9537	}95389539	kStream >> m_iTotalReligionTechCost;9540	kStream >> m_iCachedWorldReligionTechProgress;9541	kStream >> m_iUnitedNationsCountdown;9542	kStream >> m_iNumVictoryVotesTallied;9543	kStream >> m_iNumVictoryVotesExpected;9544	kStream >> m_iVotesNeededForDiploVictory;9545	kStream >> m_iMapScoreMod;95469547	// m_uiInitialTime not saved95489549	kStream >> m_bScoreDirty;9550	kStream >> m_bCircumnavigated;9551	// m_bDebugMode not saved9552	kStream >> m_bFinalInitialized;9553	// m_bPbemTurnSent not saved9554	kStream >> m_bHotPbemBetweenTurns;9555	// m_bPlayerOptionsSent not saved9556	kStream >> m_bNukesValid;9557	kStream >> m_bEndGameTechResearched;9558	kStream >> m_bTunerEverConnected;9559	kStream >> m_bTutorialEverAttacked;9560	kStream >> m_bStaticTutorialActive;9561	kStream >> m_bEverRightClickMoved;9562	kStream >> m_AdvisorMessagesViewed;9563	kStream >> m_eHandicap;9564	kStream >> m_ePausePlayer;9565	kStream >> m_eAIAutoPlayReturnPlayer;9566	kStream >> m_eBestLandUnit;9567	kStream >> m_eWinner;9568	kStream >> m_eVictory;9569	kStream >> m_eGameState;9570	if(m_eGameState == GAMESTATE_OVER)9571	{9572		m_eGameState = GAMESTATE_EXTENDED;9573	}9574	kStream >> m_eBestWondersPlayer;9575	kStream >> m_eBestPoliciesPlayer;9576	kStream >> m_eBestGreatPeoplePlayer;9577	kStream >> m_eReligionTech;9578	kStream >> m_eIndustrialRoute;95799580	kStream >> m_strScriptData;95819582	ArrayWrapper<int> wrapm_aiEndTurnMessagesReceived(MAX_PLAYERS, m_aiEndTurnMessagesReceived);9583	kStream >> wrapm_aiEndTurnMessagesReceived;95849585	ArrayWrapper<int> wrapm_aiRankPlayer(MAX_PLAYERS, m_aiRankPlayer);9586	kStream >> wrapm_aiRankPlayer;95879588	ArrayWrapper<int> wrapm_aiPlayerRank(MAX_PLAYERS, m_aiPlayerRank);9589	kStream >> wrapm_aiPlayerRank;95909591	ArrayWrapper<int> wrapm_aiPlayerScore(MAX_PLAYERS, m_aiPlayerScore);9592	kStream >> wrapm_aiPlayerScore;95939594	ArrayWrapper<int> wrapm_aiRankTeam(MAX_TEAMS, m_aiRankTeam);9595	kStream >> wrapm_aiRankTeam;95969597	ArrayWrapper<int> wrapm_aiTeamRank(MAX_TEAMS, m_aiTeamRank);9598	kStream >> wrapm_aiTeamRank;95999600	ArrayWrapper<int> wrapm_aiTeamScore(MAX_TEAMS, m_aiTeamScore);9601	kStream >> wrapm_aiTeamScore;96029603	UnitArrayHelpers::Read(kStream, m_paiUnitCreatedCount);9604	UnitClassArrayHelpers::Read(kStream, m_paiUnitClassCreatedCount);9605	BuildingClassArrayHelpers::Read(kStream, m_paiBuildingClassCreatedCount);96069607	CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_paiProjectCreatedCount, GC.getNumProjectInfos());9608	CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_paiVoteOutcome, GC.getNumVoteInfos());96099610	CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_aiSecretaryGeneralTimer, GC.getNumVoteSourceInfos());9611	CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_aiVoteTimer, GC.getNumVoteSourceInfos());9612	CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_aiDiploVote, GC.getNumVoteSourceInfos());96139614	ArrayWrapper<int> wrapm_aiVotesCast(MAX_CIV_TEAMS, m_aiVotesCast);9615	kStream >> wrapm_aiVotesCast;96169617	ArrayWrapper<int> wrapm_aiPreviousVotesCast(MAX_CIV_TEAMS, m_aiPreviousVotesCast);9618	kStream >> wrapm_aiPreviousVotesCast;96199620	ArrayWrapper<int> wrapm_aiNumVotesForTeam(MAX_CIV_TEAMS, m_aiNumVotesForTeam);9621	kStream >> wrapm_aiNumVotesForTeam;96229623	CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_pabSpecialUnitValid, GC.getNumSpecialUnitInfos());96249625	CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_ppaaiTeamVictoryRank, GC.getNUM_VICTORY_POINT_AWARDS(), GC.getNumVictoryInfos());96269627	kStream >> m_aszDestroyedCities;9628	kStream >> m_aszGreatPeopleBorn;9629	kStream >> m_voteSelections;9630	kStream >> m_votesTriggered;96319632	m_mapRand.read(kStream);9633	bool wasCallStackDebuggingEnabled = m_jonRand.callStackDebuggingEnabled();9634	m_jonRand.read(kStream);9635	m_jonRand.clearCallstacks();9636	m_jonRand.setCallStackDebuggingEnabled(wasCallStackDebuggingEnabled);96379638	{9639		clearReplayMessageMap();96409641		unsigned int uiReplayMessageVersion = 1;9642		int iSize = 0;96439644		kStream >> uiReplayMessageVersion;96459646		kStream >> iSize;9647		for(int i = 0; i < iSize; i++)9648		{9649			CvReplayMessage message;9650			message.read(kStream, uiReplayMessageVersion);9651			m_listReplayMessages.push_back(message);9652		}96539654	}96559656	kStream >> m_iNumSessions;9657	if(!isNetworkMultiPlayer())9658	{9659		++m_iNumSessions;9660	}96619662	kStream >> m_aPlotExtraYields;9663	kStream >> m_aPlotExtraCosts;966496659666	// Get the active player information from the initialization structure9667	if(!isGameMultiPlayer())9668	{9669		for(iI = 0; iI < MAX_CIV_PLAYERS; iI++)9670		{9671			if(GET_PLAYER((PlayerTypes)iI).isHuman())9672			{9673				setActivePlayer((PlayerTypes)iI);9674				break;9675			}9676		}9677		Localization::String localizedText = Localization::Lookup("TXT_KEY_MISC_RELOAD");9678		localizedText << m_iNumSessions;9679		addReplayMessage(REPLAY_MESSAGE_MAJOR_EVENT, getActivePlayer(), localizedText.toUTF8());9680	}96819682	if(isOption(GAMEOPTION_NEW_RANDOM_SEED))9683	{9684		if(!isNetworkMultiPlayer())9685		{9686			m_jonRand.reseed(timeGetTime());9687		}9688	}96899690	kStream >> m_bArchaeologyTriggered;96919692	kStream >> m_iEarliestBarbarianReleaseTurn;9693	kStream >> m_kGameDeals;9694	kStream >> *m_pGameReligions;9695	kStream >> *m_pGameCulture;9696	kStream >> *m_pGameLeagues;9697	kStream >> *m_pGameTrade;96989699	unsigned int lSize = 0;9700	kStream >> lSize;9701	if(lSize > 0)9702	{9703		//Deserialize the embedded SQLite database file.9704		CvString strUTF8DatabasePath = gDLL->GetCacheFolderPath();9705		strUTF8DatabasePath += "Civ5SavedGameDatabase.db";97069707		// Need to Convert the UTF-8 string into a wide character string.9708		std::wstring wstrDatabasePath = CvStringUtils::FromUTF8ToUTF16(strUTF8DatabasePath);97099710		FIFile* pkFile = FFILESYSTEM.Create(wstrDatabasePath.c_str(), FIFile::modeWrite);9711		if (pkFile != NULL)9712		{9713			byte* szBuffer = GetTempHeap()->Allocate(sizeof(char) * lSize);9714			ZeroMemory((void*)szBuffer, lSize);97159716			kStream.ReadIt(lSize, szBuffer);97179718			pkFile->Write(szBuffer, lSize);97199720			pkFile->Close();97219722			GetTempHeap()->DeAllocate(szBuffer);9723		}9724		else9725		{9726			CvAssertMsg(false, "Cannot open Civ5SavedGameDatabase.db for write! Does something have this opened?");9727		}9728	}97299730	//when loading from file, we need to reset m_lastTurnAICivsProcessed 9731	//so that updateMoves() can turn active players after loading an autosave in simultaneous turns multiplayer.9732	m_lastTurnAICivsProcessed = -1;9733}

Calls

Called by