Mercurial > fife-parpg
view 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 source
%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); }; }