Hooks
static bool BeforeCvTechEntry_CacheResults(CvTechEntry* self, Database::Results& kResults, CvDatabaseUtility& kUtility, bool& result);static void AfterCvTechEntry_CacheResults(CvTechEntry* self, Database::Results& kResults, CvDatabaseUtility& kUtility, bool& result);static bool ReplaceCvTechEntry_CacheResults(bool (*original)(CvTechEntry*, Database::Results&, CvDatabaseUtility&), CvTechEntry* self, Database::Results& kResults, CvDatabaseUtility& kUtility);CivRegisterBefore<CivHooks::CvTechEntry_CacheResults>(host, &BeforeCvTechEntry_CacheResults);CivRegisterAfter<CivHooks::CvTechEntry_CacheResults>(host, &AfterCvTechEntry_CacheResults);CivRegisterReplace<CivHooks::CvTechEntry_CacheResults>(host, &ReplaceCvTechEntry_CacheResults);
Code
90bool CvTechEntry::CacheResults(Database::Results& kResults, CvDatabaseUtility& kUtility)91{92 if(!CvBaseInfo::CacheResults(kResults, kUtility))93 return false;9495 //Basic Properties96 m_iAIWeight = kResults.GetInt("AIWeight");97 m_iAITradeModifier = kResults.GetInt("AITradeModifier");98 m_iResearchCost = kResults.GetInt("Cost");99 m_iAdvancedStartCost = kResults.GetInt("AdvancedStartCost");100 m_iFeatureProductionModifier = kResults.GetInt("FeatureProductionModifier");101 m_iUnitFortificationModifier = kResults.GetInt("UnitFortificationModifier");102 m_iUnitBaseHealModifier = kResults.GetInt("UnitBaseHealModifier");103 m_iWorkerSpeedModifier = kResults.GetInt("WorkerSpeedModifier");104 m_iFirstFreeTechs = kResults.GetInt("FirstFreeTechs");105 m_iEmbarkedMoveChange = kResults.GetInt("EmbarkedMoveChange");106 m_iInternationalTradeRoutesChange = kResults.GetInt("InternationalTradeRoutesChange");107 m_iInfluenceSpreadModifier = kResults.GetInt("InfluenceSpreadModifier");108 m_iExtraVotesPerDiplomat = kResults.GetInt("ExtraVotesPerDiplomat");109 m_bEndsGame = kResults.GetBool("EndsGame");110 m_bAllowsEmbarking = kResults.GetBool("AllowsEmbarking");111 m_bAllowsDefensiveEmbarking = kResults.GetBool("AllowsDefensiveEmbarking");112 m_bEmbarkedAllWaterPassage = kResults.GetBool("EmbarkedAllWaterPassage");113 m_bAllowsBarbarianBoats = kResults.GetBool("AllowsBarbarianBoats");114 m_bRepeat = kResults.GetBool("Repeat");115 m_bTrade = kResults.GetBool("Trade");116 m_bDisable = kResults.GetBool("Disable");117 m_bGoodyTech = kResults.GetBool("GoodyTech");118 m_bTriggersArchaeologicalSites = kResults.GetBool("TriggersArchaeologicalSites");119 m_bAllowsWorldCongress = kResults.GetBool("AllowsWorldCongress");120 m_bExtraWaterSeeFrom = kResults.GetBool("ExtraWaterSeeFrom");121 m_bMapCentering = kResults.GetBool("MapCentering");122 m_bMapVisible = kResults.GetBool("MapVisible");123 m_bMapTrading = kResults.GetBool("MapTrading");124 m_bTechTrading = kResults.GetBool("TechTrading");125 m_bGoldTrading = kResults.GetBool("GoldTrading");126 m_bAllowEmbassyTradingAllowed = kResults.GetBool("AllowEmbassyTradingAllowed");127 m_bOpenBordersTradingAllowed = kResults.GetBool("OpenBordersTradingAllowed");128 m_bDefensivePactTradingAllowed = kResults.GetBool("DefensivePactTradingAllowed");129 m_bResearchAgreementTradingAllowed = kResults.GetBool("ResearchAgreementTradingAllowed");130 m_bTradeAgreementTradingAllowed = kResults.GetBool("TradeAgreementTradingAllowed");131 m_bPermanentAllianceTrading = kResults.GetBool("PermanentAllianceTradingAllowed");132#if defined(MOD_TECHS_CITY_WORKING)133 m_iCityWorkingChange = kResults.GetInt("CityWorkingChange");134#endif135#if defined(MOD_TECHS_CITY_AUTOMATON_WORKERS)136 m_iCityAutomatonWorkersChange = kResults.GetInt("CityAutomatonWorkersChange");137#endif138 m_bBridgeBuilding = kResults.GetBool("BridgeBuilding");139 m_bWaterWork = kResults.GetBool("WaterWork");140 m_iGridX = kResults.GetInt("GridX");141 m_iGridY = kResults.GetInt("GridY");142143 //References144 const char* szTextVal = NULL;145 szTextVal = kResults.GetText("Era");146 m_iEra = GC.getInfoTypeForString(szTextVal, true);147148 szTextVal = kResults.GetText("FirstFreeUnitClass");149 m_iFirstFreeUnitClass = GC.getInfoTypeForString(szTextVal, true);150151 szTextVal = kResults.GetText("Quote");152 SetQuoteKey(szTextVal);153154 szTextVal = kResults.GetText("AudioIntro");155 SetSound(szTextVal);156157 szTextVal = kResults.GetText("AudioIntroHeader");158 SetSoundMP(szTextVal);159160 //Arrays161 const char* szTechType = GetType();162 kUtility.PopulateArrayByValue(m_piDomainExtraMoves, "Domains", "Technology_DomainExtraMoves", "DomainType", "TechType", szTechType, "Moves", 0, NUM_DOMAIN_TYPES);163 kUtility.PopulateArrayByValue(m_piTradeRouteDomainExtraRange, "Domains", "Technology_TradeRouteDomainExtraRange", "DomainType", "TechType", szTechType, "Range", 0, NUM_DOMAIN_TYPES);164 kUtility.PopulateArrayByExistence(m_pabFreePromotion, "UnitPromotions", "Technology_FreePromotions", "PromotionType", "TechType", szTechType);165 kUtility.SetFlavors(m_piFlavorValue, "Technology_Flavors", "TechType", szTechType);166167 const size_t TechnologiesCount = kUtility.MaxRows("Technologies");168169 //ORPrereqTechs170 {171 //PrereqTech array must be initialized to NO_TECH.172173 kUtility.InitializeArray(m_piPrereqOrTechs, TechnologiesCount, NO_TECH);174175 std::string strKey = "Technologies - Technology_ORPrereqTechs";176 Database::Results* pResults = kUtility.GetResults(strKey);177 if(pResults == NULL)178 {179 pResults = kUtility.PrepareResults(strKey, "select Technologies.ID from Technology_ORPrereqTechs inner join Technologies on Technologies.Type = PrereqTech where TechType = ?;");180 }181182 pResults->Bind(1, szTechType, -1, false);183184 int i = 0;185 while(pResults->Step())186 {187 m_piPrereqOrTechs[i++] = pResults->GetInt(0);188 }189190 pResults->Reset();191 }192193 //PrereqTechs194 {195 //PrereqTech array must be initialized to NO_TECH.196 kUtility.InitializeArray(m_piPrereqAndTechs, TechnologiesCount, NO_TECH);197198 std::string strKey = "Technologies - Technology_PrereqTechs";199 Database::Results* pResults = kUtility.GetResults(strKey);200 if(pResults == NULL)201 {202 pResults = kUtility.PrepareResults(strKey, "select Technologies.ID from Technology_PrereqTechs inner join Technologies on Technologies.Type = PrereqTech where TechType = ?;");203 }204205 pResults->Bind(1, szTechType, -1, false);206207 int i = 0;208 while(pResults->Step())209 {210 m_piPrereqAndTechs[i++] = pResults->GetInt(0);211 }212213 pResults->Reset();214 }215216 return true;217}