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