CvPlayer::GetScienceYieldFromPreviousTurns(int, int)
- Defined in
- CvPlayer.cpp, line 18909
- Class
- CvPlayer
- Hook name
CivHooks::CvPlayer_GetScienceYieldFromPreviousTurns
Hooks
static bool BeforeCvPlayer_GetScienceYieldFromPreviousTurns(CvPlayer* self, int iGameTurn, int iNumPreviousTurnsToCount, int& result);static void AfterCvPlayer_GetScienceYieldFromPreviousTurns(CvPlayer* self, int iGameTurn, int iNumPreviousTurnsToCount, int& result);static int ReplaceCvPlayer_GetScienceYieldFromPreviousTurns(int (*original)(CvPlayer*, int, int), CvPlayer* self, int iGameTurn, int iNumPreviousTurnsToCount);CivRegisterBefore<CivHooks::CvPlayer_GetScienceYieldFromPreviousTurns>(host, &BeforeCvPlayer_GetScienceYieldFromPreviousTurns);CivRegisterAfter<CivHooks::CvPlayer_GetScienceYieldFromPreviousTurns>(host, &AfterCvPlayer_GetScienceYieldFromPreviousTurns);CivRegisterReplace<CivHooks::CvPlayer_GetScienceYieldFromPreviousTurns>(host, &ReplaceCvPlayer_GetScienceYieldFromPreviousTurns);
Code
18907/// What is the sum of science yield (not counting Research Agreements or Great Scientist bonuses) from the previous N turns?18908/// NOTE: This uses the data tracked in recording a replay, so if replays are disabled in the future then this must change!18909int CvPlayer::GetScienceYieldFromPreviousTurns(int iGameTurn, int iNumPreviousTurnsToCount)18910{18911 // Beakers per turn yield is tracked in replay data, so use that18912 int iSum = 0;18913 for (int iI = 0; iI < iNumPreviousTurnsToCount; iI++)18914 {18915 int iTurn = iGameTurn - iI;18916 if (iTurn < 0)18917 {18918 break;18919 }1892018921 int iTurnScience = getReplayDataValue(getReplayDataSetIndex("REPLAYDATASET_SCIENCEPERTURN"), iTurn);18922 if (iTurnScience >= 0)18923 {18924 iSum += iTurnScience;18925 }18926 else if (iTurnScience == -1) // No data for this turn (ex. late era start)18927 {18928 iSum += (3 * GetScience());18929 }18930 }1893118932 return iSum;18933}