home *** CD-ROM | disk | FTP | other *** search
- #ifndef EXTEND_HPP_
- #define EXTEND_HPP_
-
- #define NNET_HISTSIZE 10
- #define FLAG_JUST_HIT 1
- #define FLAG_JUST_BLOCKED 2
- #define FLOATING_FLAG 4
- #define KNOWN_FLAG 8
-
-
- #include "jmalloc.hpp"
- #include "macs.hpp"
- #include "morpher.hpp"
- #include "chars.hpp"
- #include "lisp.hpp"
-
-
- class view;
- class game_object;
- class light_source;
-
- class simple_object
- {
- public :
- schar Fade_dir;
- uchar Fade_count,Fade_max;
- uchar Flags,grav_on,targetable_on;
- long Xvel,Yvel,Xacel,Yacel;
- uchar Fx,Fy,Fxvel,Fyvel,Fxacel,Fyacel;
- uchar Aitype;
- ushort Aistate,Aistate_time;
- unsigned short Hp,Mp,Fmp;
- schar Frame_dir;
-
-
- uchar tobjs,tlights;
- game_object **objs,*link;
- light_source **lights;
-
- view *Controller;
- morph_char *mc;
- int total_vars();
- char *var_name(int x);
- int var_type(int x);
- void set_var(int x, ulong v);
- long get_var(int x);
-
- // leave these public, so I don't have monster code changes.
- simple_object();
- long x,y,
- last_x,last_y; // used for frame interpolation on fast machines
- schar direction,active;
- ushort otype;
- character_state state;
- short current_frame;
-
- int targetable() { return targetable_on; }
- int gravity() { return grav_on; }
- int floating() { return flags()&FLOATING_FLAG; }
-
- int keep_ai_info() { return 1; }
- uchar flags() { return Flags; }
- long xvel() { return Xvel; }
- long yvel() { return Yvel; }
- long xacel() { return Xacel; }
- long yacel() { return Yacel; }
-
- uchar fx() { return Fx; }
- uchar fy() { return Fy; }
- uchar fxvel() { return Fxvel; }
- uchar fyvel() { return Fyvel; }
- uchar fxacel() { return Fxacel; }
- uchar fyacel() { return Fyacel; }
-
- uchar sfx() { return Fx; } // x & y should always be positive
- uchar sfy() { return Fy; }
- uchar sfxvel() { if (Xvel>=0) return Fxvel; else return -Fxvel; }
- uchar sfyvel() { if (Yvel>=0) return Fyvel; else return -Fyvel; }
- uchar sfxacel() { if (Xacel>=0) return Fxacel; else return -Fxacel; }
- uchar sfyacel() { if (Yacel>=0) return Fyacel; else return -Fyacel; }
-
- uchar aitype() { return Aitype; }
- ushort aistate() { return Aistate; }
- ushort aistate_time() { return Aistate_time; }
- ushort hp() { return Hp; }
- ushort mp() { return Mp; }
- ushort fmp() { return Fmp; }
- schar fade_dir() { return Fade_dir; }
- schar frame_dir() { return Frame_dir; }
- uchar fade_count() { return Fade_count; }
- uchar fade_max() { return Fade_max; }
- uchar total_objects() { return tobjs; }
- uchar total_lights() { return tlights; }
-
- morph_char *morph_status() { return mc; }
- light_source *get_light(int x)
- { if (x>=tlights) { lbreak("bad x for light\n"); exit(0); } return lights[x]; }
- game_object *get_object(int x)
- { if (x>=tobjs) { lbreak("bad x for object\n"); exit(0); } return objs[x]; }
- view *controller() { return Controller; }
-
- void set_targetable(uchar x) { targetable_on=x; }
- void set_flags(uchar f) { Flags=f; }
- void set_xvel(long xv) { Xvel=xv; }
- void set_yvel(long yv) { Yvel=yv; }
- void set_xacel(long xa) { Xacel=xa; }
- void set_yacel(long ya) { Yacel=ya; }
- void set_fx(uchar x) { Fx=x; }
- void set_fy(uchar y) { Fy=y; }
- void set_fxvel(uchar xv) { Fxvel=abs(xv); }
- void set_fyvel(uchar yv) { Fyvel=abs(yv); }
- void set_fxacel(uchar xa) { Fxacel=abs(xa); }
- void set_fyacel(uchar ya) { Fyacel=abs(ya); }
- void set_aitype(uchar t) { Aitype=t; }
- void set_aistate(ushort s) { Aistate=s; }
- void set_aistate_time(ushort t) { Aistate_time=t; }
- void set_hp(ushort h) { Hp=h; }
- void set_mp(ushort m) { Mp=m; }
- void set_fmp(ushort m) { Fmp=m; }
-
-
-
- void set_fade_count(uchar f) { Fade_count=f; }
- void set_fade_max(uchar m) { Fade_max=m; }
- void set_fade_dir(schar d) { Fade_dir=d; }
-
- void set_frame_dir(schar d) { Frame_dir=d; }
- void add_light(light_source *ls);
- void add_object(game_object *o);
-
- void remove_object(game_object *o);
- void remove_light(light_source *ls);
- void set_morph_status(morph_char *mc);
- void set_controller(view *v) { Controller=v; }
-
- void set_gravity(int x) { grav_on=x; }
- void set_floating(int x)
- { if (x)
- set_flags(flags()|FLOATING_FLAG);
- else
- set_flags(flags()&(0xff-FLOATING_FLAG));
- }
-
- void clean_up();
- } ;
-
-
- extern simple_object default_simple;
-
- #endif
-
-
-
-
-
-
-
-