diff 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
line wrap: on
line diff
--- a/state_task.cc	Fri Jan 07 23:19:05 2011 +0900
+++ b/state_task.cc	Sun Jan 09 14:28:44 2011 +0900
@@ -88,25 +88,25 @@
     SetTaskState(STATE30, chara_state30);
     SetTaskState(STATE31, chara_state31);
     SetTaskState(STATE32, chara_state32);
-#if 0
     SetTaskState(STATE33, chara_state33);
     SetTaskState(STATE34, chara_state34);
     SetTaskState(STATE35, chara_state35);
     SetTaskState(STATE40, chara_state40);
     SetTaskState(STATE41, chara_state41);
-#endif
+
     SetTaskState(STATE400, chara_state400);
     SetTaskState(STATE401, chara_state401);
     SetTaskState(STATE402, chara_state402);
-#if 0
+
     SetTaskState(STATE410, chara_state410);
     SetTaskState(STATE411, chara_state411);
+
     SetTaskState(STATE500, chara_state500);
     SetTaskState(STATE501, chara_state501);
+
     SetTaskState(STATE600, chara_state600);
     SetTaskState(STATE601, chara_state601);
     SetTaskState(STATE602, chara_state602);
-#endif
 }
 
 void
@@ -495,7 +495,7 @@
 
 
 CHARACTER*
-Boss2Task2(CHARACTER *p)
+Boss2Task2(CHARACTER *p, int num1, int num2)
 {
     int task_num = p->task;
     int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH;
@@ -504,10 +504,12 @@
     obj->flag = false;
     obj->length = 0;
 
-    state_task->set_param(0, (memaddr)enemy_part3->f);
-    state_task->set_param(1, (memaddr)enemy_part4->f);
-    state_task->set_param(2, (memaddr)enemystate[14].charano);
-    state_task->set_param(3, (memaddr)enemystate[20].charano);
+    state_task->set_param(0, (memaddr)enemy_part1->f);
+    state_task->set_param(1, (memaddr)enemy_part2->f);
+    state_task->set_param(2, (memaddr)enemy_part3->f);
+    state_task->set_param(3, (memaddr)enemy_part4->f);
+    state_task->set_param(4, (memaddr)enemystate[num1].charano);
+    state_task->set_param(5, (memaddr)enemystate[num2].charano);
 
     state_task->set_inData(0, p, sizeof(CHARACTER));
     state_task->set_inData(1, kyeenemyno, sizeof(CHARACTER));
@@ -517,9 +519,34 @@
     
     state_task->set_outData(0, p, sizeof(CHARACTER));
     state_task->set_outData(1, &count, sizeof(int));
-    state_task->set_outData(2, &rinkx, sizeof(int));
-    state_task->set_outData(3, &rinkf1, sizeof(int));
-    state_task->set_outData(4, obj, 0);
+    state_task->set_outData(2, obj, 0);
+
+    state_task->set_post(checkContainer, (void*)p, (void*)obj);
+    state_task->set_cpu(SPE_ANY);
+    state_task->spawn();
+    
+    return p;
+}
+
+
+CHARACTER*
+Boss4Task(CHARACTER *p)
+{
+    kyeenemyno = p;
+
+    int task_num = p->task;
+    int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH;
+    HTaskPtr state_task = tmanager->create_task(task_num);
+    ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size);
+    obj->flag = false;
+    obj->length = 0;
+
+    state_task->set_inData(0, p, sizeof(CHARACTER));
+    state_task->set_inData(1, &count, sizeof(int));
+    
+    state_task->set_outData(0, p, sizeof(CHARACTER));
+    state_task->set_outData(1, &count, sizeof(int));
+    state_task->set_outData(2, obj, 0);
 
     state_task->set_post(checkContainer, (void*)p, (void*)obj);
     state_task->set_cpu(SPE_ANY);
@@ -532,7 +559,6 @@
 CHARACTER*
 noaction(CHARACTER *p)
 {
-  p->state = noaction;
   return p;
 }
 
@@ -767,7 +793,7 @@
 chara_state31(CHARACTER *p) //right hand
 {
     p->task = STATE31;
-    return Boss2Task2(p);
+    return Boss2Task2(p, 0, 0);
 }
 
 
@@ -775,216 +801,50 @@
 chara_state32(CHARACTER *p) //left hand
 {
     p->task = STATE32;
-    return Boss2Task2(p);
+    return Boss2Task2(p, 14, 20);
 }
 
 
-#if 0
-CHARACTER * chara_state33(CHARACTER *p) // right shoulder
+
+CHARACTER*
+chara_state33(CHARACTER *p) // right shoulder
 {
-  if (kyeenemyno->f == FALSE)
-    {
-      Bom(p->x, p->y);
-      p->f = FALSE;
-      p->state = delete_chara;
-      p->collision = noaction;
-      return p;
-    }
-  p->x = kyeenemyno->x + 32;
-  p->y = kyeenemyno->y;
-  if (rinkf1 == 5)
-    {
-      p->x = kyeenemyno->x + 32 - 4;
-      p->y = kyeenemyno->y;
-      p->charano = enemystate[19].charano;
-    }
-  if (rinkf1 == 6)
-    {
-      p->charano = enemystate[11].charano;
-    }
-  return p;
+    p->task = STATE33;
+    return Boss2Task2(p, 11, 19);
+}
+
+
+CHARACTER*
+chara_state34(CHARACTER *p) //left shoulder
+{
+    p->task = STATE34;
+    return Boss2Task2(p, 12, 21);
 }
 
 
-CHARACTER * chara_state34(CHARACTER *p) //left shoulder
-{
-  if (kyeenemyno->f == FALSE)
-    {
-      Bom(p->x, p->y);
-      p->f = FALSE;
-      p->state = delete_chara;
-      p->collision = noaction;
-      return p;
-    }
-  p->x = kyeenemyno->x - 32;
-  p->y = kyeenemyno->y;
-  if (rinkf1 == 5)
-    {
-      p->charano = enemystate[21].charano;
-    }
-  if (rinkf1 == 6)
-    {
-      p->charano = enemystate[12].charano;
-    }
-  return p;
-}
-
-CHARACTER * chara_state35(CHARACTER *p) // bust
+CHARACTER*
+chara_state35(CHARACTER *p) // bust
 {
-  if (kyeenemyno->f == FALSE)
-    {
-      Bom(p->x, p->y);
-      p->f = FALSE;
-      p->state = delete_chara;
-      p->collision = noaction;
-      return p;
-    }
-  p->x = kyeenemyno->x;
-  p->y = kyeenemyno->y + 32;
-  if (rinkf1 == 1)
-    {
-      p->charano = enemystate[16].charano;
-    }
-  if (rinkf1 == 2)
-    {
-      count++;
-      PutSprite(count, p->x - 10,
-		p->y + 16,
-		58 + p->dt2 % 4);
-      count++;
-      PutSprite(count, p->x + 10,
-		p->y + 16,
-		58 + p->dt2 % 4);
-      p->dt2++;
-    }
-  if (rinkf1 == 3)
-    {
-      count++;
-      PutSprite(count, p->x - 10,
-		p->y + 16,
-		58 + p->dt2 % 4);
-      count++;
-      PutSprite(count, p->x + 10,
-		p->y + 16,
-		58 + p->dt2 % 4);
-      if (p->dt2 % 20 == 1)
-	{
-	  Puttama(7, p->x, p->y + 16);
-	  Puttama(7, p->x + 20,
-		  p->y + 16);
-	}
-    p->dt2++;
-  }
-  if (rinkf1 == 4) {
-    p->charano = enemystate[15].charano;
-    p->dt2 = 0;
-  }
-  return p;
+    p->task = STATE35;
+    return Boss2Task2(p, 15, 16);
 }
 
 
-CHARACTER * chara_state40(CHARACTER *p) //arm vulkan
+
+CHARACTER*
+chara_state40(CHARACTER *p) //arm vulkan
 {
-  if (enemy_part1->f == FALSE)
-    {
-      Bom(p->x, p->y);
-      p->f = FALSE;
-      p->state = delete_chara;
-      p->collision = noaction;
-      return p;
-    }
-  if ((rinkf1 == 8) && (p->dt1 % 3 == 1))
-    {
-      if ((p->dt2 < 16))
-	{
-	  p->dt2++;
-	  DefSprite(76, "boss2_rightarm_b", 16, p->dt2, 480, boss);
-	}
-      else
-	{
-	  //                                  rinkf1=9;
-	  return p;
-	}
-    }
-  if (rinkf1 == 9)
-    {
-      if (p->dt1 % 15 == 1)
-	{
-	  Puttama(8, p->x, p->y);
-	}
-    }
-  if (rinkf1 == 10)
-    {
-      if (p->dt2 != 0)
-	{
-	  p->dt2--;
-	  DefSprite(76, "boss2_rightarm_b", 16, p->dt2, 480, boss);
-	}
-      else
-	{
-	  p->f = FALSE;
-	  p->state = delete_chara;
-	  p->collision = noaction;
-	  //          rinkf1=11;
-	}
-    }
-  p->dt1++;
-  return p;
+    p->task = STATE40;
+    return Boss2Task2(p, 0, 0);
 }
 
 
-CHARACTER * chara_state41(CHARACTER *p) //left arm up arm vulkan
+CHARACTER*
+chara_state41(CHARACTER *p) //left arm up arm vulkan
 {
-  if (enemy_part2->f == FALSE)
-    {
-      Bom(p->x, p->y);
-      p->f = FALSE;
-      p->state = delete_chara;
-      p->collision = noaction;
-      return p;
-    }
-  p->x = kyeenemyno->x - 20 - 7;
-  p->y = kyeenemyno->y + 28 + 15;
-  if ((rinkf1 == 8) && (p->dt1 % 3 == 1))
-    {
-      if ((p->dt2 < 16))
-	{
-	  p->dt2++;
-	  DefSprite(77, "boss2_leftarmbattery", p->dt2, 16, 480, boss);	/*左腕アップアーム砲 */
-	}
-      else
-	{
-	  rinkf1 = 9;
-	  return p;
-	}
-    }
-  if (rinkf1 == 9)
-    {
-      if (p->dt1 % 15 == 1) 
-	{
-	  Puttama(9 + rand() % 2, p->x, p->y);
-	}
-    }
-  if (rinkf1 == 10)
-    {
-      if (p->dt2 != 0)
-	{
-	  p->dt2--;
-	  DefSprite(77, "boss2_leftarmbattery", p->dt2, 16, 480, boss);
-	}
-      else
-	{
-	  p->f = FALSE;
-	  p->state = delete_chara;
-	  p->collision = noaction;
-	  return p;
-	  //          rinkf1=11;
-	}
-    }
-  p->dt1++;
-  return p;
+    p->task = STATE41;
+    return Boss2Task2(p, 0, 0);
 }
-#endif
 
 
 CHARACTER * chara_state400(CHARACTER *p)
@@ -1010,175 +870,62 @@
 }
 
 
-#if 0
-CHARACTER * chara_state410(CHARACTER *p)
+CHARACTER*
+chara_state410(CHARACTER *p)
 {
-  kyeenemyno = p;
-  p->state = chara_state411;
-  return p;
+    kyeenemyno = p;
+    p->task = STATE411;
+    
+    int num = GetStateNum(p->task);
+    p->state = state_list[num];
+    return p;
 }
 
 
-CHARACTER * chara_state411(CHARACTER *p)
+CHARACTER*
+chara_state411(CHARACTER *p)
 {
-  if (p->dt2 > 356)
-    {
-      p->vx = -1;
-    }
-  if (p->dt2 < -398)
-    {
-      p->vx = 1;
-    }
-  if ((p->dt1) % 62 == 0)
-    Putenemy(41,
-	     p->x,
-	     p->y,
-	     (int) -Mycos(p->dt1 / 16) * 4 /
-	     SANKAKU,
-	     (int) -Mysin(p->dt1 / 16) * 4 /
-	     SANKAKU, chara_state7);
-  if ((p->dt1) % 13 == 0)
-    Puttama(11, p->x + 32,
-	    p->y + 32);
-  
-  p->dt2 += p->vx;
-  p->dt1 += p->dt2 / 4;
-  
-  p->x = jiki.x - 16 +
-    Mycos(p->dt1 / 16) * 128 / SANKAKU;
-  p->y = jiki.y - 16 +
-    Mysin(p->dt1 / 16) * 128 / SANKAKU;
-  if (p->x < 0)
-    {
-      p->x = 0;
-    }
-  if (p->x > 260)
-    {
-      p->x = 260;
-    }
-  if (p->y < 0)
-    {
-      p->y = 0;
-    }
-  if (p->y > 232)
-    {
-      p->y = 232;
-    }
-  return p;
+    p->task = STATE411;
+    return JikiContainerTask(p);
+}
+
+
+CHARACTER*
+chara_state500(CHARACTER *p)
+{
+    p->task = STATE500;
+    return Boss4Task(p);
 }
 
 
-CHARACTER * chara_state500(CHARACTER *p)
+CHARACTER*
+chara_state501(CHARACTER *p)
 {
-  p->s = 0;
-  
-  kyeenemyno = p;
-  p->dt2++;
-  p->dt2 %= 512;
-  p->dt1++;
-  count++;
-  DefSpriteEx(100, 16, 16);
-  //		PutSprite(count, enemy[tekino].x + 16,
-  //  enemy[tekino].y + 16, 100);
-  PutSpriteEx(100, p->x + 16, p->y + 16, 2, 2, p->dt1);
-  
-  if (p->dt1 % (5 + p->dt2 / 8) == 1) {
-    if (rand() % 2 == 1)
-      Putenemy(24, p->x, p->y,
-	       (rand() % 5 + 0.5) * (rand() % 2 ==
-				     1 ? -1 : 1),
-	       (rand() % 5 + 0.5) * (rand() % 2 ==
-				     1 ? -1 : 1), chara_state501);
-    else
-      Putenemy(rand() % 2 + 1, p->x,
-	       p->y,
-	       (int) Mycos(p->dt1 / 4) * 4 /
-	       SANKAKU,
-	       (int) -Mysin(p->dt1 / 4) * 4 /
-	       SANKAKU, chara_state501);
-  }
-  if (p->dt1 == 50) {
-    /*Putenemy(44,0,0,1,1,411); */
-  }
-  return p;
-}
-
-
-CHARACTER * chara_state501(CHARACTER *p)
-{
-  p->x += p->vx;
-  p->y += p->vy;
-  if(p->dt1 % 32 == 1)
-    {
-      Puttama(11, p->x, p->y);
-    }
-  p->dt1++;
-  return p;
+    p->task = STATE501;
+    return sendContainerTask(p);
 }
 
 
-CHARACTER * chara_state600(CHARACTER *p)
+CHARACTER*
+chara_state600(CHARACTER *p)
 {
   kyeenemyno = p;
-  p->dt1 += 30;
-  p->dt2++;
-  p->dt1 %= 360;
-  p->x += Mycos(p->dt1) * 4 / SANKAKU;
-  p->y += Mysin(p->dt1) * 4 / SANKAKU;
-  Puttama(11, p->x + 16, p->y + 16);
-  Puttama(11, p->x + 32, p->y + 48);
-  Puttama(11, p->x + 48, p->y + 16);
-  if (p->dt2 > 240)
-    p->state = chara_state601;
-  if (p->x < 0)
-    p->x = 0;
-  if (p->x > 260)
-    p->x = 260;
-  if (p->y < 0)
-    p->y = 0;
-  if (p->y > 232)
-    p->y = 232;
-  return p;
+  p->task = STATE600;
+  return sendContainerTask(p);
 }
 
 
-CHARACTER * chara_state601(CHARACTER *p)
+CHARACTER*
+chara_state601(CHARACTER *p)
 {
-  p->dt2++;
-  if (p->x < jiki.x)
-    p->vx++;
-  if (p->x > jiki.x)
-    p->vx--;
-  p->x += p->vx;
-  Putenemy(6, p->x + 16 + rand() % 32,
-	   p->y, 0, rand() % 4, chara_state400);
-  if (p->x < 0)
-    p->x = 0;
-  if (p->x > 260)
-    p->x = 260;
-  if (p->y < 0)
-    p->y = 0;
-  if (p->y > 232)
-    p->y = 232;
-  if (p->dt2 > 800) {
-    p->state = chara_state602;
-  }
-  return p;
+    p->task = STATE601;
+    return JikiContainerTask(p);
 }
 
 
-CHARACTER * chara_state602(CHARACTER *p)
+CHARACTER*
+chara_state602(CHARACTER *p)
 {
-  p->dt2++;
-  Putenemy(24, p->x + 14, p->y + 14,
-	   (rand() % 5 + 0.5) * (rand() % 2 == 1 ? -1 : 1),
-	   (rand() % 5 + 0.5) * (rand() % 2 == 1 ? -1 : 1),
-	   chara_state29);
-  if (p->dt2 > 1024) {
-    p->state = chara_state600;
-    p->dt2 = 0;
-  }
-  return p;
+    p->task = STATE602;
+    return sendContainerTask(p);
 }
-
-#endif