Mercurial > hg > Members > e085722 > Cerium
diff Renderer/Test/player_action.cc @ 0:04e28d8d3c6f
first commit
author | Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 08 Nov 2010 01:23:25 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Renderer/Test/player_action.cc Mon Nov 08 01:23:25 2010 +0900 @@ -0,0 +1,146 @@ +#include "SceneGraphRoot.h" +#include "bullet_action.h" +#include "SGList.h" + +#define MOVE_SPEED 5.00 + + +void +player_move_right(SceneGraphPtr node, int screen_w, int screen_h) +{ + if(node->xyz[0]<screen_w/2) + { + node->xyz[0] += MOVE_SPEED; + } + if(node->angle[1]<=20) + { + node->angle[1]+=1.0; + } + if(node->angle[2]>=-45) + { + node->angle[2]-=1.0; + } +} + +void +player_move_left(SceneGraphPtr node, int screen_w, int screen_h) +{ + if(node->xyz[0]> -screen_w/2) + { + node->xyz[0] -= MOVE_SPEED; + } + if(node->angle[1]>=-20) + { + node->angle[1]-=1.0; + } + if(node->angle[2]<=45) + { + node->angle[2]+=1.0; + } +} + +void +player_move_up(SceneGraphPtr node, int screen_w, int screen_h) +{ + if(node->xyz[2]<screen_h/2 + 100) + { + node->xyz[2] += MOVE_SPEED; + } + if(node->angle[0]<45) + { + node->angle[0] += 2.0; + } +} + +void +player_move_down(SceneGraphPtr node, int screen_w, int screen_h) +{ + if(node->xyz[2]> -screen_h/2) + { + node->xyz[2] -= MOVE_SPEED; + } + if(node->angle[0]>-45) + { + node->angle[0] -= 2.0; + } +} + +void +player_move_idle(SceneGraphPtr node) +{ + if (node->angle[1]>0) + { + node->angle[1]-=1.0; + } + else if(node->angle[1]<0) + { + node->angle[1]+=1.0; + } + + if(node->angle[2]<0) + { + node->angle[2]+=0.5; + } + else if(node->angle[2]>0) + { + node->angle[2]-=0.5; + } + + if(node->angle[0]<0) + { + node->angle[0]+=1.0; + } + else if(node->angle[0]>0) + { + node->angle[0]-=1.0; + } +} + +void +player_move_all(SceneGraphPtr node, int screen_w, int screen_h) +{ + Pad *pad = sgroot->getController(); + + if (pad->right.isHold() || pad->left.isHold() || + pad->up.isHold() || pad->down.isHold()) { + if (pad->right.isHold()) { + player_move_right(node, screen_w, screen_h); + } else if (pad->left.isHold()) { + player_move_left(node, screen_w, screen_h); + } + + if (pad->down.isHold()) { + player_move_up(node, screen_w, screen_h); + } else if(pad->up.isHold()) { + player_move_down(node, screen_w, screen_h); + } + } else { + player_move_idle(node); + } + + if (pad->r2.isHold()) { + node->xyz[2] -= 10.0f; + } + + if (pad->circle.isPush()) { + SceneGraphPtr bullet = sgroot->createSceneGraph(BULEBULLET); + bullet->set_move_collision(bluebullet_move, bullet_collision); + bullet_init(bullet, node); + node->addBrother(bullet); + } +} + +void +player_collision(SceneGraphPtr node, int screen_w, int screen_h, + SceneGraphPtr tree) +{ +#if 0 + int judge = square_judge(node, BULEBULLET, scene_graph); + + if (judge == HIT) + { + node->set_move_collision(player_move_all,player_collision); + } +#endif +} +