# HG changeset patch # User koba # Date 1293384906 -32400 # Node ID ee4c488d48a375c1ee218d6668ff2763f09a6072 # Parent 86c6b3bdc76354eea28e8ccf28ba5e22d04fa525 add Puttama func. diff -r 86c6b3bdc763 -r ee4c488d48a3 ppe/chara_state3.cc --- 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++; diff -r 86c6b3bdc763 -r ee4c488d48a3 ppe/tama.cc --- /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; +} diff -r 86c6b3bdc763 -r ee4c488d48a3 ppe/task_init.cc --- 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); diff -r 86c6b3bdc763 -r ee4c488d48a3 ppe/task_object.h --- 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 diff -r 86c6b3bdc763 -r ee4c488d48a3 property.h --- 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 diff -r 86c6b3bdc763 -r ee4c488d48a3 schedule3.c --- 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); diff -r 86c6b3bdc763 -r ee4c488d48a3 state_task.cc --- 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) {