source: abuse/trunk/src/include/extend.hpp @ 17

Last change on this file since 17 was 17, checked in by Sam Hocevar, 17 years ago
  • absolute shitloads of 64 bit fixes.
File size: 4.8 KB
RevLine 
[2]1#ifndef EXTEND_HPP_
2#define EXTEND_HPP_
3
4#define NNET_HISTSIZE 10
5#define FLAG_JUST_HIT     1
6#define FLAG_JUST_BLOCKED 2
7#define FLOATING_FLAG     4
8#define KNOWN_FLAG        8
9
10
11#include "jmalloc.hpp"
12#include "macs.hpp"
13#include "morpher.hpp"
14#include "chars.hpp"
15#include "lisp.hpp"
16
17
18class view;
19class game_object;
20class light_source;
21
22class simple_object
23{
24  public :
[17]25  int8_t Fade_dir;
26  uint8_t Fade_count,Fade_max;
27  uint8_t Flags,grav_on,targetable_on;
[16]28  int32_t Xvel,Yvel,Xacel,Yacel;
[17]29  uint8_t Fx,Fy,Fxvel,Fyvel,Fxacel,Fyacel;
30  uint8_t Aitype;
31  uint16_t Aistate,Aistate_time;
32  uint16_t Hp,Mp,Fmp;
33  int8_t Frame_dir;       
[2]34
35
[17]36  uint8_t tobjs,tlights;
[2]37  game_object **objs,*link;
38  light_source **lights;
39
40  view *Controller;
41  morph_char *mc;
42  int total_vars();
43  char *var_name(int x);
44  int   var_type(int x);
[16]45  void set_var(int x, uint32_t v);
46  int32_t get_var(int x);
[2]47
48  // leave these public, so I don't have monster code changes.
49  simple_object();
[16]50  int32_t x,y,
[2]51       last_x,last_y;              // used for frame interpolation on fast machines
[17]52  int8_t direction,active;
53  uint16_t otype;
[2]54  character_state state;
55  short current_frame;
56
57  int targetable()           { return targetable_on; }
58  int gravity()              { return grav_on; }
59  int floating()             { return flags()&FLOATING_FLAG; }
60
61  int keep_ai_info()         { return 1; }
[17]62  uint8_t flags()            { return Flags; }
[16]63  int32_t xvel()             { return Xvel; }
64  int32_t yvel()             { return Yvel; }
65  int32_t xacel()            { return Xacel; }
66  int32_t yacel()            { return Yacel; }
[2]67
[17]68  uint8_t fx()               { return Fx; }
69  uint8_t fy()               { return Fy; }
70  uint8_t fxvel()            { return Fxvel; }
71  uint8_t fyvel()            { return Fyvel; }
72  uint8_t fxacel()           { return Fxacel; }
73  uint8_t fyacel()           { return Fyacel; }
[2]74
[17]75  uint8_t sfx()              { return Fx; }  // x & y should always be positive
76  uint8_t sfy()              { return Fy; }
77  uint8_t sfxvel()           { if (Xvel>=0) return Fxvel; else return -Fxvel; }
78  uint8_t sfyvel()           { if (Yvel>=0) return Fyvel; else return -Fyvel; }
79  uint8_t sfxacel()          { if (Xacel>=0) return Fxacel; else return -Fxacel; }
80  uint8_t sfyacel()          { if (Yacel>=0) return Fyacel; else return -Fyacel; }
[2]81
[17]82  uint8_t aitype()           { return Aitype; }
83  uint16_t aistate()         { return Aistate; }
84  uint16_t aistate_time()    { return Aistate_time; }
85  uint16_t hp()              { return Hp;         }
86  uint16_t mp()              { return Mp;         }
87  uint16_t fmp()             { return Fmp;        }
88  int8_t fade_dir()          { return Fade_dir;   }
89  int8_t frame_dir()         { return Frame_dir;  }
90  uint8_t fade_count()       { return Fade_count; }
91  uint8_t fade_max()         { return Fade_max;   }
92  uint8_t total_objects()    { return tobjs;      }
93  uint8_t total_lights()     { return tlights;    }
[2]94
95  morph_char *morph_status()     { return mc; }
96  light_source *get_light(int x)     
97  { if (x>=tlights) { lbreak("bad x for light\n"); exit(0); } return lights[x]; }
98  game_object *get_object(int x)   
99  { if (x>=tobjs) { lbreak("bad x for object\n"); exit(0); } return objs[x]; }
100  view *controller()             { return Controller; }
101
[17]102  void set_targetable(uint8_t x)  { targetable_on=x; }
103  void set_flags(uint8_t f)       { Flags=f; }
[16]104  void set_xvel(int32_t xv)       { Xvel=xv; }
105  void set_yvel(int32_t yv)       { Yvel=yv; }
106  void set_xacel(int32_t xa)      { Xacel=xa; }
107  void set_yacel(int32_t ya)      { Yacel=ya; }
[17]108  void set_fx(uint8_t x)          { Fx=x; }
109  void set_fy(uint8_t y)          { Fy=y; }
110  void set_fxvel(uint8_t xv)      { Fxvel=abs(xv); }
111  void set_fyvel(uint8_t yv)      { Fyvel=abs(yv); }
112  void set_fxacel(uint8_t xa)     { Fxacel=abs(xa); }
113  void set_fyacel(uint8_t ya)     { Fyacel=abs(ya); }
114  void set_aitype(uint8_t t)      { Aitype=t; }
115  void set_aistate(uint16_t s)      { Aistate=s; }
116  void set_aistate_time(uint16_t t) { Aistate_time=t; }
117  void set_hp(uint16_t h)           { Hp=h; }
118  void set_mp(uint16_t m)           { Mp=m; }
119  void set_fmp(uint16_t m)          { Fmp=m; }
[2]120
121
122
[17]123  void set_fade_count(uint8_t f)        { Fade_count=f; }
124  void set_fade_max(uint8_t m)          { Fade_max=m;  }
125  void set_fade_dir(int8_t d)            { Fade_dir=d; }
[2]126
[17]127  void set_frame_dir(int8_t d)           { Frame_dir=d; }
[2]128  void add_light(light_source *ls);
129  void add_object(game_object *o);
130
131  void remove_object(game_object *o);
132  void remove_light(light_source *ls);
133  void set_morph_status(morph_char *mc);
134  void set_controller(view *v)          { Controller=v; }
135
136  void set_gravity(int x)               { grav_on=x; }
137  void set_floating(int x)
138  { if (x)
139      set_flags(flags()|FLOATING_FLAG);
140    else
141      set_flags(flags()&(0xff-FLOATING_FLAG));
142  }
143
144  void clean_up();
145} ;
146
147
148extern simple_object default_simple;
149
150#endif
151
152
153
154
155
156
157
Note: See TracBrowser for help on using the repository browser.