# HG changeset patch # User koba # Date 1294409945 -32400 # Node ID 7aaaaf5dde40f9825f595cb50b07428f8c8f039b # Parent 39e643fc4f90c37de7540c2453ac2ee8fca084f0 add new task. diff -r 39e643fc4f90 -r 7aaaaf5dde40 Character.c --- a/Character.c Wed Jan 05 14:41:26 2011 +0900 +++ b/Character.c Fri Jan 07 23:19:05 2011 +0900 @@ -145,11 +145,9 @@ CHARACTER *p; for(p = active_chara_list->next; p!=NULL;p = p->next) { - // if((p->state != chara_state8) && (p->state != chara_state9) - // && (p->collision != noaction)) - // { + if((p->state != chara_state8) && (p->state != chara_state9)) { p=(*p->collision)(p); - // } + } } } @@ -170,8 +168,8 @@ CHARACTER *p; for(p = active_chara_list->next; p!=NULL; p = p->next) { - // if((p->state != chara_state8) && (p->state != chara_state9)) - // { + if((p->state != chara_state8) && (p->state != chara_state9)) + { if ((p->y > 964 + 32) || (p->x > 1688 + 50) || (p->y < 0 - 128) @@ -181,6 +179,6 @@ p->state = delete_chara; p->collision = noaction; } - // } + } } } diff -r 39e643fc4f90 -r 7aaaaf5dde40 TaskDandy.cc --- a/TaskDandy.cc Wed Jan 05 14:41:26 2011 +0900 +++ b/TaskDandy.cc Fri Jan 07 23:19:05 2011 +0900 @@ -278,14 +278,17 @@ count++; PutSprite(count, jiki.x, jiki.y, jiki.ch); } - + + Putbom(); + tokuten(); + + asteroidi = 0; // timeprof_begin(timeprof_move); //Move(); //enemy move collision_detect(); outofwindow(); // timeprof_end(timeprof_move); state_update(); - asteroidi = 0; //charpatern(); //bosguage(); @@ -298,9 +301,6 @@ obj_draw(); gamef = game_pause(gamef); - - Putbom(); - tokuten(); if (use_keybord) { keybord(); } else { diff -r 39e643fc4f90 -r 7aaaaf5dde40 collision_task.cc --- a/collision_task.cc Wed Jan 05 14:41:26 2011 +0900 +++ b/collision_task.cc Fri Jan 07 23:19:05 2011 +0900 @@ -22,19 +22,13 @@ { CollisionPropertyPtr property = (CollisionPropertyPtr)tmanager->allocate(sizeof(CollisionProperty)); - property->bomend = bomend; property->enemycount = 0; - property->infg_level = infg_level; - - property->lg = lg; - property->infg = infg; - property->jiki = jiki; property->tlv3 = tlv3[0]; + property->laser_lv2 = laser_lv2[0]; memcpy(property->tama_lv1, tama_lv1, sizeof(tama1)*20); memcpy(property->tama_lv2, tama_lv2, sizeof(tama2)*20); memcpy(property->laser_lv1, laser_lv1, sizeof(laser)*20); - memcpy(property->laser_lv2, laser_lv2, sizeof(laser)*20); memcpy(property->laser_lv3, laser_lv3, sizeof(laser)*128); memcpy(property->bchar, bchar, sizeof(bomchar)*100); @@ -46,7 +40,7 @@ { CollisionPropertyPtr property = (CollisionPropertyPtr)prop; - if(bomend > property->bomend) { + if(property->bomend > bomend) { bomend = property->bomend; } if(lg.stg > property->lg.stg) { @@ -61,7 +55,7 @@ infg = property->infg; - memcpy(tama_lv1, property->tama_lv1, sizeof(tama1)*20); + memcpy(tama_lv1, property->tama_lv1, sizeof(tama1)*20); memcpy(tama_lv2, property->tama_lv2, sizeof(tama2)*20); memcpy(laser_lv1, property->laser_lv1, sizeof(laser)*20); memcpy(bchar, property->bchar, sizeof(bomchar)*100); @@ -88,12 +82,18 @@ collision_task->set_param(3,(memaddr)tama_lv2_end); collision_task->set_param(4,(memaddr)laser_lv1_end); - collision_task->add_inData(p, sizeof(CHARACTER)); - collision_task->add_inData(property, sizeof(CollisionProperty)); - collision_task->add_outData(p, sizeof(CHARACTER)); - collision_task->add_outData(property, sizeof(CollisionProperty)); + collision_task->set_inData(0, p, sizeof(CHARACTER)); + collision_task->set_inData(1, &jiki, sizeof(player)); + collision_task->set_inData(2, &lg, sizeof(stge)); + collision_task->set_inData(3, &infg, sizeof(stge)); + collision_task->set_inData(4, &infg_level, sizeof(int)); + collision_task->set_inData(5, &bomend, sizeof(int)); + collision_task->set_inData(6, property, sizeof(CollisionProperty)); + + collision_task->set_outData(0, p, sizeof(CHARACTER)); + collision_task->set_outData(1, property, sizeof(CollisionProperty)); + collision_task->set_post(free_property, (void*)property, NULL); - collision_task->set_cpu(SPE_ANY); collision_task->spawn(); diff -r 39e643fc4f90 -r 7aaaaf5dde40 game_task.h --- a/game_task.h Wed Jan 05 14:41:26 2011 +0900 +++ b/game_task.h Fri Jan 07 23:19:05 2011 +0900 @@ -44,3 +44,4 @@ STATE600, STATE601, STATE602, + ASTEROID_TASK, diff -r 39e643fc4f90 -r 7aaaaf5dde40 main.c --- a/main.c Wed Jan 05 14:41:26 2011 +0900 +++ b/main.c Fri Jan 07 23:19:05 2011 +0900 @@ -282,7 +282,7 @@ tlv3[i].y = -1; } filpcount = 0; - stage = 0; + stage = 1; //for (i = 0; i < 300; i++) //enemy[i].f = FALSE; jiki.zanki = 3; diff -r 39e643fc4f90 -r 7aaaaf5dde40 ppe/Atari.cc --- a/ppe/Atari.cc Wed Jan 05 14:41:26 2011 +0900 +++ b/ppe/Atari.cc Fri Jan 07 23:19:05 2011 +0900 @@ -12,22 +12,22 @@ int tama_lv2_end = (int)smanager->get_param(3); int laser_lv1_end = (int)smanager->get_param(4); - CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); + CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); + player *jiki = (player*)smanager->get_input(rbuf, 1); + stge *lg = (stge*)smanager->get_input(rbuf, 2); + stge *infg = (stge*)smanager->get_input(rbuf, 3); + int *infg_level = (int*)smanager->get_input(rbuf, 4); + int *bomend = (int*)smanager->get_input(rbuf, 5); CollisionPropertyPtr property - = (CollisionPropertyPtr)smanager->get_input(rbuf, 1); + = (CollisionPropertyPtr)smanager->get_input(rbuf, 6); - int *bomend = &property->bomend; int *enemycount = &property->enemycount; - int infg_level = property->infg_level; - stge lg = property->lg; - stge infg = property->infg; - player jiki = property->jiki; - tama1 tlv3 = property->tlv3; + tama1 *tlv3 = &property->tlv3; tama1 *tama_lv1 = property->tama_lv1; tama2 *tama_lv2 = property->tama_lv2; laser *laser_lv1 = property->laser_lv1; - laser *laser_lv2 = property->laser_lv2; + laser *laser_lv2 = &property->laser_lv2; laser *laser_lv3 = property->laser_lv3; bomchar *bchar = property->bchar; @@ -36,25 +36,33 @@ ex = p->x; ey = p->y; + CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); + CollisionPropertyPtr w_property + = (CollisionPropertyPtr)smanager->get_output(wbuf, 1); + //自機やられ #ifndef INVISIBLE_MODE - if ((ex < jiki.x + 128 / 2) && (ex + w > jiki.x + 128 / 2) - && (ey < jiki.y + 128 / 2) && (ey + h > jiki.y + 128 / 2) - && jiki.muteki == 0) { - Bom(jiki.x + 16, jiki.y + 16, bomend, bchar); - jiki.bf = FALSE; - jiki.zanki--; - jiki.muteki = 120; + if ((ex < jiki->x + 128 / 2) && (ex + w > jiki->x + 128 / 2) + && (ey < jiki->y + 128 / 2) && (ey + h > jiki->y + 128 / 2) + && jiki->muteki == 0) { + Bom(jiki->x + 16, jiki->y + 16, bomend, bchar); + jiki->bf = FALSE; + jiki->zanki--; + jiki->muteki = 120; - infg.stg = 0; - infg_level--; - if (infg_level < 0) - infg_level = 0; + infg->stg = 0; + *infg_level--; + if (*infg_level < 0) + *infg_level = 0; - property->infg_level = infg_level; - property->infg = infg; - property->jiki = jiki; - smanager->swap(); + property->bomend = *bomend; + property->infg_level = *infg_level; + property->jiki = *jiki; + property->lg = *lg; + property->infg = *infg; + + *q = *p; + *w_property = *property; return 0; } #endif @@ -69,18 +77,24 @@ && (tama_lv1[i1].r != -1)) { tama_lv1[i1].r = -1; p->vit -= TAMALV1P; - infg.stg++; + infg->stg++; if (p->vit <= 0) { - infg.stg += 4; + infg->stg += 4; Bom(p->x, p->y, bomend, bchar); - enemycount += (p->score * - ((infg.stg / 128) + infg_level + 1)); + *enemycount += (p->score * + ((infg->stg / 128) + *infg_level + 1)); p->task = DELETE_CHARA; // p->collision = noaction; p->f = FALSE; - property->infg = infg; - smanager->swap(); + property->bomend = *bomend; + property->infg_level = *infg_level; + property->jiki = *jiki; + property->lg = *lg; + property->infg = *infg; + + *q = *p; + *w_property = *property; return 0; } } @@ -89,18 +103,24 @@ && (tama_lv1[i1].l != -1)) { tama_lv1[i1].l = -1; p->vit -= TAMALV1P; - infg.stg++; + infg->stg++; if (p->vit <= 0) { - infg.stg += 4; + infg->stg += 4; Bom(p->x, p->y, bomend, bchar); - enemycount += (p->score * - ((infg.stg / 128) + infg_level + 1)); + *enemycount += (p->score * + ((infg->stg / 128) + *infg_level + 1)); p->task = DELETE_CHARA; // p->collision = noaction; p->f = FALSE; - property->infg = infg; - smanager->swap(); + property->bomend = *bomend; + property->infg_level = *infg_level; + property->jiki = *jiki; + property->lg = *lg; + property->infg = *infg; + + *q = *p; + *w_property = *property; return 0; } } @@ -113,18 +133,24 @@ && (tama_lv2[i1].rr != -1)) { tama_lv2[i1].rr = -1; p->vit -= TAMALV2P; - infg.stg++; + infg->stg++; if (p->vit <= 0) { - infg.stg += 4; + infg->stg += 4; Bom(p->x, p->y, bomend, bchar); - enemycount += (p->score * - ((infg.stg / 128) + infg_level + 1)); + *enemycount += (p->score * + ((infg->stg / 128) + *infg_level + 1)); p->task = DELETE_CHARA; // p->collision = noaction; p->f = FALSE; - property->infg = infg; - smanager->swap(); + property->bomend = *bomend; + property->infg_level = *infg_level; + property->jiki = *jiki; + property->lg = *lg; + property->infg = *infg; + + *q = *p; + *w_property = *property; return 0; } } @@ -136,18 +162,24 @@ && (tama_lv2[i1].sr != -1)) { tama_lv2[i1].sr = -1; p->vit -= TAMALV2P; - infg.stg++; + infg->stg++; if (p->vit <= 0) { - infg.stg += 4; + infg->stg += 4; Bom(p->x, p->y, bomend, bchar); - enemycount += (p->score * - ((infg.stg / 128) + infg_level + 1)); + *enemycount += (p->score * + ((infg->stg / 128) + *infg_level + 1)); p->task = DELETE_CHARA; // p->collision = noaction; p->f = FALSE; - property->infg = infg; - smanager->swap(); + property->bomend = *bomend; + property->infg_level = *infg_level; + property->jiki = *jiki; + property->lg = *lg; + property->infg = *infg; + + *q = *p; + *w_property = *property; return 0; } } @@ -157,18 +189,24 @@ && (tama_lv2[i1].sl != -1)) { tama_lv2[i1].sl = -1; p->vit -= TAMALV2P; - infg.stg++; + infg->stg++; if (p->vit <= 0) { - infg.stg += 4; + infg->stg += 4; Bom(p->x, p->y, bomend, bchar); - enemycount += (p->score * - ((infg.stg / 128) + infg_level + 1)); + *enemycount += (p->score * + ((infg->stg / 128) + *infg_level + 1)); p->task = DELETE_CHARA; // p->collision = noaction; p->f = FALSE; - property->infg = infg; - smanager->swap(); + property->bomend = *bomend; + property->infg_level = *infg_level; + property->jiki = *jiki; + property->lg = *lg; + property->infg = *infg; + + *q = *p; + *w_property = *property; return 0; } } @@ -178,56 +216,74 @@ && (tama_lv2[i1].ll != -1)) { tama_lv2[i1].ll = -1; p->vit -= TAMALV2P; - infg.stg++; + infg->stg++; if (p->vit <= 0) { - infg.stg += 4; + infg->stg += 4; Bom(p->x, p->y, bomend, bchar); - enemycount += (p->score * - ((infg.stg / 128) + infg_level + 1)); + *enemycount += (p->score * + ((infg->stg / 128) + *infg_level + 1)); p->task = DELETE_CHARA; // p->collision = noaction; p->f = FALSE; - property->infg = infg; - smanager->swap(); + property->bomend = *bomend; + property->infg_level = *infg_level; + property->jiki = *jiki; + property->lg = *lg; + property->infg = *infg; + + *q = *p; + *w_property = *property; return 0; } } } - if ((tlv3.r > 0) && (jiki.x < ex + w) && (jiki.x + 128 > ex) - && (jiki.y > ey + h)) { + if ((tlv3->r > 0) && (jiki->x < ex + w) && (jiki->x + 128 > ex) + && (jiki->y > ey + h)) { p->vit -= TAMALV3P; - infg.stg++; + infg->stg++; if (p->vit <= 0) { - infg.stg += 4; + infg->stg += 4; Bom(p->x, p->y, bomend, bchar); - enemycount += (p->score * - ((infg.stg / 128) + infg_level + 1)); + *enemycount += (p->score * + ((infg->stg / 128) + *infg_level + 1)); p->task = DELETE_CHARA; // p->collision = noaction; p->f = FALSE; - property->infg = infg; - smanager->swap(); + property->bomend = *bomend; + property->infg_level = *infg_level; + property->jiki = *jiki; + property->lg = *lg; + property->infg = *infg; + + *q = *p; + *w_property = *property; return 0; } } jumping: - if ((tlv3.r > 0) && (jiki.x < ex + w) && (jiki.x + 128 > ex) - && (jiki.y + 128 > ey) && (jiki.y < ey + h)) { + if ((tlv3->r > 0) && (jiki->x < ex + w) && (jiki->x + 128 > ex) + && (jiki->y + 128 > ey) && (jiki->y < ey + h)) { p->vit -= TAMALV3P; - infg.stg++; + infg->stg++; if (p->vit <= 0) { - infg.stg += 4; + infg->stg += 4; Bom(p->x, p->y, bomend, bchar); - enemycount += (p->score * - ((infg.stg / 128) + infg_level + 1)); + *enemycount += (p->score * + ((infg->stg / 128) + *infg_level + 1)); p->task = DELETE_CHARA; // p->collision = noaction; p->f = FALSE; - property->infg = infg; - smanager->swap(); + property->bomend = *bomend; + property->infg_level = *infg_level; + property->jiki = *jiki; + property->lg = *lg; + property->infg = *infg; + + *q = *p; + *w_property = *property; return 0; } } @@ -241,42 +297,53 @@ laser_lv1[i1].r = -1; laser_lv1[i1].y = -1; p->vit -= LASERLV1P; - infg.stg++; + infg->stg++; if (p->vit <= 0) { - infg.stg += 4; + infg->stg += 4; Bom(p->x, p->y, bomend, bchar); - enemycount += (p->score * - ((infg.stg / 128) + infg_level + 1)); + *enemycount += (p->score * + ((infg->stg / 128) + *infg_level + 1)); p->task = DELETE_CHARA; // p->collision = noaction; p->f = FALSE; - property->infg = infg; - smanager->swap(); + property->bomend = *bomend; + property->infg_level = *infg_level; + property->jiki = *jiki; + property->lg = *lg; + property->infg = *infg; + + *q = *p; + *w_property = *property; return 0; } } } /*shield(laser lv2) */ - if ((p->tama == TRUE) && (lg.stg > 0) && + if ((p->tama == TRUE) && (lg->stg > 0) && (laser_lv2[0].x + 128 > ex) && (ex + w > laser_lv2[0].x - 128) && (laser_lv2[0].y + 128 > ey) && (laser_lv2[0].y - 128 < ey + h) && (laser_lv2[0].r != 0)) { p->vit -= LASERLV2P; - lg.stg -= 26; - infg.stg++; + lg->stg -= 26; + infg->stg++; if (p->vit <= 0) { - infg.stg += 4; + infg->stg += 4; Bom(p->x, p->y, bomend, bchar); - enemycount += (p->score * - ((infg.stg / 128) + infg_level + 1)); + *enemycount += (p->score * + ((infg->stg / 128) + *infg_level + 1)); p->task = DELETE_CHARA; // p->collision = noaction; p->f = FALSE; - property->lg = lg; - property->infg = infg; - smanager->swap(); + property->bomend = *bomend; + property->infg_level = *infg_level; + property->jiki = *jiki; + property->lg = *lg; + property->infg = *infg; + + *q = *p; + *w_property = *property; return 0; } } @@ -289,24 +356,37 @@ && (laser_lv3[i1].r > 0)) { tama_lv2[i1].rr = -1; p->vit -= LASERLV3P; - infg.stg++; + infg->stg++; if (p->vit <= 0) { - infg.stg += 4; + infg->stg += 4; Bom(p->x, p->y, bomend, bchar); - enemycount += (p->score * - ((infg.stg / 128) + infg_level + 1)); + *enemycount += (p->score * + ((infg->stg / 128) + *infg_level + 1)); p->task = DELETE_CHARA; // p->collision = noaction; p->f = FALSE; - property->infg = infg; - smanager->swap(); + property->bomend = *bomend; + property->infg_level = *infg_level; + property->jiki = *jiki; + property->lg = *lg; + property->infg = *infg; + + *q = *p; + *w_property = *property; return 0; } } } } - property->infg = infg; - smanager->swap(); + + property->bomend = *bomend; + property->infg_level = *infg_level; + property->jiki = *jiki; + property->lg = *lg; + property->infg = *infg; + + *q = *p; + *w_property = *property; return 0; } diff -r 39e643fc4f90 -r 7aaaaf5dde40 ppe/Sankaku.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ppe/Sankaku.h Fri Jan 07 23:19:05 2011 +0900 @@ -0,0 +1,8 @@ +#include + +#define SANKAKU (100000.0) + +static const double pi2 = M_PI * 2.0; + +static inline float Mycos(float c) { return cosf( c / 360.0 * pi2 ) * SANKAKU; } +static inline float Mysin(float c) { return sinf( c / 360.0 * pi2 ) * SANKAKU; } diff -r 39e643fc4f90 -r 7aaaaf5dde40 ppe/asteroid.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ppe/asteroid.cc Fri Jan 07 23:19:05 2011 +0900 @@ -0,0 +1,33 @@ +#include "task_base.h" +#include "task_object.h" + +SchedDefineTask1(Asteroid, asteroid_task); + +static int +asteroid_task(SchedTask *smanager, void *rbuf, void *wbuf) +{ + int asteroidi = (int)smanager->get_param(0); + + CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); + + p->x += p->vx; + p->y += p->vy; + + if (asteroidi > 0) { + CHARACTER* asteroiddt = (CHARACTER*)smanager->get_input(rbuf, 1); + + for (int i = 0; i < asteroidi; i++) { + if ((asteroiddt[i].x + 32 > p->x) + && (p->x + 32 > asteroiddt[i].x) + && (asteroiddt[i].y + 32 > p->y) + && (asteroiddt[i].y < p->y + 32)) { + p->vx *= -1; + p->vy *= -1; + } + } + } + CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); + + *q = *p; + return 0; +} diff -r 39e643fc4f90 -r 7aaaaf5dde40 ppe/chara_state12.cc --- a/ppe/chara_state12.cc Wed Jan 05 14:41:26 2011 +0900 +++ b/ppe/chara_state12.cc Fri Jan 07 23:19:05 2011 +0900 @@ -27,25 +27,25 @@ ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 6); sprite->flag = true; sprite->length = length; - + if (p->y > 240+32) { p->task = DELETE_CHARA; } p->y += 3; rinky += 3; count++; - + DefSpriteEx(54, 16, 32, &sprite->data[index_count]); index_count++; PutSpriteEx(54, p->x, p->y, 2, 2, 1, &sprite->data[index_count]); - + p->task = STATE12; + *w_rinky = rinky; *w_count = count; *q = *p; - p->task = STATE12; return 0; } - + player *jiki = (player*)smanager->get_input(rbuf, 1); if (p->dt1 <= 60) { @@ -202,11 +202,11 @@ index_count++; PutSpriteEx(54, p->x, p->y, 2, 2, 1, &sprite->data[index_count]); + *q = *p; *w_count = count; *w_fastebos = fastebos; *w_rinkx = rinkx; *w_rinky = rinky; - *w_rinkf2 = rinkf2; - *q = *p; + *w_rinkf2 = rinkf2; return 0; } diff -r 39e643fc4f90 -r 7aaaaf5dde40 ppe/chara_state13.cc --- a/ppe/chara_state13.cc Wed Jan 05 14:41:26 2011 +0900 +++ b/ppe/chara_state13.cc Fri Jan 07 23:19:05 2011 +0900 @@ -8,33 +8,40 @@ { int rinkx = (int)smanager->get_param(0); int rinky = (int)smanager->get_param(1); - int rinkf2 = (int)smanager->get_param(2); - int count = (int)smanager->get_param(3); - int filpcount = (int)smanager->get_param(4); - int flag = (int)smanager->get_param(5); - int bomend = (int)smanager->get_param(6); + int filpcount = (int)smanager->get_param(2); + int flag = (int)smanager->get_param(3); + int count = (int)smanager->get_param(4); int length; CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); + bomchar *bchar = (bomchar*)smanager->get_input(rbuf, 1); + int bomend = *(int*)smanager->get_input(rbuf, 2); + int rinkf2 = *(int*)smanager->get_input(rbuf, 3); if(flag == FALSE){ - bomchar *bchar = (bomchar*)smanager->get_input(rbuf, 1); CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); - int *o_bomend = (int*)smanager->get_output(wbuf, 2); + int *w_count = (int*)smanager->get_output(wbuf, 1); + int *w_bomend = (int*)smanager->get_output(wbuf, 2); + bomchar *w_bchar = (bomchar*)smanager->get_output(wbuf, 3); Bom(p->x, p->y, &bomend, bchar); p->f = FALSE; p->task = DELETE_CHARA; - *o_bomend = bomend; + *w_count = count; + *w_bomend = bomend; + *w_bchar = *bchar; *q = *p; return 0; } length = 1; - smanager->set_outputSize(3, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->set_outputSize(4, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); smanager->setup_outputData(); CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); - ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 3); + int *w_count = (int*)smanager->get_output(wbuf, 1); + int *w_bomend = (int*)smanager->get_output(wbuf, 2); + bomchar *w_bchar = (bomchar*)smanager->get_output(wbuf, 3); + ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 4); sprite->flag = false; p->x += rinkx - p->dt1; @@ -58,11 +65,9 @@ } if(rinkf2 == 4) { - int *o_count = (int*)smanager->get_output(wbuf, 1); sprite->flag = true; sprite->length = length; count++; - *o_count = count; PutSprite(count, p->x, p->y + 56, 58+filpcount % 4, &sprite->data[0]); } if(rinkf2 == 5) @@ -82,5 +87,8 @@ } *q = *p; + *w_count = count; + *w_bomend = bomend; + *w_bchar = *bchar; return 0; } diff -r 39e643fc4f90 -r 7aaaaf5dde40 ppe/chara_state20.cc --- a/ppe/chara_state20.cc Wed Jan 05 14:41:26 2011 +0900 +++ b/ppe/chara_state20.cc Fri Jan 07 23:19:05 2011 +0900 @@ -1,10 +1,10 @@ #include "task_base.h" #include "task_object.h" -SchedDefineTask(State20); +SchedDefineTask1(State20, state20); static int -run(SchedTask *smanager, void *rbuf, void *wbuf) +state20(SchedTask *smanager, void *rbuf, void *wbuf) { CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); diff -r 39e643fc4f90 -r 7aaaaf5dde40 ppe/chara_state21.cc --- a/ppe/chara_state21.cc Wed Jan 05 14:41:26 2011 +0900 +++ b/ppe/chara_state21.cc Fri Jan 07 23:19:05 2011 +0900 @@ -1,10 +1,10 @@ #include "task_base.h" #include "task_object.h" -SchedDefineTask(State21); +SchedDefineTask1(State21, state21); static int -run(SchedTask *smanager, void *rbuf, void *wbuf) +state21(SchedTask *smanager, void *rbuf, void *wbuf) { CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); diff -r 39e643fc4f90 -r 7aaaaf5dde40 ppe/chara_state22.cc --- a/ppe/chara_state22.cc Wed Jan 05 14:41:26 2011 +0900 +++ b/ppe/chara_state22.cc Fri Jan 07 23:19:05 2011 +0900 @@ -1,16 +1,14 @@ #include "task_base.h" #include "task_object.h" -SchedDefineTask(State22); +SchedDefineTask1(State22, state22); static int -run(SchedTask *smanager, void *rbuf, void *wbuf) +state22(SchedTask *smanager, void *rbuf, void *wbuf) { CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); - int sf; - - sf = rand() % 4; + int sf = rand() % 4; if((sf == 0) || (sf == 1)) { p->x = -35; diff -r 39e643fc4f90 -r 7aaaaf5dde40 ppe/chara_state25.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ppe/chara_state25.cc Fri Jan 07 23:19:05 2011 +0900 @@ -0,0 +1,70 @@ +#include "task_base.h" +#include "task_object.h" +#include "Sankaku.h" + +SchedDefineTask1(State25, state25); + +static int +state25(SchedTask *smanager, void *rbuf, void *wbuf) +{ + int length = 1; + int amari; + + int part1_f = (int)smanager->get_param(0); + int part5_f = (int)smanager->get_param(1); + + CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); + int count = *(int*)smanager->get_input(rbuf, 1); + + smanager->set_outputSize(4, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); + + CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); + int *w_count = (int*)smanager->get_output(wbuf, 1); + int *rinkx = (int*)smanager->get_output(wbuf, 2); + int *rinkf1 = (int*)smanager->get_output(wbuf, 3); + ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 4); + sprite->flag = true; + sprite->length = length; + + if(p->dt1 <= 360) + { + p->x = Mycos(p->dt1) * 30 / SANKAKU + 82 + 32; + p->y = Mysin(p->dt1) * 30 / SANKAKU + 30; + } + if(p->dt1 > 360) + { + p->x = Mycos(p->dt1) * 30 * -1 /SANKAKU + 142 + 32; + p->y = Mysin(p->dt1) * 30 / SANKAKU + 30; + } + count++; + *w_count = count; + PutSprite(count, p->x - 42, p->y, 64, &sprite->data[0]); + amari = rand() % 160; + if((amari == 1) && (part5_f == TRUE)) + { + p->task = STATE26; + *rinkf1 = 1; + } + if((amari == 2) && (part1_f == TRUE)) + { + p->task = STATE27; + *rinkf1 = 5; + *rinkx = 0; + + *q = *p; + return 0; + } + if((part5_f == TRUE) && (part1_f != TRUE)) + { + p->task = STATE28; + } + p->dt1 += 3; + if(p->dt1 == 720) + { + p->dt1 = 0; + } + + *q = *p; + return 0; +} diff -r 39e643fc4f90 -r 7aaaaf5dde40 ppe/chara_state26.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ppe/chara_state26.cc Fri Jan 07 23:19:05 2011 +0900 @@ -0,0 +1,50 @@ +#include "task_base.h" +#include "task_object.h" + +SchedDefineTask1(State26, state26); + +static int +state26(SchedTask *smanager, void *rbuf, void *wbuf) +{ + int length = 1; + CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); + int count = *(int*)smanager->get_input(rbuf, 1); + + smanager->set_outputSize(4, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); + + CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); + int *w_count = (int*)smanager->get_output(wbuf, 1); + int *rinkf1 = (int*)smanager->get_output(wbuf, 3); + ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 4); + sprite->flag = true; + sprite->length = length; + + if((p->dt2 > 50) && (p->dt2 < 100)) + { + *rinkf1 = 2; + } + if(p->dt2 > 100) + { + *rinkf1 = 3; + } + if(p->dt2 == 400) + { + *rinkf1 = 4; + } + count++; + *w_count = count; + PutSprite(count, p->x - 42, p->y, 64, &sprite->data[0]); + if(p->dt2 == 401) + { + p->dt2 = 0; + *rinkf1 = 0; + + p->task = STATE25; + *q = *p; + return 0; + } + p->dt2++; + *q = *p; + return 0; +} diff -r 39e643fc4f90 -r 7aaaaf5dde40 ppe/chara_state27.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ppe/chara_state27.cc Fri Jan 07 23:19:05 2011 +0900 @@ -0,0 +1,88 @@ +#include "task_base.h" +#include "task_object.h" + +SchedDefineTask1(State27, state27); + +static int +state27(SchedTask *smanager, void *rbuf, void *wbuf) +{ + int length = 1; + CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); + int count = *(int*)smanager->get_input(rbuf, 1); + int rinkx = *(int*)smanager->get_input(rbuf, 2); + int rinkf1 = *(int*)smanager->get_input(rbuf, 3); + + smanager->set_outputSize(4, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); + + CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); + int *w_count = (int*)smanager->get_output(wbuf, 1); + int *w_rinkx = (int*)smanager->get_output(wbuf, 2); + int *w_rinkf1 = (int*)smanager->get_output(wbuf, 3); + ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 4); + sprite->flag = true; + sprite->length = length; + + if((p->dt2 > 50) && (p->dt2 < 60) && (p->x > -24) && (p->y > -24)) + { + rinkf1 = 6; + rinkx -= 4; + p->x -= 4; + p->y -= 4; + } + if(p->dt2 == 80) + { + rinkf1 = 7; + } + if(p->dt2 == 81) + { + rinkf1 = 8; + } + if(p->dt2 == 124) + { + rinkf1 = 9; + } + if(p->dt2 == 400) + { + rinkf1 = 10; + } + if(p->dt2 == 444) + { + rinkf1 = 11; + } + if(p->dt2 == 500) + { + rinkf1 = 12; + } + if((p->dt2 > 80) && (p->dt2 < 200)) + { + if((rinkx != 0) && (p->dt2 % 2 == 1)) + { + rinkx++; + p->x++; + p->y++; + } + } + count++; + PutSprite(count, p->x - 32, p->y, 6, &sprite->data[0]); + if(rinkf1 == 12) + { + p->dt2 = 0; + rinkf1 = 0; + rinkx = 0; + + p->task = STATE25; + *q = *p; + *w_count = count; + *w_rinkx = rinkx; + *w_rinkf1 = rinkf1; + return 0; + } + p->dt2++; + + *q = *p; + *w_count = count; + *w_rinkx = rinkx; + *w_rinkf1 = rinkf1; + return 0; +} diff -r 39e643fc4f90 -r 7aaaaf5dde40 ppe/chara_state28.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ppe/chara_state28.cc Fri Jan 07 23:19:05 2011 +0900 @@ -0,0 +1,48 @@ +#include "task_base.h" +#include "task_object.h" +#include "Sankaku.h" + +SchedDefineTask1(State28, state28); + +static int +state28(SchedTask *smanager, void *rbuf, void *wbuf) +{ + int length = 2; + CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); + int count = *(int*)smanager->get_input(rbuf, 1); + + smanager->set_outputSize(4, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); + + CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); + int *w_count = (int*)smanager->get_output(wbuf, 1); + ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 4); + sprite->flag = true; + sprite->length = length; + + if (p->dt1 <= 360) + { + p->x = Mycos(p->dt1) * 30 / SANKAKU + 82 + 32; + p->y = Mysin(p->dt1) * 30 / SANKAKU + 30; + } + if (p->dt1 > 360) + { + p->x = Mycos(p->dt1) * 30 * -1 / SANKAKU + 142 + 32; + p->y = Mysin(p->dt1) * 30 / SANKAKU + 30; + } + count++; + PutSprite(count, p->x - 42, p->y, 64, &sprite->data[0]); + if (p->dt1 % 30 == 3) + { + 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), STATE29, &sprite->data[1]); + } + p->dt1 += 3; + *q = *p; + *w_count = count; + return 0; +} diff -r 39e643fc4f90 -r 7aaaaf5dde40 ppe/chara_state29.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ppe/chara_state29.cc Fri Jan 07 23:19:05 2011 +0900 @@ -0,0 +1,30 @@ +#include "task_base.h" +#include "task_object.h" + +SchedDefineTask1(State29, state29); + +static int +state29(SchedTask *smanager, void *rbuf, void *wbuf) +{ + int length; + CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); + + p->x += p->vx; + p->y += p->vy; + if(p->dt1 % 18 == 1) + { + smanager->set_outputSize(1, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); + ObjContainerPtr tama = (ObjContainerPtr)smanager->get_output(wbuf, 1); + tama->flag = true; + tama->length = length; + + Puttama(0, p->x, p->y, &tama->data[0]); + } + CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); + + p->dt1++; + + *q = *p; + return 0; +} diff -r 39e643fc4f90 -r 7aaaaf5dde40 ppe/chara_state3.cc --- a/ppe/chara_state3.cc Wed Jan 05 14:41:26 2011 +0900 +++ b/ppe/chara_state3.cc Fri Jan 07 23:19:05 2011 +0900 @@ -7,15 +7,8 @@ static int state3(SchedTask *smanager, void *rbuf, void *wbuf) { + int length; CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); - int length = 1; - - smanager->set_outputSize(1, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); - smanager->setup_outputData(); - - CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); - ObjContainerPtr tama = (ObjContainerPtr)smanager->get_output(wbuf, 1); - tama->flag = false; p->x += p->vx; p->y += p->vy; @@ -23,11 +16,17 @@ (p->dt1 == 90) || (p->dt1 == 30)) { + length = 1; + smanager->set_outputSize(1, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); + ObjContainerPtr tama = (ObjContainerPtr)smanager->get_output(wbuf, 1); tama->flag = true; tama->length = length; Puttama(0, p->x, p->y, &tama->data[0]); } + CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); + p->dt1++; p->task = STATE3; diff -r 39e643fc4f90 -r 7aaaaf5dde40 ppe/chara_state31.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ppe/chara_state31.cc Fri Jan 07 23:19:05 2011 +0900 @@ -0,0 +1,117 @@ +#include "task_base.h" +#include "task_object.h" + +SchedDefineTask1(State31, state31); + +static int +state31(SchedTask *smanager, void *rbuf, void *wbuf) +{ + int part3_f = (int)smanager->get_param(0); + + int length; + CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); + CHARACTER *kyeenemyno = (CHARACTER*)smanager->get_input(rbuf, 1); + int count = *(int*)smanager->get_input(rbuf, 2); + int rinkf1 = *(int*)smanager->get_input(rbuf, 3); + + if((part3_f == FALSE) || (kyeenemyno->f == FALSE)) + { + CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); +// Bom(p->x, p->y); + p->f = FALSE; + p->task = DELETE_CHARA; +// p->collision = noaction; + + *q = *p; + return 0; + } + + if(rinkf1 == 0) + { + p->x = kyeenemyno->x + 40; + p->y = kyeenemyno->y + 28; + p->dt2 = 0; + } + if(rinkf1 == 5) + { + length = 1; + smanager->set_outputSize(4, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); + ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 4); + sprite->flag = true; + sprite->length = length; + + p->x = kyeenemyno->x + 52; + p->y = kyeenemyno->y; + count++; + PutSprite(count, p->x - 4, p->y - 20, 80 + p->dt2 % 4, &sprite->data[0]); + p->dt2++; + } + if(rinkf1 == 6) + { + length = 1; + smanager->set_outputSize(4, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); + ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 4); + sprite->flag = true; + sprite->length = length; + + if(p->y < 240 - 40) + { + p->y += 6; + } + else + { + CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); + *q = *p; + return 0; + } + count++; + + PutSprite(count, p->x - 4, p->y - 20, 90 + p->dt2 % 4, &sprite->data[0]); + p->dt2++; + } + if(rinkf1 == 7) + { + length = 1; + smanager->set_outputSize(4, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); + CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); + ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 4); + sprite->flag = true; + sprite->length = length; + + Putenemy(22, p->x + 14, p->y + 14, 0, 0, STATE40, &sprite->data[0]); + *q = *p; + return 0; + } + if(rinkf1 == 11) + { + length = 1; + smanager->set_outputSize(4, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); + ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 4); + sprite->flag = true; + sprite->length = length; + + if(p->y + 20 != p->y) + { + p->y--; + } + else + { + CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); + *q = *p; + return 0; + } + count++; + PutSprite(count, p->x + 8, p->y + 44, 58 + p->dt2 % 4, &sprite->data[0]); + p->dt2++; + } + CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); + int *w_count = (int*)smanager->get_output(wbuf, 1); + + *q = *p; + *w_count = count; + return 0; +} diff -r 39e643fc4f90 -r 7aaaaf5dde40 ppe/chara_state32.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ppe/chara_state32.cc Fri Jan 07 23:19:05 2011 +0900 @@ -0,0 +1,62 @@ +#include "task_base.h" +#include "task_object.h" + +SchedDefineTask1(State32, state32); + +static int +state32(SchedTask *smanager, void *rbuf, void *wbuf) +{ + int part4_f = (int)smanager->get_param(1); + int enemystate_14 = (int)smanager->get_param(2); + int enemystate_20 = (int)smanager->get_param(3); + + int length; + CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); + CHARACTER *kyeenemyno = (CHARACTER*)smanager->get_input(rbuf, 1); + int rinkf1 = *(int*)smanager->get_input(rbuf, 3); + + if ((part4_f == FALSE) + || (kyeenemyno->f == FALSE)) + { + CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); + +// Bom(p->x, p->y); + p->f = FALSE; + p->task = DELETE_CHARA; + + *q = *p; + return 0; + } + p->x = kyeenemyno->x - 40; + p->y = kyeenemyno->y + 28; + if (rinkf1 == 5) + { + p->x = kyeenemyno->x - 24 + 4; + p->y = kyeenemyno->y + 28; + p->charano = enemystate_20; + } + if (rinkf1 == 11) + { + p->charano = enemystate_14; + } + if (rinkf1 == 7) + { + length = 1; + smanager->set_outputSize(4, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); + CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); + ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 4); + sprite->flag = true; + sprite->length = length; + + Putenemy(23, p->x + 14, + p->y + 14, 0, 0, STATE41, &sprite->data[0]); + + *q = *p; + return 0; + } + CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); + + *q = *p; + return 0; +} diff -r 39e643fc4f90 -r 7aaaaf5dde40 ppe/chara_state400.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ppe/chara_state400.cc Fri Jan 07 23:19:05 2011 +0900 @@ -0,0 +1,17 @@ +#include "task_base.h" +#include "task_object.h" + +SchedDefineTask1(State400, state400); + +static int +state400(SchedTask *smanager, void *rbuf, void *wbuf) +{ + CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); + + p->vy++; + p->y += p->vy / 4; + p->task = STATE400; + + smanager->swap(); + return 0; +} diff -r 39e643fc4f90 -r 7aaaaf5dde40 ppe/chara_state401.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ppe/chara_state401.cc Fri Jan 07 23:19:05 2011 +0900 @@ -0,0 +1,37 @@ +#include "task_base.h" +#include "task_object.h" + +SchedDefineTask1(State401, state401); + +static int +state401(SchedTask *smanager, void *rbuf, void *wbuf) +{ + int length; + CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); + player *jiki = (player*)smanager->get_input(rbuf, 1); + + p->vx++; + p->x += p->vx / 8; + if (p->x > (jiki->x - 32)) + { + p->vy--; + } + p->y += p->vy / 8; + if (p->dt1 % 50 == 37) + { + length = 1; + smanager->set_outputSize(1, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); + + ObjContainerPtr tama = (ObjContainerPtr)smanager->get_output(wbuf, 1); + tama->flag = true; + tama->length = length; + + Puttama(1, p->x + 8, p->y + 24, &tama->data[0]); + } + p->dt1++; + + CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); + *q = *p; + return 0; +} diff -r 39e643fc4f90 -r 7aaaaf5dde40 ppe/chara_state402.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ppe/chara_state402.cc Fri Jan 07 23:19:05 2011 +0900 @@ -0,0 +1,37 @@ +#include "task_base.h" +#include "task_object.h" + +SchedDefineTask1(State402, state402); + +static int +state402(SchedTask *smanager, void *rbuf, void *wbuf) +{ + int length; + CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); + player *jiki = (player*)smanager->get_input(rbuf, 1); + + p->vx--; + p->x += p->vx / 8; + if (p->x < (jiki->x + 32)) + { + p->vy--; + } + p->y += p->vy / 8; + if (p->dt1 % 50 == 37) + { + length = 1; + smanager->set_outputSize(1, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); + + ObjContainerPtr tama = (ObjContainerPtr)smanager->get_output(wbuf, 1); + tama->flag = true; + tama->length = length; + + Puttama(1, p->x + 8, p->y + 24, &tama->data[0]); + } + CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); + + p->dt1++; + *q = *p; + return 0; +} diff -r 39e643fc4f90 -r 7aaaaf5dde40 ppe/chara_state7.cc --- a/ppe/chara_state7.cc Wed Jan 05 14:41:26 2011 +0900 +++ b/ppe/chara_state7.cc Fri Jan 07 23:19:05 2011 +0900 @@ -6,26 +6,26 @@ static int state7(SchedTask *smanager, void *rbuf, void *wbuf) { + int length; CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); - int length = 1; - - smanager->set_outputSize(1, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); - smanager->setup_outputData(); - - CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); - ObjContainerPtr tama = (ObjContainerPtr)smanager->get_output(wbuf, 1); - tama->flag = false; p->x += p->vx; p->y += p->vy; if((p->dt1 == 60) || (p->dt1 == 90) || (p->dt1 == 30)) { + length = 1; + smanager->set_outputSize(1, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); + ObjContainerPtr tama = (ObjContainerPtr)smanager->get_output(wbuf, 1); + tama->flag = true; - tama->length = 1; + tama->length = length; Puttama(1, p->x, p->y, &tama->data[0]); } + CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); + p->dt1++; p->task = STATE7; diff -r 39e643fc4f90 -r 7aaaaf5dde40 ppe/chara_state8.cc --- a/ppe/chara_state8.cc Wed Jan 05 14:41:26 2011 +0900 +++ b/ppe/chara_state8.cc Fri Jan 07 23:19:05 2011 +0900 @@ -6,8 +6,8 @@ static int state8(SchedTask *smanager, void *rbuf, void *wbuf) { - int count = (int)smanager->get_param(0); CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); + int count = *(int*)smanager->get_input(rbuf, 1); int length; if(p->y < 520) diff -r 39e643fc4f90 -r 7aaaaf5dde40 ppe/chara_state9.cc --- a/ppe/chara_state9.cc Wed Jan 05 14:41:26 2011 +0900 +++ b/ppe/chara_state9.cc Fri Jan 07 23:19:05 2011 +0900 @@ -6,8 +6,8 @@ static int state9(SchedTask *smanager, void *rbuf, void *wbuf) { - int count = (int)smanager->get_param(0); CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); + int count = *(int*)smanager->get_input(rbuf, 1); int length; if(p->s <= 2) diff -r 39e643fc4f90 -r 7aaaaf5dde40 ppe/task_init.cc --- a/ppe/task_init.cc Wed Jan 05 14:41:26 2011 +0900 +++ b/ppe/task_init.cc Fri Jan 07 23:19:05 2011 +0900 @@ -22,8 +22,21 @@ SchedExternTask(State20); SchedExternTask(State21); SchedExternTask(State22); +SchedExternTask(State25); +SchedExternTask(State26); +SchedExternTask(State27); +SchedExternTask(State28); +SchedExternTask(State29); +SchedExternTask(State30); +SchedExternTask(State31); +SchedExternTask(State32); -SchedExternTask(State30); +SchedExternTask(State400); +SchedExternTask(State401); +SchedExternTask(State402); + +SchedExternTask(Asteroid); + /** * この関数は ../spe/spe-main と違って * 自分で呼び出せばいい関数なので @@ -52,6 +65,18 @@ SchedRegisterTask(STATE20, State20); SchedRegisterTask(STATE21, State21); SchedRegisterTask(STATE22, State22); - + SchedRegisterTask(STATE25, State25); + SchedRegisterTask(STATE26, State26); + SchedRegisterTask(STATE27, State27); + SchedRegisterTask(STATE28, State28); + SchedRegisterTask(STATE29, State29); SchedRegisterTask(STATE30, State30); + SchedRegisterTask(STATE31, State31); + SchedRegisterTask(STATE32, State32); + + SchedRegisterTask(STATE400, State400); + SchedRegisterTask(STATE401, State401); + SchedRegisterTask(STATE402, State402); + + SchedRegisterTask(ASTEROID_TASK, Asteroid); } diff -r 39e643fc4f90 -r 7aaaaf5dde40 ppe/task_object.h --- a/ppe/task_object.h Wed Jan 05 14:41:26 2011 +0900 +++ b/ppe/task_object.h Fri Jan 07 23:19:05 2011 +0900 @@ -24,11 +24,13 @@ int ccount; } player; + typedef struct tama { int x; int y; } tama; + typedef struct tama1 { int x; int y; @@ -36,6 +38,7 @@ int l; } tama1; + typedef struct tama2 { int x; int y; @@ -45,10 +48,12 @@ int ll; } tama2; + typedef struct stge { int stg; } stge; + typedef struct laser { float x; float y; @@ -59,6 +64,7 @@ float s; } laser; + typedef struct bomchar { int x; int y; @@ -66,6 +72,7 @@ int no; } bomchar; + typedef struct CHARACTER{ float x; //position float y; @@ -90,10 +97,11 @@ } CHARACTER; + typedef struct CollisionProperty { int bomend; + int infg_level; int enemycount; - int infg_level; player jiki; stge lg; @@ -103,12 +111,13 @@ tama2 tama_lv2[20]; tama1 tlv3; laser laser_lv1[20]; - laser laser_lv2[20]; + laser laser_lv2; laser laser_lv3[128]; bomchar bchar[100]; } CollisionProperty, *CollisionPropertyPtr; + typedef struct ObjData { int type; @@ -126,6 +135,7 @@ short middlex, middley; } ObjData, *ObjDataPtr; + typedef struct ObjContainer { bool flag; int length; @@ -133,6 +143,7 @@ ObjData data[1]; } ObjContainer, *ObjContainerPtr; + CHARACTER * noaction(CHARACTER *p); CHARACTER * delete_chara(CHARACTER *p); void Bom(int x, int y, int *bomend, bomchar *bchar); diff -r 39e643fc4f90 -r 7aaaaf5dde40 property.h --- a/property.h Wed Jan 05 14:41:26 2011 +0900 +++ b/property.h Fri Jan 07 23:19:05 2011 +0900 @@ -8,8 +8,8 @@ typedef struct CollisionProperty { int bomend; + int infg_level; int enemycount; - int infg_level; player jiki; stge lg; @@ -19,7 +19,7 @@ tama2 tama_lv2[20]; tama1 tlv3; laser laser_lv1[20]; - laser laser_lv2[20]; + laser laser_lv2; laser laser_lv3[128]; bomchar bchar[100]; diff -r 39e643fc4f90 -r 7aaaaf5dde40 schedule3.c --- a/schedule3.c Wed Jan 05 14:41:26 2011 +0900 +++ b/schedule3.c Fri Jan 07 23:19:05 2011 +0900 @@ -241,7 +241,6 @@ Putenemy(4, 520, -128, 0, 1, chara_state8); // 1面ボスをPutenemy } //case文 -#if 0 //kyeenemynoはenemyオブジェクトのID。 //ボスが登場していないときはkyeenemynoに-1がセットされる。 //move.cではenemyオブジェクトのIDはtekinoで扱うが、 @@ -263,10 +262,8 @@ clear_result[0] = infg_level; } } -#endif } //stage0.end -#if 0 if (stage == 1) { switch (filpcount) { case 1: @@ -422,6 +419,7 @@ /* Puttama(6,100,0); */ Putenemy(13, 688, 28, 0, 0, chara_state31); +#if 0 Putenemy(14, 368, 28, 0, 0, chara_state32); Putenemy(11, 656, 0, 0, 0, chara_state33); @@ -429,9 +427,10 @@ Putenemy(15, 528, 32, 0, 0, chara_state35); break; +#endif } ////////////////////// - +#if 0 if (filpcount > FRAME_RATE * 64) { if (kyeenemyno->f == FALSE) { Superbom(kyeenemyno->x, kyeenemyno->y); @@ -441,7 +440,9 @@ clear_result[1] = infg_level; } } +#endif } +#if 0 if (stage == 2) { switch (filpcount) { case 1: diff -r 39e643fc4f90 -r 7aaaaf5dde40 state_task.cc --- a/state_task.cc Wed Jan 05 14:41:26 2011 +0900 +++ b/state_task.cc Fri Jan 07 23:19:05 2011 +0900 @@ -79,26 +79,26 @@ SetTaskState(STATE21, chara_state21); SetTaskState(STATE22, chara_state22); SetTaskState(STATE23, chara_state23); -#if 0 SetTaskState(STATE24, chara_state24); SetTaskState(STATE25, chara_state25); SetTaskState(STATE26, chara_state26); SetTaskState(STATE27, chara_state27); SetTaskState(STATE28, chara_state28); SetTaskState(STATE29, chara_state29); -#endif SetTaskState(STATE30, chara_state30); -#if 0 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); @@ -120,6 +120,17 @@ void +freeObject(SchedTask *s, void *chara, void *obj) +{ + free(obj); + + CHARACTER *p = (CHARACTER*)chara; + int num = GetStateNum(p->task); + p->state = state_list[num]; +} + + +void checkContainer(SchedTask *s, void *chara, void *obj) { CHARACTER *p = (CHARACTER*)chara; @@ -225,7 +236,7 @@ CHARACTER* -BossTask1(CHARACTER *p) +JikiContainerTask(CHARACTER *p) { int task_num = p->task; int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH; @@ -234,9 +245,65 @@ obj->flag = false; obj->length = 0; - state_task->set_param(0, (memaddr)count); + 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_outData(1, obj, 0); + + state_task->set_post(checkContainer, (void*)p, (void*)obj); + state_task->set_cpu(SPE_ANY); + state_task->spawn(); + + return p; +} + + +CHARACTER* +AsteroidTask(CHARACTER *p) +{ + asteroiddt[asteroidi] = p; + + int task_num = ASTEROID_TASK; + HTaskPtr state_task = tmanager->create_task(task_num); + + state_task->set_param(0, (memaddr)asteroidi); + + state_task->set_inData(0, p, sizeof(CHARACTER)); + + state_task->set_outData(0, p, sizeof(CHARACTER)); + + int array_size = sizeof(CHARACTER)*asteroidi; + if (array_size > 0) { + CHARACTER *asteroid_array = (CHARACTER*)tmanager->allocate(array_size); + for (int i = 0; i < asteroidi; i++) { + asteroid_array[i] = *asteroiddt[i]; + } + state_task->set_inData(1, asteroid_array, array_size); + state_task->set_post(freeObject, (void*)p, (void*)asteroid_array); + } else { + state_task->set_post(updateState, (void*)p, NULL); + } + state_task->set_cpu(SPE_ANY); + state_task->spawn(); + + asteroidi++; + return p; +} + + +CHARACTER* +Boss1Task1(CHARACTER *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)); @@ -251,7 +318,7 @@ CHARACTER* -BossTask2(CHARACTER *p) +Boss1Task2(CHARACTER *p) { int task_num = p->task; int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH; @@ -260,9 +327,8 @@ obj->flag = false; obj->length = 0; - state_task->set_param(0, (memaddr)count); - 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)); @@ -279,7 +345,7 @@ CHARACTER* -BossTask3(CHARACTER *p) +Boss1Task3(CHARACTER *p) { int task_num = p->task; HTaskPtr state_task = tmanager->create_task(task_num); @@ -301,7 +367,7 @@ CHARACTER* -BossTask4(CHARACTER *p) +Boss1Task4(CHARACTER *p) { int task_num = p->task; int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH; @@ -328,7 +394,7 @@ CHARACTER* -BossTask5(CHARACTER *p) +Boss1Task5(CHARACTER *p) { int task_num = p->task; int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH; @@ -362,7 +428,7 @@ CHARACTER* -BossTask6(CHARACTER *p) +Boss1Task6(CHARACTER *p) { int task_num = p->task; int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH; @@ -373,19 +439,87 @@ state_task->set_param(0, (memaddr)rinkx); state_task->set_param(1, (memaddr)rinky); - state_task->set_param(2, (memaddr)rinkf2); - state_task->set_param(3, (memaddr)count); - state_task->set_param(4, (memaddr)filpcount); - state_task->set_param(5, (memaddr)tekino0->f); - state_task->set_param(6, (memaddr)bomend); + state_task->set_param(2, (memaddr)filpcount); + state_task->set_param(3, (memaddr)tekino0->f); + state_task->set_param(4, (memaddr)count); state_task->set_inData(0, p, sizeof(CHARACTER)); - state_task->set_inData(1, bchar, sizeof(bomchar)*(bomend+1)); + state_task->set_inData(1, bchar, sizeof(bomchar)*100); + state_task->set_inData(2, &bomend, sizeof(int)); + state_task->set_inData(3, &rinkf2, sizeof(int)); state_task->set_outData(0, p, sizeof(CHARACTER)); state_task->set_outData(1, &count, sizeof(int)); state_task->set_outData(2, &bomend, sizeof(int)); - state_task->set_outData(3, obj, 0); + state_task->set_outData(3, bchar, sizeof(bomchar)*100); + state_task->set_outData(4, obj, 0); + + state_task->set_post(checkContainer, (void*)p, (void*)obj); + state_task->set_cpu(SPE_ANY); + state_task->spawn(); + + return p; +} + + +CHARACTER* +Boss2Task1(CHARACTER *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_param(0, (memaddr)enemy_part1->f); + state_task->set_param(1, (memaddr)enemy_part5->f); + + state_task->set_inData(0, p, sizeof(CHARACTER)); + state_task->set_inData(1, &count, sizeof(int)); + state_task->set_inData(2, &rinkx, sizeof(int)); + state_task->set_inData(3, &rinkf1, sizeof(int)); + + 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_post(checkContainer, (void*)p, (void*)obj); + state_task->set_cpu(SPE_ANY); + state_task->spawn(); + + return p; +} + + +CHARACTER* +Boss2Task2(CHARACTER *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_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_inData(0, p, sizeof(CHARACTER)); + state_task->set_inData(1, kyeenemyno, sizeof(CHARACTER)); + state_task->set_inData(2, &count, sizeof(int)); + state_task->set_inData(3, &rinkf1, sizeof(int)); + state_task->set_inData(4, bchar, sizeof(bomchar)*100); + + 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_post(checkContainer, (void*)p, (void*)obj); state_task->set_cpu(SPE_ANY); @@ -487,7 +621,7 @@ kyeenemyno = p; p->task = STATE8; - return BossTask1(p); + return Boss1Task1(p); } @@ -495,7 +629,7 @@ chara_state9(CHARACTER *p) { p->task = STATE9; - return BossTask2(p); + return Boss1Task2(p); } @@ -503,7 +637,7 @@ chara_state10(CHARACTER *p) { p->task =STATE10; - return BossTask3(p); + return Boss1Task3(p); } @@ -511,7 +645,7 @@ chara_state11(CHARACTER *p) { p->task = STATE11; - return BossTask4(p); + return Boss1Task4(p); } @@ -519,7 +653,7 @@ chara_state12(CHARACTER *p) { p->task = STATE12; - return BossTask5(p); + return Boss1Task5(p); } @@ -527,7 +661,7 @@ chara_state13(CHARACTER *p) { p->task = STATE13; - return BossTask6(p); + return Boss1Task6(p); } @@ -548,305 +682,104 @@ //ここまでgetate boss -CHARACTER * chara_state22(CHARACTER *p) +CHARACTER* +chara_state22(CHARACTER *p) { + p->task = STATE22; return SimpleStateTask(p); } -CHARACTER * chara_state23(CHARACTER *p) +CHARACTER* +chara_state23(CHARACTER *p) { -// p=asteroid(p); - return p; + p->task = STATE23; + return AsteroidTask(p); } -#if 0 -CHARACTER * chara_state24(CHARACTER *p) +CHARACTER* +chara_state24(CHARACTER *p) { - kyeenemyno = p; - tekino0 = 0; - enemy_part1 = p->next; - enemy_part2 = enemy_part1->next; - enemy_part3 = enemy_part2->next; - enemy_part4 = enemy_part3->next; - enemy_part5 = enemy_part4->next; - rinkx = 0; - rinky = 0; - rinkf1 = 0; - rinkf2 = 0; - p->state = chara_state25; - return p; -} - -CHARACTER * chara_state25(CHARACTER *p) -{ - int amari; + kyeenemyno = p; + tekino0 = 0; + enemy_part1 = p->next; + enemy_part2 = enemy_part1->next; + enemy_part3 = enemy_part2->next; + enemy_part4 = enemy_part3->next; + enemy_part5 = enemy_part4->next; + rinkx = 0; + rinky = 0; + rinkf1 = 0; + rinkf2 = 0; + p->task = STATE25; - if(p->dt1 <= 360) - { - p->x = Mycos(p->dt1) * 30 / SANKAKU + 82 + 32; - p->y = Mysin(p->dt1) * 30 / SANKAKU + 30; - } - if(p->dt1 > 360) - { - p->x = Mycos(p->dt1) * 30 * -1 /SANKAKU + 142 + 32; - p->y = Mysin(p->dt1) * 30 / SANKAKU + 30; - } - count++; - PutSprite(count, p->x - 42, p->y, 64); - amari = rand() % 160; - if((amari == 1) && (enemy_part5->f == TRUE)) - { - p->state = chara_state26; - rinkf1 = 1; - } - if((amari == 2) && (enemy_part1->f == TRUE)) - { - p->state = chara_state27; - rinkf1 = 5; - rinkx = 0; - return p; - } - if((enemy_part5->f == TRUE) && (enemy_part1->f != TRUE)) - { - p->state = chara_state28; - } - p->dt1 += 3; - if(p->dt1 == 720) - { - p->dt1 = 0; - } - return p; + int num = GetStateNum(p->task); + p->state = state_list[num]; + return p; } -CHARACTER * chara_state26(CHARACTER *p) +CHARACTER* +chara_state25(CHARACTER *p) { - if((p->dt2 > 50) && (p->dt2 < 100)) - { - rinkf1 = 2; - } - if(p->dt2 > 100) - { - rinkf1 = 3; - } - if(p->dt2 == 400) - { - rinkf1 = 4; - } - count++; - PutSprite(count, p->x - 42, p->y, 64); - if(p->dt2 == 401) - { - p->dt2 = 0; - rinkf1 = 0; - p->state = chara_state25; - return p; - } - p->dt2++; - return p; + p->task = STATE25; + return Boss2Task1(p); } -CHARACTER * chara_state27(CHARACTER *p) //rocket punch +CHARACTER* +chara_state26(CHARACTER *p) { - if((p->dt2 > 50) && (p->dt2 < 60) && (p->x > -24) && (p->y > -24)) - { - rinkf1 = 6; - rinkx -= 4; - p->x -= 4; - p->y -= 4; - } - if(p->dt2 == 80) - { - rinkf1 = 7; - } - if(p->dt2 == 81) - { - rinkf1 = 8; - } - if(p->dt2 == 124) - { - rinkf1 = 9; - } - if(p->dt2 == 400) - { - rinkf1 = 10; - } - if(p->dt2 == 444) - { - rinkf1 = 11; - } - if(p->dt2 == 500) - { - rinkf1 = 12; - } - if((p->dt2 > 80) && (p->dt2 < 200)) - { - if((rinkx != 0) && (p->dt2 % 2 == 1)) - { - rinkx++; - p->x++; - p->y++; - } - } - count++; - PutSprite(count, p->x - 32, p->y, 6); - if(rinkf1 == 12) - { - p->dt2 = 0; - rinkf1 = 0; - rinkx = 0; - p->state = chara_state25; - return p; - } - p->dt2++; - return p; + p->task = STATE26; + return Boss2Task1(p); } -CHARACTER * chara_state28(CHARACTER *p) + +CHARACTER* +chara_state27(CHARACTER *p) //rocket punch { - if (p->dt1 <= 360) - { - p->x = Mycos(p->dt1) * 30 / SANKAKU + 82 + 32; - p->y = Mysin(p->dt1) * 30 / SANKAKU + 30; - } - if (p->dt1 > 360) - { - p->x = Mycos(p->dt1) * 30 * -1 / SANKAKU + 142 + 32; - p->y = Mysin(p->dt1) * 30 / SANKAKU + 30; - } - count++; - PutSprite(count, p->x - 42, p->y, 64); - if (p->dt1 % 30 == 3) - { - 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); - } - p->dt1 += 3; - return p; + p->task = STATE27; + return Boss2Task1(p); +} +CHARACTER* +chara_state28(CHARACTER *p) +{ + p->task = STATE28; + return Boss2Task1(p); } -CHARACTER * chara_state29(CHARACTER *p) +CHARACTER* +chara_state29(CHARACTER *p) { - p->x += p->vx; - p->y += p->vy; - if(p->dt1 % 18 == 1) - { - Puttama(0, p->x, p->y); - } - p->dt1++; - return p; + p->task = STATE29; + return sendContainerTask(p); } -#endif + -CHARACTER * chara_state30(CHARACTER *p) +CHARACTER* +chara_state30(CHARACTER *p) { p->task = STATE30; return SimpleStateTask(p); } -#if 0 -CHARACTER * chara_state31(CHARACTER *p) //right hand + +CHARACTER* +chara_state31(CHARACTER *p) //right hand { - - if((enemy_part3->f == FALSE) || (kyeenemyno->f == FALSE)) - { - Bom(p->x, p->y); - p->f = FALSE; - p->state = delete_chara; - p->collision = noaction; - return p; - } - - if(rinkf1 == 0) - { - p->x = kyeenemyno->x + 40; - p->y = kyeenemyno->y + 28; - p->dt2 = 0; - } - if(rinkf1 == 5) - { - p->x = kyeenemyno->x + 52; - p->y = kyeenemyno->y; - count++; - PutSprite(count, p->x - 4, p->y - 20, 80 + p->dt2 % 4); - p->dt2++; - } - if(rinkf1 == 6) - { - if(p->y < 240 - 40) - { - p->y += 6; - } - else - { - return p; - } - count++; - PutSprite(count, p->x - 4, p->y - 20, 90 + p->dt2 % 4); - p->dt2++; - } - if(rinkf1 == 7) - { - Putenemy(22, p->x + 14, p->y + 14, 0, 0, chara_state40); - return p; - } - if(rinkf1 == 11) - { - if(p->y + 20 != p->y) - { - p->y--; - } - else - { - return p; - } - count++; - PutSprite(count, p->x + 8, p->y + 44, 58 + p->dt2 % 4); - p->dt2++; - } - return p; + p->task = STATE31; + return Boss2Task2(p); } -CHARACTER * chara_state32(CHARACTER *p) //left hand +CHARACTER* +chara_state32(CHARACTER *p) //left hand { - if ((enemy_part4->f == FALSE) - || (kyeenemyno->f == FALSE)) - { - Bom(p->x, p->y); - p->f = FALSE; - p->state = delete_chara; - p->collision = noaction; - return p; - } - p->x = kyeenemyno->x - 40; - p->y = kyeenemyno->y + 28; - if (rinkf1 == 5) - { - p->x = kyeenemyno->x - 24 + 4; - p->y = kyeenemyno->y + 28; - p->charano = enemystate[20].charano; - } - if (rinkf1 == 11) - { - p->charano = enemystate[14].charano; - } - if (rinkf1 == 7) - { - Putenemy(23, p->x + 14, - p->y + 14, 0, 0, chara_state41); - // rinkf1=8; - return p; - } - return p; + p->task = STATE32; + return Boss2Task2(p); } +#if 0 CHARACTER * chara_state33(CHARACTER *p) // right shoulder { if (kyeenemyno->f == FALSE) @@ -1051,50 +984,33 @@ p->dt1++; return p; } +#endif CHARACTER * chara_state400(CHARACTER *p) { + p->task = STATE400; return SimpleStateTask(p); } -CHARACTER * chara_state401(CHARACTER *p) +CHARACTER* +chara_state401(CHARACTER *p) { - p->vx++; - p->x += p->vx / 8; - if (p->x > (jiki.x - 32)) - { - p->vy--; - } - p->y += p->vy / 8; - if (p->dt1 % 50 == 37) - { - Puttama(1, p->x + 8, p->y + 24); - } - p->dt1++; - return p; + p->task = STATE401; + return JikiContainerTask(p); } -CHARACTER * chara_state402(CHARACTER *p) +CHARACTER* +chara_state402(CHARACTER *p) { - p->vx--; - p->x += p->vx / 8; - if (p->x < (jiki.x + 32)) - { - p->vy--; - } - p->y += p->vy / 8; - if (p->dt1 % 50 == 37) - { - Puttama(1, p->x + 8, p->y + 24); - } - p->dt1++; - return p; + p->task = STATE402; + return JikiContainerTask(p); } +#if 0 CHARACTER * chara_state410(CHARACTER *p) { kyeenemyno = p; @@ -1265,29 +1181,4 @@ return p; } - -CHARACTER * asteroid(CHARACTER *p) -{ - int i; - - asteroiddt[asteroidi] = p; - // if(asteroidi==0) - // { - p->x += p->vx; - p->y += p->vy; - // } - if (asteroidi > 0) { - for (i = 0; i < asteroidi; i++) { - if ((asteroiddt[i]->x + 32 > p->x) - && (p->x + 32 > asteroiddt[i]->x) - && (asteroiddt[i]->y + 32 > p->y) - && (asteroiddt[i]->y < p->y + 32)) { - p->vx *= -1; - p->vy *= -1; - } - } - } - asteroidi++; - return p; -} #endif