Code Search for Developers
 
 
  

entityclient.h from FreePop at Krugle


Show entityclient.h syntax highlighted

/***************************************************************************
                           entityclient.h
                           -------------------
    begin                : Wed May 12 2004
    copyright            : (C) 2004 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 ENTITYCLIENT_H_INCLUDED
#define ENTITYCLIENT_H_INCLUDED

#include <identity.h>
#include <paintable.h>
#include <ClanLib/network.h>

class Rotation;
class WorldClient;
class WorldPos;

/**
 * An entity, client edition. This has the common network code.
 */
class EntityClient: public Paintable {
public:
    /**
     * Constructor.
     */
    EntityClient(const Identity& ident);
    
    /**
     * Destructor.
     */
    virtual ~EntityClient();

    /**
     * Get the entitys position.
     */
    virtual WorldPos getPos() const = 0;

    /**
     * Predicts what the entity will do, and changes its state accordingly.
     * The only one who knows for sure what will happen is the server, the
     * client just guesses. Defaults to doing nothing.
     * \param w The world.
     * \param d The delay since the last predict (ms).
     */
    virtual void predict(const WorldClient* w, unsigned int d);

    /**
     * Get an identifier to this Entity.
     */
    const Identity& getIdentity() const;

    /**
     * Receive complete status information.
     */
    virtual void onFullUpdate(WorldClient* w, CL_NetPacket& p) = 0;

    /**
     * Do something with a destroy message based on the reason given.
     * The default is to do nothing. This can be used to set up some kind of
     * "dying animation".
     */
    virtual void onDestroy(WorldClient* w, int r);

    /**
     * Receive a message of some sort. Defaults to a no-op.
     */
    virtual void onMessage(WorldClient* w, int m, CL_NetPacket& p);

    virtual int drawSortIndex(const WorldClient* w) const;

private:
    /**
     * A unique identifier for this entity.
     */
    Identity id;
};

#endif /* ndef ENTITYCLIENT_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

  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