Show slope.h syntax highlighted
/***************************************************************************
slope.h - description
-------------------
begin : Wed Aug 21 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 SLOPE_H_INCLUDED
#define SLOPE_H_INCLUDED
#include <boost/operators.hpp>
class Corner;
class MapTilePos;
class Rotation;
class CL_InputSource;
class CL_OutputSource;
/**
* Describes how a tile is sloped. Describes the slope of a tile
* by the relative heights of its corners.
*/
class Slope: public boost::multipliable2<Slope, Rotation> {
protected:
/**
* Raw slope data. See SLOPES for description of how this works.
*/
int s;
/**
* Construct from raw slope data.
* \see s
*/
Slope(int ss);
public:
/**
* Constructor. Initialises a flat slope.
*/
Slope();
/**
* Copy constructor.
*/
Slope(const Slope& copy);
/**
* Destructor.
*/
~Slope();
/**
* Copy operator.
*/
Slope& operator =(const Slope& copy);
/**
* Raise the corner \p c of the slope one step.
* \return The height change.
*/
int raiseCorner(const Corner& c);
/**
* Lower the corner \p c of the slope one step.
* \return The change in height.
*/
int lowerCorner(const Corner& c);
/**
* Get the height of the corner \p c.
* \return The position (0, 1, or sometimes 2) of the \p c.
*/
int getCornerPos(const Corner& c) const;
/**
* Calculate the Z height at \p p.
*/
float getZ(const MapTilePos& p) const;
/**
* Spins the slope.
*/
Slope& operator*=(const Rotation& r);
/**
* Return true iff this slope is completely flat.
*/
bool isFlat() const;
/**
* Return true iff this slope has valid state.
*/
bool isValid() const;
/**
* Get the raw slope data.
* \see s
*/
int getRaw() const;
/**
* Inject this classes current state into the packet.
*/
void inject(CL_OutputSource& os) const;
/**
* Extract slope info into this from \p p.
*/
void extract(CL_InputSource& is);
};
#endif /* ndef SLOPE_H_INCLUDED */
See more files for this project here