comparison state_task.cc @ 34:7aaaaf5dde40

add new task.
author koba <koba@cr.ie.u-ryukyu.ac.jp>
date Fri, 07 Jan 2011 23:19:05 +0900
parents 39e643fc4f90
children c122e3d2302e
comparison
equal deleted inserted replaced
33:39e643fc4f90 34:7aaaaf5dde40
77 77
78 SetTaskState(STATE20, chara_state20); 78 SetTaskState(STATE20, chara_state20);
79 SetTaskState(STATE21, chara_state21); 79 SetTaskState(STATE21, chara_state21);
80 SetTaskState(STATE22, chara_state22); 80 SetTaskState(STATE22, chara_state22);
81 SetTaskState(STATE23, chara_state23); 81 SetTaskState(STATE23, chara_state23);
82 #if 0
83 SetTaskState(STATE24, chara_state24); 82 SetTaskState(STATE24, chara_state24);
84 SetTaskState(STATE25, chara_state25); 83 SetTaskState(STATE25, chara_state25);
85 SetTaskState(STATE26, chara_state26); 84 SetTaskState(STATE26, chara_state26);
86 SetTaskState(STATE27, chara_state27); 85 SetTaskState(STATE27, chara_state27);
87 SetTaskState(STATE28, chara_state28); 86 SetTaskState(STATE28, chara_state28);
88 SetTaskState(STATE29, chara_state29); 87 SetTaskState(STATE29, chara_state29);
89 #endif
90 SetTaskState(STATE30, chara_state30); 88 SetTaskState(STATE30, chara_state30);
91 #if 0
92 SetTaskState(STATE31, chara_state31); 89 SetTaskState(STATE31, chara_state31);
93 SetTaskState(STATE32, chara_state32); 90 SetTaskState(STATE32, chara_state32);
91 #if 0
94 SetTaskState(STATE33, chara_state33); 92 SetTaskState(STATE33, chara_state33);
95 SetTaskState(STATE34, chara_state34); 93 SetTaskState(STATE34, chara_state34);
96 SetTaskState(STATE35, chara_state35); 94 SetTaskState(STATE35, chara_state35);
97 SetTaskState(STATE40, chara_state40); 95 SetTaskState(STATE40, chara_state40);
98 SetTaskState(STATE41, chara_state41); 96 SetTaskState(STATE41, chara_state41);
97 #endif
99 SetTaskState(STATE400, chara_state400); 98 SetTaskState(STATE400, chara_state400);
100 SetTaskState(STATE401, chara_state401); 99 SetTaskState(STATE401, chara_state401);
101 SetTaskState(STATE402, chara_state402); 100 SetTaskState(STATE402, chara_state402);
101 #if 0
102 SetTaskState(STATE410, chara_state410); 102 SetTaskState(STATE410, chara_state410);
103 SetTaskState(STATE411, chara_state411); 103 SetTaskState(STATE411, chara_state411);
104 SetTaskState(STATE500, chara_state500); 104 SetTaskState(STATE500, chara_state500);
105 SetTaskState(STATE501, chara_state501); 105 SetTaskState(STATE501, chara_state501);
106 SetTaskState(STATE600, chara_state600); 106 SetTaskState(STATE600, chara_state600);
112 void 112 void
113 updateState(SchedTask *s, void *chara, void *arg) 113 updateState(SchedTask *s, void *chara, void *arg)
114 { 114 {
115 CHARACTER *p = (CHARACTER*)chara; 115 CHARACTER *p = (CHARACTER*)chara;
116 116
117 int num = GetStateNum(p->task);
118 p->state = state_list[num];
119 }
120
121
122 void
123 freeObject(SchedTask *s, void *chara, void *obj)
124 {
125 free(obj);
126
127 CHARACTER *p = (CHARACTER*)chara;
117 int num = GetStateNum(p->task); 128 int num = GetStateNum(p->task);
118 p->state = state_list[num]; 129 p->state = state_list[num];
119 } 130 }
120 131
121 132
223 return p; 234 return p;
224 } 235 }
225 236
226 237
227 CHARACTER* 238 CHARACTER*
228 BossTask1(CHARACTER *p) 239 JikiContainerTask(CHARACTER *p)
229 { 240 {
230 int task_num = p->task; 241 int task_num = p->task;
231 int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH; 242 int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH;
232 HTaskPtr state_task = tmanager->create_task(task_num); 243 HTaskPtr state_task = tmanager->create_task(task_num);
233 ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size); 244 ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size);
234 obj->flag = false; 245 obj->flag = false;
235 obj->length = 0; 246 obj->length = 0;
236 247
237 state_task->set_param(0, (memaddr)count); 248 state_task->set_inData(0, p, sizeof(CHARACTER));
238 249 state_task->set_inData(1, &jiki, sizeof(player));
239 state_task->set_inData(0, p, sizeof(CHARACTER)); 250
240 251 state_task->set_outData(0, p, sizeof(CHARACTER));
241 state_task->set_outData(0, p, sizeof(CHARACTER)); 252 state_task->set_outData(1, obj, 0);
242 state_task->set_outData(1, &count, sizeof(int)); 253
243 state_task->set_outData(2, obj, 0); 254 state_task->set_post(checkContainer, (void*)p, (void*)obj);
244 255 state_task->set_cpu(SPE_ANY);
245 state_task->set_post(checkContainer, (void*)p, (void*)obj); 256 state_task->spawn();
246 state_task->set_cpu(SPE_ANY); 257
247 state_task->spawn(); 258 return p;
248 259 }
249 return p; 260
250 } 261
251 262 CHARACTER*
252 263 AsteroidTask(CHARACTER *p)
253 CHARACTER* 264 {
254 BossTask2(CHARACTER *p) 265 asteroiddt[asteroidi] = p;
266
267 int task_num = ASTEROID_TASK;
268 HTaskPtr state_task = tmanager->create_task(task_num);
269
270 state_task->set_param(0, (memaddr)asteroidi);
271
272 state_task->set_inData(0, p, sizeof(CHARACTER));
273
274 state_task->set_outData(0, p, sizeof(CHARACTER));
275
276 int array_size = sizeof(CHARACTER)*asteroidi;
277 if (array_size > 0) {
278 CHARACTER *asteroid_array = (CHARACTER*)tmanager->allocate(array_size);
279 for (int i = 0; i < asteroidi; i++) {
280 asteroid_array[i] = *asteroiddt[i];
281 }
282 state_task->set_inData(1, asteroid_array, array_size);
283 state_task->set_post(freeObject, (void*)p, (void*)asteroid_array);
284 } else {
285 state_task->set_post(updateState, (void*)p, NULL);
286 }
287 state_task->set_cpu(SPE_ANY);
288 state_task->spawn();
289
290 asteroidi++;
291 return p;
292 }
293
294
295 CHARACTER*
296 Boss1Task1(CHARACTER *p)
255 { 297 {
256 int task_num = p->task; 298 int task_num = p->task;
257 int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH; 299 int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH;
258 HTaskPtr state_task = tmanager->create_task(task_num); 300 HTaskPtr state_task = tmanager->create_task(task_num);
259 ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size); 301 ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size);
260 obj->flag = false; 302 obj->flag = false;
261 obj->length = 0; 303 obj->length = 0;
262 304
263 state_task->set_param(0, (memaddr)count); 305 state_task->set_inData(0, p, sizeof(CHARACTER));
264 306 state_task->set_inData(1, &count, sizeof(int));
265 state_task->set_inData(0, p, sizeof(CHARACTER)); 307
308 state_task->set_outData(0, p, sizeof(CHARACTER));
309 state_task->set_outData(1, &count, sizeof(int));
310 state_task->set_outData(2, obj, 0);
311
312 state_task->set_post(checkContainer, (void*)p, (void*)obj);
313 state_task->set_cpu(SPE_ANY);
314 state_task->spawn();
315
316 return p;
317 }
318
319
320 CHARACTER*
321 Boss1Task2(CHARACTER *p)
322 {
323 int task_num = p->task;
324 int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH;
325 HTaskPtr state_task = tmanager->create_task(task_num);
326 ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size);
327 obj->flag = false;
328 obj->length = 0;
329
330 state_task->set_inData(0, p, sizeof(CHARACTER));
331 state_task->set_inData(1, &count, sizeof(int));
266 332
267 state_task->set_outData(0, p, sizeof(CHARACTER)); 333 state_task->set_outData(0, p, sizeof(CHARACTER));
268 state_task->set_outData(1, &count, sizeof(int)); 334 state_task->set_outData(1, &count, sizeof(int));
269 state_task->set_outData(2, &rinkx, sizeof(int)); 335 state_task->set_outData(2, &rinkx, sizeof(int));
270 state_task->set_outData(3, &rinky, sizeof(int)); 336 state_task->set_outData(3, &rinky, sizeof(int));
277 return p; 343 return p;
278 } 344 }
279 345
280 346
281 CHARACTER* 347 CHARACTER*
282 BossTask3(CHARACTER *p) 348 Boss1Task3(CHARACTER *p)
283 { 349 {
284 int task_num = p->task; 350 int task_num = p->task;
285 HTaskPtr state_task = tmanager->create_task(task_num); 351 HTaskPtr state_task = tmanager->create_task(task_num);
286 352
287 state_task->set_param(0, (memaddr)rinkx); 353 state_task->set_param(0, (memaddr)rinkx);
299 return p; 365 return p;
300 } 366 }
301 367
302 368
303 CHARACTER* 369 CHARACTER*
304 BossTask4(CHARACTER *p) 370 Boss1Task4(CHARACTER *p)
305 { 371 {
306 int task_num = p->task; 372 int task_num = p->task;
307 int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH; 373 int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH;
308 HTaskPtr state_task = tmanager->create_task(task_num); 374 HTaskPtr state_task = tmanager->create_task(task_num);
309 ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size); 375 ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size);
326 return p; 392 return p;
327 } 393 }
328 394
329 395
330 CHARACTER* 396 CHARACTER*
331 BossTask5(CHARACTER *p) 397 Boss1Task5(CHARACTER *p)
332 { 398 {
333 int task_num = p->task; 399 int task_num = p->task;
334 int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH; 400 int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH;
335 HTaskPtr state_task = tmanager->create_task(task_num); 401 HTaskPtr state_task = tmanager->create_task(task_num);
336 ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size); 402 ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size);
360 return p; 426 return p;
361 } 427 }
362 428
363 429
364 CHARACTER* 430 CHARACTER*
365 BossTask6(CHARACTER *p) 431 Boss1Task6(CHARACTER *p)
366 { 432 {
367 int task_num = p->task; 433 int task_num = p->task;
368 int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH; 434 int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH;
369 HTaskPtr state_task = tmanager->create_task(task_num); 435 HTaskPtr state_task = tmanager->create_task(task_num);
370 ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size); 436 ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size);
371 obj->flag = false; 437 obj->flag = false;
372 obj->length = 0; 438 obj->length = 0;
373 439
374 state_task->set_param(0, (memaddr)rinkx); 440 state_task->set_param(0, (memaddr)rinkx);
375 state_task->set_param(1, (memaddr)rinky); 441 state_task->set_param(1, (memaddr)rinky);
376 state_task->set_param(2, (memaddr)rinkf2); 442 state_task->set_param(2, (memaddr)filpcount);
377 state_task->set_param(3, (memaddr)count); 443 state_task->set_param(3, (memaddr)tekino0->f);
378 state_task->set_param(4, (memaddr)filpcount); 444 state_task->set_param(4, (memaddr)count);
379 state_task->set_param(5, (memaddr)tekino0->f); 445
380 state_task->set_param(6, (memaddr)bomend); 446 state_task->set_inData(0, p, sizeof(CHARACTER));
381 447 state_task->set_inData(1, bchar, sizeof(bomchar)*100);
382 state_task->set_inData(0, p, sizeof(CHARACTER)); 448 state_task->set_inData(2, &bomend, sizeof(int));
383 state_task->set_inData(1, bchar, sizeof(bomchar)*(bomend+1)); 449 state_task->set_inData(3, &rinkf2, sizeof(int));
384 450
385 state_task->set_outData(0, p, sizeof(CHARACTER)); 451 state_task->set_outData(0, p, sizeof(CHARACTER));
386 state_task->set_outData(1, &count, sizeof(int)); 452 state_task->set_outData(1, &count, sizeof(int));
387 state_task->set_outData(2, &bomend, sizeof(int)); 453 state_task->set_outData(2, &bomend, sizeof(int));
388 state_task->set_outData(3, obj, 0); 454 state_task->set_outData(3, bchar, sizeof(bomchar)*100);
455 state_task->set_outData(4, obj, 0);
456
457 state_task->set_post(checkContainer, (void*)p, (void*)obj);
458 state_task->set_cpu(SPE_ANY);
459 state_task->spawn();
460
461 return p;
462 }
463
464
465 CHARACTER*
466 Boss2Task1(CHARACTER *p)
467 {
468 int task_num = p->task;
469 int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH;
470 HTaskPtr state_task = tmanager->create_task(task_num);
471 ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size);
472 obj->flag = false;
473 obj->length = 0;
474
475 state_task->set_param(0, (memaddr)enemy_part1->f);
476 state_task->set_param(1, (memaddr)enemy_part5->f);
477
478 state_task->set_inData(0, p, sizeof(CHARACTER));
479 state_task->set_inData(1, &count, sizeof(int));
480 state_task->set_inData(2, &rinkx, sizeof(int));
481 state_task->set_inData(3, &rinkf1, sizeof(int));
482
483 state_task->set_outData(0, p, sizeof(CHARACTER));
484 state_task->set_outData(1, &count, sizeof(int));
485 state_task->set_outData(2, &rinkx, sizeof(int));
486 state_task->set_outData(3, &rinkf1, sizeof(int));
487 state_task->set_outData(4, obj, 0);
488
489 state_task->set_post(checkContainer, (void*)p, (void*)obj);
490 state_task->set_cpu(SPE_ANY);
491 state_task->spawn();
492
493 return p;
494 }
495
496
497 CHARACTER*
498 Boss2Task2(CHARACTER *p)
499 {
500 int task_num = p->task;
501 int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH;
502 HTaskPtr state_task = tmanager->create_task(task_num);
503 ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size);
504 obj->flag = false;
505 obj->length = 0;
506
507 state_task->set_param(0, (memaddr)enemy_part3->f);
508 state_task->set_param(1, (memaddr)enemy_part4->f);
509 state_task->set_param(2, (memaddr)enemystate[14].charano);
510 state_task->set_param(3, (memaddr)enemystate[20].charano);
511
512 state_task->set_inData(0, p, sizeof(CHARACTER));
513 state_task->set_inData(1, kyeenemyno, sizeof(CHARACTER));
514 state_task->set_inData(2, &count, sizeof(int));
515 state_task->set_inData(3, &rinkf1, sizeof(int));
516 state_task->set_inData(4, bchar, sizeof(bomchar)*100);
517
518 state_task->set_outData(0, p, sizeof(CHARACTER));
519 state_task->set_outData(1, &count, sizeof(int));
520 state_task->set_outData(2, &rinkx, sizeof(int));
521 state_task->set_outData(3, &rinkf1, sizeof(int));
522 state_task->set_outData(4, obj, 0);
389 523
390 state_task->set_post(checkContainer, (void*)p, (void*)obj); 524 state_task->set_post(checkContainer, (void*)p, (void*)obj);
391 state_task->set_cpu(SPE_ANY); 525 state_task->set_cpu(SPE_ANY);
392 state_task->spawn(); 526 state_task->spawn();
393 527
485 { 619 {
486 tekino0 = p; 620 tekino0 = p;
487 kyeenemyno = p; 621 kyeenemyno = p;
488 622
489 p->task = STATE8; 623 p->task = STATE8;
490 return BossTask1(p); 624 return Boss1Task1(p);
491 } 625 }
492 626
493 627
494 CHARACTER* 628 CHARACTER*
495 chara_state9(CHARACTER *p) 629 chara_state9(CHARACTER *p)
496 { 630 {
497 p->task = STATE9; 631 p->task = STATE9;
498 return BossTask2(p); 632 return Boss1Task2(p);
499 } 633 }
500 634
501 635
502 CHARACTER* 636 CHARACTER*
503 chara_state10(CHARACTER *p) 637 chara_state10(CHARACTER *p)
504 { 638 {
505 p->task =STATE10; 639 p->task =STATE10;
506 return BossTask3(p); 640 return Boss1Task3(p);
507 } 641 }
508 642
509 643
510 CHARACTER* 644 CHARACTER*
511 chara_state11(CHARACTER *p) 645 chara_state11(CHARACTER *p)
512 { 646 {
513 p->task = STATE11; 647 p->task = STATE11;
514 return BossTask4(p); 648 return Boss1Task4(p);
515 } 649 }
516 650
517 651
518 CHARACTER* 652 CHARACTER*
519 chara_state12(CHARACTER *p) 653 chara_state12(CHARACTER *p)
520 { 654 {
521 p->task = STATE12; 655 p->task = STATE12;
522 return BossTask5(p); 656 return Boss1Task5(p);
523 } 657 }
524 658
525 659
526 CHARACTER* 660 CHARACTER*
527 chara_state13(CHARACTER *p) 661 chara_state13(CHARACTER *p)
528 { 662 {
529 p->task = STATE13; 663 p->task = STATE13;
530 return BossTask6(p); 664 return Boss1Task6(p);
531 } 665 }
532 666
533 667
534 CHARACTER* 668 CHARACTER*
535 chara_state20(CHARACTER *p) 669 chara_state20(CHARACTER *p)
546 return SimpleStateTask(p); 680 return SimpleStateTask(p);
547 } 681 }
548 //ここまでgetate boss 682 //ここまでgetate boss
549 683
550 684
551 CHARACTER * chara_state22(CHARACTER *p) 685 CHARACTER*
552 { 686 chara_state22(CHARACTER *p)
687 {
688 p->task = STATE22;
553 return SimpleStateTask(p); 689 return SimpleStateTask(p);
554 } 690 }
555 691
556 692
557 CHARACTER * chara_state23(CHARACTER *p) 693 CHARACTER*
558 { 694 chara_state23(CHARACTER *p)
559 // p=asteroid(p); 695 {
560 return p; 696 p->task = STATE23;
561 } 697 return AsteroidTask(p);
562 698 }
563 699
564 #if 0 700
565 CHARACTER * chara_state24(CHARACTER *p) 701 CHARACTER*
566 { 702 chara_state24(CHARACTER *p)
567 kyeenemyno = p; 703 {
568 tekino0 = 0; 704 kyeenemyno = p;
569 enemy_part1 = p->next; 705 tekino0 = 0;
570 enemy_part2 = enemy_part1->next; 706 enemy_part1 = p->next;
571 enemy_part3 = enemy_part2->next; 707 enemy_part2 = enemy_part1->next;
572 enemy_part4 = enemy_part3->next; 708 enemy_part3 = enemy_part2->next;
573 enemy_part5 = enemy_part4->next; 709 enemy_part4 = enemy_part3->next;
574 rinkx = 0; 710 enemy_part5 = enemy_part4->next;
575 rinky = 0; 711 rinkx = 0;
576 rinkf1 = 0; 712 rinky = 0;
577 rinkf2 = 0; 713 rinkf1 = 0;
578 p->state = chara_state25; 714 rinkf2 = 0;
579 return p; 715 p->task = STATE25;
580 } 716
581 717 int num = GetStateNum(p->task);
582 CHARACTER * chara_state25(CHARACTER *p) 718 p->state = state_list[num];
583 { 719 return p;
584 int amari; 720 }
585 721
586 if(p->dt1 <= 360) 722 CHARACTER*
587 { 723 chara_state25(CHARACTER *p)
588 p->x = Mycos(p->dt1) * 30 / SANKAKU + 82 + 32; 724 {
589 p->y = Mysin(p->dt1) * 30 / SANKAKU + 30; 725 p->task = STATE25;
590 } 726 return Boss2Task1(p);
591 if(p->dt1 > 360) 727 }
592 { 728
593 p->x = Mycos(p->dt1) * 30 * -1 /SANKAKU + 142 + 32; 729 CHARACTER*
594 p->y = Mysin(p->dt1) * 30 / SANKAKU + 30; 730 chara_state26(CHARACTER *p)
595 } 731 {
596 count++; 732 p->task = STATE26;
597 PutSprite(count, p->x - 42, p->y, 64); 733 return Boss2Task1(p);
598 amari = rand() % 160; 734 }
599 if((amari == 1) && (enemy_part5->f == TRUE)) 735
600 { 736 CHARACTER*
601 p->state = chara_state26; 737 chara_state27(CHARACTER *p) //rocket punch
602 rinkf1 = 1; 738 {
603 } 739 p->task = STATE27;
604 if((amari == 2) && (enemy_part1->f == TRUE)) 740 return Boss2Task1(p);
605 { 741 }
606 p->state = chara_state27; 742 CHARACTER*
607 rinkf1 = 5; 743 chara_state28(CHARACTER *p)
608 rinkx = 0; 744 {
609 return p; 745 p->task = STATE28;
610 } 746 return Boss2Task1(p);
611 if((enemy_part5->f == TRUE) && (enemy_part1->f != TRUE)) 747 }
612 { 748
613 p->state = chara_state28; 749
614 } 750 CHARACTER*
615 p->dt1 += 3; 751 chara_state29(CHARACTER *p)
616 if(p->dt1 == 720) 752 {
617 { 753 p->task = STATE29;
618 p->dt1 = 0; 754 return sendContainerTask(p);
619 } 755 }
620 return p; 756
621 } 757
622 758 CHARACTER*
623 CHARACTER * chara_state26(CHARACTER *p) 759 chara_state30(CHARACTER *p)
624 {
625 if((p->dt2 > 50) && (p->dt2 < 100))
626 {
627 rinkf1 = 2;
628 }
629 if(p->dt2 > 100)
630 {
631 rinkf1 = 3;
632 }
633 if(p->dt2 == 400)
634 {
635 rinkf1 = 4;
636 }
637 count++;
638 PutSprite(count, p->x - 42, p->y, 64);
639 if(p->dt2 == 401)
640 {
641 p->dt2 = 0;
642 rinkf1 = 0;
643 p->state = chara_state25;
644 return p;
645 }
646 p->dt2++;
647 return p;
648 }
649
650 CHARACTER * chara_state27(CHARACTER *p) //rocket punch
651 {
652 if((p->dt2 > 50) && (p->dt2 < 60) && (p->x > -24) && (p->y > -24))
653 {
654 rinkf1 = 6;
655 rinkx -= 4;
656 p->x -= 4;
657 p->y -= 4;
658 }
659 if(p->dt2 == 80)
660 {
661 rinkf1 = 7;
662 }
663 if(p->dt2 == 81)
664 {
665 rinkf1 = 8;
666 }
667 if(p->dt2 == 124)
668 {
669 rinkf1 = 9;
670 }
671 if(p->dt2 == 400)
672 {
673 rinkf1 = 10;
674 }
675 if(p->dt2 == 444)
676 {
677 rinkf1 = 11;
678 }
679 if(p->dt2 == 500)
680 {
681 rinkf1 = 12;
682 }
683 if((p->dt2 > 80) && (p->dt2 < 200))
684 {
685 if((rinkx != 0) && (p->dt2 % 2 == 1))
686 {
687 rinkx++;
688 p->x++;
689 p->y++;
690 }
691 }
692 count++;
693 PutSprite(count, p->x - 32, p->y, 6);
694 if(rinkf1 == 12)
695 {
696 p->dt2 = 0;
697 rinkf1 = 0;
698 rinkx = 0;
699 p->state = chara_state25;
700 return p;
701 }
702 p->dt2++;
703 return p;
704 }
705 CHARACTER * chara_state28(CHARACTER *p)
706 {
707 if (p->dt1 <= 360)
708 {
709 p->x = Mycos(p->dt1) * 30 / SANKAKU + 82 + 32;
710 p->y = Mysin(p->dt1) * 30 / SANKAKU + 30;
711 }
712 if (p->dt1 > 360)
713 {
714 p->x = Mycos(p->dt1) * 30 * -1 / SANKAKU + 142 + 32;
715 p->y = Mysin(p->dt1) * 30 / SANKAKU + 30;
716 }
717 count++;
718 PutSprite(count, p->x - 42, p->y, 64);
719 if (p->dt1 % 30 == 3)
720 {
721 Putenemy(24, p->x + 14,
722 p->y + 14,
723 (rand() % 5 + 0.5) * (rand() % 2 ==
724 1 ? -1 : 1),
725 (rand() % 5 + 0.5) * (rand() % 2 ==
726 1 ? -1 : 1), chara_state29);
727 }
728 p->dt1 += 3;
729 return p;
730 }
731
732
733 CHARACTER * chara_state29(CHARACTER *p)
734 {
735 p->x += p->vx;
736 p->y += p->vy;
737 if(p->dt1 % 18 == 1)
738 {
739 Puttama(0, p->x, p->y);
740 }
741 p->dt1++;
742 return p;
743 }
744 #endif
745
746 CHARACTER * chara_state30(CHARACTER *p)
747 { 760 {
748 p->task = STATE30; 761 p->task = STATE30;
749 return SimpleStateTask(p); 762 return SimpleStateTask(p);
750 } 763 }
751 764
765
766 CHARACTER*
767 chara_state31(CHARACTER *p) //right hand
768 {
769 p->task = STATE31;
770 return Boss2Task2(p);
771 }
772
773
774 CHARACTER*
775 chara_state32(CHARACTER *p) //left hand
776 {
777 p->task = STATE32;
778 return Boss2Task2(p);
779 }
780
781
752 #if 0 782 #if 0
753 CHARACTER * chara_state31(CHARACTER *p) //right hand
754 {
755
756 if((enemy_part3->f == FALSE) || (kyeenemyno->f == FALSE))
757 {
758 Bom(p->x, p->y);
759 p->f = FALSE;
760 p->state = delete_chara;
761 p->collision = noaction;
762 return p;
763 }
764
765 if(rinkf1 == 0)
766 {
767 p->x = kyeenemyno->x + 40;
768 p->y = kyeenemyno->y + 28;
769 p->dt2 = 0;
770 }
771 if(rinkf1 == 5)
772 {
773 p->x = kyeenemyno->x + 52;
774 p->y = kyeenemyno->y;
775 count++;
776 PutSprite(count, p->x - 4, p->y - 20, 80 + p->dt2 % 4);
777 p->dt2++;
778 }
779 if(rinkf1 == 6)
780 {
781 if(p->y < 240 - 40)
782 {
783 p->y += 6;
784 }
785 else
786 {
787 return p;
788 }
789 count++;
790 PutSprite(count, p->x - 4, p->y - 20, 90 + p->dt2 % 4);
791 p->dt2++;
792 }
793 if(rinkf1 == 7)
794 {
795 Putenemy(22, p->x + 14, p->y + 14, 0, 0, chara_state40);
796 return p;
797 }
798 if(rinkf1 == 11)
799 {
800 if(p->y + 20 != p->y)
801 {
802 p->y--;
803 }
804 else
805 {
806 return p;
807 }
808 count++;
809 PutSprite(count, p->x + 8, p->y + 44, 58 + p->dt2 % 4);
810 p->dt2++;
811 }
812 return p;
813 }
814
815
816 CHARACTER * chara_state32(CHARACTER *p) //left hand
817 {
818 if ((enemy_part4->f == FALSE)
819 || (kyeenemyno->f == FALSE))
820 {
821 Bom(p->x, p->y);
822 p->f = FALSE;
823 p->state = delete_chara;
824 p->collision = noaction;
825 return p;
826 }
827 p->x = kyeenemyno->x - 40;
828 p->y = kyeenemyno->y + 28;
829 if (rinkf1 == 5)
830 {
831 p->x = kyeenemyno->x - 24 + 4;
832 p->y = kyeenemyno->y + 28;
833 p->charano = enemystate[20].charano;
834 }
835 if (rinkf1 == 11)
836 {
837 p->charano = enemystate[14].charano;
838 }
839 if (rinkf1 == 7)
840 {
841 Putenemy(23, p->x + 14,
842 p->y + 14, 0, 0, chara_state41);
843 // rinkf1=8;
844 return p;
845 }
846 return p;
847 }
848
849
850 CHARACTER * chara_state33(CHARACTER *p) // right shoulder 783 CHARACTER * chara_state33(CHARACTER *p) // right shoulder
851 { 784 {
852 if (kyeenemyno->f == FALSE) 785 if (kyeenemyno->f == FALSE)
853 { 786 {
854 Bom(p->x, p->y); 787 Bom(p->x, p->y);
1049 } 982 }
1050 } 983 }
1051 p->dt1++; 984 p->dt1++;
1052 return p; 985 return p;
1053 } 986 }
987 #endif
1054 988
1055 989
1056 CHARACTER * chara_state400(CHARACTER *p) 990 CHARACTER * chara_state400(CHARACTER *p)
1057 { 991 {
992 p->task = STATE400;
1058 return SimpleStateTask(p); 993 return SimpleStateTask(p);
1059 } 994 }
1060 995
1061 996
1062 CHARACTER * chara_state401(CHARACTER *p) 997 CHARACTER*
1063 { 998 chara_state401(CHARACTER *p)
1064 p->vx++; 999 {
1065 p->x += p->vx / 8; 1000 p->task = STATE401;
1066 if (p->x > (jiki.x - 32)) 1001 return JikiContainerTask(p);
1067 { 1002 }
1068 p->vy--; 1003
1069 } 1004
1070 p->y += p->vy / 8; 1005 CHARACTER*
1071 if (p->dt1 % 50 == 37) 1006 chara_state402(CHARACTER *p)
1072 { 1007 {
1073 Puttama(1, p->x + 8, p->y + 24); 1008 p->task = STATE402;
1074 } 1009 return JikiContainerTask(p);
1075 p->dt1++; 1010 }
1076 return p; 1011
1077 } 1012
1078 1013 #if 0
1079
1080 CHARACTER * chara_state402(CHARACTER *p)
1081 {
1082 p->vx--;
1083 p->x += p->vx / 8;
1084 if (p->x < (jiki.x + 32))
1085 {
1086 p->vy--;
1087 }
1088 p->y += p->vy / 8;
1089 if (p->dt1 % 50 == 37)
1090 {
1091 Puttama(1, p->x + 8, p->y + 24);
1092 }
1093 p->dt1++;
1094 return p;
1095 }
1096
1097
1098 CHARACTER * chara_state410(CHARACTER *p) 1014 CHARACTER * chara_state410(CHARACTER *p)
1099 { 1015 {
1100 kyeenemyno = p; 1016 kyeenemyno = p;
1101 p->state = chara_state411; 1017 p->state = chara_state411;
1102 return p; 1018 return p;
1263 p->dt2 = 0; 1179 p->dt2 = 0;
1264 } 1180 }
1265 return p; 1181 return p;
1266 } 1182 }
1267 1183
1268
1269 CHARACTER * asteroid(CHARACTER *p)
1270 {
1271 int i;
1272
1273 asteroiddt[asteroidi] = p;
1274 // if(asteroidi==0)
1275 // {
1276 p->x += p->vx;
1277 p->y += p->vy;
1278 // }
1279 if (asteroidi > 0) {
1280 for (i = 0; i < asteroidi; i++) {
1281 if ((asteroiddt[i]->x + 32 > p->x)
1282 && (p->x + 32 > asteroiddt[i]->x)
1283 && (asteroiddt[i]->y + 32 > p->y)
1284 && (asteroiddt[i]->y < p->y + 32)) {
1285 p->vx *= -1;
1286 p->vy *= -1;
1287 }
1288 }
1289 }
1290 asteroidi++;
1291 return p;
1292 }
1293 #endif 1184 #endif