Unuk/src/libUnuk/Entity.h

47 lines
1.0 KiB
C++

#ifndef _ENTITY_H_
#define _ENTITY_H_
#include "Geometry.h"
#include "EntityType.h"
#include "Static.h"
class GameWorld;
/*
* Entity is static because we will mainly be handling
* pointers (that can be copied around) but we want
* all entities to be initiaized by the gameworld.
*/
class Entity : private Static {
public:
Entity(GameWorld* const gameWorld);
virtual ~Entity(void);
void Prepare(float dt);
void Render(void) const;
void PostRender(void);
bool Initialize(void);
void Shutdown(void);
bool CanBeRemoved(void) const;
void Destroy(void);
virtual Vector2 GetPosition(void) const = 0;
//virtual Vector2 GetVelocity() const = 0;
virtual void SetPosition(const Vector2& position) = 0;
virtual EntityType GetType(void) const = 0;
private:
virtual void OnPrepare(float dt) = 0;
virtual void OnRender(void) const = 0;
virtual void OnPostRender(void) = 0;
virtual bool OnInitiaize(void) = 0;
virtual void OnShutdown(void) = 0;
bool m_canBeRemoved;
GameWorld* m_world;
};
#endif