00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "Teddy/SpaceGame/PlayerShip.h"
00026 #include "Teddy/SpaceGame/Root.h"
00027 #include "Teddy/SpaceGame/UserInterface.h"
00028 #include "Teddy/Graphics/View.h"
00029 #include "Teddy/Materials/Material.h"
00030 #include "Teddy/Materials/Light.h"
00031 #include "Teddy/Models/Tube.h"
00032 #include "Teddy/Models/Box.h"
00033 #include "Teddy/Scenes/Scene.h"
00034 #include "Teddy/SysSupport/Messages.h"
00035 #include "Teddy/SysSupport/Clock.h"
00036 #include "Teddy/SysSupport/Timer.h"
00037 using namespace Teddy::Graphics;
00038 using namespace Teddy::Materials;
00039 using namespace Teddy::Maths;
00040 using namespace Teddy::Models;
00041 using namespace Teddy::Scenes;
00042
00043
00044 namespace Teddy {
00045 namespace SpaceGame {
00046
00047
00048 #define BULLET_RATE ( 150.0000f)
00049 #define BULLET_SPEED ( 50.0000f)
00050 #define FM_ELITE 0
00051 #define FM_FREE 1
00052
00053
00059 PlayerShip::PlayerShip( ShipType *ship_type, Root *root )
00060 :
00061 Ship( "Player", ship_type, root )
00062 {
00063 init();
00064
00065 ply_light = NULL;
00066 bullet = new Tube( "BulletMesh", 5.0, 3.0, 6, 7 );
00067 prev_bullet_time = 0;
00068 clock = root->getUserInterface()->getView()->getClock();
00069 }
00070
00071
00073 void PlayerShip::init(){
00074 wait_up = false;
00075 touch = false;
00076 }
00077
00078
00080 void PlayerShip::applyControls( float age ){
00081
00082
00083
00084
00085 Ship::applyControls( age );
00086
00087
00088 if( ply_light != NULL ){
00089 ply_light->setPosition( getPosition() );
00090 ply_light->setSpotDirection( getViewAxis() );
00091 }
00092
00093 if( control_fire_weapon ){
00094
00095 float sys_time = root->getUserInterface()->getView()->getClock()->getTime();
00096
00097 if( sys_time - prev_bullet_time > BULLET_RATE ){
00098 prev_bullet_time = sys_time;
00099
00100 root->getAudioManager ()->playPulse();
00101 root->getObjectManager()->rayCollision( this );
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138 }
00139 }
00140 }
00141
00142
00143 };
00144 };
00145
00146