Show maptile.h syntax highlighted
/***************************************************************************
maptile.h - description
-------------------
begin : Mon Aug 5 2002
copyright : (C) 2002 by Brendon Higgins
email : freepop-devel@lists.sourceforge.net
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef MAPTILE_H_INCLUDED
#define MAPTILE_H_INCLUDED
#include <slope.h>
#include <boost/operators.hpp>
class Corner;
class MapTilePos;
class MapTile;
/**
* One tile on the map. A MapTile has a certain slope at a certain height.
*/
class MapTile {
protected:
/**
* The slope of the tile.
*/
Slope s;
/**
* The height of the lowest corner of the tile. 0 = sea level.
*/
unsigned int z;
public:
/**
* Constructor. Initialises to 0 height.
*/
MapTile();
/**
* Copy constructor.
*/
MapTile(const MapTile& t);
/**
* Constructor. Takes a height and a slope.
*/
explicit MapTile(unsigned int zz, const Slope& ss = Slope());
/**
* Destructor.
*/
virtual ~MapTile() = 0;
/**
* Raise the corner \p c one step.
*/
virtual void raiseCorner(const Corner& c);
/**
* Lower the corner \p c one step. Assumes corner is
* not already at sea level (height = 0).
*/
virtual void lowerCorner(const Corner& c);
/**
* Rotate this tile the given amount.
*/
MapTile& operator*=(const Rotation& r);
/**
* Get the height of the corner \p c.
*/
unsigned int getCornerPos(const Corner& c) const;
/**
* Return true iff \p c is at sea level.
*/
bool isCornerAtSeaLevel(const Corner& c) const;
/**
* Return true iff any corner is at sea level.
*/
bool isAtSeaLevel() const;
/**
* See if the tile is a sea tile.
*/
bool isSea(const MapTilePos& p) const;
/**
* Get the height above sea of the lowest corner of the tile.
*/
int getZ() const;
/**
* Calculate the height at the given position. This is always equal to or
* higher than the no-argument version.
*/
float getZ(const MapTilePos& p) const;
/**
* Returns true iff this tile is flat.
*/
bool isFlat() const;
/**
* Get the slope of this tile.
*/
Slope getSlope() const;
/**
* Get the ID for this type of maptile.
* \todo Unused. What's this for again?
*/
virtual unsigned short type() const;
/**
* Inject a description of this tile into \p p.
*/
void inject(CL_OutputSource& os) const;
/**
* Extract a tile decsription from \p p and save it as this tile.
*/
void extract(CL_InputSource& i);
};
#endif /* ndef MAPTILE_H_INCLUDED */
See more files for this project here