comparison 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
comparison
equal deleted inserted replaced
32:1b161e808240 33:39e643fc4f90
1 #include "task_base.h"
2 #include "task_object.h"
3
4 SchedDefineTask1(State12, state12);
5
6 static int
7 state12(SchedTask *smanager, void *rbuf, void *wbuf)
8 {
9 int fastebos = (int)smanager->get_param(0);
10 int count = (int)smanager->get_param(1);
11 int rinkx = (int)smanager->get_param(2);
12 int rinky = (int)smanager->get_param(3);
13
14 CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
15 int length;
16 int rinkf2;
17 int index_count = 0;
18
19 if (fastebos > 60*60) {
20 length = 2;
21 smanager->set_outputSize(6, sizeof(ObjContainer)+sizeof(ObjData)*(length-1));
22 smanager->setup_outputData();
23
24 CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0);
25 int *w_count = (int*)smanager->get_output(wbuf, 3);
26 int *w_rinky = (int*)smanager->get_output(wbuf, 4);
27 ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 6);
28 sprite->flag = true;
29 sprite->length = length;
30
31 if (p->y > 240+32) {
32 p->task = DELETE_CHARA;
33 }
34 p->y += 3;
35 rinky += 3;
36 count++;
37
38 DefSpriteEx(54, 16, 32, &sprite->data[index_count]);
39 index_count++;
40 PutSpriteEx(54, p->x, p->y, 2, 2, 1, &sprite->data[index_count]);
41
42 *w_rinky = rinky;
43 *w_count = count;
44 *q = *p;
45 p->task = STATE12;
46 return 0;
47 }
48
49 player *jiki = (player*)smanager->get_input(rbuf, 1);
50
51 if (p->dt1 <= 60) {
52 length = 2;
53 smanager->set_outputSize(6, sizeof(ObjContainer)+sizeof(ObjData)*(length-1));
54 smanager->setup_outputData();
55
56 if (jiki->x + 15 - rinkx < -5) {
57 p->vx = -0.8;
58 } else if(jiki->x + 15 - rinkx > 5) {
59 p->vx = +0.8;
60 } else {
61 p->vx = 0;
62 }
63 rinkx = p->x;
64 rinky = p->y;
65 }
66
67 if ((p->dt1 > 60) && (p->dt1 <= 70)) {
68 if(p->dt1 % 2 == 1) {
69 length = 5;
70 smanager->set_outputSize(6, sizeof(ObjContainer)+sizeof(ObjData)*(length-1));
71 smanager->setup_outputData();
72
73 ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 6);
74 sprite->flag = true;
75 sprite->length = length;
76
77 Puttama(0, rinkx - 16, rinky, &sprite->data[index_count]);
78 index_count++;
79 Puttama(0, rinkx, rinky, &sprite->data[index_count]);
80 index_count++;
81 Puttama(0, rinkx + 16, rinky, &sprite->data[index_count]);
82 index_count++;
83 } else {
84 length = 2;
85 smanager->set_outputSize(6, sizeof(ObjContainer)+sizeof(ObjData)*(length-1));
86 smanager->setup_outputData();
87 }
88 }
89
90 if ((p->dt1 > 70) && (p->dt1 <= 180)) {
91 length = 2;
92 smanager->set_outputSize(6, sizeof(ObjContainer)+sizeof(ObjData)*(length-1));
93 smanager->setup_outputData();
94 }
95
96 if ((p->dt1 > 180) && (p->dt1 <= 240)) {
97 if (p->dt1 % 2 == 1) {
98 length = 4;
99 smanager->set_outputSize(6, sizeof(ObjContainer)+sizeof(ObjData)*(length-1));
100 smanager->setup_outputData();
101
102 ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 6);
103
104 rinkf2 = 1;
105 Puttama(2, rinkx - 16, p->y - 32, &sprite->data[index_count]);
106 index_count++;
107 Puttama(3, rinkx + 32 - 16, p->y - 32, &sprite->data[index_count]);
108 index_count++;
109 } else {
110 length = 2;
111 smanager->set_outputSize(6, sizeof(ObjContainer)+sizeof(ObjData)*(length-1));
112 smanager->setup_outputData();
113
114 rinkf2 = 2;
115 }
116 }
117
118 if (p->dt1 > 240) {
119 rinkf2 = 2;
120 }
121
122 if ((p->dt1 > 240) && (p->dt1 <= 400)) {
123 length = 4;
124 smanager->set_outputSize(6, sizeof(ObjContainer)+sizeof(ObjData)*(length-1));
125 smanager->setup_outputData();
126
127 ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 6);
128
129 count++;
130 PutSprite(count, rinkx - 16, rinky + 32, 58 + p->dt1 % 4, &sprite->data[index_count]);
131 index_count++;
132
133 if (p->dt1 > 300) {
134 rinkf2 = 3;
135 if(jiki->x + 15 - rinkx < -5) {
136 p->vx = -1;
137 } else if (jiki->x + 15 - rinkx > 5) {
138 p->vx = +1;
139 } else {
140 p->vx = 0;
141 }
142 p->x += p->vx;
143 rinkx = p->x;
144 rinky = p->y;
145 Puttama(4, rinkx - 8, rinky + 16, &sprite->data[index_count]);
146 index_count++;
147 }
148 }
149
150 if (p->dt1 > 400) {
151 length = 2;
152 smanager->set_outputSize(6, sizeof(ObjContainer)+sizeof(ObjData)*(length-1));
153 smanager->setup_outputData();
154 }
155
156 if ((p->dt1 > 400) && (p->dt1 <= 500)) {
157 rinkf2 = 4;
158 if (jiki->x + 15 - rinkx > 5) {
159 p->vx = -1;
160 } else if (jiki->x + 15 - rinkx > 5) {
161 p->vx = +1;
162 } else {
163 p->vx = 0;
164 }
165 p->x += p->vx;
166 rinkx = p->x;
167 rinky = p->y;
168 }
169
170 if (p->dt1 > 500) {
171 rinkf2 = 5;
172 if (jiki->x + 15 - rinkx < -5) {
173 p->vx = -1;
174 } else if(jiki->x + 15 - rinkx > 5) {
175 p->vx = +1;
176 } else {
177 p->vx = 0;
178 }
179 p->x += p->vx;
180 rinkx = p->x;
181 rinky = p->y;
182 }
183 if (p->dt1 > 600) {
184 rinkf2 = 0;
185 p->dt1 = 0;
186 }
187 CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0);
188 int *w_count = (int*)smanager->get_output(wbuf, 1);
189 int *w_fastebos = (int*)smanager->get_output(wbuf, 2);
190 int *w_rinkx = (int*)smanager->get_output(wbuf, 3);
191 int *w_rinky = (int*)smanager->get_output(wbuf, 4);
192 int *w_rinkf2 = (int*)smanager->get_output(wbuf, 5);
193 ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 6);
194 sprite->flag = true;
195 sprite->length = length;
196
197 fastebos++;
198 p->dt1++;
199 count++;
200
201 DefSpriteEx(54, 16, 32, &sprite->data[index_count]);
202 index_count++;
203 PutSpriteEx(54, p->x, p->y, 2, 2, 1, &sprite->data[index_count]);
204
205 *w_count = count;
206 *w_fastebos = fastebos;
207 *w_rinkx = rinkx;
208 *w_rinky = rinky;
209 *w_rinkf2 = rinkf2;
210 *q = *p;
211 return 0;
212 }