Mercurial > hg > Members > koba > t_dandy
comparison state_task.cc @ 35:c122e3d2302e
add all state task.
author | koba <koba@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 09 Jan 2011 14:28:44 +0900 |
parents | 7aaaaf5dde40 |
children | 4516141d844a |
comparison
equal
deleted
inserted
replaced
34:7aaaaf5dde40 | 35:c122e3d2302e |
---|---|
86 SetTaskState(STATE28, chara_state28); | 86 SetTaskState(STATE28, chara_state28); |
87 SetTaskState(STATE29, chara_state29); | 87 SetTaskState(STATE29, chara_state29); |
88 SetTaskState(STATE30, chara_state30); | 88 SetTaskState(STATE30, chara_state30); |
89 SetTaskState(STATE31, chara_state31); | 89 SetTaskState(STATE31, chara_state31); |
90 SetTaskState(STATE32, chara_state32); | 90 SetTaskState(STATE32, chara_state32); |
91 #if 0 | |
92 SetTaskState(STATE33, chara_state33); | 91 SetTaskState(STATE33, chara_state33); |
93 SetTaskState(STATE34, chara_state34); | 92 SetTaskState(STATE34, chara_state34); |
94 SetTaskState(STATE35, chara_state35); | 93 SetTaskState(STATE35, chara_state35); |
95 SetTaskState(STATE40, chara_state40); | 94 SetTaskState(STATE40, chara_state40); |
96 SetTaskState(STATE41, chara_state41); | 95 SetTaskState(STATE41, chara_state41); |
97 #endif | 96 |
98 SetTaskState(STATE400, chara_state400); | 97 SetTaskState(STATE400, chara_state400); |
99 SetTaskState(STATE401, chara_state401); | 98 SetTaskState(STATE401, chara_state401); |
100 SetTaskState(STATE402, chara_state402); | 99 SetTaskState(STATE402, chara_state402); |
101 #if 0 | 100 |
102 SetTaskState(STATE410, chara_state410); | 101 SetTaskState(STATE410, chara_state410); |
103 SetTaskState(STATE411, chara_state411); | 102 SetTaskState(STATE411, chara_state411); |
103 | |
104 SetTaskState(STATE500, chara_state500); | 104 SetTaskState(STATE500, chara_state500); |
105 SetTaskState(STATE501, chara_state501); | 105 SetTaskState(STATE501, chara_state501); |
106 | |
106 SetTaskState(STATE600, chara_state600); | 107 SetTaskState(STATE600, chara_state600); |
107 SetTaskState(STATE601, chara_state601); | 108 SetTaskState(STATE601, chara_state601); |
108 SetTaskState(STATE602, chara_state602); | 109 SetTaskState(STATE602, chara_state602); |
109 #endif | |
110 } | 110 } |
111 | 111 |
112 void | 112 void |
113 updateState(SchedTask *s, void *chara, void *arg) | 113 updateState(SchedTask *s, void *chara, void *arg) |
114 { | 114 { |
493 return p; | 493 return p; |
494 } | 494 } |
495 | 495 |
496 | 496 |
497 CHARACTER* | 497 CHARACTER* |
498 Boss2Task2(CHARACTER *p) | 498 Boss2Task2(CHARACTER *p, int num1, int num2) |
499 { | 499 { |
500 int task_num = p->task; | 500 int task_num = p->task; |
501 int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH; | 501 int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH; |
502 HTaskPtr state_task = tmanager->create_task(task_num); | 502 HTaskPtr state_task = tmanager->create_task(task_num); |
503 ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size); | 503 ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size); |
504 obj->flag = false; | 504 obj->flag = false; |
505 obj->length = 0; | 505 obj->length = 0; |
506 | 506 |
507 state_task->set_param(0, (memaddr)enemy_part3->f); | 507 state_task->set_param(0, (memaddr)enemy_part1->f); |
508 state_task->set_param(1, (memaddr)enemy_part4->f); | 508 state_task->set_param(1, (memaddr)enemy_part2->f); |
509 state_task->set_param(2, (memaddr)enemystate[14].charano); | 509 state_task->set_param(2, (memaddr)enemy_part3->f); |
510 state_task->set_param(3, (memaddr)enemystate[20].charano); | 510 state_task->set_param(3, (memaddr)enemy_part4->f); |
511 state_task->set_param(4, (memaddr)enemystate[num1].charano); | |
512 state_task->set_param(5, (memaddr)enemystate[num2].charano); | |
511 | 513 |
512 state_task->set_inData(0, p, sizeof(CHARACTER)); | 514 state_task->set_inData(0, p, sizeof(CHARACTER)); |
513 state_task->set_inData(1, kyeenemyno, sizeof(CHARACTER)); | 515 state_task->set_inData(1, kyeenemyno, sizeof(CHARACTER)); |
514 state_task->set_inData(2, &count, sizeof(int)); | 516 state_task->set_inData(2, &count, sizeof(int)); |
515 state_task->set_inData(3, &rinkf1, sizeof(int)); | 517 state_task->set_inData(3, &rinkf1, sizeof(int)); |
516 state_task->set_inData(4, bchar, sizeof(bomchar)*100); | 518 state_task->set_inData(4, bchar, sizeof(bomchar)*100); |
517 | 519 |
518 state_task->set_outData(0, p, sizeof(CHARACTER)); | 520 state_task->set_outData(0, p, sizeof(CHARACTER)); |
519 state_task->set_outData(1, &count, sizeof(int)); | 521 state_task->set_outData(1, &count, sizeof(int)); |
520 state_task->set_outData(2, &rinkx, sizeof(int)); | 522 state_task->set_outData(2, obj, 0); |
521 state_task->set_outData(3, &rinkf1, sizeof(int)); | |
522 state_task->set_outData(4, obj, 0); | |
523 | 523 |
524 state_task->set_post(checkContainer, (void*)p, (void*)obj); | 524 state_task->set_post(checkContainer, (void*)p, (void*)obj); |
525 state_task->set_cpu(SPE_ANY); | 525 state_task->set_cpu(SPE_ANY); |
526 state_task->spawn(); | 526 state_task->spawn(); |
527 | 527 |
528 return p; | 528 return p; |
529 } | 529 } |
530 | 530 |
531 | 531 |
532 CHARACTER* | 532 CHARACTER* |
533 Boss4Task(CHARACTER *p) | |
534 { | |
535 kyeenemyno = p; | |
536 | |
537 int task_num = p->task; | |
538 int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH; | |
539 HTaskPtr state_task = tmanager->create_task(task_num); | |
540 ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size); | |
541 obj->flag = false; | |
542 obj->length = 0; | |
543 | |
544 state_task->set_inData(0, p, sizeof(CHARACTER)); | |
545 state_task->set_inData(1, &count, sizeof(int)); | |
546 | |
547 state_task->set_outData(0, p, sizeof(CHARACTER)); | |
548 state_task->set_outData(1, &count, sizeof(int)); | |
549 state_task->set_outData(2, obj, 0); | |
550 | |
551 state_task->set_post(checkContainer, (void*)p, (void*)obj); | |
552 state_task->set_cpu(SPE_ANY); | |
553 state_task->spawn(); | |
554 | |
555 return p; | |
556 } | |
557 | |
558 | |
559 CHARACTER* | |
533 noaction(CHARACTER *p) | 560 noaction(CHARACTER *p) |
534 { | 561 { |
535 p->state = noaction; | |
536 return p; | 562 return p; |
537 } | 563 } |
538 | 564 |
539 | 565 |
540 CHARACTER* | 566 CHARACTER* |
765 | 791 |
766 CHARACTER* | 792 CHARACTER* |
767 chara_state31(CHARACTER *p) //right hand | 793 chara_state31(CHARACTER *p) //right hand |
768 { | 794 { |
769 p->task = STATE31; | 795 p->task = STATE31; |
770 return Boss2Task2(p); | 796 return Boss2Task2(p, 0, 0); |
771 } | 797 } |
772 | 798 |
773 | 799 |
774 CHARACTER* | 800 CHARACTER* |
775 chara_state32(CHARACTER *p) //left hand | 801 chara_state32(CHARACTER *p) //left hand |
776 { | 802 { |
777 p->task = STATE32; | 803 p->task = STATE32; |
778 return Boss2Task2(p); | 804 return Boss2Task2(p, 14, 20); |
779 } | 805 } |
780 | 806 |
781 | 807 |
782 #if 0 | 808 |
783 CHARACTER * chara_state33(CHARACTER *p) // right shoulder | 809 CHARACTER* |
784 { | 810 chara_state33(CHARACTER *p) // right shoulder |
785 if (kyeenemyno->f == FALSE) | 811 { |
786 { | 812 p->task = STATE33; |
787 Bom(p->x, p->y); | 813 return Boss2Task2(p, 11, 19); |
788 p->f = FALSE; | 814 } |
789 p->state = delete_chara; | 815 |
790 p->collision = noaction; | 816 |
791 return p; | 817 CHARACTER* |
792 } | 818 chara_state34(CHARACTER *p) //left shoulder |
793 p->x = kyeenemyno->x + 32; | 819 { |
794 p->y = kyeenemyno->y; | 820 p->task = STATE34; |
795 if (rinkf1 == 5) | 821 return Boss2Task2(p, 12, 21); |
796 { | 822 } |
797 p->x = kyeenemyno->x + 32 - 4; | 823 |
798 p->y = kyeenemyno->y; | 824 |
799 p->charano = enemystate[19].charano; | 825 CHARACTER* |
800 } | 826 chara_state35(CHARACTER *p) // bust |
801 if (rinkf1 == 6) | 827 { |
802 { | 828 p->task = STATE35; |
803 p->charano = enemystate[11].charano; | 829 return Boss2Task2(p, 15, 16); |
804 } | 830 } |
805 return p; | 831 |
806 } | 832 |
807 | 833 |
808 | 834 CHARACTER* |
809 CHARACTER * chara_state34(CHARACTER *p) //left shoulder | 835 chara_state40(CHARACTER *p) //arm vulkan |
810 { | 836 { |
811 if (kyeenemyno->f == FALSE) | 837 p->task = STATE40; |
812 { | 838 return Boss2Task2(p, 0, 0); |
813 Bom(p->x, p->y); | 839 } |
814 p->f = FALSE; | 840 |
815 p->state = delete_chara; | 841 |
816 p->collision = noaction; | 842 CHARACTER* |
817 return p; | 843 chara_state41(CHARACTER *p) //left arm up arm vulkan |
818 } | 844 { |
819 p->x = kyeenemyno->x - 32; | 845 p->task = STATE41; |
820 p->y = kyeenemyno->y; | 846 return Boss2Task2(p, 0, 0); |
821 if (rinkf1 == 5) | 847 } |
822 { | |
823 p->charano = enemystate[21].charano; | |
824 } | |
825 if (rinkf1 == 6) | |
826 { | |
827 p->charano = enemystate[12].charano; | |
828 } | |
829 return p; | |
830 } | |
831 | |
832 CHARACTER * chara_state35(CHARACTER *p) // bust | |
833 { | |
834 if (kyeenemyno->f == FALSE) | |
835 { | |
836 Bom(p->x, p->y); | |
837 p->f = FALSE; | |
838 p->state = delete_chara; | |
839 p->collision = noaction; | |
840 return p; | |
841 } | |
842 p->x = kyeenemyno->x; | |
843 p->y = kyeenemyno->y + 32; | |
844 if (rinkf1 == 1) | |
845 { | |
846 p->charano = enemystate[16].charano; | |
847 } | |
848 if (rinkf1 == 2) | |
849 { | |
850 count++; | |
851 PutSprite(count, p->x - 10, | |
852 p->y + 16, | |
853 58 + p->dt2 % 4); | |
854 count++; | |
855 PutSprite(count, p->x + 10, | |
856 p->y + 16, | |
857 58 + p->dt2 % 4); | |
858 p->dt2++; | |
859 } | |
860 if (rinkf1 == 3) | |
861 { | |
862 count++; | |
863 PutSprite(count, p->x - 10, | |
864 p->y + 16, | |
865 58 + p->dt2 % 4); | |
866 count++; | |
867 PutSprite(count, p->x + 10, | |
868 p->y + 16, | |
869 58 + p->dt2 % 4); | |
870 if (p->dt2 % 20 == 1) | |
871 { | |
872 Puttama(7, p->x, p->y + 16); | |
873 Puttama(7, p->x + 20, | |
874 p->y + 16); | |
875 } | |
876 p->dt2++; | |
877 } | |
878 if (rinkf1 == 4) { | |
879 p->charano = enemystate[15].charano; | |
880 p->dt2 = 0; | |
881 } | |
882 return p; | |
883 } | |
884 | |
885 | |
886 CHARACTER * chara_state40(CHARACTER *p) //arm vulkan | |
887 { | |
888 if (enemy_part1->f == FALSE) | |
889 { | |
890 Bom(p->x, p->y); | |
891 p->f = FALSE; | |
892 p->state = delete_chara; | |
893 p->collision = noaction; | |
894 return p; | |
895 } | |
896 if ((rinkf1 == 8) && (p->dt1 % 3 == 1)) | |
897 { | |
898 if ((p->dt2 < 16)) | |
899 { | |
900 p->dt2++; | |
901 DefSprite(76, "boss2_rightarm_b", 16, p->dt2, 480, boss); | |
902 } | |
903 else | |
904 { | |
905 // rinkf1=9; | |
906 return p; | |
907 } | |
908 } | |
909 if (rinkf1 == 9) | |
910 { | |
911 if (p->dt1 % 15 == 1) | |
912 { | |
913 Puttama(8, p->x, p->y); | |
914 } | |
915 } | |
916 if (rinkf1 == 10) | |
917 { | |
918 if (p->dt2 != 0) | |
919 { | |
920 p->dt2--; | |
921 DefSprite(76, "boss2_rightarm_b", 16, p->dt2, 480, boss); | |
922 } | |
923 else | |
924 { | |
925 p->f = FALSE; | |
926 p->state = delete_chara; | |
927 p->collision = noaction; | |
928 // rinkf1=11; | |
929 } | |
930 } | |
931 p->dt1++; | |
932 return p; | |
933 } | |
934 | |
935 | |
936 CHARACTER * chara_state41(CHARACTER *p) //left arm up arm vulkan | |
937 { | |
938 if (enemy_part2->f == FALSE) | |
939 { | |
940 Bom(p->x, p->y); | |
941 p->f = FALSE; | |
942 p->state = delete_chara; | |
943 p->collision = noaction; | |
944 return p; | |
945 } | |
946 p->x = kyeenemyno->x - 20 - 7; | |
947 p->y = kyeenemyno->y + 28 + 15; | |
948 if ((rinkf1 == 8) && (p->dt1 % 3 == 1)) | |
949 { | |
950 if ((p->dt2 < 16)) | |
951 { | |
952 p->dt2++; | |
953 DefSprite(77, "boss2_leftarmbattery", p->dt2, 16, 480, boss); /*左腕アップアーム砲 */ | |
954 } | |
955 else | |
956 { | |
957 rinkf1 = 9; | |
958 return p; | |
959 } | |
960 } | |
961 if (rinkf1 == 9) | |
962 { | |
963 if (p->dt1 % 15 == 1) | |
964 { | |
965 Puttama(9 + rand() % 2, p->x, p->y); | |
966 } | |
967 } | |
968 if (rinkf1 == 10) | |
969 { | |
970 if (p->dt2 != 0) | |
971 { | |
972 p->dt2--; | |
973 DefSprite(77, "boss2_leftarmbattery", p->dt2, 16, 480, boss); | |
974 } | |
975 else | |
976 { | |
977 p->f = FALSE; | |
978 p->state = delete_chara; | |
979 p->collision = noaction; | |
980 return p; | |
981 // rinkf1=11; | |
982 } | |
983 } | |
984 p->dt1++; | |
985 return p; | |
986 } | |
987 #endif | |
988 | 848 |
989 | 849 |
990 CHARACTER * chara_state400(CHARACTER *p) | 850 CHARACTER * chara_state400(CHARACTER *p) |
991 { | 851 { |
992 p->task = STATE400; | 852 p->task = STATE400; |
1008 p->task = STATE402; | 868 p->task = STATE402; |
1009 return JikiContainerTask(p); | 869 return JikiContainerTask(p); |
1010 } | 870 } |
1011 | 871 |
1012 | 872 |
1013 #if 0 | 873 CHARACTER* |
1014 CHARACTER * chara_state410(CHARACTER *p) | 874 chara_state410(CHARACTER *p) |
875 { | |
876 kyeenemyno = p; | |
877 p->task = STATE411; | |
878 | |
879 int num = GetStateNum(p->task); | |
880 p->state = state_list[num]; | |
881 return p; | |
882 } | |
883 | |
884 | |
885 CHARACTER* | |
886 chara_state411(CHARACTER *p) | |
887 { | |
888 p->task = STATE411; | |
889 return JikiContainerTask(p); | |
890 } | |
891 | |
892 | |
893 CHARACTER* | |
894 chara_state500(CHARACTER *p) | |
895 { | |
896 p->task = STATE500; | |
897 return Boss4Task(p); | |
898 } | |
899 | |
900 | |
901 CHARACTER* | |
902 chara_state501(CHARACTER *p) | |
903 { | |
904 p->task = STATE501; | |
905 return sendContainerTask(p); | |
906 } | |
907 | |
908 | |
909 CHARACTER* | |
910 chara_state600(CHARACTER *p) | |
1015 { | 911 { |
1016 kyeenemyno = p; | 912 kyeenemyno = p; |
1017 p->state = chara_state411; | 913 p->task = STATE600; |
1018 return p; | 914 return sendContainerTask(p); |
1019 } | 915 } |
1020 | 916 |
1021 | 917 |
1022 CHARACTER * chara_state411(CHARACTER *p) | 918 CHARACTER* |
1023 { | 919 chara_state601(CHARACTER *p) |
1024 if (p->dt2 > 356) | 920 { |
1025 { | 921 p->task = STATE601; |
1026 p->vx = -1; | 922 return JikiContainerTask(p); |
1027 } | 923 } |
1028 if (p->dt2 < -398) | 924 |
1029 { | 925 |
1030 p->vx = 1; | 926 CHARACTER* |
1031 } | 927 chara_state602(CHARACTER *p) |
1032 if ((p->dt1) % 62 == 0) | 928 { |
1033 Putenemy(41, | 929 p->task = STATE602; |
1034 p->x, | 930 return sendContainerTask(p); |
1035 p->y, | 931 } |
1036 (int) -Mycos(p->dt1 / 16) * 4 / | |
1037 SANKAKU, | |
1038 (int) -Mysin(p->dt1 / 16) * 4 / | |
1039 SANKAKU, chara_state7); | |
1040 if ((p->dt1) % 13 == 0) | |
1041 Puttama(11, p->x + 32, | |
1042 p->y + 32); | |
1043 | |
1044 p->dt2 += p->vx; | |
1045 p->dt1 += p->dt2 / 4; | |
1046 | |
1047 p->x = jiki.x - 16 + | |
1048 Mycos(p->dt1 / 16) * 128 / SANKAKU; | |
1049 p->y = jiki.y - 16 + | |
1050 Mysin(p->dt1 / 16) * 128 / SANKAKU; | |
1051 if (p->x < 0) | |
1052 { | |
1053 p->x = 0; | |
1054 } | |
1055 if (p->x > 260) | |
1056 { | |
1057 p->x = 260; | |
1058 } | |
1059 if (p->y < 0) | |
1060 { | |
1061 p->y = 0; | |
1062 } | |
1063 if (p->y > 232) | |
1064 { | |
1065 p->y = 232; | |
1066 } | |
1067 return p; | |
1068 } | |
1069 | |
1070 | |
1071 CHARACTER * chara_state500(CHARACTER *p) | |
1072 { | |
1073 p->s = 0; | |
1074 | |
1075 kyeenemyno = p; | |
1076 p->dt2++; | |
1077 p->dt2 %= 512; | |
1078 p->dt1++; | |
1079 count++; | |
1080 DefSpriteEx(100, 16, 16); | |
1081 // PutSprite(count, enemy[tekino].x + 16, | |
1082 // enemy[tekino].y + 16, 100); | |
1083 PutSpriteEx(100, p->x + 16, p->y + 16, 2, 2, p->dt1); | |
1084 | |
1085 if (p->dt1 % (5 + p->dt2 / 8) == 1) { | |
1086 if (rand() % 2 == 1) | |
1087 Putenemy(24, p->x, p->y, | |
1088 (rand() % 5 + 0.5) * (rand() % 2 == | |
1089 1 ? -1 : 1), | |
1090 (rand() % 5 + 0.5) * (rand() % 2 == | |
1091 1 ? -1 : 1), chara_state501); | |
1092 else | |
1093 Putenemy(rand() % 2 + 1, p->x, | |
1094 p->y, | |
1095 (int) Mycos(p->dt1 / 4) * 4 / | |
1096 SANKAKU, | |
1097 (int) -Mysin(p->dt1 / 4) * 4 / | |
1098 SANKAKU, chara_state501); | |
1099 } | |
1100 if (p->dt1 == 50) { | |
1101 /*Putenemy(44,0,0,1,1,411); */ | |
1102 } | |
1103 return p; | |
1104 } | |
1105 | |
1106 | |
1107 CHARACTER * chara_state501(CHARACTER *p) | |
1108 { | |
1109 p->x += p->vx; | |
1110 p->y += p->vy; | |
1111 if(p->dt1 % 32 == 1) | |
1112 { | |
1113 Puttama(11, p->x, p->y); | |
1114 } | |
1115 p->dt1++; | |
1116 return p; | |
1117 } | |
1118 | |
1119 | |
1120 CHARACTER * chara_state600(CHARACTER *p) | |
1121 { | |
1122 kyeenemyno = p; | |
1123 p->dt1 += 30; | |
1124 p->dt2++; | |
1125 p->dt1 %= 360; | |
1126 p->x += Mycos(p->dt1) * 4 / SANKAKU; | |
1127 p->y += Mysin(p->dt1) * 4 / SANKAKU; | |
1128 Puttama(11, p->x + 16, p->y + 16); | |
1129 Puttama(11, p->x + 32, p->y + 48); | |
1130 Puttama(11, p->x + 48, p->y + 16); | |
1131 if (p->dt2 > 240) | |
1132 p->state = chara_state601; | |
1133 if (p->x < 0) | |
1134 p->x = 0; | |
1135 if (p->x > 260) | |
1136 p->x = 260; | |
1137 if (p->y < 0) | |
1138 p->y = 0; | |
1139 if (p->y > 232) | |
1140 p->y = 232; | |
1141 return p; | |
1142 } | |
1143 | |
1144 | |
1145 CHARACTER * chara_state601(CHARACTER *p) | |
1146 { | |
1147 p->dt2++; | |
1148 if (p->x < jiki.x) | |
1149 p->vx++; | |
1150 if (p->x > jiki.x) | |
1151 p->vx--; | |
1152 p->x += p->vx; | |
1153 Putenemy(6, p->x + 16 + rand() % 32, | |
1154 p->y, 0, rand() % 4, chara_state400); | |
1155 if (p->x < 0) | |
1156 p->x = 0; | |
1157 if (p->x > 260) | |
1158 p->x = 260; | |
1159 if (p->y < 0) | |
1160 p->y = 0; | |
1161 if (p->y > 232) | |
1162 p->y = 232; | |
1163 if (p->dt2 > 800) { | |
1164 p->state = chara_state602; | |
1165 } | |
1166 return p; | |
1167 } | |
1168 | |
1169 | |
1170 CHARACTER * chara_state602(CHARACTER *p) | |
1171 { | |
1172 p->dt2++; | |
1173 Putenemy(24, p->x + 14, p->y + 14, | |
1174 (rand() % 5 + 0.5) * (rand() % 2 == 1 ? -1 : 1), | |
1175 (rand() % 5 + 0.5) * (rand() % 2 == 1 ? -1 : 1), | |
1176 chara_state29); | |
1177 if (p->dt2 > 1024) { | |
1178 p->state = chara_state600; | |
1179 p->dt2 = 0; | |
1180 } | |
1181 return p; | |
1182 } | |
1183 | |
1184 #endif |