annotate TaskManager/Test/test_render/vacuum.cpp @ 378:bdeb7a73285b draft

test_nogl not working
author kazz@kazzone.cr.ie.u-ryukyu.ac.jp
date Fri, 31 Jul 2009 19:10:53 +0900
parents 4fb99cd5d13f
children ce86b0186a4a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
223
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
1 #include <math.h>
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
2 #include "vacuum.h"
223
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
3 #include "SceneGraphRoot.h"
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
4 #include "SGList.h"
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
5 #define ENCOUNT 55
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
6 using namespace std;
223
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
7
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
8 static float vacuum_speed = 10.0f;
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
9
223
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
10
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
11 /*オブジェクト毎にファイルを分けてみた
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
12 *
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
13 *
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
14 */
223
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
15
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
16
223
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
17
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
18 void
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
19 no_move_idle(SceneGraphPtr node, int screen_w, int screen_h)
223
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
20 {
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
21
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
22 }
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
23
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
24 void
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
25 no_collision_idle(SceneGraphPtr node, int screen_w, int screen_h,SceneGraphPtr tree)
223
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
26 {
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
27
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
28 }
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
29
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
30 void
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
31 vacuum_coll(SceneGraphPtr node, int screen_w, int screen_h,
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 360
diff changeset
32 SceneGraphPtr tree)
223
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
33 {
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
34 Pad *pad = sgroot->getController();
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
35
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
36 if(node->frame%ENCOUNT == ENCOUNT-1) {
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
37 if(random()%2) {
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
38 add_cubecollision_object(REDCUBE,node,screen_w,screen_h);
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
39 }
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
40 else {
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
41 add_cubecollision_object(ENEMY,node,screen_w,screen_h);
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
42 }
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
43 }
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
44
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
45 if (pad->cross.isHold()) {
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
46 SceneGraphIteratorPtr it = sgroot->getIterator(tree);
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
47 collision_red(it,node);
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
48 it = sgroot->getIterator(tree);
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
49 collision_purple(it,node,screen_w,screen_h);
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
50 }
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
51
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
52 else if(pad->circle.isHold()) {
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
53 SceneGraphIteratorPtr it = sgroot->getIterator(tree);
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
54 lock_attack(node,it);
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
55 }
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
56
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
57 }
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
58
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
59 void
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
60 lock_attack(SceneGraphPtr node,SceneGraphIteratorPtr it)
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
61 {
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
62
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
63 SceneGraphPtr enemy;
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
64 SceneGraphPtr near_enemy = NULL;
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
65 float dx,dy,r,range = 100;
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
66 // Pad *pad = sgroot->getController();
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 360
diff changeset
67
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
68 for(;it->hasNext(ENEMY);) {
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
69
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
70 it->next(ENEMY);
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
71 enemy = it->get();
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
72 dx = enemy->xyz[0] - node->xyz[0];
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
73 dy = enemy->xyz[1] - node->xyz[1];
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
74 r = sqrt(dx*dx+dy*dy);
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 360
diff changeset
75
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
76 if(range > r && enemy->stack_xyz[2] == 0) {
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 360
diff changeset
77 range = r;
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 360
diff changeset
78 near_enemy = enemy;
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
79 }
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
80 }
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
81
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
82
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
83 if(near_enemy != NULL) {
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
84 /*stack_xyz[2]をlockonフラグとして使うかな?*/
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
85 SceneGraphPtr lockon;
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 360
diff changeset
86 // SceneGraphPtr near_enemy_common_move = near_enemy->parent;
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
87 near_enemy->stack_xyz[2] = 1;
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
88 lockon = sgroot->createSceneGraph(LOCK);
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
89 lockon->set_move_collision(no_move_idle,lockon_collision);
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
90 //near_enemy_common_move->addChild(lockon);
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
91 near_enemy->addChild(lockon);
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
92 }
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
93
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
94 }
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
95
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
96 void
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
97 lockon_collision(SceneGraphPtr node,int w,int h,SceneGraphPtr tree) {
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 360
diff changeset
98
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
99 Pad *pad = sgroot->getController();
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
100 SceneGraphPtr lockon_enemy = node->parent;
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
101
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
102 /* node->angle[0] = -lockon_enemy->angle[0];
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
103 node->angle[1] = -lockon_enemy->angle[1];
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
104 node->angle[2] = -lockon_enemy->angle[2];*/
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 360
diff changeset
105
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
106 if(pad->circle.isRelease()) {
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
107 lockon_enemy->remove();
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
108 }
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 360
diff changeset
109
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
110 }
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
111
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
112
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
113 void
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
114 vacuum_move(SceneGraphPtr node , int w, int h)
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
115 {
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
116 Pad *pad = sgroot->getController();
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 360
diff changeset
117
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
118 if (pad->right.isHold() && w > node->xyz[0]) {
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
119 node->xyz[0] += vacuum_speed;
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
120 node->angle[0] += 2;
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
121 } else if (pad->left.isHold() && 0 < node->xyz[0]) {
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
122 node->xyz[0] -= vacuum_speed;
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
123 node->angle[0] -= 2;
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
124 }
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 360
diff changeset
125
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
126 if (pad->up.isHold() && 0 < node->xyz[1]) {
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
127 node->xyz[1] -= vacuum_speed;
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
128 node->angle[1] -= 2;
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
129 } else if (pad->down.isHold() && h > node->xyz[1]) {
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
130 node->xyz[1] += vacuum_speed;
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
131 node->angle[1] += 2;
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
132 }
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 360
diff changeset
133
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
134 if (pad->start.isPush()) {
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
135 node->xyz[0] = w/2;
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
136 node->xyz[1] = h*0.8;
223
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
137 }
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
138 }
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
139
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
140
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
141
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
142 /*cubeをランダムな場所に生成*/
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
143 void
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
144 add_cubecollision_object(int id,SceneGraphPtr root,int w,int h)
223
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
145 {
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
146 SceneGraphPtr object;
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
147 SceneGraphPtr common_move;
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 360
diff changeset
148
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
149 common_move = sgroot->createSceneGraph();
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
150 object = sgroot->createSceneGraph(id);
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
151 object->xyz[0] = random()%w;
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
152 object->xyz[1] = random()%h;
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
153 object->set_move_collision(no_move_idle,cube_collision);
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
154 //common_move->addChild(object);
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 360
diff changeset
155 root->addBrother(object);
223
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
156 }
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
157
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
158
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
159 void
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
160 vacuum_init2(int w, int h)
223
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
161 {
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
162 SceneGraphPtr title;
223
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
163
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
164 sgroot->createFromXMLfile("xml_file/gamecube.xml");
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
165 sgroot->createFromXMLfile("xml_file/title.xml");
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
166 sgroot->createFromXMLfile("xml_file/gameover.xml");
223
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
167
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
168 title = sgroot->createSceneGraph(TITLE);
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
169 title->xyz[0] = w/2;
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
170 title->xyz[1] = h/2;
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
171 title->set_move_collision(no_move_idle, title_collision);
223
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
172
360
4430f0bff5cb add vacuum "-sg 16"
aaa
parents: 238
diff changeset
173 sgroot->setSceneData(title);
223
ef7034891800 add Vacuume
gongo@localhost.localdomain
parents:
diff changeset
174 }