Mercurial > hg > Members > koba > t_dandy
comparison state_task.cc @ 58:e0018f39f7e1
fix random func.
author | koba <koba@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 06 Feb 2011 17:49:33 +0900 |
parents | 978097c6427a |
children | cd05eee90279 |
comparison
equal
deleted
inserted
replaced
57:978097c6427a | 58:e0018f39f7e1 |
---|---|
19 #include "debug_db.h" | 19 #include "debug_db.h" |
20 #include "StateList.h" | 20 #include "StateList.h" |
21 #include "collision_task.h" | 21 #include "collision_task.h" |
22 | 22 |
23 | 23 |
24 extern DebugDB dtable[DEFOBJ]; | |
25 extern SpriteTable sptable[DEFOBJ]; | 24 extern SpriteTable sptable[DEFOBJ]; |
26 extern TaskManager *tmanager; | 25 extern TaskManager *tmanager; |
27 | 26 |
28 CHARACTER *kyeenemyno = NULL; | 27 CHARACTER *kyeenemyno = NULL; |
29 CHARACTER *tekino0 = NULL; | 28 CHARACTER *tekino0 = NULL; |
187 state_task->spawn(); | 186 state_task->spawn(); |
188 | 187 |
189 return p; | 188 return p; |
190 } | 189 } |
191 | 190 |
192 static int myrand = 1; | 191 |
193 | 192 CHARACTER* |
194 CHARACTER* | 193 sendRandomTask(CHARACTER *p) |
195 FixRandomTask(CHARACTER *p) | 194 { |
196 { | 195 int task_num = p->state_task; |
197 int task_num = p->state_task; | 196 HTaskPtr state_task = tmanager->create_task(task_num); |
198 HTaskPtr state_task = tmanager->create_task(task_num); | 197 |
199 | 198 state_task->set_param(0, (memaddr)random()); |
200 state_task->set_param(0, (memaddr)myrand); | 199 state_task->set_param(1, (memaddr)random()); |
200 state_task->set_param(2, (memaddr)random()); | |
201 state_task->set_param(3, (memaddr)random()); | |
201 | 202 |
202 state_task->set_inData(0, p, sizeof(CHARACTER)); | 203 state_task->set_inData(0, p, sizeof(CHARACTER)); |
203 | 204 |
204 state_task->set_outData(0, p, sizeof(CHARACTER)); | 205 state_task->set_outData(0, p, sizeof(CHARACTER)); |
205 | 206 |
508 obj->flag = false; | 509 obj->flag = false; |
509 obj->length = 0; | 510 obj->length = 0; |
510 | 511 |
511 state_task->set_param(0, (memaddr)enemy_part1->f); | 512 state_task->set_param(0, (memaddr)enemy_part1->f); |
512 state_task->set_param(1, (memaddr)enemy_part5->f); | 513 state_task->set_param(1, (memaddr)enemy_part5->f); |
513 state_task->set_param(2, (memaddr)myrand); | 514 state_task->set_param(2, (memaddr)random()); |
514 | 515 |
515 state_task->set_inData(0, p, sizeof(CHARACTER)); | 516 state_task->set_inData(0, p, sizeof(CHARACTER)); |
516 state_task->set_inData(1, &count, sizeof(int)); | 517 state_task->set_inData(1, &count, sizeof(int)); |
517 state_task->set_inData(2, &rinkx, sizeof(int)); | |
518 state_task->set_inData(3, &rinkf1, sizeof(int)); | |
519 | 518 |
520 state_task->set_outData(0, p, sizeof(CHARACTER)); | 519 state_task->set_outData(0, p, sizeof(CHARACTER)); |
521 state_task->set_outData(1, &count, sizeof(int)); | 520 state_task->set_outData(1, &count, sizeof(int)); |
522 state_task->set_outData(2, &rinkx, sizeof(int)); | 521 state_task->set_outData(2, &rinkx, sizeof(int)); |
523 state_task->set_outData(3, &rinkf1, sizeof(int)); | 522 state_task->set_outData(3, &rinkf1, sizeof(int)); |
532 return p; | 531 return p; |
533 } | 532 } |
534 | 533 |
535 | 534 |
536 CHARACTER* | 535 CHARACTER* |
537 Boss2Task2(CHARACTER *p, int num1, int num2) | 536 Boss2Task2(CHARACTER *p) |
537 { | |
538 int task_num = p->state_task; | |
539 int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH; | |
540 HTaskPtr state_task = tmanager->create_task(task_num); | |
541 ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size); | |
542 obj->flag = false; | |
543 obj->length = 0; | |
544 | |
545 state_task->set_inData(0, p, sizeof(CHARACTER)); | |
546 state_task->set_inData(1, &count, sizeof(int)); | |
547 state_task->set_inData(2, &rinkx, sizeof(int)); | |
548 state_task->set_inData(3, &rinkf1, sizeof(int)); | |
549 | |
550 state_task->set_outData(0, p, sizeof(CHARACTER)); | |
551 state_task->set_outData(1, &count, sizeof(int)); | |
552 state_task->set_outData(2, &rinkx, sizeof(int)); | |
553 state_task->set_outData(3, &rinkf1, sizeof(int)); | |
554 state_task->set_outData(4, obj, 0); | |
555 | |
556 state_task->set_post(checkContainer, (void*)p, (void*)obj); | |
557 state_task->set_cpu(get_cpunum()); | |
558 | |
559 state_next->wait_for(state_task); | |
560 state_task->spawn(); | |
561 | |
562 return p; | |
563 } | |
564 | |
565 static int myrand = 1; | |
566 | |
567 CHARACTER* | |
568 Boss2Task3(CHARACTER *p) | |
569 { | |
570 int task_num = p->state_task; | |
571 int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH; | |
572 HTaskPtr state_task = tmanager->create_task(task_num); | |
573 ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size); | |
574 obj->flag = false; | |
575 obj->length = 0; | |
576 | |
577 state_task->set_param(0, (memaddr)myrand); | |
578 | |
579 state_task->set_inData(0, p, sizeof(CHARACTER)); | |
580 state_task->set_inData(1, &count, sizeof(int)); | |
581 | |
582 state_task->set_outData(0, p, sizeof(CHARACTER)); | |
583 state_task->set_outData(1, &count, sizeof(int)); | |
584 state_task->set_outData(2, obj, 0); | |
585 | |
586 state_task->set_post(checkContainer, (void*)p, (void*)obj); | |
587 state_task->set_cpu(get_cpunum()); | |
588 | |
589 state_next->wait_for(state_task); | |
590 state_task->spawn(); | |
591 | |
592 return p; | |
593 } | |
594 | |
595 | |
596 CHARACTER* | |
597 Boss2Task4(CHARACTER *p, int num1, int num2) | |
538 { | 598 { |
539 int task_num = p->state_task; | 599 int task_num = p->state_task; |
540 int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH; | 600 int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH; |
541 HTaskPtr state_task = tmanager->create_task(task_num); | 601 HTaskPtr state_task = tmanager->create_task(task_num); |
542 ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size); | 602 ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size); |
547 state_task->set_param(1, (memaddr)enemy_part2->f); | 607 state_task->set_param(1, (memaddr)enemy_part2->f); |
548 state_task->set_param(2, (memaddr)enemy_part3->f); | 608 state_task->set_param(2, (memaddr)enemy_part3->f); |
549 state_task->set_param(3, (memaddr)enemy_part4->f); | 609 state_task->set_param(3, (memaddr)enemy_part4->f); |
550 state_task->set_param(4, (memaddr)enemystate[num1].charano); | 610 state_task->set_param(4, (memaddr)enemystate[num1].charano); |
551 state_task->set_param(5, (memaddr)enemystate[num2].charano); | 611 state_task->set_param(5, (memaddr)enemystate[num2].charano); |
552 state_task->set_param(6, (memaddr)myrand); | |
553 | 612 |
554 state_task->set_inData(0, p, sizeof(CHARACTER)); | 613 state_task->set_inData(0, p, sizeof(CHARACTER)); |
555 state_task->set_inData(1, kyeenemyno, sizeof(CHARACTER)); | 614 state_task->set_inData(1, kyeenemyno, sizeof(CHARACTER)); |
556 state_task->set_inData(2, &count, sizeof(int)); | 615 state_task->set_inData(2, &count, sizeof(int)); |
557 state_task->set_inData(3, &rinkf1, sizeof(int)); | 616 state_task->set_inData(3, &rinkf1, sizeof(int)); |
569 return p; | 628 return p; |
570 } | 629 } |
571 | 630 |
572 | 631 |
573 CHARACTER* | 632 CHARACTER* |
633 Boss2Task5(CHARACTER *p, int num1, int num2) | |
634 { | |
635 int task_num = p->state_task; | |
636 int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH; | |
637 HTaskPtr state_task = tmanager->create_task(task_num); | |
638 ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size); | |
639 obj->flag = false; | |
640 obj->length = 0; | |
641 | |
642 state_task->set_param(0, (memaddr)enemy_part1->f); | |
643 state_task->set_param(1, (memaddr)enemy_part2->f); | |
644 state_task->set_param(2, (memaddr)enemy_part3->f); | |
645 state_task->set_param(3, (memaddr)enemy_part4->f); | |
646 state_task->set_param(4, (memaddr)enemystate[num1].charano); | |
647 state_task->set_param(5, (memaddr)enemystate[num2].charano); | |
648 | |
649 state_task->set_inData(0, p, sizeof(CHARACTER)); | |
650 state_task->set_inData(1, kyeenemyno, sizeof(CHARACTER)); | |
651 state_task->set_inData(3, &rinkf2, sizeof(int)); | |
652 | |
653 state_task->set_outData(0, p, sizeof(CHARACTER)); | |
654 state_task->set_outData(1, obj, 0); | |
655 | |
656 state_task->set_post(checkContainer, (void*)p, (void*)obj); | |
657 state_task->set_cpu(get_cpunum()); | |
658 | |
659 state_next->wait_for(state_task); | |
660 state_task->spawn(); | |
661 | |
662 return p; | |
663 } | |
664 | |
665 | |
666 CHARACTER* | |
574 Boss4Task(CHARACTER *p) | 667 Boss4Task(CHARACTER *p) |
575 { | 668 { |
576 kyeenemyno = p; | 669 kyeenemyno = p; |
577 | 670 |
578 int task_num = p->state_task; | 671 int task_num = p->state_task; |
600 return p; | 693 return p; |
601 } | 694 } |
602 | 695 |
603 | 696 |
604 CHARACTER* | 697 CHARACTER* |
605 Boss5Task(CHARACTER *p) | 698 Boss5Task1(CHARACTER *p) |
606 { | 699 { |
607 int task_num = p->state_task; | 700 int task_num = p->state_task; |
608 int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH; | 701 int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH; |
609 HTaskPtr state_task = tmanager->create_task(task_num); | 702 HTaskPtr state_task = tmanager->create_task(task_num); |
610 ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size); | 703 ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size); |
611 obj->flag = false; | 704 obj->flag = false; |
612 obj->length = 0; | 705 obj->length = 0; |
613 | 706 |
614 state_task->set_param(0, (memaddr)myrand); | 707 state_task->set_param(0, (memaddr)random()); |
708 state_task->set_param(1, (memaddr)random()); | |
615 | 709 |
616 state_task->set_inData(0, p, sizeof(CHARACTER)); | 710 state_task->set_inData(0, p, sizeof(CHARACTER)); |
617 state_task->set_inData(1, &jiki, sizeof(player)); | 711 state_task->set_inData(1, &jiki, sizeof(player)); |
618 | 712 |
619 state_task->set_outData(0, p, sizeof(CHARACTER)); | 713 state_task->set_outData(0, p, sizeof(CHARACTER)); |
628 return p; | 722 return p; |
629 } | 723 } |
630 | 724 |
631 | 725 |
632 CHARACTER* | 726 CHARACTER* |
727 Boss5Task2(CHARACTER *p) | |
728 { | |
729 int task_num = p->state_task; | |
730 int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH; | |
731 HTaskPtr state_task = tmanager->create_task(task_num); | |
732 ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size); | |
733 obj->flag = false; | |
734 obj->length = 0; | |
735 | |
736 state_task->set_param(0, (memaddr)random()); | |
737 state_task->set_param(1, (memaddr)random()); | |
738 state_task->set_param(2, (memaddr)random()); | |
739 state_task->set_param(3, (memaddr)random()); | |
740 | |
741 state_task->set_inData(0, p, sizeof(CHARACTER)); | |
742 state_task->set_inData(1, &jiki, sizeof(player)); | |
743 | |
744 state_task->set_outData(0, p, sizeof(CHARACTER)); | |
745 state_task->set_outData(1, obj, 0); | |
746 | |
747 state_task->set_post(checkContainer, (void*)p, (void*)obj); | |
748 state_task->set_cpu(get_cpunum()); | |
749 | |
750 state_next->wait_for(state_task); | |
751 state_task->spawn(); | |
752 | |
753 return p; | |
754 } | |
755 | |
756 | |
757 CHARACTER* | |
633 noaction(CHARACTER *p) | 758 noaction(CHARACTER *p) |
634 { | 759 { |
635 return p; | 760 return p; |
636 } | 761 } |
637 | 762 |
638 | 763 |
639 CHARACTER* | 764 CHARACTER* |
640 delete_chara(CHARACTER *p) | 765 delete_chara(CHARACTER *p) |
641 { | 766 { |
642 if (p->tama == FALSE) { | |
643 printf("F%d: DELETE [NAME]%s_%d [COORD]x= %f y= %f vx= %f vy= %f\n", | |
644 filpcount, dtable[p->charano].name, p->chara_id, | |
645 p->x, p->y, p->vx, p->vy); | |
646 printf(" [TAMA]lv1 = %d, lv2 = %d [LASER]lv1 = %d\n", | |
647 tama_lv1_end, tama_lv2_end, laser_lv1_end); | |
648 } | |
649 | |
650 CHARACTER *parent = p; | 767 CHARACTER *parent = p; |
651 p->f = FALSE; | 768 p->f = FALSE; |
652 p->state = noaction; | 769 p->state = noaction; |
653 p->collision = noaction; | 770 p->collision = noaction; |
654 return parent; | 771 return parent; |
790 | 907 |
791 CHARACTER* | 908 CHARACTER* |
792 chara_state22(CHARACTER *p) | 909 chara_state22(CHARACTER *p) |
793 { | 910 { |
794 p->state_task = STATE22; | 911 p->state_task = STATE22; |
795 return FixRandomTask(p); | 912 return sendRandomTask(p); |
796 } | 913 } |
797 | 914 |
798 | 915 |
799 CHARACTER* | 916 CHARACTER* |
800 chara_state23(CHARACTER *p) | 917 chara_state23(CHARACTER *p) |
833 | 950 |
834 CHARACTER* | 951 CHARACTER* |
835 chara_state26(CHARACTER *p) | 952 chara_state26(CHARACTER *p) |
836 { | 953 { |
837 p->state_task = STATE26; | 954 p->state_task = STATE26; |
838 return Boss2Task1(p); | 955 return Boss2Task2(p); |
839 } | 956 } |
840 | 957 |
841 CHARACTER* | 958 CHARACTER* |
842 chara_state27(CHARACTER *p) //rocket punch | 959 chara_state27(CHARACTER *p) //rocket punch |
843 { | 960 { |
844 p->state_task = STATE27; | 961 p->state_task = STATE27; |
845 return Boss2Task1(p); | 962 return Boss2Task2(p); |
846 } | 963 } |
847 CHARACTER* | 964 CHARACTER* |
848 chara_state28(CHARACTER *p) | 965 chara_state28(CHARACTER *p) |
849 { | 966 { |
850 p->state_task = STATE28; | 967 p->state_task = STATE28; |
851 return Boss2Task1(p); | 968 //if many rand |
969 return Boss2Task3(p); | |
852 } | 970 } |
853 | 971 |
854 | 972 |
855 CHARACTER* | 973 CHARACTER* |
856 chara_state29(CHARACTER *p) | 974 chara_state29(CHARACTER *p) |
870 | 988 |
871 CHARACTER* | 989 CHARACTER* |
872 chara_state31(CHARACTER *p) //right hand | 990 chara_state31(CHARACTER *p) //right hand |
873 { | 991 { |
874 p->state_task = STATE31; | 992 p->state_task = STATE31; |
875 return Boss2Task2(p, 0, 0); | 993 return Boss2Task4(p, 0, 0); |
876 } | 994 } |
877 | 995 |
878 | 996 |
879 CHARACTER* | 997 CHARACTER* |
880 chara_state32(CHARACTER *p) //left hand | 998 chara_state32(CHARACTER *p) //left hand |
881 { | 999 { |
882 p->state_task = STATE32; | 1000 p->state_task = STATE32; |
883 return Boss2Task2(p, 14, 20); | 1001 return Boss2Task4(p, 14, 20); |
884 } | 1002 } |
885 | 1003 |
886 | 1004 |
887 | 1005 |
888 CHARACTER* | 1006 CHARACTER* |
889 chara_state33(CHARACTER *p) // right shoulder | 1007 chara_state33(CHARACTER *p) // right shoulder |
890 { | 1008 { |
891 p->state_task = STATE33; | 1009 p->state_task = STATE33; |
892 return Boss2Task2(p, 11, 19); | 1010 return Boss2Task4(p, 11, 19); |
893 } | 1011 } |
894 | 1012 |
895 | 1013 |
896 CHARACTER* | 1014 CHARACTER* |
897 chara_state34(CHARACTER *p) //left shoulder | 1015 chara_state34(CHARACTER *p) //left shoulder |
898 { | 1016 { |
899 p->state_task = STATE34; | 1017 p->state_task = STATE34; |
900 return Boss2Task2(p, 12, 21); | 1018 return Boss2Task4(p, 12, 21); |
901 } | 1019 } |
902 | 1020 |
903 | 1021 |
904 CHARACTER* | 1022 CHARACTER* |
905 chara_state35(CHARACTER *p) // bust | 1023 chara_state35(CHARACTER *p) // bust |
906 { | 1024 { |
907 p->state_task = STATE35; | 1025 p->state_task = STATE35; |
908 return Boss2Task2(p, 15, 16); | 1026 return Boss2Task4(p, 15, 16); |
909 } | 1027 } |
910 | 1028 |
911 | 1029 |
912 | 1030 |
913 CHARACTER* | 1031 CHARACTER* |
914 chara_state40(CHARACTER *p) //arm vulkan | 1032 chara_state40(CHARACTER *p) //arm vulkan |
915 { | 1033 { |
916 p->state_task = STATE40; | 1034 p->state_task = STATE40; |
917 return Boss2Task2(p, 0, 0); | 1035 return Boss2Task4(p, 0, 0); |
918 } | 1036 } |
919 | 1037 |
920 | 1038 |
921 CHARACTER* | 1039 CHARACTER* |
922 chara_state41(CHARACTER *p) //left arm up arm vulkan | 1040 chara_state41(CHARACTER *p) //left arm up arm vulkan |
923 { | 1041 { |
924 p->state_task = STATE41; | 1042 p->state_task = STATE41; |
925 return Boss2Task2(p, 0, 0); | 1043 //if rand |
1044 return Boss2Task5(p, 0, 0); | |
926 } | 1045 } |
927 | 1046 |
928 | 1047 |
929 CHARACTER* | 1048 CHARACTER* |
930 chara_state400(CHARACTER *p) | 1049 chara_state400(CHARACTER *p) |
996 | 1115 |
997 CHARACTER* | 1116 CHARACTER* |
998 chara_state601(CHARACTER *p) | 1117 chara_state601(CHARACTER *p) |
999 { | 1118 { |
1000 p->state_task = STATE601; | 1119 p->state_task = STATE601; |
1001 return Boss5Task(p); | 1120 return Boss5Task1(p); |
1002 } | 1121 } |
1003 | 1122 |
1004 | 1123 |
1005 CHARACTER* | 1124 CHARACTER* |
1006 chara_state602(CHARACTER *p) | 1125 chara_state602(CHARACTER *p) |
1007 { | 1126 { |
1008 p->state_task = STATE602; | 1127 p->state_task = STATE602; |
1009 return Boss5Task(p); | 1128 return Boss5Task2(p); |
1010 } | 1129 } |