WFL: Deal with the side fiasco by deprecating it

When you have a unit object, "side" starts at 0. When you have a terrain object, "owner" starts at 0 (or -1 for an unowned tile). When you have a side object, "side" starts at 1.

This deprecates all those and adds "side_number" (or "owner_side" for terrain) instead which always starts at 1.
This commit is contained in:
Celtic Minstrel 2021-05-23 00:38:07 -04:00 committed by Celtic Minstrel
parent 735ba1b8f2
commit 4c8167c4e7

View file

@ -25,6 +25,8 @@
#include "units/types.hpp"
#include "log.hpp"
#include "recall_list_manager.hpp"
#include "deprecation.hpp"
#include "version.hpp"
static lg::log_domain log_scripting_formula("scripting/formula");
#define LOG_SF LOG_STREAM(info, log_scripting_formula)
@ -234,7 +236,10 @@ variant unit_callable::get_value(const std::string& key) const
} else if(key == "states" || key == "status") {
return formula_callable::convert_set(u_.get_states());
} else if(key == "side") {
deprecated_message("unit.side", DEP_LEVEL::FOR_REMOVAL, version_info("1.17"), "This returns 0 for side 1 etc and should not be used. Use side_number instead.");
return variant(u_.side()-1);
} else if(key == "side_number") {
return variant(u_.side());
} else if(key == "cost") {
return variant(u_.cost());
} else if(key == "upkeep") {
@ -331,7 +336,7 @@ void unit_callable::get_inputs(formula_input_vector& inputs) const
add_input(inputs, "max_moves");
add_input(inputs, "attacks_left");
add_input(inputs, "max_attacks");
add_input(inputs, "side");
add_input(inputs, "side_number");
add_input(inputs, "extra_recruit");
add_input(inputs, "advances_to");
add_input(inputs, "status");
@ -537,7 +542,7 @@ int config_callable::do_compare(const formula_callable* callable) const
return cfg_.hash().compare(cfg_callable->get_config().hash());
}
terrain_callable::terrain_callable(const display_context& dc, const map_location& loc) : loc_(loc), t_(dc.map().get_terrain_info(loc)), owner_(dc.village_owner(loc) - 1)
terrain_callable::terrain_callable(const display_context& dc, const map_location& loc) : loc_(loc), t_(dc.map().get_terrain_info(loc)), owner_(dc.village_owner(loc))
{
type_ = TERRAIN_C;
}
@ -571,6 +576,9 @@ variant terrain_callable::get_value(const std::string& key) const
} else if(key == "healing") {
return variant(t_.gives_healing());
} else if(key == "owner") {
deprecated_message("terrain.owner", DEP_LEVEL::FOR_REMOVAL, version_info("1.17"), "This returns 0 for side 1 etc and should not be used. Use owner_side instead.");
return variant(owner_ - 1);
} else if(key == "owner_side") {
return variant(owner_);
}
@ -592,7 +600,7 @@ void terrain_callable::get_inputs(formula_input_vector& inputs) const
add_input(inputs, "castle");
add_input(inputs, "keep");
add_input(inputs, "healing");
add_input(inputs, "owner");
add_input(inputs, "owner_side");
}
int terrain_callable::do_compare(const formula_callable* callable) const
@ -655,7 +663,7 @@ variant gamemap_callable::get_value(const std::string& key) const
void team_callable::get_inputs(formula_input_vector& inputs) const
{
add_input(inputs, "side");
add_input(inputs, "side_number");
add_input(inputs, "id");
add_input(inputs, "gold");
add_input(inputs, "start_gold");
@ -688,6 +696,9 @@ void team_callable::get_inputs(formula_input_vector& inputs) const
variant team_callable::get_value(const std::string& key) const
{
if(key == "side") {
deprecated_message("team.side", DEP_LEVEL::INDEFINITE, version_info("1.17"), "Use side_number instead.");
return variant(team_.side());
} else if(key == "side_number") {
return variant(team_.side());
} else if(key == "id") {
return variant(team_.save_id());