Author: esr
Date: Wed Apr 18 12:55:11 2007
New Revision: 16895
URL: http://svn.gna.org/viewcvs/wesnoth?rev=16895&view=rev
Log:
Back out mog's commit 16648, it caused bug #8739.
Some bits of this commit can and should be saved.
Modified:
trunk/src/builder.cpp
trunk/src/terrain_translation.cpp
trunk/src/terrain_translation.hpp
Modified: trunk/src/builder.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/builder.cpp?rev=16895&r1=16894&r2=16895&view=diff
==============================================================================
--- trunk/src/builder.cpp (original)
+++ trunk/src/builder.cpp Wed Apr 18 12:55:11 2007
@@ -545,7 +545,7 @@
void terrain_builder::add_constraints(terrain_builder::constraint_set
&constraints, const gamemap::location& loc, const config& cfg, const config&
global_images)
{
- add_constraints(constraints, loc, t_translation::t_match(cfg["type"],
t_translation::WILDCARD), global_images);
+ add_constraints(constraints, loc, t_translation::t_match(cfg["type"]),
global_images);
terrain_constraint& constraint = constraints[loc];
@@ -1009,7 +1009,7 @@
if(cons != rule->second.constraints.end()) {
adjacent_types[i] =
cons->second.terrain_types_match.terrain;
} else {
- adjacent_types[i] =
t_translation::read_list("", -1, t_translation::T_FORMAT_STRING,
t_translation::WILDCARD);
+ adjacent_types[i] =
t_translation::read_list("", -1, t_translation::T_FORMAT_STRING);
}
}
Modified: trunk/src/terrain_translation.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/terrain_translation.cpp?rev=16895&r1=16894&r2=16895&view=diff
==============================================================================
--- trunk/src/terrain_translation.cpp (original)
+++ trunk/src/terrain_translation.cpp Wed Apr 18 12:55:11 2007
@@ -151,23 +151,23 @@
/***************************************************************************************/
-const t_letter VOID_TERRAIN = string_to_number_("_s", NO_LAYER);
-const t_letter FOGGED = string_to_number_("_f", NO_LAYER);
-
-const t_letter HUMAN_CASTLE = string_to_number_("Ch", NO_LAYER);
-const t_letter HUMAN_KEEP = string_to_number_("Kh", NO_LAYER);
-const t_letter SHALLOW_WATER = string_to_number_("Ww", NO_LAYER);
-const t_letter DEEP_WATER = string_to_number_("Wo", NO_LAYER);
-const t_letter GRASS_LAND = string_to_number_("Gg", NO_LAYER);
-const t_letter FOREST = string_to_number_("Ff", NO_LAYER);
-const t_letter MOUNTAIN = string_to_number_("Mm", NO_LAYER);
-const t_letter HILL = string_to_number_("Hh", NO_LAYER);
-
-const t_letter CAVE_WALL = string_to_number_("Xu", NO_LAYER);
-const t_letter CAVE = string_to_number_("Uu", NO_LAYER);
-const t_letter UNDERGROUND_VILLAGE = string_to_number_("Vu", NO_LAYER);
-const t_letter DWARVEN_CASTLE = string_to_number_("Cud", NO_LAYER);
-const t_letter DWARVEN_KEEP = string_to_number_("Kud", NO_LAYER);
+const t_letter VOID_TERRAIN = string_to_number_("_s");
+const t_letter FOGGED = string_to_number_("_f");
+
+const t_letter HUMAN_CASTLE = string_to_number_("Ch");
+const t_letter HUMAN_KEEP = string_to_number_("Kh");
+const t_letter SHALLOW_WATER = string_to_number_("Ww");
+const t_letter DEEP_WATER = string_to_number_("Wo");
+const t_letter GRASS_LAND = string_to_number_("Gg");
+const t_letter FOREST = string_to_number_("Ff");
+const t_letter MOUNTAIN = string_to_number_("Mm");
+const t_letter HILL = string_to_number_("Hh");
+
+const t_letter CAVE_WALL = string_to_number_("Xu");
+const t_letter CAVE = string_to_number_("Uu");
+const t_letter UNDERGROUND_VILLAGE = string_to_number_("Vu");
+const t_letter DWARVEN_CASTLE = string_to_number_("Cud");
+const t_letter DWARVEN_KEEP = string_to_number_("Kud");
const t_letter PLUS = string_to_number_("+");
const t_letter MINUS = string_to_number_("-");
@@ -177,11 +177,7 @@
/***************************************************************************************/
t_letter::t_letter(const std::string& b) :
- base(string_to_layer_(b)), overlay(NO_LAYER)
-{}
-
-t_letter::t_letter(const std::string& b, const t_layer o) :
- base(string_to_layer_(b)), overlay(o)
+ base(string_to_layer_(b)), overlay(0xFFFFFFFF)
{}
t_letter::t_letter(const std::string& b, const std::string& o) :
@@ -192,8 +188,8 @@
has_wildcard(false), is_empty(true)
{}
-t_match::t_match(const std::string& str, const t_layer filler):
- terrain(t_translation::read_list(str, -1,
t_translation::T_FORMAT_STRING, filler))
+t_match::t_match(const std::string& str):
+ terrain(t_translation::read_list(str, -1,
t_translation::T_FORMAT_STRING))
{
mask.resize(terrain.size());
masked_terrain.resize(terrain.size());
@@ -220,12 +216,12 @@
}
}
-t_letter read_letter(const std::string& str, const int t_format, const t_layer
filler)
+t_letter read_letter(const std::string& str, const int t_format)
{
#ifdef TERRAIN_TRANSLATION_COMPATIBLE
if(t_format == T_FORMAT_STRING ||
(t_format == T_FORMAT_AUTO && map_format_ == 2)) {
- return string_to_number_(str, filler);
+ return string_to_number_(str);
} else if(t_format == T_FORMAT_LETTER ||
(t_format == T_FORMAT_AUTO && map_format_ == 1)) {
@@ -235,7 +231,7 @@
throw error("Invalid case in read_letter");
}
#else
- return string_to_number_(str, filler);
+ return string_to_number_(str);
#endif
}
@@ -244,12 +240,12 @@
return number_to_string_(letter);
}
-t_list read_list(const std::string& str, const int separated, const int
t_format, const t_layer filler)
+t_list read_list(const std::string& str, const int separated, const int
t_format)
{
#ifdef TERRAIN_TRANSLATION_COMPATIBLE
if(t_format == T_FORMAT_STRING ||
(t_format == T_FORMAT_AUTO && map_format_ == 2)) {
- return string_to_vector_(str, filler);
+ return string_to_vector_(str);
} else if(t_format == T_FORMAT_LETTER ||
(t_format == T_FORMAT_AUTO && map_format_ == 1)) {
@@ -259,7 +255,7 @@
throw error("Invalid case in read_list");
}
#else
- return string_to_vector_(str, filler);
+ return string_to_vector_(str);
#endif
}
@@ -325,9 +321,8 @@
const std::string terrain = str.substr(offset, pos_separator -
offset);
// process the chunk
- int starting_position = -1;
- // the gamemap never has a wildcard
- const t_letter tile = string_to_number_(terrain,
starting_position, NO_LAYER);
+ int starting_position = -1;
+ const t_letter tile = string_to_number_(terrain,
starting_position);
// add to the resulting starting position
if(starting_position != -1) {
@@ -507,12 +502,12 @@
return result;
}
- if(src_has_wildcard && src.overlay == 0 && itor->overlay ==
NO_LAYER &&
+ if(src_has_wildcard && src.overlay == 0 && itor->overlay ==
0xFFFFFFFF &&
((itor->base & src_mask.base) ==
masked_src.base )) {
return result;
}
- if(dest_has_wildcard && itor->overlay == 0 && src.overlay ==
NO_LAYER &&
+ if(dest_has_wildcard && itor->overlay == 0 && src.overlay ==
0xFFFFFFFF &&
((src.base & dest_mask.base) ==
masked_dest.base)) {
return result;
}
@@ -580,7 +575,7 @@
// does the source have a wildcard and an empty overlay and the
destination
// no overlay, we need to check the part base for a match
- if(src_has_wildcard && src.overlay == 0 &&
terrain_itor->overlay == NO_LAYER &&
+ if(src_has_wildcard && src.overlay == 0 &&
terrain_itor->overlay == 0xFFFFFFFF &&
((terrain_itor->base & src_mask.base) ==
masked_src.base )) {
return result;
}
@@ -589,7 +584,7 @@
// no overlay, we need to check the part base for a match
// NOTE the has_wildcard(*terrain_itor) is expensive so move
the test to
// later in the line
- if(terrain_itor->overlay == 0 && src.overlay == NO_LAYER &&
has_wildcard(*terrain_itor) &&
+ if(terrain_itor->overlay == 0 && src.overlay == 0xFFFFFFFF &&
has_wildcard(*terrain_itor) &&
((src.base & dest.mask[i].base) ==
dest.masked_terrain[i].base)) {
return result;
}
@@ -602,10 +597,10 @@
bool has_wildcard(const t_letter& letter)
{
- if(letter.overlay == NO_LAYER) {
- return get_layer_mask_(letter.base) != NO_LAYER;
+ if(letter.overlay == 0xFFFFFFFF) {
+ return get_layer_mask_(letter.base) != 0xFFFFFFFF;
} else {
- return get_layer_mask_(letter.base) != NO_LAYER ||
get_layer_mask_(letter.overlay) != NO_LAYER;
+ return get_layer_mask_(letter.base) != 0xFFFFFFFF ||
get_layer_mask_(letter.overlay) != 0xFFFFFFFF;
}
}
@@ -726,7 +721,7 @@
static t_list string_to_vector_(const std::string& str, const bool
convert_eol, const int separated)
{
// only used here so define here
- const t_letter EOL(7, NO_LAYER);
+ const t_letter EOL(7, 0xFFFFFFFF);
bool last_eol = false;
t_list result;
@@ -883,7 +878,7 @@
const std::string terrain = str.substr(offset, pos_separator -
offset);
// process the chunk
- const t_letter tile = string_to_number_(terrain, filler);
+ const t_letter tile = string_to_number_(terrain);
// add the resulting terrain number
result.push_back(tile);
@@ -899,7 +894,7 @@
return result;
}
-inline t_layer get_layer_mask_(t_layer terrain)
+inline Uint32 get_layer_mask_(Uint32 terrain)
{
// test for the star 0x2A in every postion and return the
// appropriate mask
@@ -988,7 +983,7 @@
const std::string overlay_str(str, offset + 1, str.size());
result = t_letter(base_str, overlay_str);
} else {
- result = t_letter(str, filler);
+ result = t_letter(str);
}
#ifndef TERRAIN_TRANSLATION_COMPATIBLE
@@ -1017,7 +1012,7 @@
letter[2] = ((terrain.base & 0x0000FF00) >> 8);
letter[3] = (terrain.base & 0x000000FF);
- if(terrain.overlay != NO_LAYER) {
+ if(terrain.overlay != 0xFFFFFFFF) {
letter[4] = '^'; //the layer separator
letter[5] = ((terrain.overlay & 0xFF000000) >> 24);
letter[6] = ((terrain.overlay & 0x00FF0000) >> 16);
Modified: trunk/src/terrain_translation.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/terrain_translation.hpp?rev=16895&r1=16894&r2=16895&view=diff
==============================================================================
--- trunk/src/terrain_translation.hpp (original)
+++ trunk/src/terrain_translation.hpp Wed Apr 18 12:55:11 2007
@@ -35,10 +35,6 @@
namespace t_translation {
- typedef Uint32 t_layer;
- const t_layer WILDCARD = 0x2A000000;
- const t_layer NO_LAYER = 0xFFFFFFFF;
-
// The definitions for a terrain
/**
* A terrain string which is converted to a terrain is a string with 1
or 2 layers
@@ -49,12 +45,11 @@
struct t_letter {
t_letter(const std::string& b);
t_letter(const std::string& b, const std::string& o);
- t_letter(const std::string& b, const t_layer o);
- t_letter(const t_layer& b, const t_layer& o) : base(b),
overlay(o) {};
- t_letter() : base(0), overlay(NO_LAYER) {}
-
- t_layer base;
- t_layer overlay;
+ t_letter(const Uint32& b, const Uint32& o) : base(b),
overlay(o) {};
+ t_letter() : base(0), overlay(0xFFFFFFFF) {}
+
+ Uint32 base;
+ Uint32 overlay;
};
const t_letter NONE_TERRAIN = t_letter();
@@ -85,7 +80,7 @@
*/
struct t_match{
t_match();
- t_match(const std::string& str, const t_layer filler =
NO_LAYER);
+ t_match(const std::string& str);
t_match(const t_letter& letter);
t_list terrain;
@@ -164,11 +159,10 @@
* is the base terrain, the second
the overlay terrain.
*
* @param t_format The format to read
- * @param filler if there's no layer this value will be used as
the second layer
*
* @return A single terrain letter
*/
- t_letter read_letter(const std::string& str, const int t_format, const
t_layer filler = NO_LAYER);
+ t_letter read_letter(const std::string& str, const int t_format);
/**
* Writes a single letter to a string.
@@ -195,11 +189,10 @@
* 0 = no
* 1 = yes
* @param t_format The format to read.
- * @param filler if there's no layer this value will be used as
the second layer
*
* @returns A vector which contains the letters
found in the string
*/
- t_list read_list(const std::string& str, const int separated, const
int t_format, const t_layer filler = NO_LAYER);
+ t_list read_list(const std::string& str, const int separated, const
int t_format);
/**
* Writes a list of terrains to a string, only writes the new format.
@@ -331,8 +324,8 @@
// these terrain letters are in the builder format, and
// not usable in other parts of the engine
- const t_layer TB_STAR = '*' << 24; //it can be assumed this is the
equivalent of STAR
- const t_layer TB_DOT = '.' << 24;
+ const Uint32 TB_STAR = '*' << 24; //it can be assumed this is the
equivalent of STAR
+ const Uint32 TB_DOT = '.' << 24;
/**
* Reads a builder map, a builder map differs much from a normal map
hence
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits