Klaus Halfmann has proposed merging 
lp:~widelands-dev/widelands/bug_1571009_work_area_radius into lp:widelands.

Requested reviews:
  Widelands Developers (widelands-dev)
Related bugs:
  Bug #1571009 in widelands: "Work area radius: 45xxxxxxx in bzr7962[trunk]"
  https://bugs.launchpad.net/widelands/+bug/1571009

For more details, see:
https://code.launchpad.net/~widelands-dev/widelands/bug_1571009_work_area_radius/+merge/292066

This fixes 1571009 and adds some more Docs for the WorkareaInfo.

Im not usre about the Lua-Mapping, perhaps returning some kind of null might be 
better?
-- 
Your team Widelands Developers is requested to review the proposed merge of 
lp:~widelands-dev/widelands/bug_1571009_work_area_radius into lp:widelands.
=== modified file 'src/logic/map_objects/tribes/workarea_info.h'
--- src/logic/map_objects/tribes/workarea_info.h	2015-11-28 22:29:26 +0000
+++ src/logic/map_objects/tribes/workarea_info.h	2016-04-16 12:42:55 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2005, 2008 by the Widelands Development Team
+ * Copyright (C) 2005-2016 by the Widelands Development Team
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -25,9 +25,22 @@
 #include <set>
 #include <string>
 
-//  This type is used to store information about workareas. It stores radii and
-//  for each radius a set of strings. Each string contains a description of an
-//  activity (or similar) that can be performed within the radius.
+/** The WorkareaInfo stores radii and for each radius a set of strings. 
+ *
+ * A Workarea is a "circle" around a building that this building affects
+ * or is needed by this building, e.g. Areas for Mines, Fields of a Farm.
+ * Worareads are shown on the Map when clicking on a building.
+ *
+ * Each string contains a description of an  activity (or similar) i
+ * that can be performed within the radius.
+ *
+ * TODO(Hasi50): In fact this complex idea of a workarea is not used.
+ * I do knot know of any building that has different sizes of workareas
+ * during its liftimer. LuaBuildingDescription::get_workarea_radiu does not use it
+ * and the GUI does not show it. 
+ *
+ * So we should just use a simple unit8 perhaps?
+ */
 using WorkareaInfo = std::map<uint32_t, std::set<std::string>>;
 
 #endif  // end of include guard: WL_LOGIC_MAP_OBJECTS_TRIBES_WORKAREA_INFO_H

=== modified file 'src/scripting/lua_map.cc'
--- src/scripting/lua_map.cc	2016-04-11 06:45:29 +0000
+++ src/scripting/lua_map.cc	2016-04-16 12:42:55 +0000
@@ -1871,10 +1871,16 @@
 /* RST
 	.. attribute:: workarea_radius
 
-			(RO) the workarea_radius of the building as an int.
+			(RO) the first workarea_radius of the building as an int, 
+                 0 in case bulding has no workareas
 */
 int LuaBuildingDescription::get_workarea_radius(lua_State * L) {
-	lua_pushinteger(L, get()->workarea_info_.begin()->first);
+    const WorkareaInfo& workareaInfo = get()->workarea_info_;
+    if (!workareaInfo.empty()) {
+        lua_pushinteger(L, workareaInfo.begin()->first);
+    } else {
+        lua_pushinteger(L, 0);
+    }
 	return 1;
 }
 

_______________________________________________
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

Reply via email to