Changeset - r11771:3fff68c165db
[Not reviewed]
master
0 6 0
frosch - 15 years ago 2009-04-26 16:26:41
frosch@openttd.org
(svn r16166) -Add [NoAI]: AITile::Get(Min|Max|Corner)Height
6 files changed with 300 insertions and 107 deletions:
0 comments (0 inline, 0 general)
bin/ai/regression/regression.nut
Show inline comments
 
@@ -1186,33 +1186,59 @@ function Regression::TileList()
 
	}
 
	list.Clear();
 

	
 
	print("");
 
	print("--TileList--");
 
	print("  Count():             " + list.Count());
 
	list.AddRectangle(41895 - 256 * 2, 256 * 2 + 41895 + 8);
 
	list.AddRectangle(34436, 256 * 2 + 34436 + 8);
 
	print("  Count():             " + list.Count());
 

	
 
	list.Valuate(AITile.GetHeight);
 
	print("  Height():            done");
 
	print("  Count():             " + list.Count());
 
	print("  ListDump:");
 
	for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
 
		print("    " + i + " => " + list.GetValue(i));
 
	}
 

	
 
	list.Valuate(AITile.GetCornerHeight, AITile.CORNER_N);
 
	print("  CornerHeight(North): done");
 
	print("  Count():             " + list.Count());
 
	print("  ListDump:");
 
	for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
 
		print("    " + i + " => " + list.GetValue(i));
 
	}
 

	
 
	list.Valuate(AITile.GetMinHeight);
 
	print("  MinHeight():         done");
 
	print("  Count():             " + list.Count());
 
	print("  ListDump:");
 
	for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
 
		print("    " + i + " => " + list.GetValue(i));
 
	}
 

	
 
	list.Valuate(AITile.GetMaxHeight);
 
	print("  MaxHeight():         done");
 
	print("  Count():             " + list.Count());
 
	print("  ListDump:");
 
	for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
 
		print("    " + i + " => " + list.GetValue(i));
 
	}
 

	
 
	list.Valuate(AITile.GetSlope);
 
	list.KeepValue(0);
 
	print("  Slope():             done");
 
	print("  KeepValue(0):        done");
 
	print("  Count():             " + list.Count());
 
	print("  ListDump:");
 
	for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
 
		print("    " + i + " => " + list.GetValue(i));
 
	}
 

	
 
	list.Clear();
 
	list.AddRectangle(41895 - 256 * 2, 256 * 2 + 41895 + 8);
 
	list.Valuate(AITile.IsBuildable);
 
	list.KeepValue(1);
 
	print("  Buildable():         done");
 
	print("  KeepValue(1):        done");
 
	print("  Count():             " + list.Count());
 

	
bin/ai/regression/regression.txt
Show inline comments
 
@@ -7363,162 +7363,222 @@
 
    27377 => 15
 
    27377 => false
 
    27377 => false
 

	
 
--TileList--
 
  Count():             0
 
  Count():             45
 
  Count():             27
 
  Height():            done
 
  Count():             45
 
  Count():             27
 
  ListDump:
 
    34956 => 4
 
    34700 => 4
 
    34444 => 4
 
    34955 => 3
 
    34954 => 3
 
    34953 => 3
 
    34699 => 3
 
    34698 => 3
 
    34697 => 3
 
    34693 => 3
 
    34692 => 3
 
    34443 => 3
 
    34442 => 3
 
    34441 => 3
 
    34439 => 3
 
    34438 => 3
 
    34437 => 3
 
    34436 => 3
 
    34952 => 2
 
    34951 => 2
 
    34950 => 2
 
    34949 => 2
 
    34948 => 2
 
    34696 => 2
 
    34695 => 2
 
    34694 => 2
 
    34440 => 2
 
  CornerHeight(North): done
 
  Count():             27
 
  ListDump:
 
    34956 => 4
 
    34700 => 4
 
    34444 => 4
 
    34955 => 3
 
    34954 => 3
 
    34953 => 3
 
    34699 => 3
 
    34698 => 3
 
    34697 => 3
 
    34693 => 3
 
    34692 => 3
 
    34443 => 3
 
    34442 => 3
 
    34441 => 3
 
    34439 => 3
 
    34438 => 3
 
    34437 => 3
 
    34436 => 3
 
    34952 => 2
 
    34951 => 2
 
    34950 => 2
 
    34949 => 2
 
    34948 => 2
 
    34696 => 2
 
    34695 => 2
 
    34694 => 2
 
    34440 => 2
 
  MinHeight():         done
 
  Count():             27
 
  ListDump:
 
    42411 => 2
 
    42410 => 2
 
    42409 => 2
 
    42408 => 2
 
    42407 => 2
 
    42154 => 2
 
    42153 => 2
 
    42152 => 2
 
    42151 => 2
 
    41898 => 2
 
    41897 => 2
 
    41896 => 2
 
    41895 => 2
 
    41642 => 2
 
    41641 => 2
 
    41640 => 2
 
    41639 => 2
 
    41386 => 2
 
    41385 => 2
 
    41384 => 2
 
    41383 => 2
 
    34956 => 4
 
    34700 => 4
 
    34444 => 4
 
    34955 => 3
 
    34954 => 3
 
    34953 => 3
 
    34699 => 3
 
    34698 => 3
 
    34697 => 3
 
    34443 => 3
 
    34442 => 3
 
    34441 => 3
 
    34436 => 3
 
    34952 => 2
 
    34951 => 2
 
    34950 => 2
 
    34949 => 2
 
    34948 => 2
 
    34696 => 2
 
    34695 => 2
 
    34694 => 2
 
    34693 => 2
 
    34692 => 2
 
    34440 => 2
 
    34439 => 2
 
    34438 => 2
 
    34437 => 2
 
  MaxHeight():         done
 
  Count():             27
 
  ListDump:
 
    34956 => 4
 
    34955 => 4
 
    34700 => 4
 
    34699 => 4
 
    34444 => 4
 
    34443 => 4
 
    34954 => 3
 
    34953 => 3
 
    34952 => 3
 
    34951 => 3
 
    34950 => 3
 
    34949 => 3
 
    34948 => 3
 
    34698 => 3
 
    34697 => 3
 
    34696 => 3
 
    34693 => 3
 
    34692 => 3
 
    34442 => 3
 
    34441 => 3
 
    34440 => 3
 
    34439 => 3
 
    34438 => 3
 
    34437 => 3
 
    34436 => 3
 
    34695 => 2
 
    34694 => 2
 
  Slope():             done
 
  KeepValue(0):        done
 
  Count():             12
 
  ListDump:
 
    34956 => 0
 
    34954 => 0
 
    34953 => 0
 
    34700 => 0
 
    34698 => 0
 
    34697 => 0
 
    34695 => 0
 
    34694 => 0
 
    34444 => 0
 
    34442 => 0
 
    34441 => 0
 
    34436 => 0
 
  Buildable():         done
 
  KeepValue(1):        done
 
  Count():             35
 
  BuildableRectangle(3, 3) ListDump:
 
    42415 => 1
 
    42414 => 1
 
    42413 => 1
 
    42412 => 1
 
    42411 => 1
 
    42410 => 1
 
    42159 => 1
 
    42158 => 1
 
    42157 => 1
 
    42156 => 1
 
    42155 => 1
 
    42154 => 1
 
    41903 => 1
 
    41902 => 1
 
    41901 => 1
 
    41900 => 1
 
    41899 => 1
 
    41898 => 1
 
    41647 => 1
 
    41646 => 1
 
    41645 => 1
 
    41644 => 1
 
    41643 => 1
 
    41391 => 1
 
    41390 => 1
 
    41389 => 1
 
    41388 => 1
 
    41387 => 1
 
  Slope():             done
 
  KeepValue(0):        done
 
  Count():             38
 
  ListDump:
 
    42415 => 0
 
    42414 => 0
 
    42413 => 0
 
    42410 => 0
 
    42409 => 0
 
    42408 => 0
 
    42407 => 0
 
    42159 => 0
 
    42158 => 0
 
    42157 => 0
 
    42156 => 0
 
    42153 => 0
 
    42152 => 0
 
    42151 => 0
 
    41903 => 0
 
    41902 => 0
 
    41901 => 0
 
    41900 => 0
 
    41899 => 0
 
    41897 => 0
 
    41896 => 0
 
    41895 => 0
 
    41647 => 0
 
    41646 => 0
 
    41645 => 0
 
    41644 => 0
 
    41643 => 0
 
    41641 => 0
 
    41640 => 0
 
    41639 => 0
 
    41391 => 0
 
    41390 => 0
 
    41389 => 0
 
    41388 => 0
 
    41387 => 0
 
    41385 => 0
 
    41384 => 0
 
    41383 => 0
 
  Buildable():         done
 
  KeepValue(1):        done
 
  Count():             28
 
  BuildableRectangle(3, 3) ListDump:
 
    42415 => 1
 
    42414 => 1
 
    42413 => 1
 
    42410 => 1
 
    42159 => 1
 
    42158 => 1
 
    42157 => 1
 
    42156 => 1
 
    41903 => 1
 
    41902 => 1
 
    41901 => 1
 
    41900 => 1
 
    41899 => 1
 
    41647 => 1
 
    41646 => 1
 
    41645 => 1
 
    41644 => 1
 
    41643 => 1
 
    41642 => 1
 
    41641 => 1
 
    41391 => 1
 
    41390 => 1
 
    41389 => 1
 
    41388 => 1
 
    41387 => 1
 
    41386 => 1
 
    41385 => 1
 
    42153 => 0
 
    41897 => 0
 
    41384 => 0
 
  DistanceManhattanToTile(30000) ListDump:
 
    42415 => 175
 
    42414 => 174
 
    42159 => 174
 
    42413 => 173
 
    42158 => 173
 
    41903 => 173
 
    42412 => 172
 
    42157 => 172
 
    41902 => 172
 
    41647 => 172
 
    42411 => 171
 
    42156 => 171
 
    41901 => 171
 
    41646 => 171
 
    41391 => 171
 
    42410 => 170
 
    42155 => 170
 
    41900 => 170
 
    41645 => 170
 
    41390 => 170
 
    42154 => 169
 
    41899 => 169
 
    41644 => 169
 
    41389 => 169
 
    42153 => 168
 
    41898 => 168
 
    41643 => 168
 
    41388 => 168
 
    41897 => 167
 
    41642 => 167
 
    41387 => 167
 
    41641 => 166
 
    41386 => 166
 
    41385 => 165
 
    41384 => 164
 
  DistanceSquareToTile(30000) ListDump:
 
    42415 => 18433
 
    42159 => 18338
 
    41903 => 18245
 
@@ -7529,98 +7589,125 @@
 
    41902 => 17992
 
    42413 => 17929
 
    41646 => 17901
 
    42157 => 17834
 
    41390 => 17812
 
    41901 => 17741
 
    42412 => 17680
 
    41645 => 17650
 
    42156 => 17585
 
    41389 => 17561
 
    41900 => 17492
 
    42411 => 17433
 
    41644 => 17401
 
    42155 => 17338
 
    41388 => 17312
 
    41899 => 17245
 
    42410 => 17188
 
    41643 => 17154
 
    42154 => 17093
 
    41387 => 17065
 
    41898 => 17000
 
    41642 => 16909
 
    42153 => 16850
 
    41386 => 16820
 
    41897 => 16757
 
    41641 => 16666
 
    41385 => 16577
 
    41384 => 16336
 
  GetOwner() ListDump:
 
    42415 => -1
 
    42414 => -1
 
    42413 => -1
 
    42412 => -1
 
    42411 => -1
 
    42410 => -1
 
    42159 => -1
 
    42158 => -1
 
    42157 => -1
 
    42156 => -1
 
    42155 => -1
 
    42154 => -1
 
    42153 => -1
 
    41903 => -1
 
    41902 => -1
 
    41901 => -1
 
    41900 => -1
 
    41899 => -1
 
    41898 => -1
 
    41897 => -1
 
    41647 => -1
 
    41646 => -1
 
    41645 => -1
 
    41644 => -1
 
    41643 => -1
 
    41642 => -1
 
    41641 => -1
 
    41391 => -1
 
    41390 => -1
 
    41389 => -1
 
    41388 => -1
 
    41387 => -1
 
    41386 => -1
 
    41385 => -1
 
    41384 => -1
 
  GetClosestTown() ListDump:
 
    42415 => 3
 
    42414 => 3
 
    42413 => 3
 
    42412 => 3
 
    42411 => 3
 
    42410 => 3
 
    42159 => 3
 
    42158 => 3
 
    42157 => 3
 
    42156 => 3
 
    42155 => 3
 
    42154 => 3
 
    42153 => 3
 
    41903 => 3
 
    41902 => 3
 
    41901 => 3
 
    41900 => 3
 
    41899 => 3
 
    41898 => 3
 
    41897 => 3
 
    41647 => 3
 
    41646 => 3
 
    41645 => 3
 
    41644 => 3
 
    41643 => 3
 
    41642 => 3
 
    41641 => 3
 
    41391 => 3
 
    41390 => 3
 
    41389 => 3
 
    41388 => 3
 
    41387 => 3
 
    41386 => 3
 
    41385 => 3
 
    41384 => 3
 
  CargoAcceptance():   done
 
  KeepAboveValue(10):  done
 
  Count():             9
 
  Count():             15
 
  ListDump:
 
    41897 => 29
 
    41385 => 26
 
    41384 => 26
 
    42153 => 25
 
    41641 => 23
 
    41899 => 17
 
    41898 => 17
 
    41387 => 17
 
    41386 => 17
 
    41643 => 14
 
    41642 => 14
 
    42411 => 13
 
    42410 => 13
 
    42155 => 13
 
    42154 => 13
 
  RoadTile():          done
 
  KeepValue(1):        done
 
  Count():             0
 
  ListDump:
 
  NeighbourRoadCount():done
 
  KeepValue(1):        done
src/ai/api/ai_tile.cpp
Show inline comments
 
@@ -8,12 +8,13 @@
 
#include "../../station_func.h"
 
#include "../../company_func.h"
 
#include "../../road_map.h"
 
#include "../../water_map.h"
 
#include "../../clear_map.h"
 
#include "../../town.h"
 
#include "../../landscape.h"
 

	
 
/* static */ bool AITile::IsBuildable(TileIndex tile)
 
{
 
	if (!::IsValidTile(tile)) return false;
 

	
 
	switch (::GetTileType(tile)) {
 
@@ -129,17 +130,40 @@
 

	
 
	return (Slope)::ComplementSlope((::Slope)slope);
 
}
 

	
 
/* static */ int32 AITile::GetHeight(TileIndex tile)
 
{
 
	if (!::IsValidTile(tile)) return false;
 
	if (!::IsValidTile(tile)) return -1;
 

	
 
	return ::TileHeight(tile);
 
}
 

	
 
/* static */ int32 AITile::GetMinHeight(TileIndex tile)
 
{
 
	if (!::IsValidTile(tile)) return -1;
 

	
 
	return ::GetTileZ(tile) / ::TILE_HEIGHT;
 
}
 

	
 
/* static */ int32 AITile::GetMaxHeight(TileIndex tile)
 
{
 
	if (!::IsValidTile(tile)) return -1;
 

	
 
	return ::GetTileMaxZ(tile) / ::TILE_HEIGHT;
 
}
 

	
 
/* static */ int32 AITile::GetCornerHeight(TileIndex tile, Corner corner)
 
{
 
	if (!::IsValidTile(tile) || !::IsValidCorner((::Corner)corner)) return -1;
 

	
 
	uint z;
 
	::Slope slope = ::GetTileSlope(tile, &z);
 
	return (z + ::GetSlopeZInCorner(slope, (::Corner)corner)) / ::TILE_HEIGHT;
 
}
 

	
 
/* static */ AICompany::CompanyID AITile::GetOwner(TileIndex tile)
 
{
 
	if (!::IsValidTile(tile)) return AICompany::COMPANY_INVALID;
 
	if (::IsTileType(tile, MP_HOUSE)) return AICompany::COMPANY_INVALID;
 
	if (::IsTileType(tile, MP_INDUSTRY)) return AICompany::COMPANY_INVALID;
 

	
src/ai/api/ai_tile.hpp
Show inline comments
 
@@ -29,33 +29,45 @@ public:
 

	
 
		/** Tile can't be lowered any lower */
 
		ERR_TILE_TOO_LOW,                      // [STR_ERROR_ALREADY_AT_SEA_LEVEL]
 
	};
 

	
 
	/**
 
	 * Enumeration for the slope-type (from slopes.h).
 
	 * Enumeration for corners of tiles.
 
	 */
 
	enum Corner {
 
		CORNER_W       = 0,      //!< West corner
 
		CORNER_S       = 1,      //!< South corner
 
		CORNER_E       = 2,      //!< East corner
 
		CORNER_N       = 3,      //!< North corner
 

	
 
		CORNER_INVALID = 0xFF,
 
	};
 

	
 
	/**
 
	 * Enumeration for the slope-type.
 
	 *
 
	 * This enumeration use the chars N, E, S, W corresponding the
 
	 *  direction North, East, South and West. The top corner of a tile
 
	 *  is the north-part of the tile.
 
	 */
 
	enum Slope {
 
		/* Values are important, as they represent the internal state of the game. */
 
		SLOPE_FLAT     = 0x00,                                  //!< A flat tile
 
		SLOPE_W        = 0x01,                                  //!< The west corner of the tile is raised
 
		SLOPE_S        = 0x02,                                  //!< The south corner of the tile is raised
 
		SLOPE_E        = 0x04,                                  //!< The east corner of the tile is raised
 
		SLOPE_N        = 0x08,                                  //!< The north corner of the tile is raised
 
		SLOPE_STEEP    = 0x10,                                  //!< Indicates the slope is steep
 
		SLOPE_W        = 1 << CORNER_W,                         //!< The west corner of the tile is raised
 
		SLOPE_S        = 1 << CORNER_S,                         //!< The south corner of the tile is raised
 
		SLOPE_E        = 1 << CORNER_E,                         //!< The east corner of the tile is raised
 
		SLOPE_N        = 1 << CORNER_N,                         //!< The north corner of the tile is raised
 
		SLOPE_STEEP    = 0x10,                                  //!< Indicates the slope is steep (The corner opposite of the not-raised corner is raised two times)
 
		SLOPE_NW       = SLOPE_N | SLOPE_W,                     //!< North and west corner are raised
 
		SLOPE_SW       = SLOPE_S | SLOPE_W,                     //!< South and west corner are raised
 
		SLOPE_SE       = SLOPE_S | SLOPE_E,                     //!< South and east corner are raised
 
		SLOPE_NE       = SLOPE_N | SLOPE_E,                     //!< North and east corner are raised
 
		SLOPE_EW       = SLOPE_E | SLOPE_W,                     //!< East and west corner are raised
 
		SLOPE_NS       = SLOPE_N | SLOPE_S,                     //!< North and south corner are raised
 
		SLOPE_ELEVATED = SLOPE_N | SLOPE_E | SLOPE_S | SLOPE_W, //!< All corner are raised, similar to SLOPE_FLAT
 
		SLOPE_ELEVATED = SLOPE_N | SLOPE_E | SLOPE_S | SLOPE_W, //!< Bit mask containing all 'simple' slopes. Does not appear as a slope.
 
		SLOPE_NWS      = SLOPE_N | SLOPE_W | SLOPE_S,           //!< North, west and south corner are raised
 
		SLOPE_WSE      = SLOPE_W | SLOPE_S | SLOPE_E,           //!< West, south and east corner are raised
 
		SLOPE_SEN      = SLOPE_S | SLOPE_E | SLOPE_N,           //!< South, east and north corner are raised
 
		SLOPE_ENW      = SLOPE_E | SLOPE_N | SLOPE_W,           //!< East, north and west corner are raised
 
		SLOPE_STEEP_W  = SLOPE_STEEP | SLOPE_NWS,               //!< A steep slope falling to east (from west)
 
		SLOPE_STEEP_S  = SLOPE_STEEP | SLOPE_WSE,               //!< A steep slope falling to north (from south)
 
@@ -126,23 +138,26 @@ public:
 
	 * @return True if and only if the tile is a station tile.
 
	 */
 
	static bool IsStationTile(TileIndex tile);
 

	
 
	/**
 
	 * Check if a tile has a steep slope.
 
	 * Steep slopes are slopes with a height difference of 2 across one diagonal of the tile.
 
	 * @param slope The slope to check on.
 
	 * @pre slope != SLOPE_INVALID.
 
	 * @return True if the slope is a steep slope.
 
	 */
 
	static bool IsSteepSlope(Slope slope);
 

	
 
	/**
 
	 * Check if a tile has a halftile slope.
 
	 * Halftile slopes appear on top of halftile foundations. E.g. the slope you get when building a horizontal railtrack on the top of a SLOPE_N or SLOPE_STEEP_N.
 
	 * @param slope The slope to check on.
 
	 * @pre slope != SLOPE_INVALID.
 
	 * @return True if the slope is a halftile slope.
 
	 * @note Currently there is no API function that would return or accept a halftile slope.
 
	 */
 
	static bool IsHalftileSlope(Slope slope);
 

	
 
	/**
 
	 * Check if the tile has any tree on it.
 
	 * @param tile The tile to check on.
 
@@ -190,15 +205,16 @@ public:
 
	 * @return True if and only if the tile is desert tile.
 
	 */
 
	static bool IsDesertTile(TileIndex tile);
 

	
 
	/**
 
	 * Get the slope of a tile.
 
	 * This is the slope of the bare tile. A possible foundation on the tile does not influence this slope.
 
	 * @param tile The tile to check on.
 
	 * @pre AIMap::IsValidTile(tile).
 
	 * @return 0 means flat, others indicate internal state of slope.
 
	 * @return Bit mask encoding the slope. See #Slope for a description of the returned values.
 
	 */
 
	static Slope GetSlope(TileIndex tile);
 

	
 
	/**
 
	 * Get the complement of the slope.
 
	 * @param slope The slope to get the complement of.
 
@@ -208,18 +224,48 @@ public:
 
	 * @return The complement of a slope. This means that all corners that
 
	 *  weren't raised, are raised, and visa versa.
 
	 */
 
	static Slope GetComplementSlope(Slope slope);
 

	
 
	/**
 
	 * Get the height of the tile.
 
	 * Get the height of the north corner of a tile.
 
	 * The returned height is the height of the bare tile. A possible foundation on the tile does not influence this height.
 
	 * @deprecated This function is deprecated and might be removed in future versions of the API. Use GetMinHeight(), GetMaxHeight() or GetCornerHeight() instead.
 
	 * @param tile The tile to check on.
 
	 * @pre AIMap::IsValidTile(tile).
 
	 * @return The height of the north corner of the tile, ranging from 0 to 15.
 
	 */
 
	static int32 GetHeight(TileIndex tile);
 

	
 
	/**
 
	 * Get the minimal height on a tile.
 
	 * The returned height is the height of the bare tile. A possible foundation on the tile does not influence this height.
 
	 * @param tile The tile to check on.
 
	 * @pre AIMap::IsValidTile(tile).
 
	 * @return The height of the tile, ranging from 0 to 15.
 
	 * @return The height of the lowest corner of the tile, ranging from 0 to 15.
 
	 */
 
	static int32 GetMinHeight(TileIndex tile);
 

	
 
	/**
 
	 * Get the maximal height on a tile.
 
	 * The returned height is the height of the bare tile. A possible foundation on the tile does not influence this height.
 
	 * @param tile The tile to check on.
 
	 * @pre AIMap::IsValidTile(tile).
 
	 * @return The height of the highest corner of the tile, ranging from 0 to 15.
 
	 */
 
	static int32 GetHeight(TileIndex tile);
 
	static int32 GetMaxHeight(TileIndex tile);
 

	
 
	/**
 
	 * Get the height of a certain corner of a tile.
 
	 * The returned height is the height of the bare tile. A possible foundation on the tile does not influence this height.
 
	 * @param tile The tile to check on.
 
	 * @param corner The corner to query.
 
	 * @pre AIMap::IsValidTile(tile).
 
	 * @return The height of the lowest corner of the tile, ranging from 0 to 15.
 
	 */
 
	static int32 GetCornerHeight(TileIndex tile, Corner corner);
 

	
 
	/**
 
	 * Get the owner of the tile.
 
	 * @param tile The tile to get the owner from.
 
	 * @pre AIMap::IsValidTile(tile).
 
	 * @return The CompanyID of the owner of the tile, or COMPANY_INVALID if
src/ai/api/ai_tile.hpp.sq
Show inline comments
 
@@ -4,12 +4,14 @@
 
#include "ai_tile.hpp"
 

	
 
namespace SQConvert {
 
	/* Allow enums to be used as Squirrel parameters */
 
	template <> AITile::ErrorMessages GetParam(ForceType<AITile::ErrorMessages>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (AITile::ErrorMessages)tmp; }
 
	template <> int Return<AITile::ErrorMessages>(HSQUIRRELVM vm, AITile::ErrorMessages res) { sq_pushinteger(vm, (int32)res); return 1; }
 
	template <> AITile::Corner GetParam(ForceType<AITile::Corner>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (AITile::Corner)tmp; }
 
	template <> int Return<AITile::Corner>(HSQUIRRELVM vm, AITile::Corner res) { sq_pushinteger(vm, (int32)res); return 1; }
 
	template <> AITile::Slope GetParam(ForceType<AITile::Slope>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (AITile::Slope)tmp; }
 
	template <> int Return<AITile::Slope>(HSQUIRRELVM vm, AITile::Slope res) { sq_pushinteger(vm, (int32)res); return 1; }
 
	template <> AITile::TransportType GetParam(ForceType<AITile::TransportType>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (AITile::TransportType)tmp; }
 
	template <> int Return<AITile::TransportType>(HSQUIRRELVM vm, AITile::TransportType res) { sq_pushinteger(vm, (int32)res); return 1; }
 

	
 
	/* Allow AITile to be used as Squirrel parameter */
 
@@ -25,12 +27,17 @@ void SQAITile_Register(Squirrel *engine)
 
	SQAITile.PreRegister(engine);
 
	SQAITile.AddConstructor<void (AITile::*)(), 1>(engine, "x");
 

	
 
	SQAITile.DefSQConst(engine, AITile::ERR_TILE_BASE,     "ERR_TILE_BASE");
 
	SQAITile.DefSQConst(engine, AITile::ERR_TILE_TOO_HIGH, "ERR_TILE_TOO_HIGH");
 
	SQAITile.DefSQConst(engine, AITile::ERR_TILE_TOO_LOW,  "ERR_TILE_TOO_LOW");
 
	SQAITile.DefSQConst(engine, AITile::CORNER_W,          "CORNER_W");
 
	SQAITile.DefSQConst(engine, AITile::CORNER_S,          "CORNER_S");
 
	SQAITile.DefSQConst(engine, AITile::CORNER_E,          "CORNER_E");
 
	SQAITile.DefSQConst(engine, AITile::CORNER_N,          "CORNER_N");
 
	SQAITile.DefSQConst(engine, AITile::CORNER_INVALID,    "CORNER_INVALID");
 
	SQAITile.DefSQConst(engine, AITile::SLOPE_FLAT,        "SLOPE_FLAT");
 
	SQAITile.DefSQConst(engine, AITile::SLOPE_W,           "SLOPE_W");
 
	SQAITile.DefSQConst(engine, AITile::SLOPE_S,           "SLOPE_S");
 
	SQAITile.DefSQConst(engine, AITile::SLOPE_E,           "SLOPE_E");
 
	SQAITile.DefSQConst(engine, AITile::SLOPE_N,           "SLOPE_N");
 
	SQAITile.DefSQConst(engine, AITile::SLOPE_STEEP,       "SLOPE_STEEP");
 
@@ -75,12 +82,15 @@ void SQAITile_Register(Squirrel *engine)
 
	SQAITile.DefSQStaticMethod(engine, &AITile::IsRoughTile,                "IsRoughTile",                2, ".i");
 
	SQAITile.DefSQStaticMethod(engine, &AITile::IsSnowTile,                 "IsSnowTile",                 2, ".i");
 
	SQAITile.DefSQStaticMethod(engine, &AITile::IsDesertTile,               "IsDesertTile",               2, ".i");
 
	SQAITile.DefSQStaticMethod(engine, &AITile::GetSlope,                   "GetSlope",                   2, ".i");
 
	SQAITile.DefSQStaticMethod(engine, &AITile::GetComplementSlope,         "GetComplementSlope",         2, ".i");
 
	SQAITile.DefSQStaticMethod(engine, &AITile::GetHeight,                  "GetHeight",                  2, ".i");
 
	SQAITile.DefSQStaticMethod(engine, &AITile::GetMinHeight,               "GetMinHeight",               2, ".i");
 
	SQAITile.DefSQStaticMethod(engine, &AITile::GetMaxHeight,               "GetMaxHeight",               2, ".i");
 
	SQAITile.DefSQStaticMethod(engine, &AITile::GetCornerHeight,            "GetCornerHeight",            3, ".ii");
 
	SQAITile.DefSQStaticMethod(engine, &AITile::GetOwner,                   "GetOwner",                   2, ".i");
 
	SQAITile.DefSQStaticMethod(engine, &AITile::HasTransportType,           "HasTransportType",           3, ".ii");
 
	SQAITile.DefSQStaticMethod(engine, &AITile::GetCargoAcceptance,         "GetCargoAcceptance",         6, ".iiiii");
 
	SQAITile.DefSQStaticMethod(engine, &AITile::GetCargoProduction,         "GetCargoProduction",         6, ".iiiii");
 
	SQAITile.DefSQStaticMethod(engine, &AITile::GetDistanceManhattanToTile, "GetDistanceManhattanToTile", 3, ".ii");
 
	SQAITile.DefSQStaticMethod(engine, &AITile::GetDistanceSquareToTile,    "GetDistanceSquareToTile",    3, ".ii");
src/slope_type.h
Show inline comments
 
@@ -50,13 +50,13 @@ enum Slope {
 
	SLOPE_NW       = SLOPE_N | SLOPE_W,                     ///< north and west corner are raised
 
	SLOPE_SW       = SLOPE_S | SLOPE_W,                     ///< south and west corner are raised
 
	SLOPE_SE       = SLOPE_S | SLOPE_E,                     ///< south and east corner are raised
 
	SLOPE_NE       = SLOPE_N | SLOPE_E,                     ///< north and east corner are raised
 
	SLOPE_EW       = SLOPE_E | SLOPE_W,                     ///< east and west corner are raised
 
	SLOPE_NS       = SLOPE_N | SLOPE_S,                     ///< north and south corner are raised
 
	SLOPE_ELEVATED = SLOPE_N | SLOPE_E | SLOPE_S | SLOPE_W, ///< all corner are raised, similar to SLOPE_FLAT
 
	SLOPE_ELEVATED = SLOPE_N | SLOPE_E | SLOPE_S | SLOPE_W, ///< bit mask containing all 'simple' slopes
 
	SLOPE_NWS      = SLOPE_N | SLOPE_W | SLOPE_S,           ///< north, west and south corner are raised
 
	SLOPE_WSE      = SLOPE_W | SLOPE_S | SLOPE_E,           ///< west, south and east corner are raised
 
	SLOPE_SEN      = SLOPE_S | SLOPE_E | SLOPE_N,           ///< south, east and north corner are raised
 
	SLOPE_ENW      = SLOPE_E | SLOPE_N | SLOPE_W,           ///< east, north and west corner are raised
 
	SLOPE_STEEP_W  = SLOPE_STEEP | SLOPE_NWS,               ///< a steep slope falling to east (from west)
 
	SLOPE_STEEP_S  = SLOPE_STEEP | SLOPE_WSE,               ///< a steep slope falling to north (from south)
0 comments (0 inline, 0 general)