PromotionArrayHelpers::Write(FDataStream &, const CvBitfield &, int)
- Defined in
- CvPromotionClasses.cpp, line 2484
- Hook name
CivHooks::PromotionArrayHelpers_Write
Hooks
static bool BeforePromotionArrayHelpers_Write(FDataStream& kStream, const CvBitfield& kPromotions, int iArraySize);static void AfterPromotionArrayHelpers_Write(FDataStream& kStream, const CvBitfield& kPromotions, int iArraySize);static void ReplacePromotionArrayHelpers_Write(void (*original)(FDataStream&, const CvBitfield&, int), FDataStream& kStream, const CvBitfield& kPromotions, int iArraySize);CivRegisterBefore<CivHooks::PromotionArrayHelpers_Write>(host, &BeforePromotionArrayHelpers_Write);CivRegisterAfter<CivHooks::PromotionArrayHelpers_Write>(host, &AfterPromotionArrayHelpers_Write);CivRegisterReplace<CivHooks::PromotionArrayHelpers_Write>(host, &ReplacePromotionArrayHelpers_Write);
Code
2483// Save the promotions. Entries are saved as hash values and only the entries that are 'on' are saved2484void PromotionArrayHelpers::Write(FDataStream& kStream, const CvBitfield& kPromotions, int iArraySize)2485{2486 // We are only going to save the 'on' bit, so we have to count them2487 int iCount = 0;24882489 for(int iI = 0; iI < iArraySize; iI++)2490 {2491 const PromotionTypes ePromotion = static_cast<PromotionTypes>(iI);2492 if (kPromotions.GetBit(ePromotion) && GC.getPromotionInfo(ePromotion) != NULL)2493 ++iCount;2494 }24952496 kStream << iCount;24972498 for(int iI = 0; iI < iArraySize; iI++)2499 {2500 const PromotionTypes ePromotion = static_cast<PromotionTypes>(iI);2501 bool bValue = kPromotions.GetBit(ePromotion);2502 if (bValue)2503 {2504 CvPromotionEntry* pkPromotionInfo = GC.getPromotionInfo(ePromotion);2505 if(pkPromotionInfo)2506 {2507 uint uiHash = FString::Hash( pkPromotionInfo->GetType() ); // Save just the hash2508 kStream << uiHash;2509 kStream << bValue;2510 }2511 }2512 }2513}
Calls
- CvBaseInfo::GetType() const
- CvBitfield::GetBit(uint) const
- CvGlobals::getPromotionInfo(PromotionTypes)
FDataStream::operator<<FDataStream::operator<<FDataStream::operator<<FStringA::Hash