Bazaar developer reference

CvPreGame::bindCivilizationKeys(PlayerTypes)

Defined in
CvPreGame.cpp, line 361
Hook name
CivHooks::CvPreGame_bindCivilizationKeys

Hooks

static bool BeforeCvPreGame_bindCivilizationKeys(PlayerTypes p, bool& result);static void AfterCvPreGame_bindCivilizationKeys(PlayerTypes p, bool& result);static bool ReplaceCvPreGame_bindCivilizationKeys(bool (*original)(PlayerTypes), PlayerTypes p);CivRegisterBefore<CivHooks::CvPreGame_bindCivilizationKeys>(host, &BeforeCvPreGame_bindCivilizationKeys);CivRegisterAfter<CivHooks::CvPreGame_bindCivilizationKeys>(host, &AfterCvPreGame_bindCivilizationKeys);CivRegisterReplace<CivHooks::CvPreGame_bindCivilizationKeys>(host, &ReplaceCvPreGame_bindCivilizationKeys);

Code

360// Set the unique key value for the civilization361bool bindCivilizationKeys(PlayerTypes p)362{363	bool bFailed = false;364	CivilizationTypes c = civilization(p);365	if(c != NO_CIVILIZATION)366	{367		// During the pre-game, we can't be sure the cached *Infos are current, so query the database368		Database::Connection* pDB = GC.GetGameDatabase();369		if(pDB)370		{371			Database::Results kResults;372			if(pDB->Execute(kResults, "SELECT Type, PackageID, Playable from Civilizations where ID = ? LIMIT 1"))373			{374				kResults.Bind(1, c);375				if(kResults.Step())376				{377					s_civilizationKeys[p] = kResults.GetText(0);378					if(!ExtractGUID(kResults.GetText(1), s_civilizationPackageID[p]))379						ClearGUID(s_civilizationPackageID[p]);380381					s_civilizationKeysAvailable[p] = true;382					s_civilizationKeysPlayable[p] = kResults.GetBool(2);383				}384				else385					bFailed = true;386			}387			else388				bFailed = true;389		}390	}391	else392		bFailed = true;393394	if(bFailed)395	{396		s_civilizationKeys[p].clear();397		ClearGUID(s_civilizationPackageID[p]);398		s_civilizationKeysAvailable[p] = false;399		s_civilizationKeysPlayable[p] = false;400	}401	return bFailed;402}

Calls

Called by