From a5b9489e13cb61d49b0b4f58c114160255b7047d Mon Sep 17 00:00:00 2001 From: Chris Beck Date: Thu, 12 Jun 2014 21:48:26 -0400 Subject: [PATCH] refactor tod_manager::get_illuminated_tod to take map as an arg Helps to encapsulate, and eliminate unnecessary resources::pointers. --- src/actions/attack.cpp | 6 +++--- src/actions/attack.hpp | 3 ++- src/ai/formula/function_table.cpp | 2 +- src/attack_prediction_display.cpp | 3 ++- src/reports.cpp | 8 ++++---- src/scripting/lua.cpp | 2 +- src/terrain_filter.cpp | 2 +- src/tod_manager.cpp | 3 +-- src/tod_manager.hpp | 2 +- 9 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/actions/attack.cpp b/src/actions/attack.cpp index d15f9193b0ed..61f1b9c959c7 100644 --- a/src/actions/attack.cpp +++ b/src/actions/attack.cpp @@ -160,7 +160,7 @@ battle_context_unit_stats::battle_context_unit_stats(const unit &u, // Get the damage multiplier applied to the base damage of the weapon. int damage_multiplier = 100; // Time of day bonus. - damage_multiplier += combat_modifier(u_loc, u.alignment(), u.is_fearless()); + damage_multiplier += combat_modifier(resources::gameboard->map(), u_loc, u.alignment(), u.is_fearless()); // Leadership bonus. int leader_bonus = 0; if (under_leadership(units, u_loc, &leader_bonus).valid()) @@ -1615,11 +1615,11 @@ map_location under_leadership(const unit_map& units, const map_location& loc, return abil.highest("value").second; } -int combat_modifier(const map_location &loc, unit_type::ALIGNMENT alignment, +int combat_modifier(const gamemap & map, const map_location &loc, unit_type::ALIGNMENT alignment, bool is_fearless) { const tod_manager & tod_m = *resources::tod_manager; - int lawful_bonus = tod_m.get_illuminated_time_of_day(loc).lawful_bonus; + int lawful_bonus = tod_m.get_illuminated_time_of_day(map, loc).lawful_bonus; return generic_combat_modifier(lawful_bonus, alignment, is_fearless); } diff --git a/src/actions/attack.hpp b/src/actions/attack.hpp index d4bd235b865d..534ab4fa0afc 100644 --- a/src/actions/attack.hpp +++ b/src/actions/attack.hpp @@ -27,6 +27,7 @@ struct map_location; class team; class unit; class unit_map; +class gamemap; #include "../unit_types.hpp" #include "../ai/lua/unit_advancements_aspect.hpp" @@ -247,7 +248,7 @@ map_location under_leadership(const unit_map& units, const map_location& loc, * Returns the amount that a unit's damage should be multiplied by * due to the current time of day. */ -int combat_modifier(const map_location &loc, unit_type::ALIGNMENT alignment, +int combat_modifier(const gamemap & map, const map_location &loc, unit_type::ALIGNMENT alignment, bool is_fearless); /** diff --git a/src/ai/formula/function_table.cpp b/src/ai/formula/function_table.cpp index 3a7e49b54f7d..dbc2865c04cd 100644 --- a/src/ai/formula/function_table.cpp +++ b/src/ai/formula/function_table.cpp @@ -611,7 +611,7 @@ class timeofday_modifier_function : public function_expression { loc = &u_call->get_location(); } - return variant(combat_modifier(*loc, un.alignment(), un.is_fearless())); + return variant(combat_modifier(resources::gameboard->map(),*loc, un.alignment(), un.is_fearless())); } }; diff --git a/src/attack_prediction_display.cpp b/src/attack_prediction_display.cpp index 901313adf23e..648d80880f8e 100644 --- a/src/attack_prediction_display.cpp +++ b/src/attack_prediction_display.cpp @@ -18,6 +18,7 @@ #include "actions/attack.hpp" #include "attack_prediction.hpp" #include "gettext.hpp" +#include "game_board.hpp" #include "game_display.hpp" #include "language.hpp" #include "marked-up_text.hpp" @@ -210,7 +211,7 @@ void battle_prediction_pane::get_unit_strings(const battle_context_unit_stats& s } // Time of day modifier. - int tod_modifier = combat_modifier(u_loc, u.alignment(), u.is_fearless()); + int tod_modifier = combat_modifier(resources::gameboard->map(), u_loc, u.alignment(), u.is_fearless()); if(tod_modifier != 0) { left_strings.push_back(_("Time of day")); str.str(""); diff --git a/src/reports.cpp b/src/reports.cpp index 106dc73e17ef..d723c2f34631 100644 --- a/src/reports.cpp +++ b/src/reports.cpp @@ -345,7 +345,7 @@ static config unit_alignment(reports::context & rc, const unit* u) std::ostringstream str, tooltip; const std::string align = unit_type::alignment_description(u->alignment(), u->gender()); const std::string align_id = lexical_cast(u->alignment()); - int cm = combat_modifier(rc.screen().displayed_unit_hex(), u->alignment(), + int cm = combat_modifier(rc.map(), rc.screen().displayed_unit_hex(), u->alignment(), u->is_fearless()); SDL_Color color = font::weapon_color; @@ -663,7 +663,7 @@ static int attack_info(reports::context & rc, const attack_type &at, config &res int base_damage = at.damage(); int specials_damage = at.modified_damage(false); int damage_multiplier = 100; - int tod_bonus = combat_modifier(displayed_unit_hex, u.alignment(), u.is_fearless()); + int tod_bonus = combat_modifier(rc.map(), displayed_unit_hex, u.alignment(), u.is_fearless()); damage_multiplier += tod_bonus; int leader_bonus = 0; if (under_leadership(rc.units(), displayed_unit_hex, &leader_bonus).valid()) @@ -1114,7 +1114,7 @@ static config time_of_day_at(reports::context & rc, const map_location& mouseove // Don't show illuminated time on fogged tiles. tod = rc.tod().get_time_of_day(mouseover_hex); } else { - tod = rc.tod().get_illuminated_time_of_day(mouseover_hex); + tod = rc.tod().get_illuminated_time_of_day(rc.map(), mouseover_hex); } int b = tod.lawful_bonus; @@ -1164,7 +1164,7 @@ static config unit_box_at(reports::context & rc, const map_location& mouseover_h // Don't show illuminated time on fogged tiles. local_tod = rc.tod().get_time_of_day(mouseover_hex); } else { - local_tod = rc.tod().get_illuminated_time_of_day(mouseover_hex); + local_tod = rc.tod().get_illuminated_time_of_day(rc.map(),mouseover_hex); } int bonus = local_tod.lawful_bonus; diff --git a/src/scripting/lua.cpp b/src/scripting/lua.cpp index c2499bdf557f..93d2456f1ceb 100644 --- a/src/scripting/lua.cpp +++ b/src/scripting/lua.cpp @@ -1364,7 +1364,7 @@ static int intf_get_time_of_day(lua_State *L) } const time_of_day& tod = consider_illuminates ? - resources::tod_manager->get_illuminated_time_of_day(loc, for_turn) : + resources::tod_manager->get_illuminated_time_of_day(resources::gameboard->map(), loc, for_turn) : resources::tod_manager->get_time_of_day(loc, for_turn); lua_newtable(L); diff --git a/src/terrain_filter.cpp b/src/terrain_filter.cpp index e1b3c3c2eb7a..4cc79259a2a1 100644 --- a/src/terrain_filter.cpp +++ b/src/terrain_filter.cpp @@ -242,7 +242,7 @@ bool terrain_filter::match_internal(const map_location& loc, const bool ignore_x if(flat_) { tod = resources::tod_manager->get_time_of_day(loc); } else { - tod = resources::tod_manager->get_illuminated_time_of_day(loc); + tod = resources::tod_manager->get_illuminated_time_of_day(resources::gameboard->map(),loc); } if(!tod_type.empty()) { diff --git a/src/tod_manager.cpp b/src/tod_manager.cpp index 2686bad2b96d..f6a7a68d12ba 100644 --- a/src/tod_manager.cpp +++ b/src/tod_manager.cpp @@ -193,9 +193,8 @@ const time_of_day& tod_manager::get_time_of_day(const map_location& loc, int n_t return get_time_of_day_turn(times_, n_turn, currentTime_); } -const time_of_day tod_manager::get_illuminated_time_of_day(const map_location& loc, int for_turn) const +const time_of_day tod_manager::get_illuminated_time_of_day(const gamemap & map, const map_location& loc, int for_turn) const { - const gamemap& map = resources::disp_context->map(); const unit_map& units = *resources::units; // get ToD ignoring illumination diff --git a/src/tod_manager.hpp b/src/tod_manager.hpp index c436f579b57d..ae4598980763 100644 --- a/src/tod_manager.hpp +++ b/src/tod_manager.hpp @@ -75,7 +75,7 @@ class tod_manager : public savegame::savegame_config * tod areas matter, for_turn = 0 means current turn * taking account of illumination caused by units */ - const time_of_day get_illuminated_time_of_day(const map_location& loc, + const time_of_day get_illuminated_time_of_day(const gamemap & map, const map_location& loc, int for_turn = 0) const; const time_of_day& get_previous_time_of_day() const;