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