diff state_task.cc @ 30:427e1aac0bd7

not run.
author koba <koba@cr.ie.u-ryukyu.ac.jp>
date Fri, 31 Dec 2010 15:50:44 +0900
parents 813f5461daab
children ccb8d9956a1e
line wrap: on
line diff
--- a/state_task.cc	Tue Dec 28 16:22:22 2010 +0900
+++ b/state_task.cc	Fri Dec 31 15:50:44 2010 +0900
@@ -39,7 +39,7 @@
 
 State state_list[LIST_NUM];
 
-int
+static int
 GetStateNum(int task_num)
 {
     int num = task_num % LIST_NUM;
@@ -47,7 +47,7 @@
     return num;
 }
 
-void
+static void
 SetTaskState(int task_num, CHARACTER *(state)(CHARACTER *chara))
 {
     int num = GetStateNum(task_num);
@@ -126,21 +126,59 @@
     
     if (new_tama->flag == true) {
 	Puttama(new_tama->type, new_tama->x, new_tama->y);
+	Puttama(new_tama[0].type, new_tama[0].x, new_tama[0].y);
+	Puttama(new_tama[1].type, new_tama[1].x, new_tama[1].y);
+	Puttama(new_tama[2].type, new_tama[2].x, new_tama[2].y);
     }
 
     int num = GetStateNum(p->task);
     p=state_list[num](p);
     free(new_tama);
 }
+
+void
+checkContainer(SchedTask *s, void *chara, void *obj)
+{
+    CHARACTER *p = (CHARACTER*)chara;
+    ObjContainer *new_obj = (ObjContainerPtr)obj;
     
+    
+
+    int num = GetStateNum(p->task);
+    p=state_list[num](p);
+    free(new_obj);
+}
+
+CHARACTER*
+sendContainerTask(CHARACTER *p)
+{
+    int task_num = p->task;
+    int data_size = sizeof(ObjContainer) * DATA_LENGTH;
+    HTaskPtr state_task = tmanager->create_task(task_num);
+    ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(data_size);
+
+    state_task->set_inData(0, p, sizeof(CHARACTER));
+    state_task->set_inData(1, obj, data_size);
+
+    state_task->set_outData(0, p, sizeof(CHARACTER));
+    state_task->set_outData(1, obj, data_size);
+
+    state_task->set_post(checkContainer, (void*)p, (void*)obj);
+    
+    state_task->set_cpu(SPE_ANY);
+    state_task->spawn();
+    
+    return p;
+}
+
 CHARACTER*
 SimpleStateTask(CHARACTER *p)
 {
     int task_num = p->task;
     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_inData(0, p, sizeof(CHARACTER));
+    state_task->set_outData(0, p, sizeof(CHARACTER));
     state_task->set_post(updateState, (void*)p, NULL);
 
     state_task->set_cpu(SPE_ANY);
@@ -155,9 +193,9 @@
     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_inData(0, p, sizeof(CHARACTER));
+    state_task->set_inData(1, &jiki, sizeof(player));
+    state_task->set_outData(0, p, sizeof(CHARACTER));
     state_task->set_post(updateState, (void*)p, NULL);
     
     state_task->set_cpu(SPE_ANY);
@@ -170,14 +208,15 @@
 putTamaTask1(CHARACTER *p)
 {
     int task_num = p->task;
+    int tama_size = sizeof(TamaContainer)*DATA_LENGTH;
     HTaskPtr state_task = tmanager->create_task(task_num);
-    TamaContainerPtr tama = (TamaContainerPtr)tmanager->allocate(sizeof(TamaContainer));
+    TamaContainerPtr tama = (TamaContainerPtr)tmanager->allocate(tama_size);
 
-    state_task->add_inData(p, sizeof(CHARACTER));
-    state_task->add_inData(tama, sizeof(TamaContainer));
+    state_task->set_inData(0, p, sizeof(CHARACTER));
+    state_task->set_inData(1, tama, tama_size);
 
-    state_task->add_outData(p, sizeof(CHARACTER));
-    state_task->add_outData(tama, sizeof(TamaContainer));
+    state_task->set_outData(0, p, sizeof(CHARACTER));
+    state_task->set_outData(1, tama, 0);
 
     state_task->set_post(checkSingleTama, (void*)p, (void*)tama);