Bazaar developer reference

CvFlavorManager::Init(CvPlayer *)

Defined in
CvFlavorManager.cpp, line 140
Class
CvFlavorManager
Hook name
CivHooks::CvFlavorManager_Init

Hooks

static bool BeforeCvFlavorManager_Init(CvFlavorManager* self, CvPlayer* pPlayer);static void AfterCvFlavorManager_Init(CvFlavorManager* self, CvPlayer* pPlayer);static void ReplaceCvFlavorManager_Init(void (*original)(CvFlavorManager*, CvPlayer*), CvFlavorManager* self, CvPlayer* pPlayer);CivRegisterBefore<CivHooks::CvFlavorManager_Init>(host, &BeforeCvFlavorManager_Init);CivRegisterAfter<CivHooks::CvFlavorManager_Init>(host, &AfterCvFlavorManager_Init);CivRegisterReplace<CivHooks::CvFlavorManager_Init>(host, &ReplaceCvFlavorManager_Init);

Code

139/// Initialize140void CvFlavorManager::Init(CvPlayer* pPlayer)141{142	unsigned int iI;143144	// Copy off inputs145	m_pPlayer = pPlayer;146147	// Allocate memory148	m_piPersonalityFlavor = FNEW(int[GC.getNumFlavorTypes()], c_eCiv5GameplayDLL, 0);149	m_piActiveFlavor = FNEW(int[GC.getNumFlavorTypes()], c_eCiv5GameplayDLL, 0);150	m_FlavorTargetList.get_allocator().Reserve((3*64)+100);151152	// Clear variables153	Reset();154155	// If this is a live player, go ahead and set up his flavor preferences156	PlayerTypes p = pPlayer->GetID();157	if(p != NO_PLAYER)158	{159		SlotStatus s = CvPreGame::slotStatus(p);160		if((s == SS_TAKEN || s == SS_COMPUTER) && !pPlayer->isBarbarian())161		{162			// Copy over leaderhead defaults unless human163			if(!pPlayer->isHuman())164			{165				LeaderHeadTypes type = pPlayer->getPersonalityType();166				if(type != NO_LEADER)167				{168					CvLeaderHeadInfo* pkLeaderHeadInfo = GC.getLeaderHeadInfo(type);169					if(pkLeaderHeadInfo)170					{171						int iDefaultFlavorValue = GC.getDEFAULT_FLAVOR_VALUE();172						unsigned int uiNumFlavorTypes = GC.getNumFlavorTypes();173174						for(iI = 0; iI < uiNumFlavorTypes; iI++)175						{176							// Majors use Leader XML Flavors177							if(!pPlayer->isMinorCiv())178							{179								m_piPersonalityFlavor[iI] = pkLeaderHeadInfo->getFlavorValue(iI);180							}181							// Minors use Minor XML Flavors182							else183							{184								m_piPersonalityFlavor[iI] = GC.getMinorCivInfo(pPlayer->GetMinorCivAI()->GetMinorCivType())->getFlavorValue(iI);185							}186187							// If no Flavor value is set in the XML use the Default188							if(m_piPersonalityFlavor[iI] == -1)189							{190								m_piPersonalityFlavor[iI] = iDefaultFlavorValue;191							}192						}193					}194				}195196				// Tweak from default values197				RandomizeWeights();198			}199200			// Human player, just set all flavors to average (5)201			else202			{203				int iDefaultFlavorValue = GC.getDEFAULT_FLAVOR_VALUE();204				unsigned int uiNumFlavors = GC.getNumFlavorTypes();205				for(iI = 0; iI < uiNumFlavors; iI++)206				{207					m_piPersonalityFlavor[iI] = iDefaultFlavorValue;208				}209			}210211			// Send out updated values to all recipients212			BroadcastBaseFlavors();213214			ResetToBasePersonality();215216			if(GC.getLogging() && GC.getAILogging())217			{218				LogFlavors();219			}220		}221	}222}

Calls

Called by