Mercurial > hg > Members > koba > t_dandy
changeset 57:978097c6427a
bug fix.
line wrap: on
line diff
--- a/Character.c Sat Jan 29 02:46:41 2011 +0900 +++ b/Character.c Sat Jan 29 22:43:17 2011 +0900 @@ -58,7 +58,8 @@ q[i]->state = noaction; q[i]->dt1 = 0; q[i]->dt2 = 0; - q[i]->task = 0; + q[i]->state_task = 0; + q[i]->collision_task = false; q[i]->collision = noaction; } @@ -127,6 +128,8 @@ q->tama = tf; q->vit = enemystate[charano].p; q->score = enemystate[charano].sc; + q->state_task = 0; + q->collision_task = false; q->charano = number; q->s = 0; q->f = TRUE;
--- a/Character.h Sat Jan 29 02:46:41 2011 +0900 +++ b/Character.h Sat Jan 29 22:43:17 2011 +0900 @@ -45,7 +45,8 @@ //int group; int chara_id; - int task; + int state_task; + bool collision_task; State state; Collision collision;
--- a/TaskDandy.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/TaskDandy.cc Sat Jan 29 22:43:17 2011 +0900 @@ -31,6 +31,7 @@ #include "Character_state.h" #include "property.h" #include "collision_task.h" +#include "state_task.h" #include "StateList.h" #include "Cheat.h" #include "debug_db.h" @@ -108,7 +109,7 @@ static int get_option(int argc, char *argv[]); static int opening(int gamef); static int dandy_closing(int gamef); -static int dandy_main_loop(int gamef); +static int dandy_main_loop(int gamef, HTaskPtr next); static int dandy_main_init(int gamef); extern int init(TaskManager *manager, int argc, char *argv[]); extern void task_initialize(); @@ -128,7 +129,7 @@ case 0: gamef= dandy_main_init(gamef); break; case 1: gamef= gamesyokika(gamef); break; case 2: gamef= opening(gamef); break; - case 3: gamef= dandy_main_loop(gamef); break; + case 3: gamef= dandy_main_loop(gamef, next); break; case 4: gamef= dandy_closing(gamef); break; } return next; @@ -322,7 +323,7 @@ static int -dandy_main_loop(int gamef) +dandy_main_loop(int gamef, HTaskPtr next) { if ((pad[0].l1 != 0) && (pad[0].r1 != 0) && (pad[0].l2 != 0) && (pad[0].r2 != 0)) { @@ -353,15 +354,22 @@ outofwindow(); // timeprof_end(timeprof_move); + HTaskPtr state_next = create_next(); + state_update(); HTaskPtr update = collision_update(); HTaskPtr reflect = collision_reflect(); + collision_detect(); + + next->wait_for(state_next); + next->wait_for(reflect); + + state_next->spawn(); update->spawn(); reflect->spawn(); - //charpatern(); //bosguage(); @@ -374,11 +382,11 @@ obj_draw(); gamef = game_pause(gamef); + KeyAssign(runmode, t_buff, joy, pad); + filpcount++; count = 0; - KeyAssign(runmode, t_buff, joy, pad); - return gamef; }
--- a/collision_task.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/collision_task.cc Sat Jan 29 22:43:17 2011 +0900 @@ -3,7 +3,6 @@ #include <SDL.h> #include "Func.h" #include "TaskManager.h" -#include "collision_task.h" #include "Character.h" #include "Character_state.h" #include "count2.h" @@ -13,6 +12,7 @@ #include "StateList.h" #include "property.h" +#include "collision_task.h" extern SpriteTable sptable[DEFOBJ]; @@ -21,6 +21,21 @@ HTaskPtr update_task; HTaskPtr reflect_task; + +void +state_check(CHARACTER *p) +{ + if (p->collision_task == true) { + p->state_task = DELETE_CHARA; + p->state = delete_chara; + p->collision = noaction; + return; + } else { + int num = GetStateNum(p->state_task); + p->state = state_list[num].state; + } +} + static CollisionPropertyPtr get_property() { @@ -75,17 +90,6 @@ memcpy(laser_lv3, property->laser_lv3, sizeof(laser)*128); } -void -collision_update(SchedTask *s, void *object, void *chara) -{ - CHARACTER *p = (CHARACTER*)chara; - - if (p->task == DELETE_CHARA) { - p->state = delete_chara; - p->collision = noaction; - } - free(object); -} void after_free(SchedTask *s, void *object, void *none) @@ -152,6 +156,16 @@ } +void +collision_check(SchedTask *s, void *object, void *chara) +{ + CHARACTER *p = (CHARACTER*)chara; + state_check(p); + + free(object); +} + + CHARACTER* atari(CHARACTER *p) { @@ -177,7 +191,7 @@ collision_task->set_outData(0, p, sizeof(CHARACTER)); collision_task->set_outData(1, obj, obj_size); - collision_task->set_post(collision_update, (void*)obj, (void*)p); + collision_task->set_post(collision_check, (void*)obj, (void*)p); collision_task->set_cpu(SPE_0); collision_task->wait_for(update_task);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/collision_task.h Sat Jan 29 22:43:17 2011 +0900 @@ -0,0 +1,11 @@ +#ifndef INCLUDE_COLLISION_TASK +#define INCLUDE_COLLISION_TASK + +void state_check(CHARACTER *p); + +void collision_allocate(); +HTaskPtr collision_update(); +HTaskPtr collision_reflect(); +void collision_free(); + +#endif
--- a/ppe/Atari.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/Atari.cc Sat Jan 29 22:43:17 2011 +0900 @@ -89,7 +89,7 @@ Bom(p->x, p->y, &sprite->data[0]); *enemycount += (p->score * ((infg->stg / 128) + infg_level + 1)); - p->task = DELETE_CHARA; + p->collision_task = true; p->f = FALSE; *q = *p; @@ -109,7 +109,7 @@ Bom(p->x, p->y, &sprite->data[0]); *enemycount += (p->score * ((infg->stg / 128) + infg_level + 1)); - p->task = DELETE_CHARA; + p->collision_task = true; p->f = FALSE; *q = *p; @@ -133,7 +133,7 @@ Bom(p->x, p->y, &sprite->data[0]); *enemycount += (p->score * ((infg->stg / 128) + infg_level + 1)); - p->task = DELETE_CHARA; + p->collision_task = true; p->f = FALSE; *q = *p; @@ -156,7 +156,7 @@ Bom(p->x, p->y, &sprite->data[0]); *enemycount += (p->score * ((infg->stg / 128) + infg_level + 1)); - p->task = DELETE_CHARA; + p->collision_task = true; p->f = FALSE; *q = *p; @@ -177,7 +177,7 @@ Bom(p->x, p->y, &sprite->data[0]); *enemycount += (p->score * ((infg->stg / 128) + infg_level + 1)); - p->task = DELETE_CHARA; + p->collision_task = true; p->f = FALSE; *q = *p; @@ -198,7 +198,7 @@ Bom(p->x, p->y, &sprite->data[0]); *enemycount += (p->score * ((infg->stg / 128) + infg_level + 1)); - p->task = DELETE_CHARA; + p->collision_task = true; p->f = FALSE; *q = *p; @@ -217,7 +217,7 @@ Bom(p->x, p->y, &sprite->data[0]); *enemycount += (p->score * ((infg->stg / 128) + infg_level + 1)); - p->task = DELETE_CHARA; + p->collision_task = true; p->f = FALSE; *q = *p; @@ -236,7 +236,7 @@ Bom(p->x, p->y, &sprite->data[0]); *enemycount += (p->score * ((infg->stg / 128) + infg_level + 1)); - p->task = DELETE_CHARA; + p->collision_task = true; p->f = FALSE; *q = *p; @@ -261,7 +261,7 @@ Bom(p->x, p->y, &sprite->data[0]); *enemycount += (p->score * ((infg->stg / 128) + infg_level + 1)); - p->task = DELETE_CHARA; + p->collision_task = true; p->f = FALSE; *q = *p; @@ -287,7 +287,7 @@ Bom(p->x, p->y, &sprite->data[0]); *enemycount += (p->score * ((infg->stg / 128) + infg_level + 1)); - p->task = DELETE_CHARA; + p->collision_task = true; p->f = FALSE; *q = *p; @@ -311,7 +311,7 @@ Bom(p->x, p->y, &sprite->data[0]); *enemycount += (p->score * ((infg->stg / 128) + infg_level + 1)); - p->task = DELETE_CHARA; + p->collision_task = true; p->f = FALSE; *q = *p;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ppe/CollDataReflect.cc Sat Jan 29 22:43:17 2011 +0900 @@ -0,0 +1,20 @@ +#include <string.h> +#include "task_base.h" +#include "task_object.h" + + +SchedDefineTask1(CollDataReflect, coll_reflect); + +static int +coll_reflect(SchedTask *smanager, void *rbuf, void *wbuf) +{ + long load_id = (long)smanager->get_param(0); + + void* odata = smanager->get_output(wbuf, 0); + long size = (long)smanager->get_outputSize(0); + + void *global_data = (void*)smanager->global_get(load_id); + memcpy(odata, global_data, size); + + return 0; +}
--- a/ppe/chara_state0.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state0.cc Sat Jan 29 22:43:17 2011 +0900 @@ -11,7 +11,7 @@ p->x += p->vx; p->y += p->vy; - p->task = STATE0; + p->state_task = STATE0; smanager->swap(); return 0; }
--- a/ppe/chara_state1.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state1.cc Sat Jan 29 22:43:17 2011 +0900 @@ -11,7 +11,7 @@ p->x -= p->vx; p->y -= p->vy; - p->task = STATE1; + p->state_task = STATE1; smanager->swap(); return 0; }
--- a/ppe/chara_state10.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state10.cc Sat Jan 29 22:43:17 2011 +0900 @@ -18,7 +18,7 @@ p->y += p->vy; p->dt1++; - p->task = STATE10; + p->state_task = STATE10; *q = *p; return 0; } @@ -28,7 +28,7 @@ p->dt1 = rinkx; p->dt2 = rinky; - p->task = STATE13; + p->state_task = STATE13; *q = *p; return 0; }
--- a/ppe/chara_state11.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state11.cc Sat Jan 29 22:43:17 2011 +0900 @@ -27,7 +27,7 @@ DefSpriteEx(54, 16, 32, &sprite->data[0]); PutSpriteEx(54, p->x, p->y, p->s, p->s, 1, &sprite->data[1]); - p->task = STATE11; + p->state_task = STATE11; *w_count = count; *q = *p; return 0; @@ -37,7 +37,7 @@ p->dt1 = 0; p->dt2 = 0; - p->task = STATE12; + p->state_task = STATE12; *q = *p; return 0; }
--- a/ppe/chara_state12.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state12.cc Sat Jan 29 22:43:17 2011 +0900 @@ -29,7 +29,7 @@ sprite->length = length; if (p->y > 240+32) { - p->task = DELETE_CHARA; + p->state_task = DELETE_CHARA; } p->y += 3; rinky += 3; @@ -38,7 +38,7 @@ 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; + p->state_task = STATE12; *w_rinky = rinky; *w_count = count;
--- a/ppe/chara_state13.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state13.cc Sat Jan 29 22:43:17 2011 +0900 @@ -29,7 +29,7 @@ Bom(p->x, p->y, &sprite->data[0]); p->f = FALSE; - p->task = DELETE_CHARA; + p->state_task = DELETE_CHARA; *w_count = count; *q = *p;
--- a/ppe/chara_state2.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state2.cc Sat Jan 29 22:43:17 2011 +0900 @@ -11,7 +11,7 @@ p->vy -= 0.25; p->y += p->vy; - p->task = STATE2; + p->state_task = STATE2; smanager->swap(); return 0; }
--- a/ppe/chara_state20.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state20.cc Sat Jan 29 22:43:17 2011 +0900 @@ -13,7 +13,7 @@ p->vy -= 0.5; p->vy += 0.4; - p->task = STATE20; + p->state_task = STATE20; smanager->swap(); return 0; }
--- a/ppe/chara_state21.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state21.cc Sat Jan 29 22:43:17 2011 +0900 @@ -13,7 +13,7 @@ p->vx += 0.5; p->vy += 0.4; - p->task = STATE21; + p->state_task = STATE21; smanager->swap(); return 0; }
--- a/ppe/chara_state22.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state22.cc Sat Jan 29 22:43:17 2011 +0900 @@ -17,7 +17,7 @@ p->y = rand % (120 - 35); p->vx = (rand % 4 + 1); p->vy = rand % 3 + 1; - p->task = STATE23; + p->state_task = STATE23; } if((sf == 2)) { @@ -25,7 +25,7 @@ p->y = -30; p->vx = rand % 3 - 1; p->vy = (rand % 4 + 1); - p->task = STATE23; + p->state_task = STATE23; } if(sf == 3) { @@ -33,7 +33,7 @@ p->y = rand % (120 - 35); p->vx = (rand % 4 + 1) * -1; p->vy = rand % 3 -1; - p->task = STATE23; + p->state_task = STATE23; } smanager->swap();
--- a/ppe/chara_state25.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state25.cc Sat Jan 29 22:43:17 2011 +0900 @@ -44,12 +44,12 @@ amari = rand % 160; if((amari == 1) && (part5_f == TRUE)) { - p->task = STATE26; + p->state_task = STATE26; *rinkf1 = 1; } if((amari == 2) && (part1_f == TRUE)) { - p->task = STATE27; + p->state_task = STATE27; *rinkf1 = 5; *rinkx = 0; @@ -58,7 +58,7 @@ } if((part5_f == TRUE) && (part1_f != TRUE)) { - p->task = STATE28; + p->state_task = STATE28; } p->dt1 += 3; if(p->dt1 == 720)
--- a/ppe/chara_state26.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state26.cc Sat Jan 29 22:43:17 2011 +0900 @@ -40,7 +40,7 @@ p->dt2 = 0; *rinkf1 = 0; - p->task = STATE25; + p->state_task = STATE25; *q = *p; return 0; }
--- a/ppe/chara_state27.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state27.cc Sat Jan 29 22:43:17 2011 +0900 @@ -71,7 +71,7 @@ rinkf1 = 0; rinkx = 0; - p->task = STATE25; + p->state_task = STATE25; *q = *p; *w_count = count; *w_rinkx = rinkx;
--- a/ppe/chara_state3.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state3.cc Sat Jan 29 22:43:17 2011 +0900 @@ -28,7 +28,7 @@ CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); p->dt1++; - p->task = STATE3; + p->state_task = STATE3; *q = *p; return 0;
--- a/ppe/chara_state30.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state30.cc Sat Jan 29 22:43:17 2011 +0900 @@ -11,7 +11,7 @@ p->x = p->x - 32; p->y = p->y; - p->task = STATE30; + p->state_task = STATE30; smanager->swap(); return 0; }
--- a/ppe/chara_state31.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state31.cc Sat Jan 29 22:43:17 2011 +0900 @@ -26,7 +26,7 @@ Bom(p->x, p->y, &sprite->data[0]); p->f = FALSE; - p->task = DELETE_CHARA; + p->collision_task = true; *q = *p; return 0;
--- a/ppe/chara_state32.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state32.cc Sat Jan 29 22:43:17 2011 +0900 @@ -28,7 +28,7 @@ Bom(p->x, p->y, &sprite->data[0]); p->f = FALSE; - p->task = DELETE_CHARA; + p->collision_task = true; *q = *p; return 0;
--- a/ppe/chara_state33.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state33.cc Sat Jan 29 22:43:17 2011 +0900 @@ -27,7 +27,7 @@ Bom(p->x, p->y, &sprite->data[0]); p->f = FALSE; - p->task = DELETE_CHARA; + p->collision_task = true; *q = *p; return 0;
--- a/ppe/chara_state34.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state34.cc Sat Jan 29 22:43:17 2011 +0900 @@ -27,7 +27,7 @@ Bom(p->x, p->y, &sprite->data[0]); p->f = FALSE; - p->task = DELETE_CHARA; + p->collision_task = true; *q = *p; return 0;
--- a/ppe/chara_state35.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state35.cc Sat Jan 29 22:43:17 2011 +0900 @@ -27,7 +27,7 @@ Bom(p->x, p->y, &sprite->data[0]); p->f = FALSE; - p->task = DELETE_CHARA; + p->collision_task = true; *q = *p; return 0;
--- a/ppe/chara_state4.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state4.cc Sat Jan 29 22:43:17 2011 +0900 @@ -15,9 +15,9 @@ if ((p->y < jiki->y) && (p->y + 16 > jiki->y)) { p->vy = -2; p->vx = ((jiki->x > p->x) ? 4 : -4); - p->task = STATE7; + p->state_task = STATE7; } else { - p->task = STATE4; + p->state_task = STATE4; } *q = *p; return 0;
--- a/ppe/chara_state40.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state40.cc Sat Jan 29 22:43:17 2011 +0900 @@ -17,7 +17,7 @@ CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); // Bom(p->x, p->y); p->f = FALSE; - p->task = DELETE_CHARA; + p->collision_task = true; *q = *p; return 0; @@ -76,7 +76,7 @@ { //rinkf1=11; p->f = FALSE; - p->task = DELETE_CHARA; + p->collision_task = true; } }
--- a/ppe/chara_state400.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state400.cc Sat Jan 29 22:43:17 2011 +0900 @@ -10,7 +10,7 @@ p->vy++; p->y += p->vy / 4; - p->task = STATE400; + p->state_task = STATE400; smanager->swap(); return 0;
--- a/ppe/chara_state41.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state41.cc Sat Jan 29 22:43:17 2011 +0900 @@ -19,7 +19,7 @@ CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); // Bom(p->x, p->y); p->f = FALSE; - p->task = DELETE_CHARA; + p->collision_task = true; *q = *p; return 0; @@ -82,7 +82,7 @@ CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); p->f = FALSE; - p->task = DELETE_CHARA; + p->collision_task = true; *q = *p; return 0;
--- a/ppe/chara_state5.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state5.cc Sat Jan 29 22:43:17 2011 +0900 @@ -17,9 +17,9 @@ { p->vy = -2; p->vx = ((jiki->x > p->x) ? 4 : -4); - p->task = STATE0; + p->state_task = STATE0; } - else p->task = STATE5; + else p->state_task = STATE5; *q = *p; return 0;
--- a/ppe/chara_state6.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state6.cc Sat Jan 29 22:43:17 2011 +0900 @@ -17,9 +17,9 @@ { p->vy = 2; p->vx = ((jiki->x > p->x) ? 4 : -4); - p->task = STATE0; + p->state_task = STATE0; } - else p->task = STATE6; + else p->state_task = STATE6; *q = *p; return 0;
--- a/ppe/chara_state600.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state600.cc Sat Jan 29 22:43:17 2011 +0900 @@ -27,7 +27,7 @@ Puttama(11, p->x + 32, p->y + 48, &sprite->data[1]); Puttama(11, p->x + 48, p->y + 16, &sprite->data[2]); if (p->dt2 > 240) - p->task = STATE601; + p->state_task = STATE601; if (p->x < 0) p->x = 0; if (p->x > 260)
--- a/ppe/chara_state601.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state601.cc Sat Jan 29 22:43:17 2011 +0900 @@ -36,7 +36,7 @@ if (p->y > 232) p->y = 232; if (p->dt2 > 800) { - p->task = STATE602; + p->state_task = STATE602; } CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0);
--- a/ppe/chara_state602.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state602.cc Sat Jan 29 22:43:17 2011 +0900 @@ -24,7 +24,7 @@ (rand % 5 + 0.5) * (rand % 2 == 1 ? -1 : 1), STATE29, &sprite->data[0]); if (p->dt2 > 1024) { - p->task = STATE600; + p->state_task = STATE600; p->dt2 = 0; } CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0);
--- a/ppe/chara_state7.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state7.cc Sat Jan 29 22:43:17 2011 +0900 @@ -27,7 +27,7 @@ CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); p->dt1++; - p->task = STATE7; + p->state_task = STATE7; *q = *p; return 0;
--- a/ppe/chara_state8.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state8.cc Sat Jan 29 22:43:17 2011 +0900 @@ -30,7 +30,7 @@ p->dt1 = 512; p->s = 0.125; - p->task = STATE8; + p->state_task = STATE8; *w_count = count; *q = *p; @@ -38,7 +38,7 @@ } CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); - p->task = STATE9; + p->state_task = STATE9; *q = *p; return 0;
--- a/ppe/chara_state9.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/chara_state9.cc Sat Jan 29 22:43:17 2011 +0900 @@ -31,7 +31,7 @@ DefSpriteEx(54, 16*4, 32*4, &sprite->data[0]); PutSpriteEx(54, (p->x * 4), (p->y * 4), p->s, p->s, 1, &sprite->data[1]); - p->task = STATE9; + p->state_task = STATE9; *q = *p; return 0; } @@ -57,7 +57,7 @@ Putenemy(5, *w_rinkx - 16, *w_rinky - 16, -1, 0, STATE10, &sprite->data[3]); p->dt1 = 8192; - p->task = STATE11; + p->state_task = STATE11; *q = *p; return 0;
--- a/ppe/task_object.h Sat Jan 29 02:46:41 2011 +0900 +++ b/ppe/task_object.h Sat Jan 29 22:43:17 2011 +0900 @@ -90,7 +90,8 @@ float s; int chara_id; - int task; + int state_task; + bool collision_task; struct CHARACTER * (*state)(struct CHARACTER *p); struct CHARACTER * (*collision)(struct CHARACTER *p);
--- a/state_task.cc Sat Jan 29 02:46:41 2011 +0900 +++ b/state_task.cc Sat Jan 29 22:43:17 2011 +0900 @@ -18,6 +18,7 @@ #include "ObjectType.h" #include "debug_db.h" #include "StateList.h" +#include "collision_task.h" extern DebugDB dtable[DEFOBJ]; @@ -32,6 +33,8 @@ CHARACTER *enemy_part4 = NULL; CHARACTER *enemy_part5 = NULL; +HTaskPtr state_next; + //int tekino0; int rinkx = 0; int rinky = 0; @@ -44,19 +47,23 @@ static int cpu_counter = SPE_1; +HTaskPtr +create_next() +{ + state_next = tmanager->create_task(Dummy); + + return state_next; +} static CPU_TYPE get_cpunum() { -/* cpu_counter += 1; - if ((cpu_counter % SPE_5) == 0) { + if ((cpu_counter % SPE_5) == 1) { cpu_counter = SPE_1; } return (CPU_TYPE)cpu_counter; -*/ - return SPE_1; } static int @@ -90,8 +97,7 @@ { CHARACTER *p = (CHARACTER*)chara; - int num = GetStateNum(p->task); - p->state = state_list[num].state; + state_check(p); } @@ -101,8 +107,7 @@ CHARACTER *p = (CHARACTER*)chara; printf("x = %f, y = %f, vx = %f, vy = %f\n",p->x, p->y, p->vx, p->vy); - int num = GetStateNum(p->task); - p->state = state_list[num].state; + state_check(p); } @@ -113,8 +118,7 @@ CHARACTER *p = (CHARACTER*)chara; - int num = GetStateNum(p->task); - p->state = state_list[num].state; + state_check(p); } @@ -160,9 +164,8 @@ } } } - int num = GetStateNum(p->task); - p->state = state_list[num].state; - + + state_check(p); free(new_obj); } @@ -170,7 +173,7 @@ CHARACTER* SimpleStateTask(CHARACTER *p) { - int task_num = p->task; + int task_num = p->state_task; HTaskPtr state_task = tmanager->create_task(task_num); state_task->set_inData(0, p, sizeof(CHARACTER)); @@ -179,6 +182,8 @@ state_task->set_post(updateState, (void*)p, NULL); state_task->set_cpu(get_cpunum()); + + state_next->wait_for(state_task); state_task->spawn(); return p; @@ -189,7 +194,7 @@ CHARACTER* FixRandomTask(CHARACTER *p) { - int task_num = p->task; + int task_num = p->state_task; HTaskPtr state_task = tmanager->create_task(task_num); state_task->set_param(0, (memaddr)myrand); @@ -200,6 +205,8 @@ state_task->set_post(PrintCoordinate, (void*)p, NULL); state_task->set_cpu(get_cpunum()); + + state_next->wait_for(state_task); state_task->spawn(); return p; @@ -209,7 +216,7 @@ CHARACTER* withJikiTask(CHARACTER *p) { - int task_num = p->task; + int task_num = p->state_task; HTaskPtr state_task = tmanager->create_task(task_num); state_task->set_inData(0, p, sizeof(CHARACTER)); @@ -219,6 +226,8 @@ state_task->set_post(updateState, (void*)p, NULL); state_task->set_cpu(get_cpunum()); + + state_next->wait_for(state_task); state_task->spawn(); return p; @@ -228,7 +237,7 @@ CHARACTER* sendContainerTask(CHARACTER *p) { - int task_num = p->task; + int task_num = p->state_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); @@ -242,6 +251,8 @@ state_task->set_post(checkContainer, (void*)p, (void*)obj); state_task->set_cpu(get_cpunum()); + + state_next->wait_for(state_task); state_task->spawn(); return p; @@ -251,7 +262,7 @@ CHARACTER* JikiContainerTask(CHARACTER *p) { - int task_num = p->task; + int task_num = p->state_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); @@ -266,6 +277,8 @@ state_task->set_post(checkContainer, (void*)p, (void*)obj); state_task->set_cpu(get_cpunum()); + + state_next->wait_for(state_task); state_task->spawn(); return p; @@ -298,6 +311,8 @@ state_task->set_post(updateState, (void*)p, NULL); } state_task->set_cpu(get_cpunum()); + + state_next->wait_for(state_task); state_task->spawn(); asteroidi++; @@ -308,7 +323,7 @@ CHARACTER* Boss1Task1(CHARACTER *p) { - int task_num = p->task; + int task_num = p->state_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); @@ -324,6 +339,8 @@ state_task->set_post(checkContainer, (void*)p, (void*)obj); state_task->set_cpu(get_cpunum()); + + state_next->wait_for(state_task); state_task->spawn(); return p; @@ -333,7 +350,7 @@ CHARACTER* Boss1Task2(CHARACTER *p) { - int task_num = p->task; + int task_num = p->state_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); @@ -351,6 +368,8 @@ state_task->set_post(checkContainer, (void*)p, (void*)obj); state_task->set_cpu(get_cpunum()); + + state_next->wait_for(state_task); state_task->spawn(); return p; @@ -360,7 +379,7 @@ CHARACTER* Boss1Task3(CHARACTER *p) { - int task_num = p->task; + int task_num = p->state_task; HTaskPtr state_task = tmanager->create_task(task_num); state_task->set_param(0, (memaddr)rinkx); @@ -373,6 +392,8 @@ state_task->set_post(updateState, (void*)p, NULL); state_task->set_cpu(get_cpunum()); + + state_next->wait_for(state_task); state_task->spawn(); return p; @@ -382,7 +403,7 @@ CHARACTER* Boss1Task4(CHARACTER *p) { - int task_num = p->task; + int task_num = p->state_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); @@ -400,6 +421,8 @@ state_task->set_post(checkContainer, (void*)p, (void*)obj); state_task->set_cpu(get_cpunum()); + + state_next->wait_for(state_task); state_task->spawn(); return p; @@ -409,7 +432,7 @@ CHARACTER* Boss1Task5(CHARACTER *p) { - int task_num = p->task; + int task_num = p->state_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); @@ -434,6 +457,8 @@ state_task->set_post(checkContainer, (void*)p, (void*)obj); state_task->set_cpu(get_cpunum()); + + state_next->wait_for(state_task); state_task->spawn(); return p; @@ -443,7 +468,7 @@ CHARACTER* Boss1Task6(CHARACTER *p) { - int task_num = p->task; + int task_num = p->state_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); @@ -465,6 +490,8 @@ state_task->set_post(checkContainer, (void*)p, (void*)obj); state_task->set_cpu(get_cpunum()); + + state_next->wait_for(state_task); state_task->spawn(); return p; @@ -474,7 +501,7 @@ CHARACTER* Boss2Task1(CHARACTER *p) { - int task_num = p->task; + int task_num = p->state_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); @@ -498,6 +525,8 @@ state_task->set_post(checkContainer, (void*)p, (void*)obj); state_task->set_cpu(get_cpunum()); + + state_next->wait_for(state_task); state_task->spawn(); return p; @@ -507,7 +536,7 @@ CHARACTER* Boss2Task2(CHARACTER *p, int num1, int num2) { - int task_num = p->task; + int task_num = p->state_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); @@ -533,6 +562,8 @@ state_task->set_post(checkContainer, (void*)p, (void*)obj); state_task->set_cpu(get_cpunum()); + + state_next->wait_for(state_task); state_task->spawn(); return p; @@ -544,7 +575,7 @@ { kyeenemyno = p; - int task_num = p->task; + int task_num = p->state_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); @@ -562,6 +593,8 @@ state_task->set_post(checkContainer, (void*)p, (void*)obj); state_task->set_cpu(get_cpunum()); + + state_next->wait_for(state_task); state_task->spawn(); return p; @@ -571,7 +604,7 @@ CHARACTER* Boss5Task(CHARACTER *p) { - int task_num = p->task; + int task_num = p->state_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); @@ -588,6 +621,8 @@ state_task->set_post(checkContainer, (void*)p, (void*)obj); state_task->set_cpu(get_cpunum()); + + state_next->wait_for(state_task); state_task->spawn(); return p; @@ -608,7 +643,7 @@ printf("F%d: DELETE [NAME]%s_%d [COORD]x= %f y= %f vx= %f vy= %f\n", filpcount, dtable[p->charano].name, p->chara_id, p->x, p->y, p->vx, p->vy); - printf(" [TAMA]lv1 = %d, lv2 = %d [LASER]lv1 = %d\n", + printf(" [TAMA]lv1 = %d, lv2 = %d [LASER]lv1 = %d\n", tama_lv1_end, tama_lv2_end, laser_lv1_end); } @@ -623,7 +658,7 @@ CHARACTER* chara_state0(CHARACTER *p) { - p->task = STATE0; + p->state_task = STATE0; return SimpleStateTask(p); } @@ -631,7 +666,7 @@ CHARACTER* chara_state1(CHARACTER *p) { - p->task = STATE1; + p->state_task = STATE1; return SimpleStateTask(p); } @@ -639,7 +674,7 @@ CHARACTER* chara_state2(CHARACTER *p) { - p->task = STATE2; + p->state_task = STATE2; return SimpleStateTask(p); } @@ -647,7 +682,7 @@ CHARACTER* chara_state3(CHARACTER *p) { - p->task = STATE3; + p->state_task = STATE3; return sendContainerTask(p); } @@ -655,7 +690,7 @@ CHARACTER* chara_state4(CHARACTER *p) { - p->task = STATE4; + p->state_task = STATE4; return withJikiTask(p); } @@ -663,7 +698,7 @@ CHARACTER* chara_state5(CHARACTER *p) { - p->task = STATE5; + p->state_task = STATE5; return withJikiTask(p); } @@ -671,7 +706,7 @@ CHARACTER* chara_state6(CHARACTER *p) { - p->task = STATE6; + p->state_task = STATE6; return withJikiTask(p); } @@ -679,7 +714,7 @@ CHARACTER* chara_state7(CHARACTER *p) { - p->task = STATE7; + p->state_task = STATE7; return sendContainerTask(p); } @@ -691,7 +726,7 @@ tekino0 = p; kyeenemyno = p; - p->task = STATE8; + p->state_task = STATE8; return Boss1Task1(p); } @@ -699,7 +734,7 @@ CHARACTER* chara_state9(CHARACTER *p) { - p->task = STATE9; + p->state_task = STATE9; return Boss1Task2(p); } @@ -707,7 +742,7 @@ CHARACTER* chara_state10(CHARACTER *p) { - p->task =STATE10; + p->state_task =STATE10; return Boss1Task3(p); } @@ -715,7 +750,7 @@ CHARACTER* chara_state11(CHARACTER *p) { - p->task = STATE11; + p->state_task = STATE11; return Boss1Task4(p); } @@ -723,7 +758,7 @@ CHARACTER* chara_state12(CHARACTER *p) { - p->task = STATE12; + p->state_task = STATE12; return Boss1Task5(p); } @@ -731,7 +766,7 @@ CHARACTER* chara_state13(CHARACTER *p) { - p->task = STATE13; + p->state_task = STATE13; return Boss1Task6(p); } @@ -739,7 +774,7 @@ CHARACTER* chara_state20(CHARACTER *p) { - p->task = STATE20; + p->state_task = STATE20; return SimpleStateTask(p); } @@ -747,7 +782,7 @@ CHARACTER* chara_state21(CHARACTER *p) { - p->task = STATE21; + p->state_task = STATE21; return SimpleStateTask(p); } //ここまでgetate boss @@ -756,7 +791,7 @@ CHARACTER* chara_state22(CHARACTER *p) { - p->task = STATE22; + p->state_task = STATE22; return FixRandomTask(p); } @@ -764,7 +799,7 @@ CHARACTER* chara_state23(CHARACTER *p) { - p->task = STATE23; + p->state_task = STATE23; return AsteroidTask(p); } @@ -783,37 +818,36 @@ rinky = 0; rinkf1 = 0; rinkf2 = 0; - p->task = STATE25; + p->state_task = STATE25; - int num = GetStateNum(p->task); - p->state = state_list[num].state; + state_check(p); return p; } CHARACTER* chara_state25(CHARACTER *p) { - p->task = STATE25; + p->state_task = STATE25; return Boss2Task1(p); } CHARACTER* chara_state26(CHARACTER *p) { - p->task = STATE26; + p->state_task = STATE26; return Boss2Task1(p); } CHARACTER* chara_state27(CHARACTER *p) //rocket punch { - p->task = STATE27; + p->state_task = STATE27; return Boss2Task1(p); } CHARACTER* chara_state28(CHARACTER *p) { - p->task = STATE28; + p->state_task = STATE28; return Boss2Task1(p); } @@ -821,7 +855,7 @@ CHARACTER* chara_state29(CHARACTER *p) { - p->task = STATE29; + p->state_task = STATE29; return sendContainerTask(p); } @@ -829,7 +863,7 @@ CHARACTER* chara_state30(CHARACTER *p) { - p->task = STATE30; + p->state_task = STATE30; return SimpleStateTask(p); } @@ -837,7 +871,7 @@ CHARACTER* chara_state31(CHARACTER *p) //right hand { - p->task = STATE31; + p->state_task = STATE31; return Boss2Task2(p, 0, 0); } @@ -845,7 +879,7 @@ CHARACTER* chara_state32(CHARACTER *p) //left hand { - p->task = STATE32; + p->state_task = STATE32; return Boss2Task2(p, 14, 20); } @@ -854,7 +888,7 @@ CHARACTER* chara_state33(CHARACTER *p) // right shoulder { - p->task = STATE33; + p->state_task = STATE33; return Boss2Task2(p, 11, 19); } @@ -862,7 +896,7 @@ CHARACTER* chara_state34(CHARACTER *p) //left shoulder { - p->task = STATE34; + p->state_task = STATE34; return Boss2Task2(p, 12, 21); } @@ -870,7 +904,7 @@ CHARACTER* chara_state35(CHARACTER *p) // bust { - p->task = STATE35; + p->state_task = STATE35; return Boss2Task2(p, 15, 16); } @@ -879,7 +913,7 @@ CHARACTER* chara_state40(CHARACTER *p) //arm vulkan { - p->task = STATE40; + p->state_task = STATE40; return Boss2Task2(p, 0, 0); } @@ -887,7 +921,7 @@ CHARACTER* chara_state41(CHARACTER *p) //left arm up arm vulkan { - p->task = STATE41; + p->state_task = STATE41; return Boss2Task2(p, 0, 0); } @@ -895,7 +929,7 @@ CHARACTER* chara_state400(CHARACTER *p) { - p->task = STATE400; + p->state_task = STATE400; return SimpleStateTask(p); } @@ -903,7 +937,7 @@ CHARACTER* chara_state401(CHARACTER *p) { - p->task = STATE401; + p->state_task = STATE401; return JikiContainerTask(p); } @@ -911,7 +945,7 @@ CHARACTER* chara_state402(CHARACTER *p) { - p->task = STATE402; + p->state_task = STATE402; return JikiContainerTask(p); } @@ -920,10 +954,9 @@ chara_state410(CHARACTER *p) { kyeenemyno = p; - p->task = STATE411; + p->state_task = STATE411; - int num = GetStateNum(p->task); - p->state = state_list[num].state; + state_check(p); return p; } @@ -931,7 +964,7 @@ CHARACTER* chara_state411(CHARACTER *p) { - p->task = STATE411; + p->state_task = STATE411; return JikiContainerTask(p); } @@ -939,7 +972,7 @@ CHARACTER* chara_state500(CHARACTER *p) { - p->task = STATE500; + p->state_task = STATE500; return Boss4Task(p); } @@ -947,7 +980,7 @@ CHARACTER* chara_state501(CHARACTER *p) { - p->task = STATE501; + p->state_task = STATE501; return sendContainerTask(p); } @@ -956,7 +989,7 @@ chara_state600(CHARACTER *p) { kyeenemyno = p; - p->task = STATE600; + p->state_task = STATE600; return sendContainerTask(p); } @@ -964,7 +997,7 @@ CHARACTER* chara_state601(CHARACTER *p) { - p->task = STATE601; + p->state_task = STATE601; return Boss5Task(p); } @@ -972,6 +1005,6 @@ CHARACTER* chara_state602(CHARACTER *p) { - p->task = STATE602; + p->state_task = STATE602; return Boss5Task(p); }