game: fix building screen production numbers ignoring influence

This commit is contained in:
Crypto City 2021-08-31 11:29:01 +00:00
parent 7138ea53af
commit ef233ea492

View File

@ -31,6 +31,7 @@
#include "game/game-state.h"
#include "game/game-wallet.h"
#include "game-util.h"
#include "shares.h"
#include "ui-tooltip.h"
#include "ui-urho3d.h"
#include "ui-select-items.h"
@ -958,6 +959,13 @@ static std::vector<std::string> get_flag_data(const GameState *game, const std::
snprintf(s, sizeof(s), "%u", flag->potential[POTENTIAL_GEMSTONE]);
contents[FC_GEMSTONE] = s;
const CityState &city = game->cityState;
uint32_t road_bonus = 100, influence_bonus = 100;
std::vector<std::string> influence_changes;
const bool connected_city_specialization = (city.specializations >> cc::CITY_SPECIALIZATION_CONNECTED) & 1;
const uint64_t age = game->top_height - flag->construction_height;
get_shares(game, &game->map, flag, flag->role, flag->economic_power, age, city.special_event, flag->role == ROLE_EMPTY ? DEFAULT_REPAIR : flag->repair, false, road_bonus, influence_bonus, connected_city_specialization, true, &influence_changes);
uint64_t monetary_cost = 0;
std::vector<std::pair<uint32_t, uint32_t>> cost;
std::vector<std::pair<uint32_t, uint32_t>> production;
@ -966,8 +974,15 @@ static std::vector<std::string> get_flag_data(const GameState *game, const std::
const uint64_t next_update_height = (game->top_height + GAME_UPDATE_FREQUENCY - 1) / GAME_UPDATE_FREQUENCY * GAME_UPDATE_FREQUENCY;
const uint32_t logging_level = game_util::get_logging_level(w, flag->owner);
const uint32_t quarrying_level = game_util::get_quarrying_level(w, flag->owner);
if (cc::get_building_cost_production(next_update_height, flag->x0, flag->y0, flag->x1, flag->y1, flag->role, flag->economic_power, next_update_height - flag->construction_height, flag->potential, dense_forest, dense_rockbed, logging_level, quarrying_level, monetary_cost, cost, production))
if (cc::get_building_cost_production(next_update_height, flag->x0, flag->y0, flag->x1, flag->y1, flag->role, flag->economic_power, game->top_height - flag->construction_height, flag->potential, dense_forest, dense_rockbed, logging_level, quarrying_level, monetary_cost, cost, production))
{
for (auto &e: production)
{
e.second = e.second * influence_bonus / 100;
const uint64_t bonus_1024 = cc::get_production_road_bonus_1024(road_bonus);
e.second += e.second * bonus_1024 / 1024;
}
const int32_t delta_pine = find_item(production, ITEM_PINE) - find_item(cost, ITEM_PINE);
const int32_t delta_oak = find_item(production, ITEM_OAK) - find_item(cost, ITEM_OAK);
const int32_t delta_teak = find_item(production, ITEM_TEAK) - find_item(cost, ITEM_TEAK);