Mercurial > hg > Members > koba > t_dandy
comparison collision_task.cc @ 5:c9e9b605f08e
rename tcollision.cc
author | koba <koba@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 14 Dec 2010 15:29:13 +0900 |
parents | |
children | 23d54565aa7b |
comparison
equal
deleted
inserted
replaced
4:a87dd72ce1b3 | 5:c9e9b605f08e |
---|---|
1 #include <stdio.h> | |
2 #include <stdlib.h> | |
3 #include <SDL.h> | |
4 #include "SDL_opengl.h" | |
5 #include "object.h" | |
6 #include "Character.h" | |
7 #include "Character_state.h" | |
8 #include "tokuten.h" | |
9 #include "collision.h" | |
10 #include "bom.h" | |
11 #include "count2.h" | |
12 #include "sgoex.h" | |
13 #include "TaskManager.h" | |
14 #include "Func.h" | |
15 #include "property.h" | |
16 | |
17 extern SpriteTable sptable[DEFOBJ]; | |
18 extern TaskManager *tmanager; | |
19 | |
20 CollisionPropertyPtr | |
21 get_property(CHARACTER *p) | |
22 { | |
23 CollisionPropertyPtr property = new(CollisionProperty); | |
24 | |
25 property->infg_level = infg_level; | |
26 property->enemycount = 0; | |
27 | |
28 property->jiki = jiki; | |
29 property->p = *p; | |
30 property->tlv3 = tlv3[0]; | |
31 property->lg = lg; | |
32 property->infg = infg; | |
33 | |
34 | |
35 memcpy(property->tama_lv1, &tama_lv1, sizeof(tama1)*20); | |
36 memcpy(property->tama_lv2, &tama_lv2, sizeof(tama2)*20); | |
37 memcpy(property->laser_lv1, &laser_lv1, sizeof(laser)*20); | |
38 memcpy(property->laser_lv2, &laser_lv2, sizeof(laser)*20); | |
39 memcpy(property->laser_lv3, &laser_lv3, sizeof(laser)*128); | |
40 memcpy(property->bchar, &bchar, sizeof(bomchar)*100); | |
41 | |
42 return property; | |
43 } | |
44 | |
45 void | |
46 free_property(SchedTask *s, void *prop, void *chara) | |
47 { | |
48 CollisionPropertyPtr property = (CollisionPropertyPtr)prop; | |
49 CHARACTER *character = (CHARACTER *)chara; | |
50 | |
51 if(infg_level <= property->infg_level||infg_level != 0) { | |
52 infg_level--; | |
53 } | |
54 if(lg.stg <= property->lg.stg) { | |
55 lg.stg -= 26; | |
56 } | |
57 enemycount += property->enemycount; | |
58 | |
59 jiki = property->jiki; | |
60 *character = property->p; | |
61 tlv3[0] = property->tlv3; | |
62 infg = property->infg; | |
63 | |
64 memcpy(tama_lv1, property->tama_lv1, sizeof(tama1)*20); | |
65 memcpy(tama_lv2, property->tama_lv2, sizeof(tama2)*20); | |
66 memcpy(laser_lv1, property->laser_lv1, sizeof(laser)*20); | |
67 memcpy(laser_lv2, property->laser_lv2, sizeof(laser)*20); | |
68 memcpy(laser_lv3, property->laser_lv3, sizeof(laser)*128); | |
69 memcpy(bchar, property->bchar, sizeof(bomchar)*100); | |
70 | |
71 delete property; | |
72 } | |
73 | |
74 | |
75 CHARACTER * atari(CHARACTER *p) | |
76 { | |
77 int w, h, charno; | |
78 CollisionPropertyPtr property = get_property(p); | |
79 | |
80 charno = p->charano; | |
81 w = sptable[charno].w; | |
82 h = sptable[charno].h; | |
83 | |
84 HTaskPtr collision_task = tmanager->create_task(ATARI); | |
85 | |
86 collision_task->set_param(0,(memaddr)w); | |
87 collision_task->set_param(1,(memaddr)h); | |
88 collision_task->set_param(2,(memaddr)enemycount); | |
89 collision_task->set_param(3,(memaddr)bomend); | |
90 collision_task->set_param(4,(memaddr)tama_lv1_end); | |
91 collision_task->set_param(5,(memaddr)tama_lv2_end); | |
92 collision_task->set_param(6,(memaddr)laser_lv1_end); | |
93 collision_task->set_param(7,(memaddr)infg_level); | |
94 | |
95 collision_task->add_inData(property, sizeof(CollisionProperty)); | |
96 collision_task->add_outData(property, sizeof(CollisionProperty)); | |
97 collision_task->set_post(free_property, property, p); | |
98 | |
99 collision_task->set_cpu(SPE_ANY); | |
100 collision_task->spawn(); | |
101 | |
102 return p; | |
103 } |