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();