25
|
1 #include <stdio.h>
|
|
2 #include <stdlib.h>
|
|
3 #include <SDL.h>
|
|
4 #include "SDL_opengl.h"
|
|
5 #include "object.h"
|
|
6 #include "Character.h"
|
|
7 #include "Character_state.h"
|
|
8 #include "tokuten.h"
|
|
9 #include "collision.h"
|
|
10 //#include "atari.h"
|
|
11 #include "bom.h"
|
|
12 #include "count2.h"
|
|
13 #include "sound.h"
|
|
14 //#include "Enemy.h"
|
|
15 //#include "libps.h"
|
|
16 #include "sgoex.h"
|
|
17
|
|
18 extern SpriteTable sptable[DEFOBJ];
|
|
19
|
|
20 void
|
|
21 nocollision(SceneGraphPtr node, int screen_w, int screen_h,
|
|
22 SceneGraphPtr tree){}
|
|
23
|
|
24 CHARACTER * atari(CHARACTER *p)
|
|
25 {
|
|
26 int i1, h, w, ex, ey, charno;
|
|
27 int n;
|
|
28 ex = p->x;
|
|
29 ey = p->y;
|
|
30 charno = p->charano;
|
|
31 w = sptable[charno].w;
|
|
32 h = sptable[charno].h;
|
|
33 //i2 = playerno;
|
|
34
|
|
35
|
|
36 //自機やられ
|
|
37 #ifndef INVISIBLE_MODE
|
|
38 if ((ex < jiki.x + 128 / 2) && (ex + w > jiki.x + 128 / 2)
|
|
39 && (ey < jiki.y + 128 / 2) && (ey + h > jiki.y + 128 / 2)
|
|
40 && jiki.muteki == 0) {
|
|
41 //se_voice[0] = SsUtKeyOn(vab[JIKIOUT], 0, 0, 65, 0, 60, 60);
|
|
42 Bom(jiki.x + 16, jiki.y + 16);
|
|
43 jiki.bf = FALSE;
|
|
44 jiki.zanki--;
|
|
45 jiki.muteki = 120;
|
|
46
|
|
47 infg.stg = 0;
|
|
48 infg_level--;
|
|
49 if (infg_level < 0)
|
|
50 infg_level = 0;
|
|
51
|
|
52 return p;
|
|
53 }
|
|
54 #endif
|
|
55
|
|
56 if (p->tama == TRUE)
|
|
57 goto jumping;
|
|
58 for (i1 = 0; i1 < tama_lv1_end + 1; i1++) {
|
|
59
|
|
60 if ((tama_lv1[i1].x + 64 + 64 > ex)
|
|
61 && (ex + w > tama_lv1[i1].x + 16)
|
|
62 && (tama_lv1[i1].y + 128 > ey) && (tama_lv1[i1].y < ey + h)
|
|
63 && (tama_lv1[i1].r != -1)) {
|
|
64 tama_lv1[i1].r = -1;
|
|
65 p->vit -= TAMALV1P;
|
|
66 infg.stg++;
|
|
67 if (p->vit <= 0) {
|
|
68 infg.stg += 4;
|
|
69 Bom(p->x, p->y);
|
|
70 enemycount += (p->score *
|
|
71 ((infg.stg / 128) + infg_level + 1));
|
|
72 p->state = delete_chara;
|
|
73 p->collision = noaction;
|
|
74 p->f = FALSE;
|
|
75 return p;
|
|
76 }
|
|
77 }
|
|
78 if ((tama_lv1[i1].x + 64 > ex) && (ex + w > tama_lv1[i1].x)
|
|
79 && (tama_lv1[i1].y + 128 > ey) && (tama_lv1[i1].y < ey + h)
|
|
80 && (tama_lv1[i1].l != -1)) {
|
|
81 tama_lv1[i1].l = -1;
|
|
82 p->vit -= TAMALV1P;
|
|
83 infg.stg++;
|
|
84 if (p->vit <= 0) {
|
|
85 infg.stg += 4;
|
|
86 Bom(p->x, p->y);
|
|
87 enemycount += (p->score *
|
|
88 ((infg.stg / 128) + infg_level + 1));
|
|
89 p->state = delete_chara;
|
|
90 p->collision = noaction;
|
|
91 p->f = FALSE;
|
|
92 return p;
|
|
93 }
|
|
94 }
|
|
95 }
|
|
96
|
|
97 for (i1 = 0; i1 < tama_lv2_end + 1; i1++) {
|
|
98 if ((tama_lv2[i1].x + 128 + 64 > ex)
|
|
99 && (ex + w > tama_lv2[i1].x + 128)
|
|
100 && (tama_lv2[i1].y + 192 > ey) && (tama_lv2[i1].y < ey + h)
|
|
101 && (tama_lv2[i1].rr != -1)) {
|
|
102 tama_lv2[i1].rr = -1;
|
|
103 p->vit -= TAMALV2P;
|
|
104 infg.stg++;
|
|
105 if (p->vit <= 0) {
|
|
106 infg.stg += 4;
|
|
107 Bom(p->x, p->y);
|
|
108 enemycount += (p->score *
|
|
109 ((infg.stg / 128) + infg_level + 1));
|
|
110 p->state = delete_chara;
|
|
111 p->collision = noaction;
|
|
112 p->f = FALSE;
|
|
113 return p;
|
|
114 }
|
|
115 }
|
|
116
|
|
117 if ((tama_lv2[i1].x + 64 + 64 > ex)
|
|
118 && (ex + w > tama_lv2[i1].x + 16)
|
|
119 && (tama_lv2[i1].y - 32 + 192 > ey)
|
|
120 && (tama_lv2[i1].y - 32 < ey + h)
|
|
121 && (tama_lv2[i1].sr != -1)) {
|
|
122 tama_lv2[i1].sr = -1;
|
|
123 p->vit -= TAMALV2P;
|
|
124 infg.stg++;
|
|
125 if (p->vit <= 0) {
|
|
126 infg.stg += 4;
|
|
127 Bom(p->x, p->y);
|
|
128 enemycount += (p->score *
|
|
129 ((infg.stg / 128) + infg_level + 1));
|
|
130 p->state = delete_chara;
|
|
131 p->collision = noaction;
|
|
132 p->f = FALSE;
|
|
133 return p;
|
|
134 }
|
|
135 }
|
|
136 if ((tama_lv2[i1].x + 64 > ex) && (ex + w > tama_lv2[i1].x)
|
|
137 && (tama_lv2[i1].y - 32 + 192 > ey)
|
|
138 && (tama_lv2[i1].y - 32 < ey + h)
|
|
139 && (tama_lv2[i1].sl != -1)) {
|
|
140 tama_lv2[i1].sl = -1;
|
|
141 p->vit -= TAMALV2P;
|
|
142 infg.stg++;
|
|
143 if (p->vit <= 0) {
|
|
144 infg.stg += 4;
|
|
145 Bom(p->x, p->y);
|
|
146 enemycount += (p->score *
|
|
147 ((infg.stg / 128) + infg_level + 1));
|
|
148 p->state = delete_chara;
|
|
149 p->collision = noaction;
|
|
150 p->f = FALSE;
|
|
151 return p;
|
|
152 }
|
|
153 }
|
|
154 if ((tama_lv2[i1].x - 64 + 64 > ex)
|
|
155 && (ex + w > tama_lv2[i1].x - 64)
|
|
156 && (tama_lv2[i1].y + 192 > ey) && (tama_lv2[i1].y < ey + h)
|
|
157 && (tama_lv2[i1].ll != -1)) {
|
|
158 tama_lv2[i1].ll = -1;
|
|
159 p->vit -= TAMALV2P;
|
|
160 infg.stg++;
|
|
161 if (p->vit <= 0) {
|
|
162 infg.stg += 4;
|
|
163 Bom(p->x, p->y);
|
|
164 enemycount += (p->score *
|
|
165 ((infg.stg / 128) + infg_level + 1));
|
|
166 p->state = delete_chara;
|
|
167 p->collision = noaction;
|
|
168 p->f = FALSE;
|
|
169 return p;
|
|
170 }
|
|
171 }
|
|
172 }
|
|
173 if ((tlv3[0].r > 0) && (jiki.x < ex + w) && (jiki.x + 128 > ex)
|
|
174 && (jiki.y > ey + h)) {
|
|
175 p->vit -= TAMALV3P;
|
|
176 infg.stg++;
|
|
177 if (p->vit <= 0) {
|
|
178 infg.stg += 4;
|
|
179 Bom(p->x, p->y);
|
|
180 enemycount += (p->score *
|
|
181 ((infg.stg / 128) + infg_level + 1));
|
|
182 p->state = delete_chara;
|
|
183 p->collision = noaction;
|
|
184 p->f = FALSE;
|
|
185 return p;
|
|
186 }
|
|
187 }
|
|
188 jumping:
|
|
189 if ((tlv3[0].r > 0) && (jiki.x < ex + w) && (jiki.x + 128 > ex)
|
|
190 && (jiki.y + 128 > ey) && (jiki.y < ey + h)) {
|
|
191 p->vit -= TAMALV3P;
|
|
192 infg.stg++;
|
|
193 if (p->vit <= 0) {
|
|
194 infg.stg += 4;
|
|
195 Bom(p->x, p->y);
|
|
196 enemycount += (p->score *
|
|
197 ((infg.stg / 128) + infg_level + 1));
|
|
198 p->state = delete_chara;
|
|
199 p->collision = noaction;
|
|
200 p->f = FALSE;
|
|
201 return p;
|
|
202 }
|
|
203 }
|
|
204 /*laser lv1 */
|
|
205 for (i1 = 0; i1 < laser_lv1_end + 1; i1++) {
|
|
206 n = laser_lv1[i1].r * 128 / 4096;
|
|
207
|
|
208 if ((laser_lv1[i1].x + n > ex) && (ex + w > laser_lv1[i1].x)
|
|
209 && (laser_lv1[i1].y + n > ey) && (laser_lv1[i1].y < ey + h)
|
|
210 && (laser_lv1[i1].r != -1)) {
|
|
211 laser_lv1[i1].r = -1;
|
|
212 laser_lv1[i1].y = -1;
|
|
213 p->vit -= LASERLV1P;
|
|
214 infg.stg++;
|
|
215 if (p->vit <= 0) {
|
|
216 infg.stg += 4;
|
|
217 Bom(p->x, p->y);
|
|
218 enemycount += (p->score *
|
|
219 ((infg.stg / 128) + infg_level + 1));
|
|
220 p->state = delete_chara;
|
|
221 p->collision = noaction;
|
|
222 p->f = FALSE;
|
|
223 return p;
|
|
224 }
|
|
225 }
|
|
226 }
|
|
227 /*shield(laser lv2) */
|
|
228 if ((p->tama == TRUE) && (lg.stg > 0) &&
|
|
229 (laser_lv2[0].x + 128 > ex) && (ex + w > laser_lv2[0].x - 128)
|
|
230 && (laser_lv2[0].y + 128 > ey) && (laser_lv2[0].y - 128 < ey + h)
|
|
231 && (laser_lv2[0].r != 0)) {
|
|
232 p->vit -= LASERLV2P;
|
|
233 lg.stg -= 26;
|
|
234 infg.stg++;
|
|
235 if (p->vit <= 0) {
|
|
236 infg.stg += 4;
|
|
237 Bom(p->x, p->y);
|
|
238 enemycount += (p->score *
|
|
239 ((infg.stg / 128) + infg_level + 1));
|
|
240 p->state = delete_chara;
|
|
241 p->collision = noaction;
|
|
242 p->f = FALSE;
|
|
243 return p;
|
|
244 }
|
|
245 }
|
|
246 /*bomber(laser lv3) */
|
|
247 if (laser_lv3[0].r < 62) {
|
|
248 for (i1 = 1; i1 < 128; i1++) {
|
|
249 if ((laser_lv3[i1].x + 128 > ex) && (ex + w > laser_lv3[i1].x)
|
|
250 && (laser_lv3[i1].y + 128 > ey)
|
|
251 && (laser_lv3[i1].y < ey + h)
|
|
252 && (laser_lv3[i1].r > 0)) {
|
|
253 tama_lv2[i1].rr = -1;
|
|
254 p->vit -= LASERLV3P;
|
|
255 infg.stg++;
|
|
256 if (p->vit <= 0) {
|
|
257 infg.stg += 4;
|
|
258 Bom(p->x, p->y);
|
|
259 enemycount += (p->score *
|
|
260 ((infg.stg / 128) + infg_level + 1));
|
|
261 p->state = delete_chara;
|
|
262 p->collision = noaction;
|
|
263 p->f = FALSE;
|
|
264 return p;
|
|
265 }
|
|
266 }
|
|
267 }
|
|
268 }
|
|
269 return p;
|
|
270 }
|