Mercurial > fife-parpg
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); + }; +}