source: abuse/trunk/src/extend.cpp @ 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.

File size: 2.9 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#include "config.h"
11
12#include "extend.h"
13#include "view.h"
14#include "objects.h"
15#include "lisp.h"
16
17/*
18
19
20
21  Simple object             (power ups, non-moving objects)
22    int32_t x,y;
23    int8_t direction;
24    uint16_t otype,state
25    uint16_t current_frame;
26    extension *
27
28
29  Moving object             (simple lisp controlled characters)
30     uint8_t flags;
31     int32_t xvel,yvel,xacel,yacel;
32     uint8_t fx,fy,fxvel,fyvel,fxacel,fyacel,aitype;
33     uint16_t aistate,aistate_time;
34     uint16_t hp,mp,
35     extension *
36
37
38  Complex objects          (can controll lights, other characters, and have a neural net ai)
39    uint8_t tobjs,tlights;
40    object_list *
41    light_list *
42    nnet_info *
43    int8_t fade_dir, frame_dir;
44    uint8_t fade_count,fade_max;
45    morph_char *morph_status;
46
47
48*/
49
50void simple_object::add_light(light_source *ls)
51{
52  if (!ls) return ;
53  ls->known=1;
54  for (int i=0;i<tlights;i++) if (lights[i]==ls) return;
55  tlights++;
56  lights=(light_source **)realloc(lights,sizeof(light_source *)*tlights);
57  lights[tlights-1]=ls;
58}
59
60void simple_object::add_object(game_object *o)
61{
62  if (!o) return ;
63  for (int i=0;i<tobjs;i++) if (objs[i]==o) return;
64  o->set_flags(o->flags()|KNOWN_FLAG);
65  if(_team != -1)
66    o->set_team(_team);
67  if(_tint != -1)
68    o->set_tint(_tint);
69  tobjs++;
70  objs=(game_object **)realloc(objs,sizeof(game_object *)*tobjs);
71  objs[tobjs-1]=o;
72}
73
74
75void simple_object::remove_light(light_source *ls)
76{
77  for (int i=0;i<tlights;i++)
78  {
79    if (lights[i]==ls)
80    {
81      tlights--;
82      for (int j=i;j<tlights;j++)     // don't even think about it :)
83        lights[j]=lights[j+1];
84      lights=(light_source **)realloc(lights,sizeof(light_source *)*tlights);
85      return ;
86    }
87  }
88}
89
90void simple_object::remove_object(game_object *o)
91{
92  for (int i=0;i<tobjs;i++)
93  {
94    if (objs[i]==o)
95    {
96      tobjs--;
97      for (int j=i;j<tobjs;j++)     // don't even think about it :)
98        objs[j]=objs[j+1];
99      objs=(game_object **)realloc(objs,sizeof(game_object *)*tobjs);
100      return ;
101    }
102  }
103}
104
105
106simple_object::simple_object()
107{
108
109  x=y=0;
110  direction=1;
111  otype=0;
112  state=stopped;
113  current_frame=0;
114
115  Fade_dir=0;
116  Fade_count=0;
117  Fade_max=16;
118
119
120  tobjs=tlights=0;
121  objs=NULL;
122  lights=NULL;
123  Frame_dir=1;
124  mc=NULL;
125  Controller=NULL;
126
127  Flags=0;
128  Xvel=Yvel=Xacel=Yacel=0;
129  Fx=Fy=Fxvel=Fyvel=Fxacel=Fyacel=Aitype=0;
130  Aistate=Aistate_time=0;
131  Hp=Mp=Fmp=0;
132  _tint = -1;
133  _team = -1;
134  grav_on=1;
135  targetable_on=1;
136}
137
138
139
140void simple_object::set_morph_status(morph_char *Mc)
141{
142  mc=Mc;
143}
144
145void simple_object::clean_up()
146{
147  if (tlights) free(lights);
148  if (tobjs)   free(objs);
149  if (Controller)
150    Controller->focus=NULL;
151}
152
153
154simple_object default_simple;
155
156
Note: See TracBrowser for help on using the repository browser.