Mercurial > hg > Members > koba > t_dandy
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);