This commit is contained in:
parent
abc8365365
commit
90194896f7
2 changed files with 649 additions and 0 deletions
161
source/thing/thing.h
Normal file
161
source/thing/thing.h
Normal file
|
@ -0,0 +1,161 @@
|
|||
/*=========================================================================
|
||||
|
||||
thing.h
|
||||
|
||||
Author: PKG
|
||||
Created:
|
||||
Project: Spongebob
|
||||
Purpose:
|
||||
|
||||
Copyright (c) 2001 Climax Development Ltd
|
||||
|
||||
===========================================================================*/
|
||||
|
||||
#ifndef __THING_THING_H__
|
||||
#define __THING_THING_H__
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Includes
|
||||
-------- */
|
||||
|
||||
#ifndef _GLOBAL_HEADER_
|
||||
#include "system\global.h"
|
||||
#endif
|
||||
|
||||
#ifndef __GAME_EVENT_H__
|
||||
#include "game\event.h"
|
||||
#endif
|
||||
|
||||
|
||||
/* Std Lib
|
||||
------- */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Tyepdefs && Defines
|
||||
------------------- */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Structure defintions
|
||||
-------------------- */
|
||||
|
||||
// Thing manager class
|
||||
class CThingManager
|
||||
{
|
||||
public:
|
||||
static void init();
|
||||
static void shutdown();
|
||||
|
||||
static void thinkAllThings(int _frames);
|
||||
static void renderAllThings();
|
||||
static void processEventAllThings(GAME_EVENT _event,class CThing *_sourceThing);
|
||||
|
||||
protected:
|
||||
static void addToThingList(class CThing *_this);
|
||||
static void removeFromThingList(CThing *_this);
|
||||
friend class CThing;
|
||||
|
||||
private:
|
||||
static class CThing *s_thingLists[];
|
||||
|
||||
};
|
||||
|
||||
|
||||
// Base thing class
|
||||
class CThing
|
||||
{
|
||||
public:
|
||||
typedef enum
|
||||
{
|
||||
TYPE_THING, // temp.. (pkg)
|
||||
TYPE_PICKUP,
|
||||
TYPE_PLAYER,
|
||||
TYPE_ENEMY,
|
||||
|
||||
MAX_TYPE,
|
||||
}
|
||||
TYPE;
|
||||
|
||||
CThing() {;}
|
||||
virtual ~CThing() {;}
|
||||
|
||||
virtual TYPE getThingType() {return TYPE_THING;} //=0; (pkg)
|
||||
|
||||
|
||||
virtual void init();
|
||||
virtual void shutdown();
|
||||
virtual void think(int _frames);
|
||||
virtual void render();
|
||||
|
||||
// Linkage
|
||||
void addChild(CThing *Child);
|
||||
void removeChild(CThing *Child);
|
||||
void removeAllChild();
|
||||
|
||||
|
||||
DVECTOR getPos() {return Pos;}
|
||||
|
||||
|
||||
virtual void processEvent(GAME_EVENT _event,CThing *_sourceThing);
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
// Linkage
|
||||
CThing *Parent,*Next;
|
||||
|
||||
// Pos
|
||||
DVECTOR Pos, PosDelta;
|
||||
|
||||
// Big linked list that contains all CThings ( possibly a temp measure PKG )
|
||||
// static CThing *s_thingList;
|
||||
public:
|
||||
class CThing *m_nextThing;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// -- Collision --
|
||||
public:
|
||||
DVECTOR getCollisionSize() {return m_collisionSize;}
|
||||
virtual int checkCollisionAgainst(CThing *_thisThing);
|
||||
void updateCollisionArea();
|
||||
virtual void collidedWith(CThing *_thisThing) {;} //=0; (pkg)
|
||||
protected:
|
||||
typedef struct
|
||||
{
|
||||
int x1,y1,x2,y2;
|
||||
}
|
||||
CRECT;
|
||||
|
||||
void setCollisionSize(int _w,int _h);
|
||||
void setCollisionCentreOffset(int _x,int _y) {m_collisionCentreOffset.vx=_x;m_collisionCentreOffset.vy=_y;}
|
||||
void setCollisionCentreOffset(DVECTOR xy) {m_collisionCentreOffset=xy;}
|
||||
int getCollisionRadius() {return m_collisionRadius;}
|
||||
CRECT getCollisionArea() {return m_collisionArea;}
|
||||
DVECTOR getCollisionCentre() {return m_collisionCentre;}
|
||||
private:
|
||||
DVECTOR m_collisionSize;
|
||||
DVECTOR m_collisionCentreOffset;
|
||||
int m_collisionRadius;
|
||||
CRECT m_collisionArea;
|
||||
DVECTOR m_collisionCentre;
|
||||
|
||||
};
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Globals
|
||||
------- */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Functions
|
||||
--------- */
|
||||
|
||||
/*---------------------------------------------------------------------- */
|
||||
|
||||
#endif /* __THING_THING_H__ */
|
||||
|
||||
/*===========================================================================
|
||||
end */
|
Loading…
Add table
Add a link
Reference in a new issue