Bazaar developer reference

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

Called by