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
- CvFlavorManager::BroadcastBaseFlavors()
- CvFlavorManager::LogFlavors(FlavorTypes)
- CvFlavorManager::RandomizeWeights()
- CvFlavorManager::Reset()
- CvFlavorManager::ResetToBasePersonality()
- CvGlobals::getAILogging()
- CvGlobals::getDEFAULT_FLAVOR_VALUE()
- CvGlobals::getLeaderHeadInfo(LeaderHeadTypes)
- CvGlobals::getLogging()
- CvGlobals::getMinorCivInfo(MinorCivTypes)
- CvGlobals::getNumFlavorTypes()
- CvLeaderHeadInfo::getFlavorValue(int) const
- CvMinorCivAI::GetMinorCivType() const
- CvMinorCivInfo::getFlavorValue(int) const
- CvPlayer::GetID() const
- CvPlayer::GetMinorCivAI() const
- CvPlayer::getPersonalityType() const
- CvPlayer::isBarbarian() const
- CvPlayer::isHuman() const
- CvPlayer::isMinorCiv() const
- CvPreGame::slotStatus(PlayerTypes)