Hooks
static bool BeforeCvResourceInfo_CacheResults(CvResourceInfo* self, Database::Results& kResults, CvDatabaseUtility& kUtility, bool& result);static void AfterCvResourceInfo_CacheResults(CvResourceInfo* self, Database::Results& kResults, CvDatabaseUtility& kUtility, bool& result);static bool ReplaceCvResourceInfo_CacheResults(bool (*original)(CvResourceInfo*, Database::Results&, CvDatabaseUtility&), CvResourceInfo* self, Database::Results& kResults, CvDatabaseUtility& kUtility);CivRegisterBefore<CivHooks::CvResourceInfo_CacheResults>(host, &BeforeCvResourceInfo_CacheResults);CivRegisterAfter<CivHooks::CvResourceInfo_CacheResults>(host, &AfterCvResourceInfo_CacheResults);CivRegisterReplace<CivHooks::CvResourceInfo_CacheResults>(host, &ReplaceCvResourceInfo_CacheResults);
Code
4731bool CvResourceInfo::CacheResults(Database::Results& kResults, CvDatabaseUtility& kUtility)4732{4733 if(!CvBaseInfo::CacheResults(kResults, kUtility))4734 return false;47354736 //Basic properties4737 m_iStartingResourceQuantity = kResults.GetInt("StartingResourceQuantity");4738 m_iAITradeModifier = kResults.GetInt("AITradeModifier");4739 m_iAIObjective = kResults.GetInt("AIObjective");4740 m_iHappiness = kResults.GetInt("Happiness");4741 m_iWonderProductionMod = kResults.GetInt("WonderProductionMod");47424743 const char* szEraType = kResults.GetText("WonderProductionModObsoleteEra");4744 m_eWonderProductionModObsoleteEra = (EraTypes)GC.getInfoTypeForString(szEraType, true);47454746 m_iMinAreaSize = kResults.GetInt("MinAreaSize");4747 m_iMinLatitude = kResults.GetInt("MinLatitude");4748 m_iMaxLatitude = kResults.GetInt("MaxLatitude");4749 m_iPlacementOrder = kResults.GetInt("PlacementOrder");4750 m_iConstAppearance = kResults.GetInt("ConstAppearance");47514752 m_iPercentPerPlayer = kResults.GetInt("Player");4753 m_iTilesPer = kResults.GetInt("TilesPer");4754 m_iMinLandPercent = kResults.GetInt("MinLandPercent");4755 m_iUniqueRange = kResults.GetInt("Unique");4756 m_iGroupRange = kResults.GetInt("GroupRange");4757 m_iGroupRand = kResults.GetInt("GroupRand");4758 m_bPresentOnAllValidPlots = kResults.GetBool("PresentOnAllValidPlots");4759 m_bOneArea = kResults.GetBool("Area");4760 m_bHills = kResults.GetBool("Hills");4761 m_bFlatlands = kResults.GetBool("Flatlands");4762 m_bNoRiverSide = kResults.GetBool("NoRiverSide");4763 m_bNormalize = kResults.GetBool("Normalize");4764 m_bOnlyMinorCivs = kResults.GetBool("OnlyMinorCivs");47654766 const char* szCivilizationType = kResults.GetText("CivilizationType");4767 m_eRequiredCivilization = (CivilizationTypes)GC.getInfoTypeForString(szCivilizationType, true);47684769 m_iRandAppearance1 = kResults.GetInt("RandApp1");4770 m_iRandAppearance2 = kResults.GetInt("RandApp2");4771 m_iRandAppearance3 = kResults.GetInt("RandApp3");4772 m_iRandAppearance4 = kResults.GetInt("RandApp4");47734774 m_eResourceUsage = (ResourceUsageTypes)kResults.GetInt("ResourceUsage");47754776 //Basic references4777 const char* szResourceClassType = kResults.GetText("ResourceClassType");4778 m_iResourceClassType = GC.getInfoTypeForString(szResourceClassType, true);47794780 const char* szIconString = kResults.GetText("IconString");4781 SetIconString(szIconString);47824783 const char* szArtDefineTag = kResults.GetText("ArtDefineTag");4784 setArtDefineTag(szArtDefineTag);47854786 const char* szArtDefineTagHeavy = kResults.GetText("ArtDefineTagHeavy");4787 setArtDefineTagHeavy(szArtDefineTagHeavy);47884789 const char* szAltArtDefineTag = kResults.GetText("AltArtDefineTag");4790 setAltArtDefineTag(szAltArtDefineTag);47914792 const char* szAltArtDefineTagHeavy = kResults.GetText("AltArtDefineTagHeavy");4793 setAltArtDefineTagHeavy(szAltArtDefineTagHeavy);47944795 const char* szTechReveal = kResults.GetText("TechReveal");4796 m_iTechReveal = GC.getInfoTypeForString(szTechReveal, true);47974798 const char* szPolicyReveal = kResults.GetText("PolicyReveal");4799 m_iPolicyReveal = GC.getInfoTypeForString(szPolicyReveal, true);48004801 const char* szTechCityTrade = kResults.GetText("TechCityTrade");4802 m_iTechCityTrade = GC.getInfoTypeForString(szTechCityTrade, true);48034804 const char* szTechObsolete = kResults.GetText("TechObsolete");4805 m_iTechObsolete = GC.getInfoTypeForString(szTechObsolete, true);48064807 const char* szAIStopTradingEra = kResults.GetText("AIStopTradingEra");4808 m_iAIStopTradingEra = GC.getInfoTypeForString(szAIStopTradingEra, true);48094810 //Arrays4811 const char* szResourceType = GetType();4812 kUtility.SetYields(m_piYieldChange, "Resource_YieldChanges", "ResourceType", szResourceType);4813 kUtility.SetFlavors(m_piFlavor, "Resource_Flavors", "ResourceType", szResourceType);48144815 kUtility.PopulateArrayByExistence(m_pbTerrain, "Terrains", "Resource_TerrainBooleans", "TerrainType", "ResourceType", szResourceType);4816 kUtility.PopulateArrayByExistence(m_pbFeature, "Features", "Resource_FeatureBooleans", "FeatureType", "ResourceType", szResourceType);4817 kUtility.PopulateArrayByExistence(m_pbFeatureTerrain, "Terrains", "Resource_FeatureTerrainBooleans", "TerrainType", "ResourceType", szResourceType);48184819 //Resource_QuantityTypes4820 {4821 const int iNumQuantityTypes = GC.getNUM_RESOURCE_QUANTITY_TYPES();4822 kUtility.InitializeArray(m_piResourceQuantityTypes, iNumQuantityTypes);48234824 //Default it to 14825 m_piResourceQuantityTypes[0] = 1;48264827 Database::Results kArrayResults;4828 char szQuery[512];4829 sprintf_s(szQuery, "select Quantity from Resource_QuantityTypes where ResourceType = '%s';", szResourceType);48304831 if(DB.Execute(kArrayResults, szQuery))4832 {4833 int i = 0;4834 while(kArrayResults.Step())4835 {4836 CvAssertMsg(i < iNumQuantityTypes, "Too many resource quantities.");4837 const int quantity = kArrayResults.GetInt(0);4838 m_piResourceQuantityTypes[i++] = quantity;4839 }4840 }48414842 }484348444845 return true;4846}