Track income by cargo type in company economy stats
This commit is contained in:
@@ -1348,13 +1348,18 @@
|
||||
<ClCompile Include="..\src\os\windows\string_uniscribe.cpp" />
|
||||
<ClCompile Include="..\src\os\windows\win32.cpp" />
|
||||
<ClInclude Include="..\src\thread.h" />
|
||||
<ClInclude Include="..\src\citymania\cm_console_cmds.hpp" />
|
||||
<ClCompile Include="..\src\citymania\cm_console_cmds.cpp" />
|
||||
<ClInclude Include="..\src\citymania\cm_event.hpp" />
|
||||
<ClInclude Include="..\src\citymania\cm_export.hpp" />
|
||||
<ClCompile Include="..\src\citymania\cm_export.cpp" />
|
||||
<ClInclude Include="..\src\citymania\cm_game.hpp" />
|
||||
<ClCompile Include="..\src\citymania\cm_game.cpp" />
|
||||
<ClInclude Include="..\src\citymania\cm_main.hpp" />
|
||||
<ClCompile Include="..\src\citymania\cm_main.cpp" />
|
||||
<ClInclude Include="..\src\citymania\cm_type.hpp" />
|
||||
<ClInclude Include="..\src\citymania\extensions\cmext_town.hpp" />
|
||||
<ClInclude Include="..\src\citymania\extensions\cmext_company.hpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\media\openttd.ico" />
|
||||
|
||||
@@ -3135,9 +3135,21 @@
|
||||
<ClInclude Include="..\src\thread.h">
|
||||
<Filter>Threading</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\citymania\cm_console_cmds.hpp">
|
||||
<Filter>CityMania</Filter>
|
||||
</ClInclude>
|
||||
<ClCompile Include="..\src\citymania\cm_console_cmds.cpp">
|
||||
<Filter>CityMania</Filter>
|
||||
</ClCompile>
|
||||
<ClInclude Include="..\src\citymania\cm_event.hpp">
|
||||
<Filter>CityMania</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\citymania\cm_export.hpp">
|
||||
<Filter>CityMania</Filter>
|
||||
</ClInclude>
|
||||
<ClCompile Include="..\src\citymania\cm_export.cpp">
|
||||
<Filter>CityMania</Filter>
|
||||
</ClCompile>
|
||||
<ClInclude Include="..\src\citymania\cm_game.hpp">
|
||||
<Filter>CityMania</Filter>
|
||||
</ClInclude>
|
||||
@@ -3156,6 +3168,9 @@
|
||||
<ClInclude Include="..\src\citymania\extensions\cmext_town.hpp">
|
||||
<Filter>CityMania</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\citymania\extensions\cmext_company.hpp">
|
||||
<Filter>CityMania</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\media\openttd.ico" />
|
||||
|
||||
@@ -1348,13 +1348,18 @@
|
||||
<ClCompile Include="..\src\os\windows\string_uniscribe.cpp" />
|
||||
<ClCompile Include="..\src\os\windows\win32.cpp" />
|
||||
<ClInclude Include="..\src\thread.h" />
|
||||
<ClInclude Include="..\src\citymania\cm_console_cmds.hpp" />
|
||||
<ClCompile Include="..\src\citymania\cm_console_cmds.cpp" />
|
||||
<ClInclude Include="..\src\citymania\cm_event.hpp" />
|
||||
<ClInclude Include="..\src\citymania\cm_export.hpp" />
|
||||
<ClCompile Include="..\src\citymania\cm_export.cpp" />
|
||||
<ClInclude Include="..\src\citymania\cm_game.hpp" />
|
||||
<ClCompile Include="..\src\citymania\cm_game.cpp" />
|
||||
<ClInclude Include="..\src\citymania\cm_main.hpp" />
|
||||
<ClCompile Include="..\src\citymania\cm_main.cpp" />
|
||||
<ClInclude Include="..\src\citymania\cm_type.hpp" />
|
||||
<ClInclude Include="..\src\citymania\extensions\cmext_town.hpp" />
|
||||
<ClInclude Include="..\src\citymania\extensions\cmext_company.hpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\media\openttd.ico" />
|
||||
|
||||
@@ -3135,9 +3135,21 @@
|
||||
<ClInclude Include="..\src\thread.h">
|
||||
<Filter>Threading</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\citymania\cm_console_cmds.hpp">
|
||||
<Filter>CityMania</Filter>
|
||||
</ClInclude>
|
||||
<ClCompile Include="..\src\citymania\cm_console_cmds.cpp">
|
||||
<Filter>CityMania</Filter>
|
||||
</ClCompile>
|
||||
<ClInclude Include="..\src\citymania\cm_event.hpp">
|
||||
<Filter>CityMania</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\citymania\cm_export.hpp">
|
||||
<Filter>CityMania</Filter>
|
||||
</ClInclude>
|
||||
<ClCompile Include="..\src\citymania\cm_export.cpp">
|
||||
<Filter>CityMania</Filter>
|
||||
</ClCompile>
|
||||
<ClInclude Include="..\src\citymania\cm_game.hpp">
|
||||
<Filter>CityMania</Filter>
|
||||
</ClInclude>
|
||||
@@ -3156,6 +3168,9 @@
|
||||
<ClInclude Include="..\src\citymania\extensions\cmext_town.hpp">
|
||||
<Filter>CityMania</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\citymania\extensions\cmext_company.hpp">
|
||||
<Filter>CityMania</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\media\openttd.ico" />
|
||||
|
||||
@@ -1348,13 +1348,18 @@
|
||||
<ClCompile Include="..\src\os\windows\string_uniscribe.cpp" />
|
||||
<ClCompile Include="..\src\os\windows\win32.cpp" />
|
||||
<ClInclude Include="..\src\thread.h" />
|
||||
<ClInclude Include="..\src\citymania\cm_console_cmds.hpp" />
|
||||
<ClCompile Include="..\src\citymania\cm_console_cmds.cpp" />
|
||||
<ClInclude Include="..\src\citymania\cm_event.hpp" />
|
||||
<ClInclude Include="..\src\citymania\cm_export.hpp" />
|
||||
<ClCompile Include="..\src\citymania\cm_export.cpp" />
|
||||
<ClInclude Include="..\src\citymania\cm_game.hpp" />
|
||||
<ClCompile Include="..\src\citymania\cm_game.cpp" />
|
||||
<ClInclude Include="..\src\citymania\cm_main.hpp" />
|
||||
<ClCompile Include="..\src\citymania\cm_main.cpp" />
|
||||
<ClInclude Include="..\src\citymania\cm_type.hpp" />
|
||||
<ClInclude Include="..\src\citymania\extensions\cmext_town.hpp" />
|
||||
<ClInclude Include="..\src\citymania\extensions\cmext_company.hpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\media\openttd.ico" />
|
||||
|
||||
@@ -3135,9 +3135,21 @@
|
||||
<ClInclude Include="..\src\thread.h">
|
||||
<Filter>Threading</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\citymania\cm_console_cmds.hpp">
|
||||
<Filter>CityMania</Filter>
|
||||
</ClInclude>
|
||||
<ClCompile Include="..\src\citymania\cm_console_cmds.cpp">
|
||||
<Filter>CityMania</Filter>
|
||||
</ClCompile>
|
||||
<ClInclude Include="..\src\citymania\cm_event.hpp">
|
||||
<Filter>CityMania</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\citymania\cm_export.hpp">
|
||||
<Filter>CityMania</Filter>
|
||||
</ClInclude>
|
||||
<ClCompile Include="..\src\citymania\cm_export.cpp">
|
||||
<Filter>CityMania</Filter>
|
||||
</ClCompile>
|
||||
<ClInclude Include="..\src\citymania\cm_game.hpp">
|
||||
<Filter>CityMania</Filter>
|
||||
</ClInclude>
|
||||
@@ -3156,6 +3168,9 @@
|
||||
<ClInclude Include="..\src\citymania\extensions\cmext_town.hpp">
|
||||
<Filter>CityMania</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\citymania\extensions\cmext_company.hpp">
|
||||
<Filter>CityMania</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\media\openttd.ico" />
|
||||
|
||||
@@ -1204,3 +1204,4 @@ citymania/cm_main.hpp
|
||||
citymania/cm_main.cpp
|
||||
citymania/cm_type.hpp
|
||||
citymania/extensions/cmext_town.hpp
|
||||
citymania/extensions/cmext_company.hpp
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "../cargo_type.h"
|
||||
#include "../company_type.h"
|
||||
#include "../economy_type.h"
|
||||
#include "../industry_type.h"
|
||||
#include "../station_type.h"
|
||||
#include "../town_type.h"
|
||||
|
||||
@@ -61,6 +62,19 @@ struct CompanyEvent {
|
||||
Company *company;
|
||||
};
|
||||
|
||||
struct CargoDeliveredToIndustry {
|
||||
Industry *industry;
|
||||
CargoID cargo_type;
|
||||
uint amount;
|
||||
const Station *station;
|
||||
};
|
||||
|
||||
struct CargoDeliveredToUnknown {
|
||||
CargoID cargo_type;
|
||||
uint amount;
|
||||
const Station *station;
|
||||
};
|
||||
|
||||
struct CargoAccepted {
|
||||
Company *company;
|
||||
CargoID cargo_type;
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
#include "cm_game.hpp"
|
||||
|
||||
#include "../company_base.h"
|
||||
|
||||
#include "../safeguards.h"
|
||||
|
||||
namespace citymania {
|
||||
@@ -78,6 +80,10 @@ Game::Game() {
|
||||
town->cm.real_population += HouseSpec::Get(house_id)->population;
|
||||
}
|
||||
});
|
||||
|
||||
this->events.listen<event::CargoAccepted>([this] (const event::CargoAccepted &event) {
|
||||
event.company->cur_economy.cm.cargo_income[event.cargo_type] += event.profit;
|
||||
});
|
||||
}
|
||||
|
||||
} // namespace citymania
|
||||
18
src/citymania/extensions/cmext_company.hpp
Normal file
18
src/citymania/extensions/cmext_company.hpp
Normal file
@@ -0,0 +1,18 @@
|
||||
#ifndef CMEXT_COMPANY_HPP
|
||||
#define CMEXT_COMPANY_HPP
|
||||
|
||||
#include "../../cargo_type.h"
|
||||
|
||||
namespace citymania {
|
||||
|
||||
namespace ext {
|
||||
class CompanyEconomyEntry {
|
||||
public:
|
||||
Money cargo_income[NUM_CARGO]; ///< Cargo income from each cargo type
|
||||
};
|
||||
|
||||
} // namespace citymania
|
||||
|
||||
} // namespace citymania
|
||||
|
||||
#endif
|
||||
@@ -17,6 +17,8 @@
|
||||
#include "settings_type.h"
|
||||
#include "group.h"
|
||||
|
||||
#include "citymania/extensions/cmext_company.hpp"
|
||||
|
||||
/** Statistics about the economy. */
|
||||
struct CompanyEconomyEntry {
|
||||
Money income; ///< The amount of income.
|
||||
@@ -24,6 +26,7 @@ struct CompanyEconomyEntry {
|
||||
CargoArray delivered_cargo; ///< The amount of delivered cargo.
|
||||
int32 performance_history; ///< Company score (scale 0-1000)
|
||||
Money company_value; ///< The value of the company.
|
||||
citymania::ext::CompanyEconomyEntry cm; ///< CityMania extra economy data.
|
||||
};
|
||||
|
||||
struct CompanyInfrastructure {
|
||||
|
||||
@@ -52,6 +52,8 @@
|
||||
#include "table/strings.h"
|
||||
#include "table/pricebase.h"
|
||||
|
||||
#include "citymania/cm_main.hpp"
|
||||
|
||||
#include "safeguards.h"
|
||||
|
||||
|
||||
@@ -1053,6 +1055,10 @@ static uint DeliverGoodsToIndustry(const Station *st, CargoID cargo_type, uint n
|
||||
|
||||
/* Update the cargo monitor. */
|
||||
AddCargoDelivery(cargo_type, company, amount, ST_INDUSTRY, source, st, ind->index);
|
||||
|
||||
if (amount > 0)
|
||||
citymania::Emit(citymania::event::CargoDeliveredToIndustry{ind, cargo_type, amount, st});
|
||||
|
||||
}
|
||||
|
||||
return accepted;
|
||||
@@ -1113,6 +1119,12 @@ static Money DeliverGoods(int num_pieces, CargoID cargo_type, StationID dest, Ti
|
||||
}
|
||||
}
|
||||
|
||||
if (accepted_total > 0) {
|
||||
if (accepted_ind != accepted_total)
|
||||
citymania::Emit(citymania::event::CargoDeliveredToUnknown{cargo_type, accepted_total - accepted_ind, st});
|
||||
citymania::Emit(citymania::event::CargoAccepted{company, cargo_type, accepted_total, st, profit, src_type, src});
|
||||
}
|
||||
|
||||
return profit;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user