Mercurial > hg > Members > koba > t_dandy
comparison state_task.cc @ 19:00c3272a801f
fix.
author | koba <koba@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 26 Dec 2010 18:57:08 +0900 |
parents | c330ded6d728 |
children | 5f1abbe03b9a |
comparison
equal
deleted
inserted
replaced
18:c330ded6d728 | 19:00c3272a801f |
---|---|
8 #include "tokuten.h" | 8 #include "tokuten.h" |
9 #include "collision.h" | 9 #include "collision.h" |
10 #include "bom.h" | 10 #include "bom.h" |
11 #include "count2.h" | 11 #include "count2.h" |
12 #include "sgoex.h" | 12 #include "sgoex.h" |
13 #include "sankaku.h" | |
14 #include "tama.h" | |
13 #include "TaskManager.h" | 15 #include "TaskManager.h" |
14 #include "Func.h" | 16 #include "Func.h" |
15 #include "property.h" | 17 #include "property.h" |
16 #include "state_task.h" | 18 #include "state_task.h" |
17 | 19 |
20 extern SpriteTable sptable[DEFOBJ]; | |
21 extern TaskManager *tmanager; | |
22 | |
23 CHARACTER *kyeenemyno; | |
24 CHARACTER *tekino0; | |
25 CHARACTER *enemy_part1; | |
26 CHARACTER *enemy_part2; | |
27 CHARACTER *enemy_part3; | |
28 CHARACTER *enemy_part4; | |
29 CHARACTER *enemy_part5; | |
30 | |
31 //int tekino0; | |
32 int rinkx; | |
33 int rinky; | |
34 int rinkf1 = 0, rinkf2 = 0; | |
35 CHARACTER *asteroiddt[200]; | |
36 int asteroidi = 0; | |
37 int enemyfaste = 0; | |
38 int fastebos = 0; | |
39 | |
40 State state_list[LIST_NUM]; | |
41 | |
42 int | |
43 GetStateNum(int task_num) | |
44 { | |
45 int num = task_num % LIST_NUM; | |
46 | |
47 return num; | |
48 } | |
49 | |
18 void | 50 void |
51 SetTaskState(int task_num, CHARACTER *(state)(CHARACTER *chara)) | |
52 { | |
53 int num = GetStateNum(task_num); | |
54 | |
55 state_list[num] = state; | |
56 } | |
57 | |
58 void | |
59 initStateList() | |
60 { | |
61 SetTaskState(DELETE_CHARA, delete_chara); | |
62 SetTaskState(STATE0, chara_state0); | |
63 SetTaskState(STATE1, chara_state1); | |
64 SetTaskState(STATE2, chara_state2); | |
65 // SetTaskState(STATE3, chara_state3); | |
66 SetTaskState(STATE4, chara_state4); | |
67 SetTaskState(STATE5, chara_state5); | |
68 SetTaskState(STATE6, chara_state6); | |
69 #if 0 | |
70 SetTaskState(STATE7, chara_state7); | |
71 SetTaskState(STATE8, chara_state8); | |
72 SetTaskState(STATE9, chara_state9); | |
73 SetTaskState(STATE10, chara_state10); | |
74 SetTaskState(STATE11, chara_state11); | |
75 SetTaskState(STATE12, chara_state12); | |
76 SetTaskState(STATE13, chara_state13); | |
77 SetTaskState(STATE20, chara_state20); | |
78 SetTaskState(STATE21, chara_state21); | |
79 SetTaskState(STATE22, chara_state22); | |
80 SetTaskState(STATE23, chara_state23); | |
81 SetTaskState(STATE24, chara_state24); | |
82 SetTaskState(STATE25, chara_state25); | |
83 SetTaskState(STATE26, chara_state26); | |
84 SetTaskState(STATE27, chara_state27); | |
85 SetTaskState(STATE28, chara_state28); | |
86 SetTaskState(STATE29, chara_state29); | |
87 SetTaskState(STATE30, chara_state30); | |
88 SetTaskState(STATE31, chara_state31); | |
89 SetTaskState(STATE32, chara_state32); | |
90 SetTaskState(STATE33, chara_state33); | |
91 SetTaskState(STATE34, chara_state34); | |
92 SetTaskState(STATE35, chara_state35); | |
93 SetTaskState(STATE40, chara_state40); | |
94 SetTaskState(STATE41, chara_state41); | |
95 SetTaskState(STATE400, chara_state400); | |
96 SetTaskState(STATE401, chara_state401); | |
97 SetTaskState(STATE402, chara_state402); | |
98 SetTaskState(STATE410, chara_state410); | |
99 SetTaskState(STATE411, chara_state411); | |
100 SetTaskState(STATE500, chara_state500); | |
101 SetTaskState(STATE501, chara_state501); | |
102 SetTaskState(STATE600, chara_state600); | |
103 SetTaskState(STATE601, chara_state601); | |
104 SetTaskState(STATE602, chara_state602); | |
105 #endif | |
106 } | |
107 | |
108 void | |
109 updateState(SchedTask *s, void *chara, void *arg) | |
110 { | |
111 CHARACTER *p = (CHARACTER*)chara; | |
112 | |
113 int num = GetStateNum(p->task); | |
114 p=state_list[num](p); | |
115 } | |
116 | |
117 CHARACTER* | |
19 SimpleStateTask(CHARACTER *p) | 118 SimpleStateTask(CHARACTER *p) |
20 { | 119 { |
21 HTaskPtr state_task = tmanager->create_task(SIMPLE_STATE); | 120 int task_num = p->task; |
121 HTaskPtr state_task = tmanager->create_task(task_num); | |
22 | 122 |
23 state_task->add_inData(p, sizeof(CHARACTER)); | 123 state_task->add_inData(p, sizeof(CHARACTER)); |
24 state_task->add_outData(p, sizeof(CHARACTER)); | 124 state_task->add_outData(p, sizeof(CHARACTER)); |
125 state_task->set_post(updateState, (void*)p, NULL); | |
25 | 126 |
26 state_task->set_cpu(SPE_ANY); | 127 state_task->set_cpu(SPE_ANY); |
27 state_task->spawn(); | 128 state_task->spawn(); |
129 | |
130 return p; | |
131 } | |
132 | |
133 CHARACTER* | |
134 withJikiTask(CHARACTER *p) | |
135 { | |
136 int task_num = p->task; | |
137 HTaskPtr state_task = tmanager->create_task(task_num); | |
138 | |
139 state_task->add_inData(p, sizeof(CHARACTER)); | |
140 state_task->add_inData(&jiki, sizeof(player)); | |
141 state_task->add_outData(p, sizeof(CHARACTER)); | |
142 state_task->set_post(updateState, (void*)p, NULL); | |
143 | |
144 state_task->set_cpu(SPE_ANY); | |
145 state_task->spawn(); | |
146 | |
147 return p; | |
148 } | |
149 | |
150 CHARACTER* | |
151 noaction(CHARACTER *p) | |
152 { | |
153 p->state = noaction; | |
154 return p; | |
155 } | |
156 | |
157 CHARACTER * | |
158 delete_chara(CHARACTER *p) | |
159 { | |
160 | |
161 CHARACTER *parent = p; | |
162 p->f = FALSE; | |
163 p->state = noaction; | |
164 p->collision = noaction; | |
165 return parent; | |
28 } | 166 } |
29 | 167 |
30 CHARACTER * chara_state0(CHARACTER *p) | 168 CHARACTER * chara_state0(CHARACTER *p) |
31 { | 169 { |
32 p->x += p->vx; | 170 return SimpleStateTask(p); |
33 p->y += p->vy; | |
34 p->state = STATE0; | |
35 | |
36 return 0; | |
37 } | 171 } |
38 | 172 |
39 CHARACTER * chara_state1(CHARACTER *p) | 173 CHARACTER * chara_state1(CHARACTER *p) |
40 { | 174 { |
41 p->x -= p->vx; | 175 return SimpleStateTask(p); |
42 p->y -= p->vy; | |
43 p->state = STATE1; | |
44 | |
45 return 0; | |
46 } | 176 } |
47 | 177 |
48 CHARACTER * chara_state2(CHARACTER *p) | 178 CHARACTER * chara_state2(CHARACTER *p) |
49 { | 179 { |
50 p->vy -= 0.25; | 180 return SimpleStateTask(p); |
51 p->y += p->vy; | 181 } |
52 p->state = chara_state2; | 182 |
53 //PutSprite(count, p->x, p->y, p->charano); | 183 #if 0 |
54 return 0; | |
55 } | |
56 | |
57 CHARACTER * chara_state3(CHARACTER *p) | 184 CHARACTER * chara_state3(CHARACTER *p) |
58 { | 185 { |
59 p->x += p->vx; | 186 p->x += p->vx; |
60 p->y += p->vy; | 187 p->y += p->vy; |
61 if((p->dt1 == 60) || | 188 if((p->dt1 == 60) || |
65 Puttama(0, p->x, p->y); | 192 Puttama(0, p->x, p->y); |
66 } | 193 } |
67 p->dt1++; | 194 p->dt1++; |
68 p->state = chara_state3; | 195 p->state = chara_state3; |
69 //PutSprite(count, p->x, p->y, p->charano); | 196 //PutSprite(count, p->x, p->y, p->charano); |
70 return 0; | 197 return p; |
71 } | 198 } |
199 #endif | |
72 | 200 |
73 CHARACTER * chara_state4(CHARACTER *p) | 201 CHARACTER * chara_state4(CHARACTER *p) |
74 { | 202 { |
75 p->y += p->vy; | 203 return withJikiTask(p); |
76 p->x += p->vx; | |
77 if(p->y < jiki.y && p->y + 16 > jiki.y) | |
78 { | |
79 p->vy = -2; | |
80 p->vx = ((jiki.x > p->x) ? 4 : -4); | |
81 p->state = chara_state7; | |
82 } | |
83 else p->state = chara_state4; | |
84 //PutSprite(count, p->x, p->y, p->charano); | |
85 return 0; | |
86 } | 204 } |
87 | 205 |
88 CHARACTER * chara_state5(CHARACTER *p) | 206 CHARACTER * chara_state5(CHARACTER *p) |
89 { | 207 { |
90 p->y += p->vy; | 208 return withJikiTask(p); |
91 p->x += p->vx; | |
92 if(p->y + 96 < jiki.y | |
93 && p->y + 128 > jiki.y) | |
94 { | |
95 p->vy = -2; | |
96 p->vx = ((jiki.x > p->x) ? 4 : -4); | |
97 p->state = chara_state0; | |
98 } | |
99 else p->state = chara_state5; | |
100 //PutSprite(count, p->x, p->y, p->charano); | |
101 return 0; | |
102 } | 209 } |
103 | 210 |
104 CHARACTER * chara_state6(CHARACTER *p) | 211 CHARACTER * chara_state6(CHARACTER *p) |
105 { | 212 { |
106 p->y += p->vy; | 213 return withJikiTask(p); |
107 p->x += p->vx; | 214 } |
108 if(p->y + 96 < jiki.y | 215 |
109 && p->y + 128 > jiki.y) | 216 #if 0 |
110 { | |
111 p->vy = 2; | |
112 p->vx = ((jiki.x > p->x) ? 4 : -4); | |
113 p->state = chara_state0; | |
114 } | |
115 else p->state = chara_state6; | |
116 //PutSprite(count, p->x, p->y, p->charano); | |
117 return 0; | |
118 } | |
119 | |
120 CHARACTER * chara_state7(CHARACTER *p) | 217 CHARACTER * chara_state7(CHARACTER *p) |
121 { | 218 { |
122 p->x += p->vx; | 219 p->x += p->vx; |
123 p->y += p->vy; | 220 p->y += p->vy; |
124 if((p->dt1 == 60) || (p->dt1 == 90) | 221 if((p->dt1 == 60) || (p->dt1 == 90) |
127 Puttama(1, p->x, p->y); | 224 Puttama(1, p->x, p->y); |
128 } | 225 } |
129 p->dt1++; | 226 p->dt1++; |
130 p->state = chara_state7; | 227 p->state = chara_state7; |
131 //PutSprite(count, p->x, p->y, p->charano); | 228 //PutSprite(count, p->x, p->y, p->charano); |
132 return 0; | 229 return p; |
133 } | 230 } |
134 | 231 |
135 // state1 boss patern | 232 // state1 boss patern |
136 CHARACTER * chara_state8(CHARACTER *p) | 233 CHARACTER * chara_state8(CHARACTER *p) |
137 { | 234 { |
144 DefSpriteEx(p->charano, 16*4, 32*4); | 241 DefSpriteEx(p->charano, 16*4, 32*4); |
145 PutSpriteEx(p->charano, (p->x * 4), (p->y * 4), 0.2, 0.2, 1); | 242 PutSpriteEx(p->charano, (p->x * 4), (p->y * 4), 0.2, 0.2, 1); |
146 p->dt1 = 512; | 243 p->dt1 = 512; |
147 p->s = 0.125; | 244 p->s = 0.125; |
148 p->state = chara_state8; | 245 p->state = chara_state8; |
149 return 0; | 246 return p; |
150 } | 247 } |
151 p->state = chara_state9; | 248 p->state = chara_state9; |
152 return 0; | 249 return p; |
153 } | 250 } |
154 | 251 |
155 CHARACTER * chara_state9(CHARACTER *p) | 252 CHARACTER * chara_state9(CHARACTER *p) |
156 { | 253 { |
157 if(p->s <= 2) | 254 if(p->s <= 2) |
160 p->y -= 12; | 257 p->y -= 12; |
161 count++; | 258 count++; |
162 DefSpriteEx(54, 16*4, 32*4); | 259 DefSpriteEx(54, 16*4, 32*4); |
163 PutSpriteEx(54, (p->x * 4), (p->y * 4), p->s, p->s, 1); | 260 PutSpriteEx(54, (p->x * 4), (p->y * 4), p->s, p->s, 1); |
164 p->state = chara_state9; | 261 p->state = chara_state9; |
165 return 0; | 262 return p; |
166 } | 263 } |
167 count++; | 264 count++; |
168 DefSpriteEx(54, 16, 32); | 265 DefSpriteEx(54, 16, 32); |
169 PutSpriteEx(54, p->x, p->y, p->s, p->s, 1); | 266 PutSpriteEx(54, p->x, p->y, p->s, p->s, 1); |
170 rinkx = p->x; | 267 rinkx = p->x; |
171 rinky = p->y; | 268 rinky = p->y; |
172 Putenemy(5, rinkx - 16, rinky - 16, 1, 0, chara_state10); | 269 Putenemy(5, rinkx - 16, rinky - 16, 1, 0, chara_state10); |
173 Putenemy(5, rinkx - 16, rinky - 16, -1, 0, chara_state10); | 270 Putenemy(5, rinkx - 16, rinky - 16, -1, 0, chara_state10); |
174 p->state = chara_state11; | 271 p->state = chara_state11; |
175 p->dt1 = 8192; | 272 p->dt1 = 8192; |
176 return 0; | 273 return p; |
177 } | 274 } |
178 | 275 |
179 | 276 |
180 CHARACTER * chara_state10(CHARACTER *p) | 277 CHARACTER * chara_state10(CHARACTER *p) |
181 { | 278 { |
184 p->x += p->vx; | 281 p->x += p->vx; |
185 p->y += p->vy; | 282 p->y += p->vy; |
186 p->dt1++; | 283 p->dt1++; |
187 p->state = chara_state10; | 284 p->state = chara_state10; |
188 //PutSprite(count, p->x, p->y, | 285 //PutSprite(count, p->x, p->y, |
189 return 0; | 286 return p; |
190 } | 287 } |
191 rinkf1 = 1; | 288 rinkf1 = 1; |
192 p->dt1 = rinkx; | 289 p->dt1 = rinkx; |
193 p->dt2 = rinky; | 290 p->dt2 = rinky; |
194 p->state = chara_state13; | 291 p->state = chara_state13; |
195 return 0; | 292 return p; |
196 } | 293 } |
197 | 294 |
198 | 295 |
199 CHARACTER * chara_state11(CHARACTER *p) | 296 CHARACTER * chara_state11(CHARACTER *p) |
200 { | 297 { |
202 { | 299 { |
203 count++; | 300 count++; |
204 DefSpriteEx(54, 16, 32); | 301 DefSpriteEx(54, 16, 32); |
205 PutSpriteEx(54, p->x, p->y, p->s, p->s, 1); | 302 PutSpriteEx(54, p->x, p->y, p->s, p->s, 1); |
206 p->state = chara_state11; | 303 p->state = chara_state11; |
207 return 0; | 304 return p; |
208 } | 305 } |
209 p->dt1 = 0; | 306 p->dt1 = 0; |
210 p->dt2 = 0; | 307 p->dt2 = 0; |
211 p->state = chara_state12; | 308 p->state = chara_state12; |
212 return 0; | 309 return p; |
213 } | 310 } |
214 | 311 |
215 CHARACTER * chara_state12(CHARACTER *p) | 312 CHARACTER * chara_state12(CHARACTER *p) |
216 { | 313 { |
217 if(fastebos > 60*60) | 314 if(fastebos > 60*60) |
224 rinky += 3; | 321 rinky += 3; |
225 count++; | 322 count++; |
226 DefSpriteEx(54, 16, 32); | 323 DefSpriteEx(54, 16, 32); |
227 PutSpriteEx(54, p->x, p->y, 2, 2, 1); | 324 PutSpriteEx(54, p->x, p->y, 2, 2, 1); |
228 p->state = chara_state12; | 325 p->state = chara_state12; |
229 return 0; | 326 return p; |
230 } | 327 } |
231 if(p->dt1 <= 60) | 328 if(p->dt1 <= 60) |
232 { | 329 { |
233 if(jiki.x + 15 - rinkx < -5) | 330 if(jiki.x + 15 - rinkx < -5) |
234 { | 331 { |
331 fastebos++; | 428 fastebos++; |
332 p->dt1++; | 429 p->dt1++; |
333 count++; | 430 count++; |
334 DefSpriteEx(54, 16, 32); | 431 DefSpriteEx(54, 16, 32); |
335 PutSpriteEx(54, p->x, p->y, 2, 2, 1); | 432 PutSpriteEx(54, p->x, p->y, 2, 2, 1); |
336 return 0; | 433 return p; |
337 } | 434 } |
338 | 435 |
339 | 436 |
340 CHARACTER * chara_state13(CHARACTER *p) | 437 CHARACTER * chara_state13(CHARACTER *p) |
341 { | 438 { |
342 if(tekino0->f == FALSE){ | 439 if(tekino0->f == FALSE){ |
343 Bom(p->x, p->y); | 440 Bom(p->x, p->y); |
344 p->f = FALSE; | 441 p->f = FALSE; |
345 p->state = delete_chara; | 442 p->state = delete_chara; |
346 p->collision = noaction; | 443 p->collision = noaction; |
347 return 0; | 444 return p; |
348 } | 445 } |
349 | 446 |
350 p->x += rinkx - p->dt1; | 447 p->x += rinkx - p->dt1; |
351 p->y += rinky - p->dt2; | 448 p->y += rinky - p->dt2; |
352 p->dt1 = rinkx; | 449 p->dt1 = rinkx; |
376 if(p->x < rinkx) | 473 if(p->x < rinkx) |
377 { | 474 { |
378 Puttama(5, p->x + 8, p->y + 24); | 475 Puttama(5, p->x + 8, p->y + 24); |
379 } | 476 } |
380 } | 477 } |
381 return 0; | 478 return p; |
382 } | 479 } |
383 | 480 #endif |
384 | 481 |
385 CHARACTER * chara_state20(CHARACTER *p) | 482 CHARACTER * chara_state20(CHARACTER *p) |
386 { | 483 { |
387 p->x += p->vx; | 484 return SimpleStateTask(p); |
388 p->y += p->vy; | |
389 p->vy -= 0.5; | |
390 p->vy += 0.4; | |
391 return 0; | |
392 } | 485 } |
393 | 486 |
394 CHARACTER * chara_state21(CHARACTER *p) | 487 CHARACTER * chara_state21(CHARACTER *p) |
395 { | 488 { |
396 p->x += p->vx; | 489 return SimpleStateTask(p); |
397 p->y += p->vy; | 490 } |
398 p->vx += 0.5; | 491 |
399 p->vy += 0.4; | 492 #if 0 |
400 return 0; | |
401 } | |
402 | |
403 //ここまでgetate boss | 493 //ここまでgetate boss |
404 | 494 |
405 | 495 |
406 CHARACTER * chara_state22(CHARACTER *p) | 496 CHARACTER * chara_state22(CHARACTER *p) |
407 { | 497 { |
408 int sf; | 498 return SimpleStateTask(p); |
409 | |
410 sf = rand() % 4; | |
411 if((sf == 0) || (sf == 1)) | |
412 { | |
413 p->x = -35; | |
414 p->y = rand() % (120 - 35); | |
415 p->vx = (rand() % 4 + 1); | |
416 p->vy = rand() % 3 + 1; | |
417 p->state = chara_state23; | |
418 } | |
419 if((sf == 2)) | |
420 { | |
421 p->x = rand() % 290; | |
422 p->y = -30; | |
423 p->vx = rand() % 3 - 1; | |
424 p->vy = (rand() % 4 + 1); | |
425 p->state = chara_state23; | |
426 } | |
427 if(sf == 3) | |
428 { | |
429 p->x = 320; | |
430 p->y = rand() % (120 - 35); | |
431 p->vx = (rand() % 4 + 1) * -1; | |
432 p->vy = rand() % 3 -1; | |
433 p->state = chara_state23; | |
434 } | |
435 return 0; | |
436 } | 499 } |
437 | 500 |
438 CHARACTER * chara_state23(CHARACTER *p) | 501 CHARACTER * chara_state23(CHARACTER *p) |
439 { | 502 { |
440 p=asteroid(p); | 503 p=asteroid(p); |
441 return 0; | 504 return p; |
442 } | 505 } |
443 | 506 |
444 CHARACTER * chara_state24(CHARACTER *p) | 507 CHARACTER * chara_state24(CHARACTER *p) |
445 { | 508 { |
446 kyeenemyno = p; | 509 kyeenemyno = p; |
453 rinkx = 0; | 516 rinkx = 0; |
454 rinky = 0; | 517 rinky = 0; |
455 rinkf1 = 0; | 518 rinkf1 = 0; |
456 rinkf2 = 0; | 519 rinkf2 = 0; |
457 p->state = chara_state25; | 520 p->state = chara_state25; |
458 return 0; | 521 return p; |
459 } | 522 } |
460 | 523 |
461 CHARACTER * chara_state25(CHARACTER *p) | 524 CHARACTER * chara_state25(CHARACTER *p) |
462 { | 525 { |
463 int amari; | 526 int amari; |
483 if((amari == 2) && (enemy_part1->f == TRUE)) | 546 if((amari == 2) && (enemy_part1->f == TRUE)) |
484 { | 547 { |
485 p->state = chara_state27; | 548 p->state = chara_state27; |
486 rinkf1 = 5; | 549 rinkf1 = 5; |
487 rinkx = 0; | 550 rinkx = 0; |
488 return 0; | 551 return p; |
489 } | 552 } |
490 if((enemy_part5->f == TRUE) && (enemy_part1->f != TRUE)) | 553 if((enemy_part5->f == TRUE) && (enemy_part1->f != TRUE)) |
491 { | 554 { |
492 p->state = chara_state28; | 555 p->state = chara_state28; |
493 } | 556 } |
494 p->dt1 += 3; | 557 p->dt1 += 3; |
495 if(p->dt1 == 720) | 558 if(p->dt1 == 720) |
496 { | 559 { |
497 p->dt1 = 0; | 560 p->dt1 = 0; |
498 } | 561 } |
499 return 0; | 562 return p; |
500 } | 563 } |
501 | 564 |
502 CHARACTER * chara_state26(CHARACTER *p) | 565 CHARACTER * chara_state26(CHARACTER *p) |
503 { | 566 { |
504 if((p->dt2 > 50) && (p->dt2 < 100)) | 567 if((p->dt2 > 50) && (p->dt2 < 100)) |
518 if(p->dt2 == 401) | 581 if(p->dt2 == 401) |
519 { | 582 { |
520 p->dt2 = 0; | 583 p->dt2 = 0; |
521 rinkf1 = 0; | 584 rinkf1 = 0; |
522 p->state = chara_state25; | 585 p->state = chara_state25; |
523 return 0; | 586 return p; |
524 } | 587 } |
525 p->dt2++; | 588 p->dt2++; |
526 return 0; | 589 return p; |
527 } | 590 } |
528 | 591 |
529 CHARACTER * chara_state27(CHARACTER *p) //rocket punch | 592 CHARACTER * chara_state27(CHARACTER *p) //rocket punch |
530 { | 593 { |
531 if((p->dt2 > 50) && (p->dt2 < 60) && (p->x > -24) && (p->y > -24)) | 594 if((p->dt2 > 50) && (p->dt2 < 60) && (p->x > -24) && (p->y > -24)) |
574 { | 637 { |
575 p->dt2 = 0; | 638 p->dt2 = 0; |
576 rinkf1 = 0; | 639 rinkf1 = 0; |
577 rinkx = 0; | 640 rinkx = 0; |
578 p->state = chara_state25; | 641 p->state = chara_state25; |
579 return 0; | 642 return p; |
580 } | 643 } |
581 p->dt2++; | 644 p->dt2++; |
582 return 0; | 645 return p; |
583 } | 646 } |
584 CHARACTER * chara_state28(CHARACTER *p) | 647 CHARACTER * chara_state28(CHARACTER *p) |
585 { | 648 { |
586 if (p->dt1 <= 360) | 649 if (p->dt1 <= 360) |
587 { | 650 { |
603 1 ? -1 : 1), | 666 1 ? -1 : 1), |
604 (rand() % 5 + 0.5) * (rand() % 2 == | 667 (rand() % 5 + 0.5) * (rand() % 2 == |
605 1 ? -1 : 1), chara_state29); | 668 1 ? -1 : 1), chara_state29); |
606 } | 669 } |
607 p->dt1 += 3; | 670 p->dt1 += 3; |
608 return 0; | 671 return p; |
609 } | 672 } |
610 | 673 |
611 | 674 |
612 CHARACTER * chara_state29(CHARACTER *p) | 675 CHARACTER * chara_state29(CHARACTER *p) |
613 { | 676 { |
616 if(p->dt1 % 18 == 1) | 679 if(p->dt1 % 18 == 1) |
617 { | 680 { |
618 Puttama(0, p->x, p->y); | 681 Puttama(0, p->x, p->y); |
619 } | 682 } |
620 p->dt1++; | 683 p->dt1++; |
621 return 0; | 684 return p; |
622 } | 685 } |
623 | 686 #endif |
624 | 687 |
625 CHARACTER * chara_state30(CHARACTER *p) | 688 CHARACTER * chara_state30(CHARACTER *p) |
626 { | 689 { |
627 p->x = p->x - 32; | 690 return SimpleStateTask(p); |
628 p->y = p->y; | 691 } |
629 return 0; | 692 |
630 } | 693 #if 0 |
631 | |
632 CHARACTER * chara_state31(CHARACTER *p) //right hand | 694 CHARACTER * chara_state31(CHARACTER *p) //right hand |
633 { | 695 { |
634 | 696 |
635 if((enemy_part3->f == FALSE) || (kyeenemyno->f == FALSE)) | 697 if((enemy_part3->f == FALSE) || (kyeenemyno->f == FALSE)) |
636 { | 698 { |
637 Bom(p->x, p->y); | 699 Bom(p->x, p->y); |
638 p->f = FALSE; | 700 p->f = FALSE; |
639 p->state = delete_chara; | 701 p->state = delete_chara; |
640 p->collision = noaction; | 702 p->collision = noaction; |
641 return 0; | 703 return p; |
642 } | 704 } |
643 | 705 |
644 if(rinkf1 == 0) | 706 if(rinkf1 == 0) |
645 { | 707 { |
646 p->x = kyeenemyno->x + 40; | 708 p->x = kyeenemyno->x + 40; |
661 { | 723 { |
662 p->y += 6; | 724 p->y += 6; |
663 } | 725 } |
664 else | 726 else |
665 { | 727 { |
666 return 0; | 728 return p; |
667 } | 729 } |
668 count++; | 730 count++; |
669 PutSprite(count, p->x - 4, p->y - 20, 90 + p->dt2 % 4); | 731 PutSprite(count, p->x - 4, p->y - 20, 90 + p->dt2 % 4); |
670 p->dt2++; | 732 p->dt2++; |
671 } | 733 } |
672 if(rinkf1 == 7) | 734 if(rinkf1 == 7) |
673 { | 735 { |
674 Putenemy(22, p->x + 14, p->y + 14, 0, 0, chara_state40); | 736 Putenemy(22, p->x + 14, p->y + 14, 0, 0, chara_state40); |
675 return 0; | 737 return p; |
676 } | 738 } |
677 if(rinkf1 == 11) | 739 if(rinkf1 == 11) |
678 { | 740 { |
679 if(p->y + 20 != p->y) | 741 if(p->y + 20 != p->y) |
680 { | 742 { |
681 p->y--; | 743 p->y--; |
682 } | 744 } |
683 else | 745 else |
684 { | 746 { |
685 return 0; | 747 return p; |
686 } | 748 } |
687 count++; | 749 count++; |
688 PutSprite(count, p->x + 8, p->y + 44, 58 + p->dt2 % 4); | 750 PutSprite(count, p->x + 8, p->y + 44, 58 + p->dt2 % 4); |
689 p->dt2++; | 751 p->dt2++; |
690 } | 752 } |
691 return 0; | 753 return p; |
692 } | 754 } |
693 | 755 |
694 | 756 |
695 CHARACTER * chara_state32(CHARACTER *p) //left hand | 757 CHARACTER * chara_state32(CHARACTER *p) //left hand |
696 { | 758 { |
699 { | 761 { |
700 Bom(p->x, p->y); | 762 Bom(p->x, p->y); |
701 p->f = FALSE; | 763 p->f = FALSE; |
702 p->state = delete_chara; | 764 p->state = delete_chara; |
703 p->collision = noaction; | 765 p->collision = noaction; |
704 return 0; | 766 return p; |
705 } | 767 } |
706 p->x = kyeenemyno->x - 40; | 768 p->x = kyeenemyno->x - 40; |
707 p->y = kyeenemyno->y + 28; | 769 p->y = kyeenemyno->y + 28; |
708 if (rinkf1 == 5) | 770 if (rinkf1 == 5) |
709 { | 771 { |
718 if (rinkf1 == 7) | 780 if (rinkf1 == 7) |
719 { | 781 { |
720 Putenemy(23, p->x + 14, | 782 Putenemy(23, p->x + 14, |
721 p->y + 14, 0, 0, chara_state41); | 783 p->y + 14, 0, 0, chara_state41); |
722 // rinkf1=8; | 784 // rinkf1=8; |
723 return 0; | 785 return p; |
724 } | 786 } |
725 return 0; | 787 return p; |
726 } | 788 } |
727 | 789 |
728 | 790 |
729 CHARACTER * chara_state33(CHARACTER *p) // right shoulder | 791 CHARACTER * chara_state33(CHARACTER *p) // right shoulder |
730 { | 792 { |
732 { | 794 { |
733 Bom(p->x, p->y); | 795 Bom(p->x, p->y); |
734 p->f = FALSE; | 796 p->f = FALSE; |
735 p->state = delete_chara; | 797 p->state = delete_chara; |
736 p->collision = noaction; | 798 p->collision = noaction; |
737 return 0; | 799 return p; |
738 } | 800 } |
739 p->x = kyeenemyno->x + 32; | 801 p->x = kyeenemyno->x + 32; |
740 p->y = kyeenemyno->y; | 802 p->y = kyeenemyno->y; |
741 if (rinkf1 == 5) | 803 if (rinkf1 == 5) |
742 { | 804 { |
746 } | 808 } |
747 if (rinkf1 == 6) | 809 if (rinkf1 == 6) |
748 { | 810 { |
749 p->charano = enemystate[11].charano; | 811 p->charano = enemystate[11].charano; |
750 } | 812 } |
751 return 0; | 813 return p; |
752 } | 814 } |
753 | 815 |
754 | 816 |
755 CHARACTER * chara_state34(CHARACTER *p) //left shoulder | 817 CHARACTER * chara_state34(CHARACTER *p) //left shoulder |
756 { | 818 { |
758 { | 820 { |
759 Bom(p->x, p->y); | 821 Bom(p->x, p->y); |
760 p->f = FALSE; | 822 p->f = FALSE; |
761 p->state = delete_chara; | 823 p->state = delete_chara; |
762 p->collision = noaction; | 824 p->collision = noaction; |
763 return 0; | 825 return p; |
764 } | 826 } |
765 p->x = kyeenemyno->x - 32; | 827 p->x = kyeenemyno->x - 32; |
766 p->y = kyeenemyno->y; | 828 p->y = kyeenemyno->y; |
767 if (rinkf1 == 5) | 829 if (rinkf1 == 5) |
768 { | 830 { |
770 } | 832 } |
771 if (rinkf1 == 6) | 833 if (rinkf1 == 6) |
772 { | 834 { |
773 p->charano = enemystate[12].charano; | 835 p->charano = enemystate[12].charano; |
774 } | 836 } |
775 return 0; | 837 return p; |
776 } | 838 } |
777 | 839 |
778 CHARACTER * chara_state35(CHARACTER *p) // bust | 840 CHARACTER * chara_state35(CHARACTER *p) // bust |
779 { | 841 { |
780 if (kyeenemyno->f == FALSE) | 842 if (kyeenemyno->f == FALSE) |
781 { | 843 { |
782 Bom(p->x, p->y); | 844 Bom(p->x, p->y); |
783 p->f = FALSE; | 845 p->f = FALSE; |
784 p->state = delete_chara; | 846 p->state = delete_chara; |
785 p->collision = noaction; | 847 p->collision = noaction; |
786 return 0; | 848 return p; |
787 } | 849 } |
788 p->x = kyeenemyno->x; | 850 p->x = kyeenemyno->x; |
789 p->y = kyeenemyno->y + 32; | 851 p->y = kyeenemyno->y + 32; |
790 if (rinkf1 == 1) | 852 if (rinkf1 == 1) |
791 { | 853 { |
823 } | 885 } |
824 if (rinkf1 == 4) { | 886 if (rinkf1 == 4) { |
825 p->charano = enemystate[15].charano; | 887 p->charano = enemystate[15].charano; |
826 p->dt2 = 0; | 888 p->dt2 = 0; |
827 } | 889 } |
828 return 0; | 890 return p; |
829 } | 891 } |
830 | 892 |
831 | 893 |
832 CHARACTER * chara_state40(CHARACTER *p) //arm vulkan | 894 CHARACTER * chara_state40(CHARACTER *p) //arm vulkan |
833 { | 895 { |
835 { | 897 { |
836 Bom(p->x, p->y); | 898 Bom(p->x, p->y); |
837 p->f = FALSE; | 899 p->f = FALSE; |
838 p->state = delete_chara; | 900 p->state = delete_chara; |
839 p->collision = noaction; | 901 p->collision = noaction; |
840 return 0; | 902 return p; |
841 } | 903 } |
842 if ((rinkf1 == 8) && (p->dt1 % 3 == 1)) | 904 if ((rinkf1 == 8) && (p->dt1 % 3 == 1)) |
843 { | 905 { |
844 if ((p->dt2 < 16)) | 906 if ((p->dt2 < 16)) |
845 { | 907 { |
847 DefSprite(76, "boss2_rightarm_b", 16, p->dt2, 480, boss); | 909 DefSprite(76, "boss2_rightarm_b", 16, p->dt2, 480, boss); |
848 } | 910 } |
849 else | 911 else |
850 { | 912 { |
851 // rinkf1=9; | 913 // rinkf1=9; |
852 return 0; | 914 return p; |
853 } | 915 } |
854 } | 916 } |
855 if (rinkf1 == 9) | 917 if (rinkf1 == 9) |
856 { | 918 { |
857 if (p->dt1 % 15 == 1) | 919 if (p->dt1 % 15 == 1) |
873 p->collision = noaction; | 935 p->collision = noaction; |
874 // rinkf1=11; | 936 // rinkf1=11; |
875 } | 937 } |
876 } | 938 } |
877 p->dt1++; | 939 p->dt1++; |
878 return 0; | 940 return p; |
879 } | 941 } |
880 | 942 |
881 | 943 |
882 CHARACTER * chara_state41(CHARACTER *p) //left arm up arm vulkan | 944 CHARACTER * chara_state41(CHARACTER *p) //left arm up arm vulkan |
883 { | 945 { |
885 { | 947 { |
886 Bom(p->x, p->y); | 948 Bom(p->x, p->y); |
887 p->f = FALSE; | 949 p->f = FALSE; |
888 p->state = delete_chara; | 950 p->state = delete_chara; |
889 p->collision = noaction; | 951 p->collision = noaction; |
890 return 0; | 952 return p; |
891 } | 953 } |
892 p->x = kyeenemyno->x - 20 - 7; | 954 p->x = kyeenemyno->x - 20 - 7; |
893 p->y = kyeenemyno->y + 28 + 15; | 955 p->y = kyeenemyno->y + 28 + 15; |
894 if ((rinkf1 == 8) && (p->dt1 % 3 == 1)) | 956 if ((rinkf1 == 8) && (p->dt1 % 3 == 1)) |
895 { | 957 { |
899 DefSprite(77, "boss2_leftarmbattery", p->dt2, 16, 480, boss); /*左腕アップアーム砲 */ | 961 DefSprite(77, "boss2_leftarmbattery", p->dt2, 16, 480, boss); /*左腕アップアーム砲 */ |
900 } | 962 } |
901 else | 963 else |
902 { | 964 { |
903 rinkf1 = 9; | 965 rinkf1 = 9; |
904 return 0; | 966 return p; |
905 } | 967 } |
906 } | 968 } |
907 if (rinkf1 == 9) | 969 if (rinkf1 == 9) |
908 { | 970 { |
909 if (p->dt1 % 15 == 1) | 971 if (p->dt1 % 15 == 1) |
921 else | 983 else |
922 { | 984 { |
923 p->f = FALSE; | 985 p->f = FALSE; |
924 p->state = delete_chara; | 986 p->state = delete_chara; |
925 p->collision = noaction; | 987 p->collision = noaction; |
926 return 0; | 988 return p; |
927 // rinkf1=11; | 989 // rinkf1=11; |
928 } | 990 } |
929 } | 991 } |
930 p->dt1++; | 992 p->dt1++; |
931 return 0; | 993 return p; |
932 } | 994 } |
933 | 995 |
934 | 996 |
935 CHARACTER * chara_state400(CHARACTER *p) | 997 CHARACTER * chara_state400(CHARACTER *p) |
936 { | 998 { |
937 p->vy++; | 999 return SimpleStateTask(p); |
938 p->y += p->vy / 4; | |
939 p->state = chara_state400; | |
940 return 0; | |
941 } | 1000 } |
942 | 1001 |
943 | 1002 |
944 CHARACTER * chara_state401(CHARACTER *p) | 1003 CHARACTER * chara_state401(CHARACTER *p) |
945 { | 1004 { |
953 if (p->dt1 % 50 == 37) | 1012 if (p->dt1 % 50 == 37) |
954 { | 1013 { |
955 Puttama(1, p->x + 8, p->y + 24); | 1014 Puttama(1, p->x + 8, p->y + 24); |
956 } | 1015 } |
957 p->dt1++; | 1016 p->dt1++; |
958 return 0; | 1017 return p; |
959 } | 1018 } |
960 | 1019 |
961 | 1020 |
962 CHARACTER * chara_state402(CHARACTER *p) | 1021 CHARACTER * chara_state402(CHARACTER *p) |
963 { | 1022 { |
971 if (p->dt1 % 50 == 37) | 1030 if (p->dt1 % 50 == 37) |
972 { | 1031 { |
973 Puttama(1, p->x + 8, p->y + 24); | 1032 Puttama(1, p->x + 8, p->y + 24); |
974 } | 1033 } |
975 p->dt1++; | 1034 p->dt1++; |
976 return 0; | 1035 return p; |
977 } | 1036 } |
978 | 1037 |
979 | 1038 |
980 CHARACTER * chara_state410(CHARACTER *p) | 1039 CHARACTER * chara_state410(CHARACTER *p) |
981 { | 1040 { |
982 kyeenemyno = p; | 1041 kyeenemyno = p; |
983 p->state = chara_state411; | 1042 p->state = chara_state411; |
984 return 0; | 1043 return p; |
985 } | 1044 } |
986 | 1045 |
987 | 1046 |
988 CHARACTER * chara_state411(CHARACTER *p) | 1047 CHARACTER * chara_state411(CHARACTER *p) |
989 { | 1048 { |
1028 } | 1087 } |
1029 if (p->y > 232) | 1088 if (p->y > 232) |
1030 { | 1089 { |
1031 p->y = 232; | 1090 p->y = 232; |
1032 } | 1091 } |
1033 return 0; | 1092 return p; |
1034 } | 1093 } |
1035 | 1094 |
1036 | 1095 |
1037 CHARACTER * chara_state500(CHARACTER *p) | 1096 CHARACTER * chara_state500(CHARACTER *p) |
1038 { | 1097 { |
1064 SANKAKU, chara_state501); | 1123 SANKAKU, chara_state501); |
1065 } | 1124 } |
1066 if (p->dt1 == 50) { | 1125 if (p->dt1 == 50) { |
1067 /*Putenemy(44,0,0,1,1,411); */ | 1126 /*Putenemy(44,0,0,1,1,411); */ |
1068 } | 1127 } |
1069 return 0; | 1128 return p; |
1070 } | 1129 } |
1071 | 1130 |
1072 | 1131 |
1073 CHARACTER * chara_state501(CHARACTER *p) | 1132 CHARACTER * chara_state501(CHARACTER *p) |
1074 { | 1133 { |
1077 if(p->dt1 % 32 == 1) | 1136 if(p->dt1 % 32 == 1) |
1078 { | 1137 { |
1079 Puttama(11, p->x, p->y); | 1138 Puttama(11, p->x, p->y); |
1080 } | 1139 } |
1081 p->dt1++; | 1140 p->dt1++; |
1082 return 0; | 1141 return p; |
1083 } | 1142 } |
1084 | 1143 |
1085 | 1144 |
1086 CHARACTER * chara_state600(CHARACTER *p) | 1145 CHARACTER * chara_state600(CHARACTER *p) |
1087 { | 1146 { |
1102 p->x = 260; | 1161 p->x = 260; |
1103 if (p->y < 0) | 1162 if (p->y < 0) |
1104 p->y = 0; | 1163 p->y = 0; |
1105 if (p->y > 232) | 1164 if (p->y > 232) |
1106 p->y = 232; | 1165 p->y = 232; |
1107 return 0; | 1166 return p; |
1108 } | 1167 } |
1109 | 1168 |
1110 | 1169 |
1111 CHARACTER * chara_state601(CHARACTER *p) | 1170 CHARACTER * chara_state601(CHARACTER *p) |
1112 { | 1171 { |
1127 if (p->y > 232) | 1186 if (p->y > 232) |
1128 p->y = 232; | 1187 p->y = 232; |
1129 if (p->dt2 > 800) { | 1188 if (p->dt2 > 800) { |
1130 p->state = chara_state602; | 1189 p->state = chara_state602; |
1131 } | 1190 } |
1132 return 0; | 1191 return p; |
1133 } | 1192 } |
1134 | 1193 |
1135 | 1194 |
1136 CHARACTER * chara_state602(CHARACTER *p) | 1195 CHARACTER * chara_state602(CHARACTER *p) |
1137 { | 1196 { |
1142 chara_state29); | 1201 chara_state29); |
1143 if (p->dt2 > 1024) { | 1202 if (p->dt2 > 1024) { |
1144 p->state = chara_state600; | 1203 p->state = chara_state600; |
1145 p->dt2 = 0; | 1204 p->dt2 = 0; |
1146 } | 1205 } |
1147 return 0; | 1206 return p; |
1148 } | 1207 } |
1149 | 1208 |
1150 | 1209 |
1151 CHARACTER * asteroid(CHARACTER *p) | 1210 CHARACTER * asteroid(CHARACTER *p) |
1152 { | 1211 { |
1168 p->vy *= -1; | 1227 p->vy *= -1; |
1169 } | 1228 } |
1170 } | 1229 } |
1171 } | 1230 } |
1172 asteroidi++; | 1231 asteroidi++; |
1173 return 0; | 1232 return p; |
1174 } | 1233 } |
1234 #endif |