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 }