GunChleoc has proposed merging
lp:~widelands-dev/widelands/productionsite_military_cleanup into lp:widelands.
Commit message:
The ProductionSiteDescr constructor still contained some checks from the time
when they used to inherit from MilitarysiteDescr. Removed this obsolete code
and made working_positions and programs mandatory.
Requested reviews:
Widelands Developers (widelands-dev)
For more details, see:
https://code.launchpad.net/~widelands-dev/widelands/productionsite_military_cleanup/+merge/308709
--
Your team Widelands Developers is requested to review the proposed merge of
lp:~widelands-dev/widelands/productionsite_military_cleanup into lp:widelands.
=== modified file 'src/logic/map_objects/tribes/productionsite.cc'
--- src/logic/map_objects/tribes/productionsite.cc 2016-12-03 13:32:28 +
+++ src/logic/map_objects/tribes/productionsite.cc 2016-12-10 13:51:20 +
@@ -81,8 +81,6 @@
}
}
- // TODO(GunChleoc): This should not be here for Militarysites.
- // Check if they can inherit from Building directly.
if (table.has_key("outputs")) {
for (const std::string& output : table.get_table("outputs")->array_entries()) {
try {
@@ -136,55 +134,44 @@
}
}
- // Are we only a production site?
- // If not, we might not have a worker
- if (table.has_key("working_positions")) {
- items_table = table.get_table("working_positions");
- for (const std::string& worker_name : items_table->keys()) {
- int amount = items_table->get_int(worker_name);
- try {
-if (amount < 1 || 255 < amount) {
- throw wexception("count is out of range 1 .. 255");
-}
-DescriptionIndex const woi = egbase.tribes().worker_index(worker_name);
-if (egbase.tribes().worker_exists(woi)) {
- for (const auto& wp : working_positions()) {
- if (wp.first == woi) {
- throw wexception("duplicated");
- }
+ items_table = table.get_table("working_positions");
+ for (const std::string& worker_name : items_table->keys()) {
+ int amount = items_table->get_int(worker_name);
+ try {
+ if (amount < 1 || 255 < amount) {
+throw wexception("count is out of range 1 .. 255");
+ }
+ DescriptionIndex const woi = egbase.tribes().worker_index(worker_name);
+ if (egbase.tribes().worker_exists(woi)) {
+for (const auto& wp : working_positions()) {
+ if (wp.first == woi) {
+ throw wexception("duplicated");
}
- working_positions_.push_back(std::pair<DescriptionIndex, uint32_t>(woi, amount));
-} else {
- throw wexception("invalid");
}
- } catch (const WException& e) {
-throw wexception("%s=\"%d\": %s", worker_name.c_str(), amount, e.what());
+working_positions_.push_back(std::pair<DescriptionIndex, uint32_t>(woi, amount));
+ } else {
+throw wexception("invalid");
}
+ } catch (const WException& e) {
+ throw wexception("%s=\"%d\": %s", worker_name.c_str(), amount, e.what());
}
}
- // TODO(SirVer): this mixes militarysite concepts into the production site
- // - maybe those building should not be in a inheritance relationship.
- if (working_positions().empty() && !table.has_key("max_soldiers")) {
- throw wexception("no working/soldier positions");
- }
// Get programs
- if (table.has_key("programs")) {
- items_table = table.get_table("programs");
- for (std::string program_name : items_table->keys()) {
- std::transform(program_name.begin(), program_name.end(), program_name.begin(), tolower);
- try {
-if (programs_.count(program_name)) {
- throw wexception("this program has already been declared");
-}
-std::unique_ptr program_table = items_table->get_table(program_name);
-programs_[program_name] = std::unique_ptr(
- new ProductionProgram(program_name, _(program_table->get_string("descname")),
- program_table->get_table("actions"), egbase, this));
- } catch (const std::exception& e) {
-throw wexception("program %s: %s", program_name.c_str(), e.what());
+ items_table = table.get_table("programs");
+ for (std::string program_name : items_table->keys()) {
+ std::transform(program_name.begin(), program_name.end(), program_name.begin(), tolower);
+ try {
+ if (programs_.count(program_name)) {
+throw wexception("this program has already been declared");
}
+ std::unique_ptr program_table = items_table->get_table(program_name);
+ programs_[program_name] = std::unique_ptr(
+new ProductionProgram(program_name, _(program_table->get_string("descname")),
+ program_table->get_table("actions"), egbase, this));
+ } catch (const std::exception& e) {
+ throw wexception("program %s: %s", program_name.c_str(), e.what());
}
}
}
___
Mailing list: https://launchpad.net/~widelands-dev
Post to : widelands-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~widelands-dev
More help : https://help.launchpad.net/ListHelp