annotate Renderer/Test_/ieshoot.cc @ 4:b5b462ac9b3b

Cerium Blender ball_bound
author Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
date Mon, 29 Nov 2010 16:42:42 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #include "SceneGraphRoot.h"
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 #include "ieshoot.h"
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 static const float jiki_speed = 6.0f;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 static const float jiki_radius = 32.0f;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 static const float tama_speed = 10.0f;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 static const float tama_radius = 16.0f;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 static const float boss_radius_x = 64.0f;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 static const float boss_radius_y = 128.0f;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 static const float iebosstama_speed = 15.0f;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 static void
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 ieboss_collision(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h,
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 SceneGraphPtr tree);
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 static void
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 ieboss_collision_invincibil(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h, SceneGraphPtr tree);
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 static void ieboss_move(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h);
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 static void iebosstama_move(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h);
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 static void
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 iejiki_collision(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h,
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 SceneGraphPtr tree)
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 static void
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 ietama_collision(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h,
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 SceneGraphPtr tree)
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 static void
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 ieboss_collision(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h,
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 SceneGraphPtr tree)
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 SceneGraphRoot *sgroot = (SceneGraphRoot *)sgroot_;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 SceneGraphIteratorPtr it = sgroot->getIterator(tree);
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 static int damage = 0;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 int ietama = sgroot->getSgid("IETAMA");
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 for (; it->hasNext(ietama);) {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 it->next(ietama);
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 SceneGraphPtr tama = it->get();
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 if (node->xyz[0] - boss_radius_x < tama->xyz[0] + tama_radius
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 && node->xyz[0] + boss_radius_x > tama->xyz[0] - tama_radius
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 && node->xyz[1] + boss_radius_y > tama->xyz[1] - tama_radius) {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 tama->remove();
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 node->set_move_collision(ieboss_move, ieboss_collision_invincibil);
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 SceneGraphPtr iebosstama = sgroot->createSceneGraph("Earth");
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 iebosstama->set_move_collision(iebosstama_move, ietama_collision);
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 iebosstama->xyz[0] = node->xyz[0];
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 iebosstama->xyz[1] = node->xyz[1] + boss_radius_y;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 //iebosstama->xyz[2] = 50.0f;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 node->addBrother(iebosstama);
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 damage++;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 if (damage > 10) {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 node->remove();
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 static void
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 ieboss_move(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h)
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 /**
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 * TODO
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 * Boss が複数居た場合、これじゃ駄目
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 */
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 static float x_speed = 5.0f;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 static float z_speed = 5.0f;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 node->xyz[0] += x_speed;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 if (node->xyz[0] - boss_radius_x < 0) {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 x_speed = -x_speed;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 node->xyz[0] = boss_radius_x;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 } else if (node->xyz[0] + boss_radius_x > screen_w) {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 x_speed = -x_speed;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 node->xyz[0] = screen_w - boss_radius_x;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 //node->xyz[2] += z_speed;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 if (node->xyz[2] >= 100.0f) {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 node->xyz[2] = 99.99f;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 z_speed = -z_speed;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 } else if (node->xyz[2] <= -100.0f) {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 node->xyz[2] = -99.99f;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 z_speed = -z_speed;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102 static void
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 ieboss_collision_invincibil(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h,
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 SceneGraphPtr tree)
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
105 {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 static int frame = 0;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
107
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 frame++;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
109
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 node->flag_drawable ^= 1;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 if (frame > 60) {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 frame = 0;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 node->flag_drawable = 1;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 node->set_move_collision(ieboss_move, ieboss_collision);
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
118
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 static void
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
120 iebosstama_move(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h)
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
121 {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
122 node->xyz[1] += iebosstama_speed;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
123
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 // 描画領域から抜けたら削除
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
125 if (node->xyz[1] > screen_h) {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
126 node->remove();
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
127 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
128 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
129
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 static void
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
131 ietama_move(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h)
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
133 node->xyz[1] -= tama_speed;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
134
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 // 描画領域から抜けたら削除
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 if (node->xyz[1] < 0) {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 node->remove();
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
139 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
140
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
141 static void
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 iejiki_move(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h)
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
143 {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
144 SceneGraphRoot *sgroot = (SceneGraphRoot *)sgroot_;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
145 Pad *pad = sgroot->getController();
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
146
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
147 if (pad->left.isPush()
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
148 || pad->left.isHold()) {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
149 node->xyz[0] -= jiki_speed;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
150
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
151 if (node->xyz[0] - jiki_radius< 0) {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 node->xyz[0] = jiki_radius;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
153 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
154 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
155
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 if (pad->right.isPush()
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 || pad->right.isHold()) {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
158 node->xyz[0] += jiki_speed;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
159
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
160 if (node->xyz[0] + jiki_radius > screen_w) {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
161 node->xyz[0] = screen_w - jiki_radius;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
162 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
163 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
164
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
165 if (pad->up.isPush()
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
166 || pad->up.isHold()) {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
167 node->xyz[1] -= jiki_speed;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
168
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
169 if (node->xyz[1] - jiki_radius < 0) {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
170 node->xyz[1] = jiki_radius;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
171 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
172 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
173
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
174 if (pad->down.isPush()
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
175 || pad->down.isHold()) {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
176 node->xyz[1] += jiki_speed;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
177
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
178 if (node->xyz[1] + jiki_radius > screen_h) {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
179 node->xyz[1] = screen_h - jiki_radius;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
180 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
181 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
182
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
183 if (pad->circle.isPush()) {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
184 SceneGraphPtr ietama = sgroot->createSceneGraph("IETAMA");
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
185 ietama->set_move_collision(ietama_move, ietama_collision);
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
186 ietama->xyz[0] = node->xyz[0];
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
187 ietama->xyz[1] = node->xyz[1];
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
188 node->addBrother(ietama);
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
189 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
190 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
191
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
192
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
193 MainLoopPtr
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
194 ieshoot::init(Viewer *sgroot, int w, int h)
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
195 {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
196 SceneGraphPtr iejiki;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
197 SceneGraphPtr enemy;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
198 SceneGraphPtr back;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
199
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
200 sgroot->createFromXMLfile( "xml_file/ietama.xml");
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
201 sgroot->createFromXMLfile( "xml_file/ieboss.xml");
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
202 sgroot->createFromXMLfile( "xml_file/iejiki.xml");
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
203 sgroot->createFromXMLfile( "xml_file/universe.xml");
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
204
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
205 back = sgroot->createSceneGraph();
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
206
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
207 iejiki = sgroot->createSceneGraph("IEJIKI");
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
208 iejiki->set_move_collision(iejiki_move, iejiki_collision);
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
209 iejiki->xyz[2] = 20;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
210 back->addChild(iejiki);
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
211
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
212 enemy = sgroot->createSceneGraph("IEBOSS");
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
213 enemy->set_move_collision(ieboss_move, ieboss_collision);
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
214 enemy->xyz[1] = boss_radius_y;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
215 back->addChild(enemy);
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
216
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
217 sgroot->setSceneData(back);
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
218 return sgroot;
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
219 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
220
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
221 extern Application *
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
222 application() {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
223 return new ieshoot();
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
224 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
225
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
226 const char *usr_help_str = "Usage: ./test_nogl [OPTION]\n";
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
227
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
228 extern int init(TaskManager *manager, int argc, char *argv[]);
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
229 extern void task_initialize();
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
230 static void TMend(TaskManager *manager);
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
231
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
232 int
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
233 TMmain(TaskManager *manager, int argc, char *argv[])
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
234 {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
235 task_initialize();
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
236 manager->set_TMend(TMend);
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
237 return init(manager, argc, argv);
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
238
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
239 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
240
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
241 void
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
242 TMend(TaskManager *manager)
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
243 {
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
244 printf("test_nogl end\n");
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
245 }
b5b462ac9b3b Cerium Blender ball_bound
Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
parents:
diff changeset
246