1 /* xsoldier, a shoot 'em up game with "not shooting" bonus
2  * Copyright (C) 1997 Yuusuke HASHIMOTO <s945750@educ.info.kanagawa-u.ac.jp>
3  * Copyright (C) 2002 Oohara Yuuma  <oohara@libra.interq.or.jp>
4  *
5  * This is a copyleft program.  See the file LICENSE for details.
6  */
7 /* $Id: xsoldier.h,v 1.12 2009/11/08 05:47:15 oohara Exp $ */
8 
9 /* HAVE_RAND */
10 #include <config.h>
11 
12 #if !defined _XSOLDIER_H_
13 #define _XSOLDIER_H_
14 
15 #include <stdio.h>
16 #include "image.h"
17 /*
18 #include <X11/Xlib.h>
19 #include <X11/Xutil.h>
20 */
21 
22 #if ! defined(_XtIntrinsic_h) && ! defined(PIXEL_ALREADY_TYPEDEFED)
23 typedef unsigned long Pixel;
24 #define PIXEL_ALREADY_TYPEDEFED
25 #endif
26 
27 #ifndef HAVE_RAND
28 # define srand(x) srand48((long)x)
29 # define rand() lrand48()
30 #endif
31 
32 #ifndef WAIT
33 #define WAIT 35000
34 #endif /* WAIT */
35 
36 #define PIXMAP DATADIR "/xsoldier/"
37 #define SCORE LOCALSTATEDIR "/games/"
38 #define SCOREFILE "xsoldier.scores"
39 
40 #define MaxStage 8
41 #define ShotTiming 100
42 #define MaxLevel 80
43 
44 #define FIRST1UP 200000
45 #define EVERY1UP 200000
46 
47 /* attribute mask */
48 #define MPlayer (1L<<0)
49 #define MPShot  (1L<<1)
50 #define MEnemy  (1L<<2)
51 #define MEShot  (1L<<3)
52 #define MItem   (1L<<4)
53 
54 #ifndef True
55 #define True 1
56 #endif /* True */
57 #ifndef False
58 #define False 0
59 #endif /* FALSE */
60 
61 /* death flag */
62 typedef enum {NoneDel,NullDel,ZakoDel,BossDel} DelAtt;
63 
64 /* basic data of object */
65 typedef struct
66 {
67     int used;
68 
69     int hitAtt;
70     int hitMask;
71     int Width,Height;
72     int HarfW,HarfH;
73     /* don't modify above */
74 
75   /* shoot if shotTime >= ShotTiming */
76     int startTime;
77     int shotTime;
78 
79   int kill;
80     int HP;
81     int Attack;
82     int Point;
83     DelAtt EnemyAtt;
84 
85     int X,Y;
86     int oldX,oldY;
87     int inertX,inertY;
88     int Angle;
89     int Speed;
90     int Cnt[16];
91 
92     int image;
93   int showDamegeTime;
94   int notShootingTime;
95   int shouldAct;
96 } ObjData;
97 
98 /* graphic data of object */
99 typedef struct
100 {
101     Image **image;
102 
103     int Width,Height;
104     int HarfW,HarfH;
105 } GrpData;
106 
107 /* prototype of object data */
108 typedef struct
109 {
110     ObjData Data;
111     GrpData Grp;
112 
113     DelAtt (*Action)(ObjData *my);
114     DelAtt (*Hit)(ObjData *my, ObjData *your);
115     void (*Realize)(ObjData *my, GrpData *grp);
116 } CharObj;
117 
118 /* table of objects */
119 typedef struct
120 {
121     CharObj **player;
122     CharObj **enemy;
123 
124     CharObj New;
125 
126     int PlayerMax;
127     int PlayerNum;
128     int EnemyMax;
129     int EnemyNum;
130 
131   /* frequently used objects */
132     CharObj EnemyShot;
133     CharObj Bomb;
134     CharObj LargeBomb;
135 
136     int Level;
137     int Stage;
138     int Loop;
139     int Appear;
140 
141     int StageEnemy;
142     int StageShotDown;
143     int ZakoApp;
144     int BossApp;
145     int BossKill;
146 
147   int BossTime;
148   int flag_maxlevel;
149   int start_power;
150   int showShootDown;
151   int flag_nopausemessage;
152   int program_should_quit;
153 } CharManage;
154 /* this is global because we have only one table */
155 
156 typedef struct
157 {
158     char name[16];
159     int score;
160     int stage;
161     int loop;
162 } Record;
163 
164 typedef struct
165 {
166     Record Rec[11];
167     int Ships;
168     int Percent;
169     int Next;
170 } PlayerData;
171 
172 #endif
173