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