# HG changeset patch # User koba # Date 1294582466 -32400 # Node ID 6989f8cb0259f3a1d1385c61cede4bd9b1f0020e # Parent 4516141d844a2142831d4aa72cbc865228cdb1f0 fix. diff -r 4516141d844a -r 6989f8cb0259 ObjectType.h --- a/ObjectType.h Sun Jan 09 19:47:52 2011 +0900 +++ b/ObjectType.h Sun Jan 09 23:14:26 2011 +0900 @@ -1,4 +1,5 @@ enum { + Boms, Tama, Enemy, Def, diff -r 4516141d844a -r 6989f8cb0259 collision_task.cc --- a/collision_task.cc Sun Jan 09 19:47:52 2011 +0900 +++ b/collision_task.cc Sun Jan 09 23:14:26 2011 +0900 @@ -30,19 +30,21 @@ memcpy(property->tama_lv2, tama_lv2, sizeof(tama2)*20); memcpy(property->laser_lv1, laser_lv1, sizeof(laser)*20); memcpy(property->laser_lv3, laser_lv3, sizeof(laser)*128); - memcpy(property->bchar, bchar, sizeof(bomchar)*(bomend+2)); return property; } void -free_property(SchedTask *s, void *prop, void *arg) +free_property(SchedTask *s, void *prop, void *obj) { CollisionPropertyPtr property = (CollisionPropertyPtr)prop; + ObjContainer *new_obj = (ObjContainerPtr)obj; + + if ((new_obj->flag == true) && (new_obj->length == 1)){ + ObjDataPtr obj_data = new_obj->data; + Bom(obj_data->x, obj_data->y); + } - if(property->bomend > bomend) { - bomend = property->bomend; - } if(lg.stg > property->lg.stg) { lg.stg -= 26; } @@ -58,8 +60,8 @@ 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)*(bomend+2)); + free(new_obj); free(prop); } @@ -74,6 +76,11 @@ w = sptable[charno].w; h = sptable[charno].h; + int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*1; + ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size); + obj->flag = false; + obj->length = 0; + HTaskPtr collision_task = tmanager->create_task(ATARI); collision_task->set_param(0,(memaddr)w); @@ -87,13 +94,13 @@ 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_inData(5, property, sizeof(CollisionProperty)); collision_task->set_outData(0, p, sizeof(CHARACTER)); collision_task->set_outData(1, property, sizeof(CollisionProperty)); + collision_task->set_outData(2, obj, 0); - collision_task->set_post(free_property, (void*)property, NULL); + collision_task->set_post(free_property, (void*)property, (void*)obj); collision_task->set_cpu(SPE_ANY); collision_task->spawn(); diff -r 4516141d844a -r 6989f8cb0259 ppe/Atari.cc --- a/ppe/Atari.cc Sun Jan 09 19:47:52 2011 +0900 +++ b/ppe/Atari.cc Sun Jan 09 23:14:26 2011 +0900 @@ -17,9 +17,8 @@ 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, 6); + = (CollisionPropertyPtr)smanager->get_input(rbuf, 5); int *enemycount = &property->enemycount; tama1 *tlv3 = &property->tlv3; @@ -29,33 +28,40 @@ laser *laser_lv1 = property->laser_lv1; laser *laser_lv2 = &property->laser_lv2; laser *laser_lv3 = property->laser_lv3; - bomchar *bchar = property->bchar; int i1, ex, ey; int n; ex = p->x; ey = p->y; + int length = 1; + smanager->set_outputSize(2, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); + CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); CollisionPropertyPtr w_property = (CollisionPropertyPtr)smanager->get_output(wbuf, 1); + ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 2); + sprite->flag = false; + sprite->length = length; //自機やられ #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); + sprite->flag = true; + Bom(jiki->x + 16, jiki->y + 16, &sprite->data[0]); jiki->bf = FALSE; jiki->zanki--; jiki->muteki = 120; + infg->stg = 0; *infg_level--; if (*infg_level < 0) *infg_level = 0; - property->bomend = *bomend; property->infg_level = *infg_level; property->jiki = *jiki; property->lg = *lg; @@ -80,13 +86,13 @@ infg->stg++; if (p->vit <= 0) { infg->stg += 4; - Bom(p->x, p->y, bomend, bchar); + sprite->flag = true; + Bom(p->x, p->y, &sprite->data[0]); *enemycount += (p->score * ((infg->stg / 128) + *infg_level + 1)); p->task = DELETE_CHARA; p->f = FALSE; - property->bomend = *bomend; property->infg_level = *infg_level; property->jiki = *jiki; property->lg = *lg; @@ -105,13 +111,13 @@ infg->stg++; if (p->vit <= 0) { infg->stg += 4; - Bom(p->x, p->y, bomend, bchar); + sprite->flag = true; + Bom(p->x, p->y, &sprite->data[0]); *enemycount += (p->score * ((infg->stg / 128) + *infg_level + 1)); p->task = DELETE_CHARA; p->f = FALSE; - property->bomend = *bomend; property->infg_level = *infg_level; property->jiki = *jiki; property->lg = *lg; @@ -134,13 +140,13 @@ infg->stg++; if (p->vit <= 0) { infg->stg += 4; - Bom(p->x, p->y, bomend, bchar); + sprite->flag = true; + Bom(p->x, p->y, &sprite->data[0]); *enemycount += (p->score * ((infg->stg / 128) + *infg_level + 1)); p->task = DELETE_CHARA; p->f = FALSE; - property->bomend = *bomend; property->infg_level = *infg_level; property->jiki = *jiki; property->lg = *lg; @@ -162,13 +168,13 @@ infg->stg++; if (p->vit <= 0) { infg->stg += 4; - Bom(p->x, p->y, bomend, bchar); + sprite->flag = true; + Bom(p->x, p->y, &sprite->data[0]); *enemycount += (p->score * ((infg->stg / 128) + *infg_level + 1)); p->task = DELETE_CHARA; p->f = FALSE; - property->bomend = *bomend; property->infg_level = *infg_level; property->jiki = *jiki; property->lg = *lg; @@ -188,13 +194,13 @@ infg->stg++; if (p->vit <= 0) { infg->stg += 4; - Bom(p->x, p->y, bomend, bchar); + sprite->flag = true; + Bom(p->x, p->y, &sprite->data[0]); *enemycount += (p->score * ((infg->stg / 128) + *infg_level + 1)); p->task = DELETE_CHARA; p->f = FALSE; - property->bomend = *bomend; property->infg_level = *infg_level; property->jiki = *jiki; property->lg = *lg; @@ -214,13 +220,13 @@ infg->stg++; if (p->vit <= 0) { infg->stg += 4; - Bom(p->x, p->y, bomend, bchar); + sprite->flag = true; + Bom(p->x, p->y, &sprite->data[0]); *enemycount += (p->score * ((infg->stg / 128) + *infg_level + 1)); p->task = DELETE_CHARA; p->f = FALSE; - property->bomend = *bomend; property->infg_level = *infg_level; property->jiki = *jiki; property->lg = *lg; @@ -238,13 +244,13 @@ infg->stg++; if (p->vit <= 0) { infg->stg += 4; - Bom(p->x, p->y, bomend, bchar); + sprite->flag = true; + Bom(p->x, p->y, &sprite->data[0]); *enemycount += (p->score * ((infg->stg / 128) + *infg_level + 1)); p->task = DELETE_CHARA; p->f = FALSE; - property->bomend = *bomend; property->infg_level = *infg_level; property->jiki = *jiki; property->lg = *lg; @@ -262,13 +268,13 @@ infg->stg++; if (p->vit <= 0) { infg->stg += 4; - Bom(p->x, p->y, bomend, bchar); + sprite->flag = true; + Bom(p->x, p->y, &sprite->data[0]); *enemycount += (p->score * ((infg->stg / 128) + *infg_level + 1)); p->task = DELETE_CHARA; p->f = FALSE; - property->bomend = *bomend; property->infg_level = *infg_level; property->jiki = *jiki; property->lg = *lg; @@ -292,13 +298,13 @@ infg->stg++; if (p->vit <= 0) { infg->stg += 4; - Bom(p->x, p->y, bomend, bchar); + sprite->flag = true; + Bom(p->x, p->y, &sprite->data[0]); *enemycount += (p->score * ((infg->stg / 128) + *infg_level + 1)); p->task = DELETE_CHARA; p->f = FALSE; - property->bomend = *bomend; property->infg_level = *infg_level; property->jiki = *jiki; property->lg = *lg; @@ -320,13 +326,13 @@ infg->stg++; if (p->vit <= 0) { infg->stg += 4; - Bom(p->x, p->y, bomend, bchar); + sprite->flag = true; + Bom(p->x, p->y, &sprite->data[0]); *enemycount += (p->score * ((infg->stg / 128) + *infg_level + 1)); p->task = DELETE_CHARA; p->f = FALSE; - property->bomend = *bomend; property->infg_level = *infg_level; property->jiki = *jiki; property->lg = *lg; @@ -349,13 +355,13 @@ infg->stg++; if (p->vit <= 0) { infg->stg += 4; - Bom(p->x, p->y, bomend, bchar); + sprite->flag = true; + Bom(p->x, p->y, &sprite->data[0]); *enemycount += (p->score * ((infg->stg / 128) + *infg_level + 1)); p->task = DELETE_CHARA; p->f = FALSE; - property->bomend = *bomend; property->infg_level = *infg_level; property->jiki = *jiki; property->lg = *lg; @@ -369,7 +375,6 @@ } } - property->bomend = *bomend; property->infg_level = *infg_level; property->jiki = *jiki; property->lg = *lg; diff -r 4516141d844a -r 6989f8cb0259 ppe/Bom.cc --- a/ppe/Bom.cc Sun Jan 09 19:47:52 2011 +0900 +++ b/ppe/Bom.cc Sun Jan 09 23:14:26 2011 +0900 @@ -1,19 +1,12 @@ #include "task_object.h" +#include "../ObjectType.h" void -Bom(int x, int y, int *bomend, bomchar *bchar) +Bom(int x, int y, ObjDataPtr obj) { - int i; - *bomend++; - if (*bomend > 49) { - *bomend = 49; - return; - } + obj->type = Boms; + obj->x = x; + obj->y = y; - i = *bomend; - bchar[i].x = x; - bchar[i].y = y; - bchar[i].no = 0; - bchar[i].f = 0; return; } diff -r 4516141d844a -r 6989f8cb0259 ppe/chara_state13.cc --- a/ppe/chara_state13.cc Sun Jan 09 19:47:52 2011 +0900 +++ b/ppe/chara_state13.cc Sun Jan 09 23:14:26 2011 +0900 @@ -14,34 +14,34 @@ 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); + int rinkf2 = *(int*)smanager->get_input(rbuf, 1); if(flag == FALSE){ + length = 1; + smanager->set_outputSize(2, 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_bomend = (int*)smanager->get_output(wbuf, 2); - bomchar *w_bchar = (bomchar*)smanager->get_output(wbuf, 3); - Bom(p->x, p->y, &bomend, bchar); + ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 2); + sprite->flag = true; + sprite->length = length; + + Bom(p->x, p->y, &sprite->data[0]); p->f = FALSE; p->task = DELETE_CHARA; *w_count = count; - *w_bomend = bomend; - *w_bchar = *bchar; *q = *p; return 0; } length = 1; - smanager->set_outputSize(4, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->set_outputSize(2, 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_bomend = (int*)smanager->get_output(wbuf, 2); - bomchar *w_bchar = (bomchar*)smanager->get_output(wbuf, 3); - ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 4); + ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 2); sprite->flag = false; p->x += rinkx - p->dt1; @@ -88,7 +88,5 @@ *q = *p; *w_count = count; - *w_bomend = bomend; - *w_bchar = *bchar; return 0; } diff -r 4516141d844a -r 6989f8cb0259 ppe/chara_state30.cc --- a/ppe/chara_state30.cc Sun Jan 09 19:47:52 2011 +0900 +++ b/ppe/chara_state30.cc Sun Jan 09 23:14:26 2011 +0900 @@ -1,10 +1,10 @@ #include "task_base.h" #include "task_object.h" -SchedDefineTask(State30); +SchedDefineTask1(State30, state30); static int -run(SchedTask *smanager, void *rbuf, void *wbuf) +state30(SchedTask *smanager, void *rbuf, void *wbuf) { CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); diff -r 4516141d844a -r 6989f8cb0259 ppe/chara_state31.cc --- a/ppe/chara_state31.cc Sun Jan 09 19:47:52 2011 +0900 +++ b/ppe/chara_state31.cc Sun Jan 09 23:14:26 2011 +0900 @@ -16,8 +16,15 @@ if((part3_f == FALSE) || (kyeenemyno->f == FALSE)) { + length = 1; + smanager->set_outputSize(2, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); -// Bom(p->x, p->y); + ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 2); + sprite->flag = true; + sprite->length = length; + + Bom(p->x, p->y, &sprite->data[0]); p->f = FALSE; p->task = DELETE_CHARA; diff -r 4516141d844a -r 6989f8cb0259 ppe/chara_state32.cc --- a/ppe/chara_state32.cc Sun Jan 09 19:47:52 2011 +0900 +++ b/ppe/chara_state32.cc Sun Jan 09 23:14:26 2011 +0900 @@ -18,9 +18,15 @@ if ((part4_f == FALSE) || (kyeenemyno->f == FALSE)) { + length = 1; + smanager->set_outputSize(2, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); + ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 2); + sprite->flag = true; + sprite->length = length; -// Bom(p->x, p->y); + Bom(p->x, p->y, &sprite->data[0]); p->f = FALSE; p->task = DELETE_CHARA; diff -r 4516141d844a -r 6989f8cb0259 ppe/chara_state33.cc --- a/ppe/chara_state33.cc Sun Jan 09 19:47:52 2011 +0900 +++ b/ppe/chara_state33.cc Sun Jan 09 23:14:26 2011 +0900 @@ -8,7 +8,8 @@ { int enemystate_11 = (int)smanager->get_param(4); int enemystate_19 = (int)smanager->get_param(5); - + + 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); @@ -16,7 +17,15 @@ if (kyeenemyno->f == FALSE) { -// Bom(p->x, p->y); + length = 1; + smanager->set_outputSize(2, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); + CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); + ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 2); + sprite->flag = true; + sprite->length = length; + + Bom(p->x, p->y, &sprite->data[0]); p->f = FALSE; p->task = DELETE_CHARA; diff -r 4516141d844a -r 6989f8cb0259 ppe/chara_state34.cc --- a/ppe/chara_state34.cc Sun Jan 09 19:47:52 2011 +0900 +++ b/ppe/chara_state34.cc Sun Jan 09 23:14:26 2011 +0900 @@ -8,7 +8,8 @@ { int enemystate_12 = (int)smanager->get_param(4); int enemystate_21 = (int)smanager->get_param(5); - + + 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); @@ -16,7 +17,15 @@ if (kyeenemyno->f == FALSE) { -// Bom(p->x, p->y); + length = 1; + smanager->set_outputSize(2, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); + CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); + ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 2); + sprite->flag = true; + sprite->length = length; + + Bom(p->x, p->y, &sprite->data[0]); p->f = FALSE; p->task = DELETE_CHARA; diff -r 4516141d844a -r 6989f8cb0259 ppe/chara_state35.cc --- a/ppe/chara_state35.cc Sun Jan 09 19:47:52 2011 +0900 +++ b/ppe/chara_state35.cc Sun Jan 09 23:14:26 2011 +0900 @@ -17,8 +17,15 @@ if (kyeenemyno->f == FALSE) { + length = 1; + smanager->set_outputSize(2, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); -// Bom(p->x, p->y); + ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 2); + sprite->flag = true; + sprite->length = length; + + Bom(p->x, p->y, &sprite->data[0]); p->f = FALSE; p->task = DELETE_CHARA; diff -r 4516141d844a -r 6989f8cb0259 ppe/task_object.h --- a/ppe/task_object.h Sun Jan 09 19:47:52 2011 +0900 +++ b/ppe/task_object.h Sun Jan 09 23:14:26 2011 +0900 @@ -99,7 +99,6 @@ typedef struct CollisionProperty { - int bomend; int infg_level; int enemycount; @@ -113,8 +112,6 @@ laser laser_lv1[20]; laser laser_lv2; laser laser_lv3[128]; - bomchar bchar[100]; - } CollisionProperty, *CollisionPropertyPtr; @@ -146,7 +143,7 @@ CHARACTER * noaction(CHARACTER *p); CHARACTER * delete_chara(CHARACTER *p); -void Bom(int x, int y, int *bomend, bomchar *bchar); +void Bom(int x, int y, ObjDataPtr obj); void Puttama(int type, float x, float y, ObjDataPtr tama); void Putenemy(int charano, float x, float y, float vx, float vy, int task, ObjDataPtr obj); void PutSprite(int zorder, short x, short y, int number, ObjDataPtr obj); diff -r 4516141d844a -r 6989f8cb0259 property.h --- a/property.h Sun Jan 09 19:47:52 2011 +0900 +++ b/property.h Sun Jan 09 23:14:26 2011 +0900 @@ -7,7 +7,6 @@ #include "sgoex.h" typedef struct CollisionProperty { - int bomend; int infg_level; int enemycount; @@ -21,7 +20,6 @@ laser laser_lv1[20]; laser laser_lv2; laser laser_lv3[128]; - bomchar bchar[100]; } CollisionProperty, *CollisionPropertyPtr; diff -r 4516141d844a -r 6989f8cb0259 state_task.cc --- a/state_task.cc Sun Jan 09 19:47:52 2011 +0900 +++ b/state_task.cc Sun Jan 09 23:14:26 2011 +0900 @@ -170,6 +170,9 @@ int type = obj_data->type; switch (type) { + case Boms: + Bom(obj_data->x, obj_data->y); + break; case Tama: Puttama(obj_data->tama_type, obj_data->x, obj_data->y); break; @@ -471,15 +474,11 @@ state_task->set_param(4, (memaddr)count); state_task->set_inData(0, p, sizeof(CHARACTER)); - 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_inData(1, &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, bchar, sizeof(bomchar)*100); - 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); @@ -542,7 +541,6 @@ 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));