source: abuse/trunk/src/extend.h @ 682

Last change on this file since 682 was 555, checked in by Sam Hocevar, 8 years ago

ps3: make everything compile on the PS3. Of course, nothing links yet
because so much support is missing.

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