comparison engine/core/pathfinder/searchspace.h @ 0:4a0efb7baf70

* Datasets becomes the new trunk and retires after that :-)
author mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
date Sun, 29 Jun 2008 18:44:17 +0000
parents
children 90005975cdbb
comparison
equal deleted inserted replaced
-1:000000000000 0:4a0efb7baf70
1 /***************************************************************************
2 * Copyright (C) 2005-2008 by the FIFE team *
3 * http://www.fifengine.de *
4 * This file is part of FIFE. *
5 * *
6 * FIFE is free software; you can redistribute it and/or modify *
7 * it under the terms of the GNU General Public License as published by *
8 * the Free Software Foundation; either version 2 of the License, or *
9 * (at your option) any later version. *
10 * *
11 * This program is distributed in the hope that it will be useful, *
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14 * GNU General Public License for more details. *
15 * *
16 * You should have received a copy of the GNU General Public License *
17 * along with this program; if not, write to the *
18 * Free Software Foundation, Inc., *
19 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *
20 ***************************************************************************/
21
22 #ifndef FIFE_PATHFINDER_SEARCHSPACE
23 #define FIFE_PATHFINDER_SEARCHSPACE
24
25 // Standard C++ library includes
26
27 // 3rd party library includes
28
29 // FIFE includes
30 // These includes are split up in two parts, separated by one empty line
31 // First block: files included from the FIFE root src directory
32 // Second block: files included from the same folder
33 #include "model/structures/location.h"
34
35 namespace FIFE {
36
37 class Layer;
38
39 class SearchSpace {
40 public:
41 SearchSpace(Layer* layer);
42
43 int getUpperX() const {
44 return m_upperX;
45 }
46
47 int getUpperY() const {
48 return m_upperY;
49 }
50
51 int getLowerX() const {
52 return m_lowerX;
53 }
54
55 int getLowerY() const {
56 return m_lowerY;
57 }
58
59 int getWidth() const {
60 //1 is added to make it inclusive of the first cell.
61 return (m_upperX - m_lowerX) + 1;
62 }
63
64 int getHeight() const {
65 return (m_upperY - m_lowerY) + 1;
66 }
67
68 Layer* getLayer() const {
69 return m_layer;
70 }
71
72 /** Determines whether the given location is within the searchspace.
73 *
74 * Tests the equality of the layers and then tests to see whether the coordinates
75 * lie within the search space.
76 *
77 * @param location The location to test.
78 * @return True if it is in the search space, false otherwise.
79 */
80 bool isInSearchSpace(const Location& location) const;
81
82 /** Translates coordinates into the search space.
83 *
84 * given a coordinate this function returns that coordinate in relation to the
85 * search space origin.
86 *
87 * @param coords The coordinate to translate.
88 * @return The translated coordinate.
89 */
90 ModelCoordinate translateCoordsToSearchSpace(const ModelCoordinate& coords) const;
91
92 /** Converts a coordinate into a unique integer id.
93 *
94 * Takes a model coordinate and based on the coordinate returns a unique identifier.
95 *
96 * @param coord The model coord to get the integer of.
97 * @return The unique identifier.
98 */
99 int convertCoordToInt(const ModelCoordinate& coord) const;
100
101 /** Converts an integer to a ModelCoordinate.
102 *
103 * Converts an integer that represents a cell in the search space into the
104 * actual ModelCoordinate representing it's physical location.
105 *
106 * @param cell An integer of the cell to get the coordinate of.
107 * @return The model coordinate in question.
108 */
109 ModelCoordinate convertIntToCoord(const int cell) const;
110
111 /** Returns the maximum index on the layer.
112 * Returns the maximum indexible coordinate on the search space.
113 * @return The maximum indexible coordinate.
114 */
115 int getMaxIndex() const;
116 private:
117 //The boundries of the search space.
118 int m_upperX;
119 int m_upperY;
120 int m_lowerX;
121 int m_lowerY;
122
123 //The layer of the search space.
124 Layer* m_layer;
125 };
126
127 }
128
129
130 #endif