Bazaar developer reference

CvPreGame::readArchive(FDataStream &, bool)

Defined in
CvPreGame.cpp, line 1725
Hook name
CivHooks::CvPreGame_readArchive

Hooks

static bool BeforeCvPreGame_readArchive(FDataStream& loadFrom, bool bReadVersion);static void AfterCvPreGame_readArchive(FDataStream& loadFrom, bool bReadVersion);static void ReplaceCvPreGame_readArchive(void (*original)(FDataStream&, bool), FDataStream& loadFrom, bool bReadVersion);CivRegisterBefore<CivHooks::CvPreGame_readArchive>(host, &BeforeCvPreGame_readArchive);CivRegisterAfter<CivHooks::CvPreGame_readArchive>(host, &AfterCvPreGame_readArchive);CivRegisterReplace<CivHooks::CvPreGame_readArchive>(host, &ReplaceCvPreGame_readArchive);

Code

1725void readArchive(FDataStream& loadFrom, bool bReadVersion)1726{1727	uint uiVersion = 0;1728	if(bReadVersion)1729		loadFrom >> uiVersion;17301731	loadFrom >> s_activePlayer;1732	loadFrom >> s_adminPassword;1733	loadFrom >> s_advancedStartPoints;1734	loadFrom >> s_alias;1735	loadFrom >> s_artStyles;1736	loadFrom >> s_autorun;1737	loadFrom >> s_autorunTurnDelay;1738	loadFrom >> s_autorunTurnLimit;1739	loadFrom >> s_bandwidth;1740	loadFrom >> s_calendar;1741	loadFrom >> s_calendarInfo;1742	loadFrom >> s_civAdjectives;1743	loadFrom >> s_civDescriptions;1744	if (uiVersion <= 2)						// Read the civilization indices.  Newer versions have the keys in the header.1745		loadFrom >> s_civilizations;17461747	loadFrom >> s_civPasswords;1748	loadFrom >> s_civShortDescriptions;1749	loadFrom >> s_climate;1750	loadFrom >> s_climateInfo;1751	loadFrom >> s_era;1752	loadFrom >> s_emailAddresses;1753	loadFrom >> s_endTurnTimerLength;1754	loadFrom >> s_flagDecals;1755	loadFrom >> s_DEPRECATEDforceControls;1756	loadFrom >> s_gameMode;1757	loadFrom >> s_gameName;1758	loadFrom >> s_gameSpeed;1759	loadFrom >> s_gameStarted;1760	loadFrom >> s_gameTurn;1761	if(uiVersion >= 1)1762	{1763		loadFrom >> s_gameType;1764		loadFrom >> s_gameMapType;1765	}1766	else1767	{1768		// Old enum that was trying to cram too much info into a sequence1769		enum GameType1770		{1771		    GAME_NONE = -1,17721773		    GAME_SP_NEW,1774		    GAME_SP_SCENARIO,1775		    GAME_SP_LOAD,1776		    GAME_MP_NEW,1777		    GAME_MP_SCENARIO,1778		    GAME_MP_LOAD,1779		    GAME_HOTSEAT_NEW,1780		    GAME_HOTSEAT_SCENARIO,1781		    GAME_HOTSEAT_LOAD,1782		    GAME_PBEM_NEW,1783		    GAME_PBEM_SCENARIO,1784		    GAME_PBEM_LOAD,17851786		    NUM_GAMETYPES1787		};17881789		int iDummy;1790		loadFrom >> iDummy;1791		GameType eGameType = static_cast<GameType>(iDummy);17921793		// Convert the old one to the new format17941795		if((eGameType == GAME_HOTSEAT_NEW) || (eGameType == GAME_HOTSEAT_SCENARIO) || (eGameType == GAME_HOTSEAT_LOAD))1796			s_gameType = GAME_HOTSEAT_MULTIPLAYER;1797		else if((eGameType == GAME_MP_NEW) || (eGameType == GAME_MP_SCENARIO) || (eGameType == GAME_MP_LOAD))1798			s_gameType = GAME_NETWORK_MULTIPLAYER;1799		else if((eGameType == GAME_SP_NEW) || (eGameType == GAME_SP_SCENARIO) || (eGameType == GAME_SP_LOAD))1800			s_gameType = GAME_SINGLE_PLAYER;1801		else1802		{1803			if(s_gameType == GAME_TYPE_NONE)1804				s_gameType = GAME_SINGLE_PLAYER;		// I've seen this saved as -1 (GAME_NONE)1805		}18061807		s_gameMapType = GAME_USER_PARAMETERS;1808		if((eGameType == GAME_MP_SCENARIO) || (eGameType == GAME_HOTSEAT_SCENARIO) || (eGameType == GAME_SP_SCENARIO))1809			s_gameMapType = GAME_SCENARIO;18101811	}1812	loadFrom >> s_gameUpdateTime;1813	loadFrom >> s_handicaps;1814	if(uiVersion >= 6){1815		loadFrom >> s_lastHumanHandicaps;1816	}18171818	loadFrom >> s_isEarthMap;1819	loadFrom >> s_isInternetGame;1820	if(uiVersion == 0)1821	{1822		bool bNetworkMultiplayerGame;1823		loadFrom >> bNetworkMultiplayerGame;1824		if(bNetworkMultiplayerGame && s_gameType != GAME_HOTSEAT_MULTIPLAYER)1825		{1826			s_gameType = GAME_NETWORK_MULTIPLAYER;1827		}1828	}1829	if (uiVersion <= 2)						// Read the leader indices.  Newer versions have the keys in the header.1830		loadFrom >> s_leaderHeads;1831	loadFrom >> s_leaderNames;1832	loadFrom >> s_loadFileName;1833	loadFrom >> s_localPlayerEmailAddress;1834	loadFrom >> s_mapNoPlayers;1835	loadFrom >> s_mapRandomSeed;1836	loadFrom >> s_loadWBScenario;1837	loadFrom >> s_overrideScenarioHandicap;1838	loadFrom >> s_mapScriptName;1839	loadFrom >> s_maxCityElimination;1840	loadFrom >> s_maxTurns;1841	loadFrom >> s_numMinorCivs;1842	if (uiVersion >= 3)1843	{1844		CvInfosSerializationHelper::ReadTypeArrayDBLookup<MinorCivTypes>(loadFrom, s_minorCivTypes.dirtyGet(), "MinorCivilizations"); 1845		s_minorCivTypes.clearDelta();1846	}1847	else1848		loadFrom >> s_minorCivTypes;1849	loadFrom >> s_minorNationCivs;1850	loadFrom >> s_dummyvalue;1851	loadFrom >> s_multiplayerOptions;1852	loadFrom >> s_netIDs;1853	loadFrom >> s_nicknames;1854	loadFrom >> s_numVictoryInfos;1855	loadFrom >> s_pitBossTurnTime;1856	loadFrom >> s_playableCivs;1857	if (uiVersion >= 3)1858	{1859		CvInfosSerializationHelper::ReadTypeArrayDBLookup<PlayerColorTypes>(loadFrom, s_playerColors.dirtyGet(), "PlayerColors");1860		s_playerColors.clearDelta();1861	}1862	else1863		loadFrom >> s_playerColors;18641865	loadFrom >> s_privateGame;1866	loadFrom >> s_quickCombat;1867	loadFrom >> s_quickCombatDefault;1868	loadFrom >> s_quickHandicap;1869	loadFrom >> s_quickstart;1870	loadFrom >> s_randomWorldSize;1871	loadFrom >> s_randomMapScript;1872	loadFrom >> s_readyPlayers;1873	loadFrom >> s_seaLevel;1874	loadFrom >> s_seaLevelInfo;1875	loadFrom >> s_dummyvalue2;1876	loadFrom >> s_slotClaims;1877	loadFrom >> s_slotStatus;1878	loadFrom >> s_smtpHost;1879	loadFrom >> s_syncRandomSeed;1880	loadFrom >> s_targetScore;1881	loadFrom >> s_teamTypes;1882	loadFrom >> s_transferredMap;1883	loadFrom >> s_turnTimer;1884	loadFrom >> s_turnTimerType;1885	loadFrom >> s_bCityScreenBlocked;1886	loadFrom >> s_victories;1887	loadFrom >> s_whiteFlags;1888	if(uiVersion <= 1)1889		s_worldInfo.dirtyGet().readFromVersion0(loadFrom);1890	else1891		loadFrom >> s_worldInfo;18921893	loadFrom >> s_worldSize;1894	loadFrom >> s_GameOptions;1895	loadFrom >> s_MapOptions;1896	loadFrom >> s_versionString;18971898	if (uiVersion >= 4)1899		loadFrom >> s_turnNotifySteamInvite;19001901	if (uiVersion >= 5){1902		loadFrom >> s_turnNotifyEmail;1903		loadFrom >> s_turnNotifyEmailAddress;1904	}19051906	// Rebuild the hash lookup to the options1907	s_GameOptionsHash.clear();1908	for(size_t i = 0; i < s_GameOptions.size(); i++)1909	{1910		const CustomOption& kOption = s_GameOptions[i];1911		s_GameOptionsHash[FString::Hash(kOption.GetName())] = i;1912	}1913}

Calls

Called by