Change [advance] modifications to [advancement]

This change maintains backwards compatibility
- [advance] will still work if present
- attempts to add [advance] via Lua will instead add [advancement].
This commit is contained in:
Celtic Minstrel 2015-08-14 15:31:43 -04:00
parent d13d249ca9
commit 7a5ba33f5a
4 changed files with 17 additions and 7 deletions

View file

@ -1538,7 +1538,7 @@ unit_ptr get_amla_unit(const unit &u, const config &mod_option)
{
unit_ptr amla_unit(new unit(u));
amla_unit->set_experience(amla_unit->experience() - amla_unit->max_experience());
amla_unit->add_modification("advance", mod_option);
amla_unit->add_modification("advancement", mod_option);
return amla_unit;
}

View file

@ -257,7 +257,7 @@ void helper_advance_unit(const map_location& loc){
}else{
const config &mod_option = mod_options[advance_choice-options.size()];
advanced_unit.set_experience(advanced_unit.experience()-advanced_unit.max_experience());
advanced_unit.add_modification("advance", mod_option);
advanced_unit.add_modification("advancement", mod_option);
}
resources::units->replace(loc, advanced_unit);

View file

@ -3276,8 +3276,12 @@ static int intf_add_modification(lua_State *L)
unit_ptr u = luaW_checkunit(L, 1);
char const *m = luaL_checkstring(L, 2);
std::string sm = m;
if (sm != "advance" && sm != "object" && sm != "trait")
if (sm == "advance") { // Maintain backwards compatibility
sm = "advancement";
}
if (sm != "advancement" && sm != "object" && sm != "trait") {
return luaL_argerror(L, 2, "unknown modification type");
}
config cfg = luaW_checkconfig(L, 3);
u->add_modification(sm, cfg);

View file

@ -88,7 +88,8 @@ static lg::log_domain log_enginerefac("enginerefac");
#define LOG_RG LOG_STREAM(info, log_enginerefac)
namespace {
const std::string ModificationTypes[] = { "advance", "trait", "object" };
// "advance" only kept around for backwards compatibility; only "advancement" should be used
const std::string ModificationTypes[] = { "advancement", "advance", "trait", "object" };
const size_t NumModificationTypes = sizeof(ModificationTypes)/
sizeof(*ModificationTypes);
@ -1558,7 +1559,7 @@ std::vector<std::pair<std::string,std::string> > unit::amla_icons() const
icon.first = adv["icon"].str();
icon.second = adv["description"].str();
for (unsigned j = 0, j_count = modification_count("advance", adv["id"]);
for (unsigned j = 0, j_count = modification_count("advancement", adv["id"]);
j < j_count; ++j)
{
temp.push_back(icon);
@ -1574,7 +1575,7 @@ std::vector<config> unit::get_modification_advances() const
{
if (adv["strict_amla"].to_bool() && !advances_to_.empty())
continue;
if (modification_count("advance", adv["id"]) >= unsigned(adv["max_times"].to_int(1)))
if (modification_count("advancement", adv["id"]) >= unsigned(adv["max_times"].to_int(1)))
continue;
std::vector<std::string> temp = utils::split(adv["require_amla"]);
@ -1591,7 +1592,7 @@ std::vector<config> unit::get_modification_advances() const
BOOST_FOREACH(const std::string &s, uniq)
{
int required_num = std::count(temp.begin(), temp.end(), s);
int mod_num = modification_count("advance", s);
int mod_num = modification_count("advancement", s);
if (required_num > mod_num) {
requirements_done = false;
break;
@ -1621,6 +1622,11 @@ size_t unit::modification_count(const std::string& mod_type, const std::string&
++res;
}
}
// For backwards compatibility, if asked for "advancement", also count "advance"
if (mod_type == "advancement") {
res += modification_count("advance", id);
}
return res;
}