Bazaar developer reference

CvPreGame::resetSlots()

Defined in
CvPreGame.cpp, line 2099
Hook name
CivHooks::CvPreGame_resetSlots

Hooks

static bool BeforeCvPreGame_resetSlots();static void AfterCvPreGame_resetSlots();static void ReplaceCvPreGame_resetSlots(void (*original)());CivRegisterBefore<CivHooks::CvPreGame_resetSlots>(host, &BeforeCvPreGame_resetSlots);CivRegisterAfter<CivHooks::CvPreGame_resetSlots>(host, &AfterCvPreGame_resetSlots);CivRegisterReplace<CivHooks::CvPreGame_resetSlots>(host, &ReplaceCvPreGame_resetSlots);

Code

2099void resetSlots()2100{2101	//setNumMinorCivs( CvPreGame::worldInfo().getDefaultMinorCivs() );2102	// adjust player slots2103	int suggestedPlayerCount = CvPreGame::worldInfo().getDefaultPlayers();2104	int slotsAssigned = 0;2105	int i = 0;2106	for(i = 0; i < MAX_CIV_PLAYERS; ++i)2107	{2108		PlayerTypes p = static_cast<PlayerTypes>(i);2109		if(!isNetworkMultiplayerGame())2110		{2111			if(slotsAssigned < suggestedPlayerCount)2112			{2113				// don't reset slots taken by human players2114				SlotStatus s = slotStatus(p);2115				if(s != SS_TAKEN)2116				{2117					// the player may have already assigned2118					// a civ for this computer slot, don't2119					// overwrite those settings.2120					if(s != SS_COMPUTER)2121					{2122						setSlotStatus(p, SS_COMPUTER);2123						setSlotClaim(p, SLOTCLAIM_ASSIGNED);2124						setCivilization(p, NO_CIVILIZATION); // defaults to random civ2125					}2126				}21272128				//S.S:  In single player games, slot 1 *should* be marked as taken but it currently is not.2129				if(slotStatus(p) == SS_COMPUTER && i != 0)2130					setHandicap(p, (HandicapTypes)GC.getAI_HANDICAP());2131				else2132				{2133					if(isHotSeatGame())2134						setHandicap(p, (HandicapTypes)GC.getMULTIPLAYER_HANDICAP());2135					else2136					{2137						//S.S: Commenting this out to prevent handicap from getting reset everytime the map size changes.2138						//setHandicap(p, (HandicapTypes)GC.getSTANDARD_HANDICAP());2139					}2140				}2141				++slotsAssigned;2142			}2143			else2144			{2145				resetPlayer(p);2146				// setup an observer slot2147				if(p >= suggestedPlayerCount && p < MAX_MAJOR_CIVS)2148					setSlotStatus(p, SS_OBSERVER);2149			}2150		}2151		else2152		{2153			// don't reset slots taken by human players, even if we exceed the suggested slots2154			SlotStatus s = slotStatus(p);2155			if(s != SS_TAKEN && slotsAssigned >= suggestedPlayerCount)2156			{2157				resetPlayer(p);2158				// setup an observer slot2159				if(p >= suggestedPlayerCount && p < MAX_MAJOR_CIVS)2160					setSlotStatus(p, SS_OBSERVER);2161			}2162			else2163			{2164				if(s != SS_TAKEN)2165				{2166					if(slotsAssigned < suggestedPlayerCount)2167					{2168						// the player may have already assigned2169						// a civ for this computer slot, don't2170						// overwrite those settings.2171						setSlotStatus(p, SS_OPEN);2172						setSlotClaim(p, SLOTCLAIM_ASSIGNED);2173						setCivilization(p, NO_CIVILIZATION); // defaults to random civ2174					}2175				}2176				if(slotStatus(p) == SS_COMPUTER)2177					setHandicap(p, (HandicapTypes)GC.getAI_HANDICAP());2178				else2179					setHandicap(p, (HandicapTypes)GC.getMULTIPLAYER_HANDICAP());21802181				++slotsAssigned;2182			}2183		}2184	}2185}

Calls

Called by