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

Last change on this file since 489 was 481, checked in by Sam Hocevar, 10 years ago

Fuck the history, I'm renaming all .hpp files to .h for my own sanity.

  • 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 *
5 *  This software was released into the Public Domain. As with most public
6 *  domain software, no warranty is made or implied by Crack dot Com or
7 *  Jonathan Clark.
8 */
9
10#ifndef EXTEND_HPP_
11#define EXTEND_HPP_
12
13#define NNET_HISTSIZE 10
14#define FLAG_JUST_HIT     1
15#define FLAG_JUST_BLOCKED 2
16#define FLOATING_FLAG     4
17#define KNOWN_FLAG        8
18
19
20#include "lisp/lisp.h"
21
22#include "macs.h"
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.