Code Search for Developers
 
 
  

maptile.h from FreePop at Krugle


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

FreePop

FreePop is a multi-platform tile-based game based on the great old game Populous 2 by Bullfrog Productions Ltd., but much improved.

Project homepage: http://sourceforge.net/projects/freepop
Programming language(s): C++
License: other

  client/
    Makefile.am
    client.cpp
    client.h
    clientmisc.cpp
    clientmisc.h
    clientstate.cpp
    clientstate.h
    connectstate.cpp
    connectstate.h
    cropsclient.cpp
    cropsclient.h
    entityclient.cpp
    entityclient.h
    entityclientfactory.cpp
    entityclientfactory.h
    firecolumnclient.cpp
    firecolumnclient.h
    gamestate.cpp
    gamestate.h
    loadstate.cpp
    loadstate.h
    mapclient.cpp
    mapclient.h
    maptileclient.cpp
    maptileclient.h
    messagebox.cpp
    messagebox.h
    oversprite.cpp
    oversprite.h
    paintable.cpp
    paintable.h
    pausefader.cpp
    pausefader.h
    peepclient.cpp
    peepclient.h
    peepmagnetclient.cpp
    peepmagnetclient.h
    playerclient.cpp
    playerclient.h
    playeroptionsdialog.cpp
    playeroptionsdialog.h
    rockclient.cpp
    rockclient.h
    swampclient.cpp
    swampclient.h
    townclient.cpp
    townclient.h
    treeclient.cpp
    treeclient.h
    worldclient.cpp
    worldclient.h
  server/
    Makefile.am
    contagion.cpp
    contagion.h
  Makefile.am
  common.cpp
  common.h
  corner.cpp
  corner.h
  crops.cpp
  crops.h
  entity.cpp
  entity.h
  entityfactory.cpp
  entityfactory.h
  firecolumn.cpp
  firecolumn.h
  gridmap.h
  identity.cpp
  identity.h
  map.cpp
  map.h
  mappos.cpp
  mappos.h
  maptile.cpp
  maptile.h
  maptilepos.cpp
  maptilepos.h
  misc.h
  peep.cpp
  peep.h
  peepmagnet.cpp
  peepmagnet.h
  player.cpp
  player.h
  rock.cpp
  rock.h
  rotation.cpp
  rotation.h
  rules.cpp
  rules.h
  slope.cpp
  slope.h
  swamp.cpp
  swamp.h
  tempo.cpp
  tempo.h
  town.cpp
  town.h
  tree.cpp
  tree.h
  worldpos.cpp
  worldpos.h