Danbias/Into The Void client/Player.cpp

142 lines
3.8 KiB
C++
Raw Normal View History

2013-10-23 00:09:17 +02:00
#include "Player.h"
using namespace ::Oyster::Math;
Player::Result Player::init( )
{ /* TODO */ return Player::Success; }
Player::Player( const std::string &objFilename, const Float4x4 &transform ) : renderAvatar(), logicAvatar(Oyster::Math::Float4x4::identity), orientationPointer(NULL)
{
this->orientationPointer = const_cast<Float4x4*>(&this->logicAvatar.getOrientation());
this->renderAvatar = new Oyster::Render::Model;
this->renderAvatar->World = this->orientationPointer;
if( objFilename == "" ) return;
//Oyster::FileLoaders::ObjReader *reader = Oyster::FileLoaders::ObjReader::LoadFile(objFilename, transform);
//Oyster::FileLoaders::ObjReader::Vertex** vertex = new Oyster::FileLoaders::ObjReader::Vertex*[1];
//int vcount;
//std::map<std::string,ID3D11ShaderResourceView *> textures;
//reader->GetVertexData( vertex, vcount, textures );
//Oyster::Buffer::BUFFER_INIT_DESC desc;
//desc.ElementSize=sizeof(Oyster::FileLoaders::ObjReader::Vertex);
//desc.NumElements = vcount;
//desc.InitData = *vertex;
//desc.Type = Oyster::Buffer::VERTEX_BUFFER;
//desc.Usage = Oyster::Buffer::BUFFER_DEFAULT;
//
//ID3D11ShaderResourceView *srv = textures["Diffuse"];
//
//renderAvatar.Vertices = *(Oyster::Engine::Init::Buffers::CreateBuffer(desc));
//renderAvatar.VertexCount = vcount;
//renderAvatar.Material.push_back(srv);
//srv = textures["Specular"];
//renderAvatar.Material.push_back(srv);
//srv = textures["Glow"];
//renderAvatar.Material.push_back(srv);
//renderAvatar.Indexed=false;
//renderAvatar.Visible=true;
renderAvatar = Oyster::Resources::Manager::LoadModel(objFilename, transform);
weaponSound = SoundEngine::CreateSoundSource();
weaponSound->SetResource("..\\Content\\Sounds\\pew_pew.wav");
weaponSound->SetLooping(false);
weaponSound->SetVolume(1.0f);
this->HP=255;
this->Score=0;
}
Player::~Player() {/* TODO ? */ }
Game::Ship & Player::accessShip( )
{
return this->logicAvatar;
}
const Game::Ship & Player::accessShip( ) const
{
return this->logicAvatar;
}
void Player::update( const ::Oyster::Math::Float &deltaTime, ClientToServerUpdateData &update )
{
/*if(update.forward>0)
this->logicAvatar.thrustForward();
if(update.forward<0)
this->logicAvatar.thrustBackward();
if(update.straferight>0)
this->logicAvatar.strafeRight();
if(update.straferight<0)
this->logicAvatar.strafeLeft();
if(update.strafeup>0)
this->logicAvatar.climb();
if(update.strafeup<0)
this->logicAvatar.dive();
*/
if(update.roll>0)
{
::Oyster::Math::Float baseAcceleration = this->logicAvatar.rotationProperty.acceleration.roll;
this->logicAvatar.rotationProperty.acceleration.roll /= ::Oyster::Game::MoveAble::getDiscreteTimeSlice();
this->logicAvatar.rollLeft();
this->logicAvatar.rotationProperty.acceleration.roll = baseAcceleration;
}
if(update.roll<0)
{
::Oyster::Math::Float baseAcceleration = this->logicAvatar.rotationProperty.acceleration.roll;
this->logicAvatar.rotationProperty.acceleration.roll /= ::Oyster::Game::MoveAble::getDiscreteTimeSlice();
this->logicAvatar.rollRight();
this->logicAvatar.rotationProperty.acceleration.roll = baseAcceleration;
}
/*
if(update.braking)
this->logicAvatar.enableMovementReduction( true );
else
this->logicAvatar.disableMovementReduction();
*/
this->logicAvatar.enableRotationReduction( true );
this->logicAvatar.update( deltaTime );
}
void Player::render( ) const
{
}
SoundSource *Player::getWeaponSound() const
{
return weaponSound;
}
const Oyster::Math::Float4x4 *Player::getOrientation()
{
return this->orientationPointer;
}
void Player::setMutation(const Oyster::Math::Float4x4 &transform)
{
this->logicAvatar.setMutation(transform);
}
void Player::copyLogicFrom( const Player &player )
{ this->logicAvatar = player.logicAvatar; }
std::string Player::getName() const
{
return this->name;
}
void Player::setName(const std::string &name)
{
this->name = name;
}