mirror of
https://github.com/dwsJason/xrick2gs.git
synced 2024-10-05 04:56:49 +00:00
114 lines
2.9 KiB
C
114 lines
2.9 KiB
C
/*
|
|
* xrick/include/ents.h
|
|
*
|
|
* Copyright (C) 1998-2002 BigOrno (bigorno@bigorno.net). All rights reserved.
|
|
*
|
|
* The use and distribution terms for this software are contained in the file
|
|
* named README, which can be found in the root of this distribution. By
|
|
* using this software in any fashion, you are agreeing to be bound by the
|
|
* terms of this license.
|
|
*
|
|
* You must not remove this notice, or any other, from this software.
|
|
*/
|
|
|
|
#ifndef _ENTS_H
|
|
#define _ENTS_H
|
|
|
|
#include "system.h"
|
|
#include "rects.h"
|
|
|
|
#define ENT_XRICK ent_ents[1]
|
|
|
|
#define ENT_NBR_ENTDATA 0x4a
|
|
#define ENT_NBR_SPRSEQ 0x88
|
|
#define ENT_NBR_MVSTEP 0x310
|
|
|
|
#define ENT_ENTSNUM 0x0c
|
|
|
|
/*
|
|
* flags for ent_ents[e].n ("yes" when set)
|
|
*
|
|
* ENT_LETHAL: is entity lethal?
|
|
*/
|
|
#define ENT_LETHAL 0x80
|
|
|
|
/*
|
|
* flags for ent_ents[e].flag ("yes" when set)
|
|
*
|
|
* ENT_FLG_ONCE: should the entity run once only?
|
|
* ENT_FLG_STOPRICK: does the entity stops rick (and goes to slot zero)?
|
|
* ENT_FLG_LETHALR: is entity lethal when restarting?
|
|
* ENT_FLG_LETHALI: is entity initially lethal?
|
|
* ENT_FLG_TRIGBOMB: can entity be triggered by a bomb?
|
|
* ENT_FLG_TRIGBULLET: can entity be triggered by a bullet?
|
|
* ENT_FLG_TRIGSTOP: can entity be triggered by rick stop?
|
|
* ENT_FLG_TRIGRICK: can entity be triggered by rick?
|
|
*/
|
|
#define ENT_FLG_ONCE 0x01
|
|
#define ENT_FLG_STOPRICK 0x02
|
|
#define ENT_FLG_LETHALR 0x04
|
|
#define ENT_FLG_LETHALI 0x08
|
|
#define ENT_FLG_TRIGBOMB 0x10
|
|
#define ENT_FLG_TRIGBULLET 0x20
|
|
#define ENT_FLG_TRIGSTOP 0x40
|
|
#define ENT_FLG_TRIGRICK 0x80
|
|
|
|
typedef struct {
|
|
U8 n; /* b00 */
|
|
/*U8 b01;*/ /* b01 in ASM code but never used */
|
|
S16 x; /* b02 - position */
|
|
S16 y; /* w04 - position */
|
|
U8 sprite; /* b08 - sprite number */
|
|
/*U16 w0C;*/ /* w0C in ASM code but never used */
|
|
U8 w; /* b0E - width */
|
|
U8 h; /* b10 - height */
|
|
U16 mark; /* w12 - number of the mark that created the entity */
|
|
U8 flags; /* b14 */
|
|
S16 trig_x; /* b16 - position of trigger box */
|
|
S16 trig_y; /* w18 - position of trigger box */
|
|
S16 xsave; /* b1C */
|
|
S16 ysave; /* w1E */
|
|
U16 sprbase; /* w20 */
|
|
U16 step_no_i; /* w22 */
|
|
U16 step_no; /* w24 */
|
|
S16 c1; /* b26 */
|
|
S16 c2; /* b28 */
|
|
U8 ylow; /* b2A */
|
|
S16 offsy; /* w2C */
|
|
U8 latency; /* b2E */
|
|
U8 prev_n; /* new */
|
|
S16 prev_x; /* new */
|
|
S16 prev_y; /* new */
|
|
U8 prev_s; /* new */
|
|
U8 front; /* new */
|
|
U8 trigsnd; /* new */
|
|
} ent_t;
|
|
|
|
typedef struct {
|
|
U8 w, h;
|
|
U16 spr, sni;
|
|
U8 trig_w, trig_h;
|
|
U8 snd;
|
|
} entdata_t;
|
|
|
|
typedef struct {
|
|
U8 count;
|
|
S8 dx, dy;
|
|
} mvstep_t;
|
|
|
|
extern ent_t ent_ents[ENT_ENTSNUM + 1];
|
|
extern entdata_t ent_entdata[ENT_NBR_ENTDATA];
|
|
extern rect_t *ent_rects;
|
|
extern U8 ent_sprseq[ENT_NBR_SPRSEQ];
|
|
extern mvstep_t ent_mvstep[ENT_NBR_MVSTEP];
|
|
|
|
extern void ent_reset(void);
|
|
extern void ent_actvis(U8, U8);
|
|
extern void ent_draw(void);
|
|
extern void ent_clprev(void);
|
|
extern void ent_action(void);
|
|
|
|
#endif
|
|
|
|
/* eof */
|