00001
#ifndef DEF_OBJECTS_COMMON_H
00002
#define DEF_OBJECTS_COMMON_H 1
00003
00004
00005
00006
#define OTYPE_DENSE_R 0x00000001
00007
#define OTYPE_DENSE_L 0x00000002
00008
#define OTYPE_DENSE_U 0x00000004
00009
#define OTYPE_DENSE_D 0x00000008
00010
#define OTYPE_DENSE 0x0000000F
00011
#define OTYPE_COMMON 0x00000010
00012
#define OTYPE_TOUCH 0x00000020
00013
#define OTYPE_ENTER 0x00000040
00014
#define OTYPE_CHARACTER 0x00000080
00015
#define OTYPE_PLAYER 0x00000100
00016
#define OTYPE_MONSTER 0x00000200
00017
#define OTYPE_ITEM 0x00000400
00018
#define OTYPE_PROJ 0x00000800
00019
00020
00021
00022
#define ESTATE_BUSY 0x00001000
00023
00024
#define ESTATE_ABORT 0x00002000
00025
00026
#define ESTATE_RUN 0x00004000
00027
00028
#define ESTATE_ANIM 0x00008000
00029
00030
00031
#define STATE_ATTACK 0x10000000
00032
00038 class Object {
00039
public:
00040
Object(Sint16 xpos=0, Sint16 ypos=0,
const ParameterMap& param=ParameterMap());
00041
virtual ~
Object();
00042
static ParameterMap default_parameters;
00046
bool setPos(Sint16 xcord,Sint16 ycord);
00049 SDL_Rect
getCenter()
const {
00050 SDL_Rect tmprect;
00051 tmprect.x=
pos.x+Uint16(
pos.w/2);
00052 tmprect.y=
pos.y+Uint16(
pos.h/2);
00053 tmprect.w=0;
00054 tmprect.h=0;
00055
return tmprect;
00056 }
00062
bool isIn(
const SDL_Rect& rect,
bool touch=
false)
const;
00063 SDL_Rect* getPos() {
00064
return &pos;
00065 }
00066 SDL_Rect getDrawPos() const;
00067 const
Frame getFrame() const;
00069 Uint16 getType()
const {
00070
return otype;
00071 }
00072
void setType(Uint16 newtype) {
00073 otype|=newtype;
00074 }
00075
void unsetType(Uint16 oldtype) {
00076 otype&=~oldtype;
00077 }
00078
void switchType(Uint16 newtype) {
00079 otype^=newtype;
00080 }
00082 string getName() {
00083
return name;
00084 }
00086
00087
00088
bool updateAnim(Uint16 dt);
00093
bool setAnim(EmptyAnimationPtr anim,
bool start=
false);
00095
virtual void resetAnimState();
00096
bool isRunning() const;
00098
00099
00100 void mark_delete() {
00101 delete_flag=
true;
00102 }
00103
bool isDeleted() {
00104
return delete_flag;
00105 }
00106
virtual void destroy() {
00107
delete this;
00108 }
00110
00111 EmptyAnimationPtr
loadAnimation(string anim_name,
00112
double scale_factor=1,
00113 BasePointType abp_type=BP_MD,
00114 Uint16 aanimation_type=ATYPE_LOOP,
00115
double afps=0,
00116 AllignType aallign_type=AT_MD);
00118 EmptyAnimationPtr
loadAnimation(
const Image& abase_image,
00119 Uint16 aframes=1,
00120 BasePointType abp_type=BP_MD,
00121 Uint16 aanimation_type=ATYPE_LOOP,
00122
double afps=0,
00123 Uint16 astart_pos=0,
00124 AllignType aallign_type=AT_MD);
00126 EmptyAnimationPtr
loadAnimation(
const ParameterMap& param=ParameterMap());
00127
00129
00130
00131
00132
void clearEvents();
00135
virtual void setEvent(
Event* ev);
00139 Uint16
updateEvents(Uint16 dt);
00141
void cancelEvent();
00143
void stopEvent();
00145
00147
bool getState(Uint32 cstate)
const {
00148
return (state&cstate);
00149 }
00150
void setState(Uint32 cstate) {
00151 state|=cstate;
00152 }
00153
void switchState(Uint32 cstate) {
00154 state^=cstate;
00155 }
00156
void unsetState(Uint32 cstate) {
00157 state&=~cstate;
00158 }
00160
00162
00163
00164 virtual bool act(
Object*) {
return false; }
00167 virtual void touch(
Object*) { }
00170 virtual void enter(
Object*) { }
00173 virtual void untouch(
Object*) { }
00176 virtual void leave(
Object*) { }
00179 virtual void idle(Uint16) { }
00181
bool operator<(
const Object& obj)
const;
00182 Uint32 onum;
00183
protected:
00184 ParameterMap parameters;
00185 Uint32 state;
00186
Event* event;
00189 SDL_Rect
pos;
00190
00191 Uint16 otype;
00192
00193 string name;
00194
00195
bool delete_flag;
00196 EmptyAnimationPtr anim_orig;
00197 EmptyAnimationPtr animation;
00198 };
00199
00205 class Item :
public Object {
00206
public:
00207
Item(Sint16 xpos=0, Sint16 ypos=0,
const ParameterMap& param=ParameterMap());
00208
virtual ~
Item();
00209
static ParameterMap default_parameters;
00210 virtual bool act(
Object*) {
return false; }
00212 void setOwner(
Player* plr) {
00213 owner=plr;
00214 }
00215
protected:
00216
Player* owner;
00217 };
00218
00222 class Background :
public Object {
00223
public:
00224
Background(
const ParameterMap& param=ParameterMap());
00225
virtual ~
Background();
00226
static ParameterMap default_parameters;
00227 };
00228
00229
#endif