Mercurial > hg > Members > koba > t_dandy
diff ppe/chara_state12.cc @ 33:39e643fc4f90
moving stage1.
author | koba <koba@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 05 Jan 2011 14:41:26 +0900 |
parents | |
children | 7aaaaf5dde40 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ppe/chara_state12.cc Wed Jan 05 14:41:26 2011 +0900 @@ -0,0 +1,212 @@ +#include "task_base.h" +#include "task_object.h" + +SchedDefineTask1(State12, state12); + +static int +state12(SchedTask *smanager, void *rbuf, void *wbuf) +{ + int fastebos = (int)smanager->get_param(0); + int count = (int)smanager->get_param(1); + int rinkx = (int)smanager->get_param(2); + int rinky = (int)smanager->get_param(3); + + CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); + int length; + int rinkf2; + int index_count = 0; + + if (fastebos > 60*60) { + length = 2; + smanager->set_outputSize(6, 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, 3); + int *w_rinky = (int*)smanager->get_output(wbuf, 4); + 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]); + + *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) { + length = 2; + smanager->set_outputSize(6, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); + + if (jiki->x + 15 - rinkx < -5) { + p->vx = -0.8; + } else if(jiki->x + 15 - rinkx > 5) { + p->vx = +0.8; + } else { + p->vx = 0; + } + rinkx = p->x; + rinky = p->y; + } + + if ((p->dt1 > 60) && (p->dt1 <= 70)) { + if(p->dt1 % 2 == 1) { + length = 5; + smanager->set_outputSize(6, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); + + ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 6); + sprite->flag = true; + sprite->length = length; + + Puttama(0, rinkx - 16, rinky, &sprite->data[index_count]); + index_count++; + Puttama(0, rinkx, rinky, &sprite->data[index_count]); + index_count++; + Puttama(0, rinkx + 16, rinky, &sprite->data[index_count]); + index_count++; + } else { + length = 2; + smanager->set_outputSize(6, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); + } + } + + if ((p->dt1 > 70) && (p->dt1 <= 180)) { + length = 2; + smanager->set_outputSize(6, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); + } + + if ((p->dt1 > 180) && (p->dt1 <= 240)) { + if (p->dt1 % 2 == 1) { + length = 4; + smanager->set_outputSize(6, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); + + ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 6); + + rinkf2 = 1; + Puttama(2, rinkx - 16, p->y - 32, &sprite->data[index_count]); + index_count++; + Puttama(3, rinkx + 32 - 16, p->y - 32, &sprite->data[index_count]); + index_count++; + } else { + length = 2; + smanager->set_outputSize(6, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); + + rinkf2 = 2; + } + } + + if (p->dt1 > 240) { + rinkf2 = 2; + } + + if ((p->dt1 > 240) && (p->dt1 <= 400)) { + length = 4; + smanager->set_outputSize(6, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); + + ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 6); + + count++; + PutSprite(count, rinkx - 16, rinky + 32, 58 + p->dt1 % 4, &sprite->data[index_count]); + index_count++; + + if (p->dt1 > 300) { + rinkf2 = 3; + if(jiki->x + 15 - rinkx < -5) { + p->vx = -1; + } else if (jiki->x + 15 - rinkx > 5) { + p->vx = +1; + } else { + p->vx = 0; + } + p->x += p->vx; + rinkx = p->x; + rinky = p->y; + Puttama(4, rinkx - 8, rinky + 16, &sprite->data[index_count]); + index_count++; + } + } + + if (p->dt1 > 400) { + length = 2; + smanager->set_outputSize(6, sizeof(ObjContainer)+sizeof(ObjData)*(length-1)); + smanager->setup_outputData(); + } + + if ((p->dt1 > 400) && (p->dt1 <= 500)) { + rinkf2 = 4; + if (jiki->x + 15 - rinkx > 5) { + p->vx = -1; + } else if (jiki->x + 15 - rinkx > 5) { + p->vx = +1; + } else { + p->vx = 0; + } + p->x += p->vx; + rinkx = p->x; + rinky = p->y; + } + + if (p->dt1 > 500) { + rinkf2 = 5; + if (jiki->x + 15 - rinkx < -5) { + p->vx = -1; + } else if(jiki->x + 15 - rinkx > 5) { + p->vx = +1; + } else { + p->vx = 0; + } + p->x += p->vx; + rinkx = p->x; + rinky = p->y; + } + if (p->dt1 > 600) { + rinkf2 = 0; + p->dt1 = 0; + } + CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0); + int *w_count = (int*)smanager->get_output(wbuf, 1); + int *w_fastebos = (int*)smanager->get_output(wbuf, 2); + int *w_rinkx = (int*)smanager->get_output(wbuf, 3); + int *w_rinky = (int*)smanager->get_output(wbuf, 4); + int *w_rinkf2 = (int*)smanager->get_output(wbuf, 5); + ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 6); + sprite->flag = true; + sprite->length = length; + + fastebos++; + p->dt1++; + count++; + + DefSpriteEx(54, 16, 32, &sprite->data[index_count]); + index_count++; + PutSpriteEx(54, p->x, p->y, 2, 2, 1, &sprite->data[index_count]); + + *w_count = count; + *w_fastebos = fastebos; + *w_rinkx = rinkx; + *w_rinky = rinky; + *w_rinkf2 = rinkf2; + *q = *p; + return 0; +}