changeset 25:ee4c488d48a3

add Puttama func.
author koba <koba@cr.ie.u-ryukyu.ac.jp>
date Mon, 27 Dec 2010 02:35:06 +0900
parents 86c6b3bdc763
children c4210c1053e8
files ppe/chara_state3.cc ppe/tama.cc ppe/task_init.cc ppe/task_object.h property.h schedule3.c state_task.cc
diffstat 7 files changed, 76 insertions(+), 23 deletions(-) [+]
line wrap: on
line diff
--- a/ppe/chara_state3.cc	Sun Dec 26 23:42:10 2010 +0900
+++ b/ppe/chara_state3.cc	Mon Dec 27 02:35:06 2010 +0900
@@ -1,12 +1,13 @@
 #include "task_base.h"
 #include "task_object.h"
 
-SchedDefineTask(STATE3);
+SchedDefineTask(State3);
 
 static int
 run(SchedTask *smanager, void *rbuf, void *wbuf)
 {
     CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+    TamaContainerPtr tama = (TamaContainerPtr)smanager->get_input(rbuf, 1);
     
     p->x += p->vx;
     p->y += p->vy;
@@ -14,7 +15,7 @@
        (p->dt1 == 90) ||
        (p->dt1 == 30))
     {
-	Puttama(0, p->x, p->y);
+	Puttama(0, p->x, p->y, tama);
     }
     p->dt1++;
     
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ppe/tama.cc	Mon Dec 27 02:35:06 2010 +0900
@@ -0,0 +1,10 @@
+#include "task_object.h"
+
+void
+Puttama(int type, float x, float y, TamaContainerPtr tama)
+{
+    tama->flag = true;
+    tama->type = type;
+    tama->x = x;
+    tama->y = y;
+}
--- a/ppe/task_init.cc	Sun Dec 26 23:42:10 2010 +0900
+++ b/ppe/task_init.cc	Mon Dec 27 02:35:06 2010 +0900
@@ -7,7 +7,7 @@
 SchedExternTask(State0);
 SchedExternTask(State1);
 SchedExternTask(State2);
-
+SchedExternTask(State3);
 SchedExternTask(State4);
 SchedExternTask(State5);
 SchedExternTask(State6);
@@ -29,7 +29,7 @@
     SchedRegisterTask(STATE0, State0);
     SchedRegisterTask(STATE1, State1);
     SchedRegisterTask(STATE2, State2);
-
+    SchedRegisterTask(STATE3, State3);
     SchedRegisterTask(STATE4, State4);
     SchedRegisterTask(STATE5, State5);
     SchedRegisterTask(STATE6, State6);
--- a/ppe/task_object.h	Sun Dec 26 23:42:10 2010 +0900
+++ b/ppe/task_object.h	Mon Dec 27 02:35:06 2010 +0900
@@ -110,10 +110,17 @@
 
 } CollisionProperty, *CollisionPropertyPtr;
 
+typedef struct TamaContainer {
+  bool flag;
+
+  int type;
+  float x, y;
+} TamaContainer, *TamaContainerPtr;
+
 CHARACTER * noaction(CHARACTER *p);
 CHARACTER * delete_chara(CHARACTER *p);
 void Bom(int x, int y, int *bomend, bomchar *bchar);
-void Puttama(int type, float x, float y);
+void Puttama(int type, float x, float y, TamaContainerPtr tama);
 void Putenemy(int charano, float x, float y, float vx, float vy, int task);
 
 #endif
--- a/property.h	Sun Dec 26 23:42:10 2010 +0900
+++ b/property.h	Mon Dec 27 02:35:06 2010 +0900
@@ -24,4 +24,12 @@
   bomchar bchar[100];
 
 } CollisionProperty, *CollisionPropertyPtr;
+
+typedef struct TamaContainer {
+  bool flag;
+
+  int type;
+  float x, y;
+} TamaContainer, *TamaContainerPtr;
+
 #endif
--- a/schedule3.c	Sun Dec 26 23:42:10 2010 +0900
+++ b/schedule3.c	Mon Dec 27 02:35:06 2010 +0900
@@ -140,7 +140,6 @@
 	    Putenemy(1, 1280 - 256 - 128, 1088, 0, -1, chara_state5);
 	    break;
 
-#if 0
 	case FRAME_RATE * 50:
 	    Putenemy(40, rand() % (1280 - 256) + 128, -128, 0, 1, chara_state3);
 	    break;
@@ -150,7 +149,6 @@
 	case FRAME_RATE * 54:
 	    Putenemy(40, rand() % (1280 - 256) + 128, -128, 0, 1, chara_state3);
 	    break;
-#endif
 
 	case FRAME_RATE * 60:
 	    Putenemy(1, 256, 1088, 0, -1, chara_state6);
--- a/state_task.cc	Sun Dec 26 23:42:10 2010 +0900
+++ b/state_task.cc	Mon Dec 27 02:35:06 2010 +0900
@@ -62,7 +62,7 @@
     SetTaskState(STATE0, chara_state0);
     SetTaskState(STATE1, chara_state1);
     SetTaskState(STATE2, chara_state2);
-//    SetTaskState(STATE3, chara_state3);
+    SetTaskState(STATE3, chara_state3);
     SetTaskState(STATE4, chara_state4);
     SetTaskState(STATE5, chara_state5);
     SetTaskState(STATE6, chara_state6);
@@ -114,6 +114,21 @@
     p=state_list[num](p);
 }
 
+void
+checkSingleTama(SchedTask *s, void *chara, void *tama)
+{
+    CHARACTER *p = (CHARACTER*)chara;
+    TamaContainer *new_tama = (TamaContainerPtr)tama;
+    
+    if (new_tama->flag == true) {
+	Puttama(new_tama->type, new_tama->x, new_tama->y);
+    }
+
+    int num = GetStateNum(p->task);
+    p=state_list[num](p);
+    free(new_tama);
+}
+    
 CHARACTER*
 SimpleStateTask(CHARACTER *p)
 {
@@ -121,7 +136,9 @@
     HTaskPtr state_task = tmanager->create_task(task_num);
     
     state_task->add_inData(p, sizeof(CHARACTER));
+
     state_task->add_outData(p, sizeof(CHARACTER));
+
     state_task->set_post(updateState, (void*)p, NULL);
 
     state_task->set_cpu(SPE_ANY);
@@ -135,10 +152,12 @@
 {
     int task_num = p->task;
     HTaskPtr state_task = tmanager->create_task(task_num);
-    
+
     state_task->add_inData(p, sizeof(CHARACTER));
     state_task->add_inData(&jiki, sizeof(player));
+
     state_task->add_outData(p, sizeof(CHARACTER));
+
     state_task->set_post(updateState, (void*)p, NULL);
     
     state_task->set_cpu(SPE_ANY);
@@ -148,6 +167,27 @@
 }
 
 CHARACTER*
+putTamaTask1(CHARACTER *p)
+{
+    int task_num = p->task;
+    HTaskPtr state_task = tmanager->create_task(task_num);
+    TamaContainerPtr tama = (TamaContainerPtr)tmanager->allocate(sizeof(TamaContainer));
+
+    state_task->add_inData(p, sizeof(CHARACTER));
+    state_task->add_inData(tama, sizeof(TamaContainer));
+
+    state_task->add_outData(p, sizeof(CHARACTER));
+    state_task->add_outData(tama, sizeof(TamaContainer));
+
+    state_task->set_post(checkSingleTama, (void*)p, (void*)tama);
+    
+    state_task->set_cpu(SPE_ANY);
+    state_task->spawn();
+    
+    return p;
+}
+
+CHARACTER*
 noaction(CHARACTER *p)
 {
   p->state = noaction;
@@ -183,23 +223,12 @@
     return SimpleStateTask(p);
 }
 
-#if 0
+
 CHARACTER * chara_state3(CHARACTER *p)
 {
-  p->x += p->vx;
-  p->y += p->vy;
-  if((p->dt1 == 60) ||
-     (p->dt1 == 90) ||
-     (p->dt1 == 30))
-    {
-      Puttama(0, p->x, p->y);
-    }
-  p->dt1++;
-  p->state = chara_state3;
-  //PutSprite(count, p->x, p->y, p->charano);
-  return p;
+    p->task = STATE3;
+    return putTamaTask1(p);
 }
-#endif
 
 CHARACTER * chara_state4(CHARACTER *p)
 {