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