widelands-dev team mailing list archive
-
widelands-dev team
-
Mailing list archive
-
Message #03689
Re: [Merge] lp:~widelands-dev/widelands/terrain_doc into lp:widelands
I am further unhappy about the descriptions in terrains/init.lua, see below.
If someone want to make more terrains, he should be able to choose the right "is" value. Call me scrupulously, sometimes i am ;)
Diff comments:
> === modified file 'src/ai/ai_help_structs.h'
> --- src/ai/ai_help_structs.h 2015-02-05 12:11:20 +0000
> +++ src/ai/ai_help_structs.h 2015-02-16 13:12:39 +0000
> @@ -147,8 +147,8 @@
>
> bool accept(const Map& /* map */, const FCoords& coord) const {
> return (world_.terrain_descr(coord.field->terrain_d()).get_is() &
> - TerrainDescription::WATER) ||
> - (world_.terrain_descr(coord.field->terrain_r()).get_is() & TerrainDescription::WATER);
> + TerrainDescription::Type::kWater) ||
> + (world_.terrain_descr(coord.field->terrain_r()).get_is() & TerrainDescription::Type::kWater);
> }
>
> private:
>
> === modified file 'src/editor/tools/editor_increase_resources_tool.cc'
> --- src/editor/tools/editor_increase_resources_tool.cc 2014-12-01 21:47:22 +0000
> +++ src/editor/tools/editor_increase_resources_tool.cc 2015-02-16 13:12:39 +0000
> @@ -37,7 +37,7 @@
> if (!terrain.is_resource_valid(resource)) {
> return -1;
> }
> - if (terrain.get_is() & Widelands::TerrainDescription::UNPASSABLE) {
> + if (terrain.get_is() & Widelands::TerrainDescription::Type::kUnpassable) {
> return 8;
> }
> return 1;
>
> === modified file 'src/editor/tools/editor_info_tool.cc'
> --- src/editor/tools/editor_info_tool.cc 2015-01-30 23:10:35 +0000
> +++ src/editor/tools/editor_info_tool.cc 2015-02-16 13:12:39 +0000
> @@ -104,22 +104,22 @@
> Widelands::TerrainDescription::Type terrain_is = ter.get_is();
> std::vector<std::string> terrain_is_strings;
>
> - if (terrain_is == Widelands::TerrainDescription::Type::GREEN) {
> + if (terrain_is == Widelands::TerrainDescription::Type::kGreen) {
> terrain_is_strings.push_back(_("arable"));
> }
> - if (terrain_is & Widelands::TerrainDescription::Type::DRY) {
> + if (terrain_is & Widelands::TerrainDescription::Type::kDry) {
> terrain_is_strings.push_back(_("treeless"));
> }
> - if (terrain_is & Widelands::TerrainDescription::Type::WATER) {
> + if (terrain_is & Widelands::TerrainDescription::Type::kWater) {
> terrain_is_strings.push_back(_("aquatic"));
> }
> - if (terrain_is & Widelands::TerrainDescription::Type::ACID) {
> + if (terrain_is & Widelands::TerrainDescription::Type::kDead) {
> terrain_is_strings.push_back(_("dead"));
> }
> - if (terrain_is & Widelands::TerrainDescription::Type::MOUNTAIN) {
> + if (terrain_is & Widelands::TerrainDescription::Type::kMountain) {
> terrain_is_strings.push_back(_("mountainous"));
> }
> - if (terrain_is & Widelands::TerrainDescription::Type::UNPASSABLE) {
> + if (terrain_is & Widelands::TerrainDescription::Type::kUnpassable) {
> terrain_is_strings.push_back(_("unpassable"));
> }
> buf += "• " + (boost::format(_("Category: %s"))
>
> === modified file 'src/editor/ui_menus/editor_tool_set_terrain_options_menu.cc'
> --- src/editor/ui_menus/editor_tool_set_terrain_options_menu.cc 2015-01-30 23:10:35 +0000
> +++ src/editor/ui_menus/editor_tool_set_terrain_options_menu.cc 2015-02-16 13:12:39 +0000
> @@ -43,13 +43,13 @@
> using namespace Widelands;
>
> static const int32_t check[] = {
> - TerrainDescription::GREEN, // "green"
> - TerrainDescription::DRY, // "dry"
> - TerrainDescription::DRY | TerrainDescription::MOUNTAIN, // "mountain"
> - TerrainDescription::DRY | TerrainDescription::UNPASSABLE, // "unpassable"
> - TerrainDescription::ACID | TerrainDescription::DRY |
> - TerrainDescription::UNPASSABLE, // "dead" or "acid"
> - TerrainDescription::UNPASSABLE | TerrainDescription::DRY | TerrainDescription::WATER,
> + TerrainDescription::Type::kGreen, // "green"
> + TerrainDescription::Type::kDry, // "dry"
> + TerrainDescription::Type::kDry | TerrainDescription::Type::kMountain, // "mountain"
> + TerrainDescription::Type::kDry | TerrainDescription::Type::kUnpassable, // "unpassable"
> + TerrainDescription::Type::kDead | TerrainDescription::Type::kDry |
> + TerrainDescription::Type::kUnpassable, // "dead"
> + TerrainDescription::Type::kUnpassable | TerrainDescription::Type::kDry | TerrainDescription::Type::kWater,
> -1, // end marker
> };
>
> @@ -82,7 +82,7 @@
> BlendMode::UseAlpha, texture);
> Point pt(1, terrain_texture.height() - kSmallPicHeight - 1);
>
> - if (ter_is == TerrainDescription::GREEN) {
> + if (ter_is == TerrainDescription::Type::kGreen) {
> blit(Rect(pt.x, pt.y, green->width(), green->height()),
> *green,
> Rect(0, 0, green->width(), green->height()),
> @@ -93,7 +93,7 @@
> /** TRANSLATORS: This is a terrain type tooltip in the editor */
> tooltips.push_back(_("arable"));
> } else {
> - if (ter_is & TerrainDescription::WATER) {
> + if (ter_is & TerrainDescription::Type::kWater) {
> blit(Rect(pt.x, pt.y, water->width(), water->height()),
> *water,
> Rect(0, 0, water->width(), water->height()),
> @@ -104,7 +104,7 @@
> /** TRANSLATORS: This is a terrain type tooltip in the editor */
> tooltips.push_back(_("aquatic"));
> }
> - else if (ter_is & TerrainDescription::MOUNTAIN) {
> + else if (ter_is & TerrainDescription::Type::kMountain) {
> blit(Rect(pt.x, pt.y, mountain->width(), mountain->height()),
> *mountain,
> Rect(0, 0, mountain->width(), mountain->height()),
> @@ -115,7 +115,7 @@
> /** TRANSLATORS: This is a terrain type tooltip in the editor */
> tooltips.push_back(_("mountainous"));
> }
> - if (ter_is & TerrainDescription::ACID) {
> + if (ter_is & TerrainDescription::Type::kDead) {
> blit(Rect(pt.x, pt.y, dead->width(), dead->height()),
> *dead,
> Rect(0, 0, dead->width(), dead->height()),
> @@ -126,7 +126,7 @@
> /** TRANSLATORS: This is a terrain type tooltip in the editor */
> tooltips.push_back(_("dead"));
> }
> - if (ter_is & TerrainDescription::UNPASSABLE) {
> + if (ter_is & TerrainDescription::Type::kUnpassable) {
> blit(Rect(pt.x, pt.y, unpassable->width(), unpassable->height()),
> *unpassable,
> Rect(0, 0, unpassable->width(), unpassable->height()),
> @@ -137,7 +137,7 @@
> /** TRANSLATORS: This is a terrain type tooltip in the editor */
> tooltips.push_back(_("unpassable"));
> }
> - if (ter_is & TerrainDescription::DRY) {
> + if (ter_is & TerrainDescription::Type::kDry) {
> blit(Rect(pt.x, pt.y, dry->width(), dry->height()),
> *dry,
> Rect(0, 0, dry->width(), dry->height()),
>
> === modified file 'src/logic/map.cc'
> --- src/logic/map.cc 2015-02-12 07:55:25 +0000
> +++ src/logic/map.cc 2015-02-16 13:12:39 +0000
> @@ -215,7 +215,7 @@
> const TerrainDescription& terr = world.terrain_descr(f1.field->terrain_r());
> const int8_t resr = terr.get_default_resource();
> const int default_amount = terr.get_default_resource_amount();
> - if ((terr.get_is() & TerrainDescription::UNPASSABLE) && default_amount > 0)
> + if ((terr.get_is() & TerrainDescription::Type::kUnpassable) && default_amount > 0)
> m[resr] += 3;
> else
> ++m[resr];
> @@ -225,7 +225,7 @@
> const TerrainDescription& terd = world.terrain_descr(f1.field->terrain_d());
> const int8_t resd = terd.get_default_resource();
> const int default_amount = terd.get_default_resource_amount();
> - if ((terd.get_is() & TerrainDescription::UNPASSABLE) && default_amount > 0)
> + if ((terd.get_is() & TerrainDescription::Type::kUnpassable) && default_amount > 0)
> m[resd] += 3;
> else
> ++m[resd];
> @@ -238,7 +238,7 @@
> const TerrainDescription& terd = world.terrain_descr(f1.field->terrain_d());
> const int8_t resd = terd.get_default_resource();
> const int default_amount = terd.get_default_resource_amount();
> - if ((terd.get_is() & TerrainDescription::UNPASSABLE) && default_amount > 0)
> + if ((terd.get_is() & TerrainDescription::Type::kUnpassable) && default_amount > 0)
> m[resd] += 3;
> else
> ++m[resd];
> @@ -251,7 +251,7 @@
> const TerrainDescription& terr = world.terrain_descr(f1.field->terrain_r());
> const int8_t resr = terr.get_default_resource();
> const int default_amount = terr.get_default_resource_amount();
> - if ((terr.get_is() & TerrainDescription::UNPASSABLE) && default_amount > 0)
> + if ((terr.get_is() & TerrainDescription::Type::kUnpassable) && default_amount > 0)
> m[resr] += 3;
> else
> ++m[resr];
> @@ -1037,28 +1037,28 @@
> // 1b) Collect some information about the neighbours
> uint8_t cnt_unpassable = 0;
> uint8_t cnt_water = 0;
> - uint8_t cnt_acid = 0;
> -
> - if (tr_d_terrain_is & TerrainDescription::UNPASSABLE) ++cnt_unpassable;
> - if (tl_r_terrain_is & TerrainDescription::UNPASSABLE) ++cnt_unpassable;
> - if (tl_d_terrain_is & TerrainDescription::UNPASSABLE) ++cnt_unpassable;
> - if (l_r_terrain_is & TerrainDescription::UNPASSABLE) ++cnt_unpassable;
> - if (f_d_terrain_is & TerrainDescription::UNPASSABLE) ++cnt_unpassable;
> - if (f_r_terrain_is & TerrainDescription::UNPASSABLE) ++cnt_unpassable;
> -
> - if (tr_d_terrain_is & TerrainDescription::WATER) ++cnt_water;
> - if (tl_r_terrain_is & TerrainDescription::WATER) ++cnt_water;
> - if (tl_d_terrain_is & TerrainDescription::WATER) ++cnt_water;
> - if (l_r_terrain_is & TerrainDescription::WATER) ++cnt_water;
> - if (f_d_terrain_is & TerrainDescription::WATER) ++cnt_water;
> - if (f_r_terrain_is & TerrainDescription::WATER) ++cnt_water;
> -
> - if (tr_d_terrain_is & TerrainDescription::ACID) ++cnt_acid;
> - if (tl_r_terrain_is & TerrainDescription::ACID) ++cnt_acid;
> - if (tl_d_terrain_is & TerrainDescription::ACID) ++cnt_acid;
> - if (l_r_terrain_is & TerrainDescription::ACID) ++cnt_acid;
> - if (f_d_terrain_is & TerrainDescription::ACID) ++cnt_acid;
> - if (f_r_terrain_is & TerrainDescription::ACID) ++cnt_acid;
> + uint8_t cnt_dead = 0;
> +
> + if (tr_d_terrain_is & TerrainDescription::Type::kUnpassable) ++cnt_unpassable;
> + if (tl_r_terrain_is & TerrainDescription::Type::kUnpassable) ++cnt_unpassable;
> + if (tl_d_terrain_is & TerrainDescription::Type::kUnpassable) ++cnt_unpassable;
> + if (l_r_terrain_is & TerrainDescription::Type::kUnpassable) ++cnt_unpassable;
> + if (f_d_terrain_is & TerrainDescription::Type::kUnpassable) ++cnt_unpassable;
> + if (f_r_terrain_is & TerrainDescription::Type::kUnpassable) ++cnt_unpassable;
> +
> + if (tr_d_terrain_is & TerrainDescription::Type::kWater) ++cnt_water;
> + if (tl_r_terrain_is & TerrainDescription::Type::kWater) ++cnt_water;
> + if (tl_d_terrain_is & TerrainDescription::Type::kWater) ++cnt_water;
> + if (l_r_terrain_is & TerrainDescription::Type::kWater) ++cnt_water;
> + if (f_d_terrain_is & TerrainDescription::Type::kWater) ++cnt_water;
> + if (f_r_terrain_is & TerrainDescription::Type::kWater) ++cnt_water;
> +
> + if (tr_d_terrain_is & TerrainDescription::Type::kDead) ++cnt_dead;
> + if (tl_r_terrain_is & TerrainDescription::Type::kDead) ++cnt_dead;
> + if (tl_d_terrain_is & TerrainDescription::Type::kDead) ++cnt_dead;
> + if (l_r_terrain_is & TerrainDescription::Type::kDead) ++cnt_dead;
> + if (f_d_terrain_is & TerrainDescription::Type::kDead) ++cnt_dead;
> + if (f_r_terrain_is & TerrainDescription::Type::kDead) ++cnt_dead;
>
>
> // 2) Passability
> @@ -1075,7 +1075,7 @@
>
> // 2c) [OVERRIDE] If any of the neighbouring triangles is really "bad" (such
> // as lava), we can neither walk nor swim to this node.
> - if (cnt_acid)
> + if (cnt_dead)
> caps &= ~(MOVECAPS_WALK | MOVECAPS_SWIM);
>
> // === everything below is used to check buildability ===
> @@ -1265,10 +1265,10 @@
> uint32_t cnt_mountain = 0;
> uint32_t cnt_dry = 0;
> for (uint32_t i = 0; i < 6; ++i) {
> - if (terrains[i] & TerrainDescription::WATER)
> + if (terrains[i] & TerrainDescription::Type::kWater)
> return BaseImmovable::NONE;
> - if (terrains[i] & TerrainDescription::MOUNTAIN) ++cnt_mountain;
> - if (terrains[i] & TerrainDescription::DRY) ++cnt_dry;
> + if (terrains[i] & TerrainDescription::Type::kMountain) ++cnt_mountain;
> + if (terrains[i] & TerrainDescription::Type::kDry) ++cnt_dry;
> }
>
> if (cnt_mountain == 6) {
>
> === modified file 'src/logic/worker.cc'
> --- src/logic/worker.cc 2015-01-15 15:33:52 +0000
> +++ src/logic/worker.cc 2015-02-16 13:12:39 +0000
> @@ -2708,11 +2708,11 @@
> bool is_center_mountain =
> (world.terrain_descr(owner_area.field->terrain_d()).get_is()
> &
> - TerrainDescription::MOUNTAIN)
> + TerrainDescription::Type::kMountain)
> |
> (world.terrain_descr(owner_area.field->terrain_r()).get_is()
> &
> - TerrainDescription::MOUNTAIN);
> + TerrainDescription::Type::kMountain);
> // Only run towards fields that are on a mountain (or not)
> // depending on position of center
> bool is_target_mountain;
> @@ -2725,11 +2725,11 @@
> is_target_mountain =
> (world.terrain_descr(target.field->terrain_d()).get_is()
> &
> - TerrainDescription::MOUNTAIN)
> + TerrainDescription::Type::kMountain)
> |
> (world.terrain_descr(target.field->terrain_r()).get_is()
> &
> - TerrainDescription::MOUNTAIN);
> + TerrainDescription::Type::kMountain);
> if (i == 0)
> i = list.size();
> --i;
>
> === modified file 'src/logic/world/terrain_description.cc'
> --- src/logic/world/terrain_description.cc 2015-01-31 16:03:59 +0000
> +++ src/logic/world/terrain_description.cc 2015-02-16 13:12:39 +0000
> @@ -39,30 +39,28 @@
> // Parse a terrain type from the giving string.
> TerrainDescription::Type terrain_type_from_string(const std::string& type) {
> if (type == "green") {
> - return TerrainDescription::GREEN;
> + return TerrainDescription::Type::kGreen;
> }
> if (type == "dry") {
> - return TerrainDescription::DRY;
> + return TerrainDescription::Type::kDry;
> }
> if (type == "water") {
> - return static_cast<TerrainDescription::Type>(
> - TerrainDescription::WATER | TerrainDescription::DRY | TerrainDescription::UNPASSABLE);
> + return static_cast<TerrainDescription::Type>(TerrainDescription::Type::kWater |
> + TerrainDescription::Type::kDry |
> + TerrainDescription::Type::kUnpassable);
> }
> - if (type == "acid") {
> - return static_cast<TerrainDescription::Type>(
> - TerrainDescription::ACID | TerrainDescription::DRY | TerrainDescription::UNPASSABLE);
> + if (type == "dead") {
> + return static_cast<TerrainDescription::Type>(TerrainDescription::Type::kDead |
> + TerrainDescription::Type::kDry |
> + TerrainDescription::Type::kUnpassable);
> }
> if (type == "mountain") {
> - return static_cast<TerrainDescription::Type>(TerrainDescription::DRY |
> - TerrainDescription::MOUNTAIN);
> - }
> - if (type == "dead") {
> - return static_cast<TerrainDescription::Type>(
> - TerrainDescription::DRY | TerrainDescription::UNPASSABLE | TerrainDescription::ACID);
> + return static_cast<TerrainDescription::Type>(TerrainDescription::Type::kDry |
> + TerrainDescription::Type::kMountain);
> }
> if (type == "unpassable") {
> - return static_cast<TerrainDescription::Type>(TerrainDescription::DRY |
> - TerrainDescription::UNPASSABLE);
> + return static_cast<TerrainDescription::Type>(TerrainDescription::Type::kDry |
> + TerrainDescription::Type::kUnpassable);
> }
> throw LuaError((boost::format("invalid terrain type '%s'") % type).str());
> }
>
> === modified file 'src/logic/world/terrain_description.h'
> --- src/logic/world/terrain_description.h 2014-11-28 05:40:53 +0000
> +++ src/logic/world/terrain_description.h 2015-02-16 13:12:39 +0000
> @@ -43,12 +43,12 @@
> class TerrainDescription {
> public:
> enum Type {
> - GREEN = 0,
> - DRY = 1,
> - WATER = 2,
> - ACID = 4,
> - MOUNTAIN = 8,
> - UNPASSABLE = 16,
> + kGreen = 0,
> + kDry = 1,
> + kWater = 2,
> + kDead = 4,
> + kMountain = 8,
> + kUnpassable = 16,
> };
>
> TerrainDescription(const LuaTable& table, const World&);
>
> === modified file 'world/terrains/init.lua'
> --- world/terrains/init.lua 2015-01-30 10:16:22 +0000
> +++ world/terrains/init.lua 2015-02-16 13:12:39 +0000
> @@ -38,6 +38,16 @@
> -- Type of terrain. Describes if the terrain is walkable, swimmable, if
> -- mines or buildings can be build on it, if flags can be build on it and so
> -- on.
> + --
> + -- The following properties are available:
> + -- "green": Allows building of normal buildings and roads
> + -- "mountain": Allows building of mines and roads
> + -- "dry": Allows building of roads only. Trees don't like this terrain.
Do allways and forever trees don't like this terrain?
> + -- "water": Nothing can be built here, but ships and aquatic animals can pass
> + -- "dead": Nothing can be built here, and nothing can walk on it, and nothing will grow.
> + -- "unpassable": Nothing can be built here, and nothing can walk on it
> + --
> + -- Note that "is" also has implications for trees' terrain affinity.
Is this really true? And if, it is a vague sentence. If i want to make more terrains, which knowledge do i need for defining a correct "is" value?
> is = "green",
>
> -- The list resources that can be found in this terrain.
> @@ -267,7 +277,7 @@
> name = "lava",
> descname = _ "Lava",
> editor_category = "green",
> - is = "acid",
> + is = "dead",
> valid_resources = {},
> default_resource = "",
> default_resource_amount = 0,
> @@ -482,7 +492,7 @@
> name = "lava-stone1",
> descname = _ "Lava Rocks",
> editor_category = "wasteland",
> - is = "acid",
> + is = "dead",
> valid_resources = {},
> default_resource = "",
> default_resource_amount = 0,
> @@ -498,7 +508,7 @@
> name = "lava-stone2",
> descname = _ "Lava Rocks",
> editor_category = "wasteland",
> - is = "acid",
> + is = "dead",
> valid_resources = {},
> default_resource = "",
> default_resource_amount = 0,
>
--
https://code.launchpad.net/~widelands-dev/widelands/terrain_doc/+merge/249747
Your team Widelands Developers is subscribed to branch lp:~widelands-dev/widelands/terrain_doc.
References