Mercurial > hg > Members > koba > t_dandy
diff spe/Atari.cc @ 60:cfd42ee2ad28
change makefile, spe/task. adjust scale api. worked on ps3-ppe.
author | yutaka@localhost.localdomain |
---|---|
date | Sun, 06 Feb 2011 17:16:43 +0900 |
parents | c330ded6d728 |
children |
line wrap: on
line diff
--- a/spe/Atari.cc Mon Feb 07 03:31:18 2011 +0900 +++ b/spe/Atari.cc Sun Feb 06 17:16:43 2011 +0900 @@ -1,59 +1,72 @@ -#include "Atari.h" -#include "tobject.h" +#include "task_base.h" +#include "task_object.h" +#include "../ObjectType.h" -SchedDefineTask(Atari); +SchedDefineTask1(Atari, atari); static int -run(SchedTask *smanager, void *rbuf, void *wbuf) +atari(SchedTask *smanager, void *rbuf, void *wbuf) { int w = (int)smanager->get_param(0); int h = (int)smanager->get_param(1); - int enemycount = (int)smanager->get_param(2); - int bomend = (int)smanager->get_param(3); - int tama_lv1_end = (int)smanager->get_param(4); - int tama_lv2_end = (int)smanager->get_param(5); - int laser_lv1_end = (int)smanager->get_param(6); + long load_id = (long)smanager->get_param(2); + + CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); + CollisionPropertyPtr property = + (CollisionPropertyPtr)smanager->global_get(load_id); + + int *p_infg_level = &property->infg_level; + int infg_level = *p_infg_level; - CollisionPropertyPtr property - = (CollisionPropertyPtr)smanager->get_input(rbuf, 0); + int tama_lv1_end = property->tama_lv1_end; + int tama_lv2_end = property->tama_lv2_end; + int laser_lv1_end = property->laser_lv1_end; - int infg_level = property->infg_level; + int *enemycount = &property->enemycount; + player *jiki = &property->jiki; - CHARACTER *p = &property->p; - tama1 *tlv3 = &property->tlv3; - stge lg = property->lg; - stge infg = property->infg; + + stge *lg = &property->lg; + stge *infg = &property->infg; tama1 *tama_lv1 = property->tama_lv1; tama2 *tama_lv2 = property->tama_lv2; + tama1 *tlv3 = &property->tlv3; 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; int i1, ex, ey; int n; ex = p->x; ey = p->y; + CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); + ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 1); + sprite->flag = false; + sprite->length = 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); + + sprite->flag = true; + Bom(jiki->x + 16, jiki->y + 16, &sprite->data[0]); + jiki->bf = FALSE; jiki->zanki--; - jiki->muteki = 120; + jiki->muteki = 120; + property->jiki = *jiki; - infg.stg = 0; + infg->stg = 0; infg_level--; if (infg_level < 0) infg_level = 0; - property->infg_level = infg_level; - property->infg = infg; - smanager->swap(); + *p_infg_level = infg_level; + *q = *p; return 0; } #endif @@ -66,40 +79,40 @@ && (ex + w > tama_lv1[i1].x + 16) && (tama_lv1[i1].y + 128 > ey) && (tama_lv1[i1].y < ey + h) && (tama_lv1[i1].r != -1)) { + tama_lv1[i1].r = -1; p->vit -= TAMALV1P; - infg.stg++; + infg->stg++; if (p->vit <= 0) { - infg.stg += 4; - Bom(p->x, p->y, bomend, bchar); - enemycount += (p->score * - ((infg.stg / 128) + infg_level + 1)); - //p->state = delete_chara; - //p->collision = noaction; + infg->stg += 4; + sprite->flag = true; + Bom(p->x, p->y, &sprite->data[0]); + *enemycount += (p->score * + ((infg->stg / 128) + infg_level + 1)); + p->collision_task = true; p->f = FALSE; - property->infg = infg; - smanager->swap(); + *q = *p; return 0; } } if ((tama_lv1[i1].x + 64 > ex) && (ex + w > tama_lv1[i1].x) && (tama_lv1[i1].y + 128 > ey) && (tama_lv1[i1].y < ey + h) && (tama_lv1[i1].l != -1)) { + tama_lv1[i1].l = -1; p->vit -= TAMALV1P; - infg.stg++; + infg->stg++; if (p->vit <= 0) { - infg.stg += 4; - Bom(p->x, p->y, bomend, bchar); - enemycount += (p->score * - ((infg.stg / 128) + infg_level + 1)); - //p->state = delete_chara; - //p->collision = noaction; + infg->stg += 4; + sprite->flag = true; + Bom(p->x, p->y, &sprite->data[0]); + *enemycount += (p->score * + ((infg->stg / 128) + infg_level + 1)); + p->collision_task = true; p->f = FALSE; - property->infg = infg; - smanager->swap(); + *q = *p; return 0; } } @@ -110,20 +123,20 @@ && (ex + w > tama_lv2[i1].x + 128) && (tama_lv2[i1].y + 192 > ey) && (tama_lv2[i1].y < ey + h) && (tama_lv2[i1].rr != -1)) { + tama_lv2[i1].rr = -1; p->vit -= TAMALV2P; - infg.stg++; + infg->stg++; if (p->vit <= 0) { - infg.stg += 4; - Bom(p->x, p->y, bomend, bchar); - enemycount += (p->score * - ((infg.stg / 128) + infg_level + 1)); - //p->state = delete_chara; - //p->collision = noaction; + infg->stg += 4; + sprite->flag = true; + Bom(p->x, p->y, &sprite->data[0]); + *enemycount += (p->score * + ((infg->stg / 128) + infg_level + 1)); + p->collision_task = true; p->f = FALSE; - property->infg = infg; - smanager->swap(); + *q = *p; return 0; } } @@ -133,20 +146,20 @@ && (tama_lv2[i1].y - 32 + 192 > ey) && (tama_lv2[i1].y - 32 < ey + h) && (tama_lv2[i1].sr != -1)) { + tama_lv2[i1].sr = -1; p->vit -= TAMALV2P; - infg.stg++; + infg->stg++; if (p->vit <= 0) { - infg.stg += 4; - Bom(p->x, p->y, bomend, bchar); - enemycount += (p->score * - ((infg.stg / 128) + infg_level + 1)); - //p->state = delete_chara; - //p->collision = noaction; + infg->stg += 4; + sprite->flag = true; + Bom(p->x, p->y, &sprite->data[0]); + *enemycount += (p->score * + ((infg->stg / 128) + infg_level + 1)); + p->collision_task = true; p->f = FALSE; - property->infg = infg; - smanager->swap(); + *q = *p; return 0; } } @@ -154,20 +167,20 @@ && (tama_lv2[i1].y - 32 + 192 > ey) && (tama_lv2[i1].y - 32 < ey + h) && (tama_lv2[i1].sl != -1)) { + tama_lv2[i1].sl = -1; p->vit -= TAMALV2P; - infg.stg++; + infg->stg++; if (p->vit <= 0) { - infg.stg += 4; - Bom(p->x, p->y, bomend, bchar); - enemycount += (p->score * - ((infg.stg / 128) + infg_level + 1)); - //p->state = delete_chara; - //p->collision = noaction; + infg->stg += 4; + sprite->flag = true; + Bom(p->x, p->y, &sprite->data[0]); + *enemycount += (p->score * + ((infg->stg / 128) + infg_level + 1)); + p->collision_task = true; p->f = FALSE; - property->infg = infg; - smanager->swap(); + *q = *p; return 0; } } @@ -175,58 +188,58 @@ && (ex + w > tama_lv2[i1].x - 64) && (tama_lv2[i1].y + 192 > ey) && (tama_lv2[i1].y < ey + h) && (tama_lv2[i1].ll != -1)) { + tama_lv2[i1].ll = -1; p->vit -= TAMALV2P; - infg.stg++; + infg->stg++; if (p->vit <= 0) { - infg.stg += 4; - Bom(p->x, p->y, bomend, bchar); - enemycount += (p->score * - ((infg.stg / 128) + infg_level + 1)); - //p->state = delete_chara; - //p->collision = noaction; + infg->stg += 4; + sprite->flag = true; + Bom(p->x, p->y, &sprite->data[0]); + *enemycount += (p->score * + ((infg->stg / 128) + infg_level + 1)); + p->collision_task = true; p->f = FALSE; - property->infg = infg; - smanager->swap(); + *q = *p; return 0; } } } - if ((tlv3[0].r > 0) && (jiki->x < ex + w) && (jiki->x + 128 > ex) + 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; - Bom(p->x, p->y, bomend, bchar); - enemycount += (p->score * - ((infg.stg / 128) + infg_level + 1)); - //p->state = delete_chara; - //p->collision = noaction; + infg->stg += 4; + sprite->flag = true; + Bom(p->x, p->y, &sprite->data[0]); + *enemycount += (p->score * + ((infg->stg / 128) + infg_level + 1)); + p->collision_task = true; p->f = FALSE; - property->infg = infg; - smanager->swap(); + *q = *p; return 0; } } - jumping: - if ((tlv3[0].r > 0) && (jiki->x < ex + w) && (jiki->x + 128 > ex) +jumping: + 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; - Bom(p->x, p->y, bomend, bchar); - enemycount += (p->score * - ((infg.stg / 128) + infg_level + 1)); - //p->state = delete_chara; - //p->collision = noaction; + infg->stg += 4; + sprite->flag = true; + Bom(p->x, p->y, &sprite->data[0]); + *enemycount += (p->score * + ((infg->stg / 128) + infg_level + 1)); + p->collision_task = true; p->f = FALSE; - property->infg = infg; - smanager->swap(); + *q = *p; return 0; } } @@ -237,75 +250,77 @@ if ((laser_lv1[i1].x + n > ex) && (ex + w > laser_lv1[i1].x) && (laser_lv1[i1].y + n > ey) && (laser_lv1[i1].y < ey + h) && (laser_lv1[i1].r != -1)) { + laser_lv1[i1].r = -1; laser_lv1[i1].y = -1; p->vit -= LASERLV1P; - infg.stg++; + infg->stg++; if (p->vit <= 0) { - infg.stg += 4; - Bom(p->x, p->y, bomend, bchar); - enemycount += (p->score * - ((infg.stg / 128) + infg_level + 1)); - //p->state = delete_chara; - //p->collision = noaction; + infg->stg += 4; + sprite->flag = true; + Bom(p->x, p->y, &sprite->data[0]); + *enemycount += (p->score * + ((infg->stg / 128) + infg_level + 1)); + p->collision_task = true; p->f = FALSE; - property->infg = infg; - smanager->swap(); + *q = *p; 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; - Bom(p->x, p->y, bomend, bchar); - enemycount += (p->score * - ((infg.stg / 128) + infg_level + 1)); - //p->state = delete_chara; - //p->collision = noaction; + infg->stg += 4; + property->infg = *infg; + + sprite->flag = true; + Bom(p->x, p->y, &sprite->data[0]); + *enemycount += (p->score * + ((infg->stg / 128) + infg_level + 1)); + p->collision_task = true; p->f = FALSE; - - property->lg = lg; - property->infg = infg; - smanager->swap(); + + *q = *p; return 0; } } /*bomber(laser lv3) */ if (laser_lv3[0].r < 62) { - for (i1 = 1; i1 < 128; i1++) { + for (i1 = 1; i1 < 64; i1++) { if ((laser_lv3[i1].x + 128 > ex) && (ex + w > laser_lv3[i1].x) && (laser_lv3[i1].y + 128 > ey) && (laser_lv3[i1].y < ey + h) && (laser_lv3[i1].r > 0)) { + tama_lv2[i1].rr = -1; p->vit -= LASERLV3P; - infg.stg++; + infg->stg++; if (p->vit <= 0) { - infg.stg += 4; - Bom(p->x, p->y, bomend, bchar); - enemycount += (p->score * - ((infg.stg / 128) + infg_level + 1)); - //p->state = delete_chara; - //p->collision = noaction; + infg->stg += 4; + sprite->flag = true; + Bom(p->x, p->y, &sprite->data[0]); + *enemycount += (p->score * + ((infg->stg / 128) + infg_level + 1)); + p->collision_task = true; p->f = FALSE; - property->infg = infg; - smanager->swap(); + *q = *p; return 0; } } } } - property->infg = infg; - smanager->swap(); + + *q = *p; return 0; }