Mercurial > hg > Members > koba > t_dandy
comparison state_task.cc @ 30:427e1aac0bd7
not run.
author | koba <koba@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 31 Dec 2010 15:50:44 +0900 |
parents | 813f5461daab |
children | ccb8d9956a1e |
comparison
equal
deleted
inserted
replaced
29:d2e627af7f61 | 30:427e1aac0bd7 |
---|---|
37 int enemyfaste = 0; | 37 int enemyfaste = 0; |
38 int fastebos = 0; | 38 int fastebos = 0; |
39 | 39 |
40 State state_list[LIST_NUM]; | 40 State state_list[LIST_NUM]; |
41 | 41 |
42 int | 42 static int |
43 GetStateNum(int task_num) | 43 GetStateNum(int task_num) |
44 { | 44 { |
45 int num = task_num % LIST_NUM; | 45 int num = task_num % LIST_NUM; |
46 | 46 |
47 return num; | 47 return num; |
48 } | 48 } |
49 | 49 |
50 void | 50 static void |
51 SetTaskState(int task_num, CHARACTER *(state)(CHARACTER *chara)) | 51 SetTaskState(int task_num, CHARACTER *(state)(CHARACTER *chara)) |
52 { | 52 { |
53 int num = GetStateNum(task_num); | 53 int num = GetStateNum(task_num); |
54 | 54 |
55 state_list[num] = state; | 55 state_list[num] = state; |
124 CHARACTER *p = (CHARACTER*)chara; | 124 CHARACTER *p = (CHARACTER*)chara; |
125 TamaContainer *new_tama = (TamaContainerPtr)tama; | 125 TamaContainer *new_tama = (TamaContainerPtr)tama; |
126 | 126 |
127 if (new_tama->flag == true) { | 127 if (new_tama->flag == true) { |
128 Puttama(new_tama->type, new_tama->x, new_tama->y); | 128 Puttama(new_tama->type, new_tama->x, new_tama->y); |
129 Puttama(new_tama[0].type, new_tama[0].x, new_tama[0].y); | |
130 Puttama(new_tama[1].type, new_tama[1].x, new_tama[1].y); | |
131 Puttama(new_tama[2].type, new_tama[2].x, new_tama[2].y); | |
129 } | 132 } |
130 | 133 |
131 int num = GetStateNum(p->task); | 134 int num = GetStateNum(p->task); |
132 p=state_list[num](p); | 135 p=state_list[num](p); |
133 free(new_tama); | 136 free(new_tama); |
134 } | 137 } |
138 | |
139 void | |
140 checkContainer(SchedTask *s, void *chara, void *obj) | |
141 { | |
142 CHARACTER *p = (CHARACTER*)chara; | |
143 ObjContainer *new_obj = (ObjContainerPtr)obj; | |
135 | 144 |
145 | |
146 | |
147 int num = GetStateNum(p->task); | |
148 p=state_list[num](p); | |
149 free(new_obj); | |
150 } | |
151 | |
152 CHARACTER* | |
153 sendContainerTask(CHARACTER *p) | |
154 { | |
155 int task_num = p->task; | |
156 int data_size = sizeof(ObjContainer) * DATA_LENGTH; | |
157 HTaskPtr state_task = tmanager->create_task(task_num); | |
158 ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(data_size); | |
159 | |
160 state_task->set_inData(0, p, sizeof(CHARACTER)); | |
161 state_task->set_inData(1, obj, data_size); | |
162 | |
163 state_task->set_outData(0, p, sizeof(CHARACTER)); | |
164 state_task->set_outData(1, obj, data_size); | |
165 | |
166 state_task->set_post(checkContainer, (void*)p, (void*)obj); | |
167 | |
168 state_task->set_cpu(SPE_ANY); | |
169 state_task->spawn(); | |
170 | |
171 return p; | |
172 } | |
173 | |
136 CHARACTER* | 174 CHARACTER* |
137 SimpleStateTask(CHARACTER *p) | 175 SimpleStateTask(CHARACTER *p) |
138 { | 176 { |
139 int task_num = p->task; | 177 int task_num = p->task; |
140 HTaskPtr state_task = tmanager->create_task(task_num); | 178 HTaskPtr state_task = tmanager->create_task(task_num); |
141 | 179 |
142 state_task->add_inData(p, sizeof(CHARACTER)); | 180 state_task->set_inData(0, p, sizeof(CHARACTER)); |
143 state_task->add_outData(p, sizeof(CHARACTER)); | 181 state_task->set_outData(0, p, sizeof(CHARACTER)); |
144 state_task->set_post(updateState, (void*)p, NULL); | 182 state_task->set_post(updateState, (void*)p, NULL); |
145 | 183 |
146 state_task->set_cpu(SPE_ANY); | 184 state_task->set_cpu(SPE_ANY); |
147 state_task->spawn(); | 185 state_task->spawn(); |
148 | 186 |
153 withJikiTask(CHARACTER *p) | 191 withJikiTask(CHARACTER *p) |
154 { | 192 { |
155 int task_num = p->task; | 193 int task_num = p->task; |
156 HTaskPtr state_task = tmanager->create_task(task_num); | 194 HTaskPtr state_task = tmanager->create_task(task_num); |
157 | 195 |
158 state_task->add_inData(p, sizeof(CHARACTER)); | 196 state_task->set_inData(0, p, sizeof(CHARACTER)); |
159 state_task->add_inData(&jiki, sizeof(player)); | 197 state_task->set_inData(1, &jiki, sizeof(player)); |
160 state_task->add_outData(p, sizeof(CHARACTER)); | 198 state_task->set_outData(0, p, sizeof(CHARACTER)); |
161 state_task->set_post(updateState, (void*)p, NULL); | 199 state_task->set_post(updateState, (void*)p, NULL); |
162 | 200 |
163 state_task->set_cpu(SPE_ANY); | 201 state_task->set_cpu(SPE_ANY); |
164 state_task->spawn(); | 202 state_task->spawn(); |
165 | 203 |
168 | 206 |
169 CHARACTER* | 207 CHARACTER* |
170 putTamaTask1(CHARACTER *p) | 208 putTamaTask1(CHARACTER *p) |
171 { | 209 { |
172 int task_num = p->task; | 210 int task_num = p->task; |
211 int tama_size = sizeof(TamaContainer)*DATA_LENGTH; | |
173 HTaskPtr state_task = tmanager->create_task(task_num); | 212 HTaskPtr state_task = tmanager->create_task(task_num); |
174 TamaContainerPtr tama = (TamaContainerPtr)tmanager->allocate(sizeof(TamaContainer)); | 213 TamaContainerPtr tama = (TamaContainerPtr)tmanager->allocate(tama_size); |
175 | 214 |
176 state_task->add_inData(p, sizeof(CHARACTER)); | 215 state_task->set_inData(0, p, sizeof(CHARACTER)); |
177 state_task->add_inData(tama, sizeof(TamaContainer)); | 216 state_task->set_inData(1, tama, tama_size); |
178 | 217 |
179 state_task->add_outData(p, sizeof(CHARACTER)); | 218 state_task->set_outData(0, p, sizeof(CHARACTER)); |
180 state_task->add_outData(tama, sizeof(TamaContainer)); | 219 state_task->set_outData(1, tama, 0); |
181 | 220 |
182 state_task->set_post(checkSingleTama, (void*)p, (void*)tama); | 221 state_task->set_post(checkSingleTama, (void*)p, (void*)tama); |
183 | 222 |
184 state_task->set_cpu(SPE_ANY); | 223 state_task->set_cpu(SPE_ANY); |
185 state_task->spawn(); | 224 state_task->spawn(); |