diff engine/core/model/metamodel/grids/cellgrids.i @ 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/engine/core/model/metamodel/grids/cellgrids.i	Sun Jun 29 18:44:17 2008 +0000
@@ -0,0 +1,73 @@
+%module fife
+%{
+#include "model/metamodel/grids/cellgrid.h"
+#include "model/metamodel/grids/hexgrid.h"
+#include "model/metamodel/grids/squaregrid.h"
+%}
+
+%include "model/metamodel/modelcoords.i"
+
+namespace std {
+	%template(ModelCoordinateVector) vector<FIFE::ModelCoordinate>;
+}
+
+namespace FIFE {
+	class CellGrid {
+	public:
+		CellGrid(bool allow_diagonals=false);
+		virtual ~CellGrid();
+		void getAccessibleCoordinates(const ModelCoordinate& curpos, std::vector<ModelCoordinate>& coordinates);
+		virtual const std::string& getType() const = 0;
+		virtual const std::string& getName() const = 0;
+		virtual bool isAccessible(const ModelCoordinate& curpos, const ModelCoordinate& target) = 0;
+		virtual float getAdjacentCost(const ModelCoordinate& curpos, const ModelCoordinate& target) = 0;
+		virtual unsigned int getCellSideCount() const = 0;
+		ExactModelCoordinate toMapCoordinates(const ModelCoordinate& layer_coords);
+		virtual ExactModelCoordinate toMapCoordinates(const ExactModelCoordinate& layer_coords) = 0;
+		virtual ModelCoordinate toLayerCoordinates(const ExactModelCoordinate& map_coord) = 0;
+		virtual ExactModelCoordinate toExactLayerCoordinates(const ExactModelCoordinate& map_coord) = 0;
+		virtual void getVertices(std::vector<ExactModelCoordinate>& vtx, const ModelCoordinate& cell) = 0;
+		void setXShift(const double& xshift);
+		const double getXShift() const;
+		void setYShift(const double yshift);
+		const double getYShift() const;
+		void setXScale(const double scale);
+		void setYScale(const double scale);
+		const double getXScale() const;
+		const double getYScale() const;
+		void setRotation(const double rotation);
+		const double getRotation() const;
+	};
+
+	class HexGrid: public CellGrid {
+	public:
+		HexGrid(bool diagonals_accessible=false);
+		virtual ~HexGrid();
+
+		bool isAccessible(const ModelCoordinate& curpos, const ModelCoordinate& target);
+		const std::string& getType() const;
+		const std::string& getName() const;
+		float getAdjacentCost(const ModelCoordinate& curpos, const ModelCoordinate& target);
+		unsigned int getCellSideCount() const { return 6; }
+		ExactModelCoordinate toMapCoordinates(const ExactModelCoordinate& layer_coords);
+		ModelCoordinate toLayerCoordinates(const ExactModelCoordinate& map_coord);
+		ExactModelCoordinate toExactLayerCoordinates(const ExactModelCoordinate& map_coord);
+		void getVertices(std::vector<ExactModelCoordinate>& vtx, const ModelCoordinate& cell);
+	};
+
+	class SquareGrid: public CellGrid {
+	public:
+		SquareGrid(bool diagonals_accessible=false);
+		virtual ~SquareGrid();
+
+		const std::string& getType() const;
+		const std::string& getName() const;
+		bool isAccessible(const ModelCoordinate& curpos, const ModelCoordinate& target);
+		float getAdjacentCost(const ModelCoordinate& curpos, const ModelCoordinate& target);
+		unsigned int getCellSideCount() const { return 4; }
+		ExactModelCoordinate toMapCoordinates(const ExactModelCoordinate& layer_coords);
+		ModelCoordinate toLayerCoordinates(const ExactModelCoordinate& map_coord);
+		ExactModelCoordinate toExactLayerCoordinates(const ExactModelCoordinate& map_coord);
+		void getVertices(std::vector<ExactModelCoordinate>& vtx, const ModelCoordinate& cell);
+	};
+}