Hooks
static bool BeforeCvTreasury_LogExpenditure(CvTreasury* self, CvString strExpenditure, int iAmount, int iColumn);static void AfterCvTreasury_LogExpenditure(CvTreasury* self, CvString strExpenditure, int iAmount, int iColumn);static void ReplaceCvTreasury_LogExpenditure(void (*original)(CvTreasury*, CvString, int, int), CvTreasury* self, CvString strExpenditure, int iAmount, int iColumn);CivRegisterBefore<CivHooks::CvTreasury_LogExpenditure>(host, &BeforeCvTreasury_LogExpenditure);CivRegisterAfter<CivHooks::CvTreasury_LogExpenditure>(host, &AfterCvTreasury_LogExpenditure);CivRegisterReplace<CivHooks::CvTreasury_LogExpenditure>(host, &ReplaceCvTreasury_LogExpenditure);
Code
864void CvTreasury::LogExpenditure(CvString strExpenditure, int iAmount, int iColumn)865{866 if(!(GC.getLogging() && GC.getAILogging()))867 {868 return;869 }870871 // don't log minor civs for now872 if(m_pPlayer->isMinorCiv())873 {874 return;875 }876877 static bool bFirstRun = true;878 bool bBuildHeader = false;879 CvString strHeader;880 if(bFirstRun)881 {882 bFirstRun = false;883 bBuildHeader = true;884 }885886 CvString strLog;887888 // Find the name of this civ and city889 CvString strPlayerName;890 strPlayerName = m_pPlayer->getCivilizationShortDescription();891 CvString strLogName;892893 // Open the log file894 if(GC.getPlayerAndCityAILogSplit())895 {896 strLogName = "ExpenditureLog_" + strPlayerName + ".csv";897 }898 else899 {900 strLogName = "ExpenditureLog.csv";901 }902903904 FILogFile* pLog;905 pLog = LOGFILEMGR.GetLog(strLogName, FILogFile::kDontTimeStamp);906907 CvString str;908909 // civ name910 TreasuryHelpers::AppendToLog(strHeader, strLog, "Civ Name", strPlayerName);911912 // turn913 TreasuryHelpers::AppendToLog(strHeader, strLog, "Turn", GC.getGame().getGameTurn());914915 // treasury at turn start916 TreasuryHelpers::AppendToLog(strHeader, strLog, "Treasury Before Purchase", m_pPlayer->GetTreasury()->GetGold());917 918 // Cost of Plot919 if (iColumn == 1){920 TreasuryHelpers::AppendToLog(strHeader, strLog, "Cost of Plot:", iAmount);921 }922 else{923 TreasuryHelpers::AppendToLog(strHeader, strLog, "Cost of Plot:", 0);924 }925 926 // City Expenditure and Amount927 if (iColumn == 2){928 TreasuryHelpers::AppendToLog(strHeader, strLog, "City Bought:", strExpenditure);929 TreasuryHelpers::AppendToLog(strHeader, strLog, "City Spent:", iAmount);930 }931 else{932 TreasuryHelpers::AppendToLog(strHeader, strLog, "City Bought:", "");933 TreasuryHelpers::AppendToLog(strHeader, strLog, "City Spent:", 0);934 }935 936 // Unit Upgrade and cost937 if (iColumn == 3){938 TreasuryHelpers::AppendToLog(strHeader, strLog, "Unit Upgraded:", strExpenditure);939 TreasuryHelpers::AppendToLog(strHeader, strLog, "Spent on Upgrade:", iAmount);940 }941 else{942 TreasuryHelpers::AppendToLog(strHeader, strLog, "Unit Upgrade:", "");943 TreasuryHelpers::AppendToLog(strHeader, strLog, "Spent on Upgrade:", 0);944 }945946 // City State Gifted and Amount947 if (iColumn == 4){948 TreasuryHelpers::AppendToLog(strHeader, strLog, "City State Gold Gifted:", strExpenditure);949 TreasuryHelpers::AppendToLog(strHeader, strLog, "Gold Gift Amount:", iAmount);950 }951 else{952 TreasuryHelpers::AppendToLog(strHeader, strLog, "City State Gold Gifted:", "");953 TreasuryHelpers::AppendToLog(strHeader, strLog, "Gold Gift Amount:", 0);954 }955 956 // City State Improved and Amount957 if (iColumn == 5){958 TreasuryHelpers::AppendToLog(strHeader, strLog, "City State Improved:", strExpenditure);959 TreasuryHelpers::AppendToLog(strHeader, strLog, "Gold for Improvement Amount:", iAmount);960 }961 else{962 TreasuryHelpers::AppendToLog(strHeader, strLog, "City State Improved:", "");963 TreasuryHelpers::AppendToLog(strHeader, strLog, "Gold for Improvement Amount:", 0);964 }965966 // City State Bought and Amount967 if (iColumn == 6){968 TreasuryHelpers::AppendToLog(strHeader, strLog, "City State Bought:", strExpenditure);969 TreasuryHelpers::AppendToLog(strHeader, strLog, "Bought for:", iAmount);970 }971 else{972 TreasuryHelpers::AppendToLog(strHeader, strLog, "City State Bought:", "");973 TreasuryHelpers::AppendToLog(strHeader, strLog, "Bought for:", 0);974 }975 976 // Emergency City Expenditure Unit and Amount977 if (iColumn == 7){978 TreasuryHelpers::AppendToLog(strHeader, strLog, "Emergency Unit:", strExpenditure);979 TreasuryHelpers::AppendToLog(strHeader, strLog, "Emergency Unit Cost:", iAmount);980 }981 else{982 TreasuryHelpers::AppendToLog(strHeader, strLog, "Emergency Unit:", "");983 TreasuryHelpers::AppendToLog(strHeader, strLog, "Emergency Unit Cost:", 0);984 }985 986 // Emergency City Expenditure Unit and Amount987 if (iColumn == 8){988 TreasuryHelpers::AppendToLog(strHeader, strLog, "Emergency Building:", strExpenditure);989 TreasuryHelpers::AppendToLog(strHeader, strLog, "Emergency Building Cost:", iAmount);990 }991 else{992 TreasuryHelpers::AppendToLog(strHeader, strLog, "Emergency Building:", "");993 TreasuryHelpers::AppendToLog(strHeader, strLog, "Emergency Building Cost:", 0);994 }995996 // Research Agreement and Amount997 if (iColumn == 9){998 TreasuryHelpers::AppendToLog(strHeader, strLog, "Research Agreement with:", strExpenditure);999 TreasuryHelpers::AppendToLog(strHeader, strLog, "Research Agreement Cost:", iAmount);1000 }1001 else{1002 TreasuryHelpers::AppendToLog(strHeader, strLog, "Research Agreement with:", "");1003 TreasuryHelpers::AppendToLog(strHeader, strLog, "Research Agreement Cost:", 0);1004 }10051006 if(bBuildHeader)1007 {1008 pLog->Msg(strHeader);1009 }1010 pLog->Msg(strLog);1011}