comparison collision.c @ 25:aa37f220b7a8

add new files, not working.
author koba <koba@cr.ie.u-ryukyu.ac.jp>
date Wed, 24 Nov 2010 19:24:43 +0900
parents
children
comparison
equal deleted inserted replaced
24:a131729d6e4d 25:aa37f220b7a8
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 }