src/ai/core/ai_map.hpp
author truelight
Thu, 15 Mar 2007 00:27:28 +0000
branchnoai
changeset 9397 d8f8db9c1a2e
parent 9388 032008c3f6e3
child 9404 ef9e171617a3
permissions -rw-r--r--
(svn r9189) [NoAI] -Cleanup: cleaned up DefSQClass a bit by using the SquirrelEngine
wrappers instead of doing it ourself.
-Add: added a AddMethod overload which takes userdata as extra param
9379
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
     1
/* $Id$ */
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
     2
9388
032008c3f6e3 (svn r9180) [NoAI] -Fix: copy/pasting can be nasty: wrong @file headers
truelight
parents: 9387
diff changeset
     3
/** @file ai_map.hpp Everything to query map metadata */
9379
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
     4
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
     5
#ifndef AI_MAP_HPP
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
     6
#define AI_MAP_HPP
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
     7
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
     8
#include "ai_object.hpp"
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
     9
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    10
class AIMap : public AIObject {
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    11
public:
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    12
	/**
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    13
	 * Checks whether the given tile is valid
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    14
	 * @param t the tile to check
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    15
	 * @return true is the tile it within the boundaries of the map
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    16
	 */
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    17
	bool IsValidTile(TileIndex t);
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    18
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    19
	/**
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    20
	 * Gets the number of tiles in the map
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    21
	 * @return the size of the map in tiles
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    22
	 * @post return > 0
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    23
	 */
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    24
	TileIndex GetMapSize();
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    25
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    26
	/**
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    27
	 * Gets the amount of tiles along the SW and NE border
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    28
	 * @return the length along the SW and NE borders
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    29
	 * @post return > 0
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    30
	 */
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    31
	uint32 GetMapSizeX();
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    32
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    33
	/**
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    34
	 * Gets the amount of tiles along the SE and NW border
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    35
	 * @return the length along the SE and NW borders
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    36
	 * @post return > 0
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    37
	 */
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    38
	uint32 GetMapSizeY();
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    39
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    40
	/**
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    41
	 * Gets the X (place along the SW/NE border)
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    42
	 * @param t the tile to get the X of
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    43
	 * @pre this->IsValidTile(t)
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    44
	 * @return the x-position
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    45
	 * @post return <= this->GetMapSizeX()
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    46
	 */
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    47
	uint32 GetTileX(TileIndex t);
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    48
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    49
	/**
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    50
	 * Gets the Y (place along the SE/NW border)
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    51
	 * @param t the tile to get the Y of
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    52
	 * @pre this->IsValidTile(t)
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    53
	 * @return the y-position
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    54
	 * @post return <= this->GetMapSizeY()
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    55
	 */
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    56
	uint32 GetTileY(TileIndex t);
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    57
};
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    58
9387
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents: 9379
diff changeset
    59
#ifdef SQUIRREL_CLASS
9397
d8f8db9c1a2e (svn r9189) [NoAI] -Cleanup: cleaned up DefSQClass a bit by using the SquirrelEngine
truelight
parents: 9388
diff changeset
    60
void SQAIMapRegister(SquirrelEngine *engine) {
9387
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents: 9379
diff changeset
    61
	DefSQClass <AIMap> SQAIMap("AIMap");
9397
d8f8db9c1a2e (svn r9189) [NoAI] -Cleanup: cleaned up DefSQClass a bit by using the SquirrelEngine
truelight
parents: 9388
diff changeset
    62
	SQAIMap.PreRegister(engine);
d8f8db9c1a2e (svn r9189) [NoAI] -Cleanup: cleaned up DefSQClass a bit by using the SquirrelEngine
truelight
parents: 9388
diff changeset
    63
	SQAIMap.DefSQFunction(engine, &AIMap::IsValidTile, "IsValidTile");
d8f8db9c1a2e (svn r9189) [NoAI] -Cleanup: cleaned up DefSQClass a bit by using the SquirrelEngine
truelight
parents: 9388
diff changeset
    64
	SQAIMap.DefSQFunction(engine, &AIMap::GetMapSize,  "GetMapSize");
d8f8db9c1a2e (svn r9189) [NoAI] -Cleanup: cleaned up DefSQClass a bit by using the SquirrelEngine
truelight
parents: 9388
diff changeset
    65
	SQAIMap.DefSQFunction(engine, &AIMap::GetMapSizeX, "GetMapSizeX");
d8f8db9c1a2e (svn r9189) [NoAI] -Cleanup: cleaned up DefSQClass a bit by using the SquirrelEngine
truelight
parents: 9388
diff changeset
    66
	SQAIMap.DefSQFunction(engine, &AIMap::GetMapSizeY, "GetMapSizeY");
d8f8db9c1a2e (svn r9189) [NoAI] -Cleanup: cleaned up DefSQClass a bit by using the SquirrelEngine
truelight
parents: 9388
diff changeset
    67
	SQAIMap.DefSQFunction(engine, &AIMap::GetTileX,    "GetTileX");
d8f8db9c1a2e (svn r9189) [NoAI] -Cleanup: cleaned up DefSQClass a bit by using the SquirrelEngine
truelight
parents: 9388
diff changeset
    68
	SQAIMap.DefSQFunction(engine, &AIMap::GetTileY,    "GetTileY");
d8f8db9c1a2e (svn r9189) [NoAI] -Cleanup: cleaned up DefSQClass a bit by using the SquirrelEngine
truelight
parents: 9388
diff changeset
    69
	SQAIMap.PostRegister(engine);
9387
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents: 9379
diff changeset
    70
}
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents: 9379
diff changeset
    71
#endif /* SQUIRREL_CLASS */
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents: 9379
diff changeset
    72
9379
6e89b780c2c9 (svn r9168) [NoAI] -Add: AI wrapper functions for some map related queries.
rubidium
parents:
diff changeset
    73
#endif /* AI_MAP_HPP */