From d16d223c2ba3988f6f9147dfd5deada56443d746 Mon Sep 17 00:00:00 2001 From: lindaandersson Date: Tue, 11 Feb 2014 10:11:38 +0100 Subject: [PATCH 1/2] GL - player moving --- .../DanBiasGame/GameClientState/C_Object.cpp | 23 +++++++++--- .../DanBiasGame/GameClientState/C_Object.h | 8 +++-- .../GameClientState/C_obj/C_DynamicObj.cpp | 30 +--------------- .../GameClientState/C_obj/C_DynamicObj.h | 5 --- .../GameClientState/C_obj/C_Player.cpp | 34 +----------------- .../GameClientState/C_obj/C_Player.h | 7 ---- .../GameClientState/C_obj/C_StaticObj.cpp | 32 +---------------- .../GameClientState/C_obj/C_StaticObj.h | 5 --- .../GameClientState/C_obj/C_UIobject.cpp | 32 ----------------- .../GameClientState/C_obj/C_UIobject.h | 7 +--- .../DanBiasGame/GameClientState/GameState.cpp | 11 +++--- Code/Game/GameLogic/Game_PlayerData.cpp | 2 +- Code/Game/GameLogic/Object.cpp | 16 +-------- Code/Game/GameLogic/Object.h | 2 -- Code/Game/GameLogic/Player.cpp | 36 +++++++++---------- 15 files changed, 52 insertions(+), 198 deletions(-) diff --git a/Code/Game/DanBiasGame/GameClientState/C_Object.cpp b/Code/Game/DanBiasGame/GameClientState/C_Object.cpp index 20b882d2..c5078224 100644 --- a/Code/Game/DanBiasGame/GameClientState/C_Object.cpp +++ b/Code/Game/DanBiasGame/GameClientState/C_Object.cpp @@ -5,6 +5,9 @@ void C_Object::Init(ModelInitData modelInit) position = modelInit.position; rotation = modelInit.rotation; scale = modelInit.scale; + id = modelInit.id; + model = Oyster::Graphics::API::CreateModel(modelInit.modelPath); + model->Visible = modelInit.visible; updateWorld(); } void C_Object::updateWorld() @@ -17,10 +20,12 @@ void C_Object::updateWorld() scale.v[1].y = this->scale[1]; scale.v[2].z = this->scale[2]; world = translation * rot * scale; + + model->WorldMatrix = world; } void C_Object::setWorld(Oyster::Math::Float4x4 world) { - + model->WorldMatrix = world; } Oyster::Math::Float4x4 C_Object::getWorld() const { @@ -68,7 +73,15 @@ Oyster::Math::Float3 C_Object::getScale() const { return this->scale; } -//int C_Object::GetId() const -//{ -// return -//} +int C_Object::GetId() const +{ + return id; +} +void C_Object::Render() +{ + Oyster::Graphics::API::RenderModel(*(model)); +} +void C_Object::Release() +{ + Oyster::Graphics::API::DeleteModel(model); +} \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/C_Object.h b/Code/Game/DanBiasGame/GameClientState/C_Object.h index 13932930..9c06d2da 100644 --- a/Code/Game/DanBiasGame/GameClientState/C_Object.h +++ b/Code/Game/DanBiasGame/GameClientState/C_Object.h @@ -23,6 +23,8 @@ private: Oyster::Math::Float3 position; Oyster::Math::Quaternion rotation; Oyster::Math::Float3 scale; + Oyster::Graphics::Model::Model *model; + int id; void updateWorld(); public: @@ -40,8 +42,8 @@ public: void addScale(Oyster::Math::Float3 deltaScale); Oyster::Math::Float3 getScale() const; - virtual void Render() = 0; - virtual void Release() = 0; - virtual int GetId() = 0; + virtual void Render(); + virtual void Release(); + virtual int GetId() const; };};}; #endif diff --git a/Code/Game/DanBiasGame/GameClientState/C_obj/C_DynamicObj.cpp b/Code/Game/DanBiasGame/GameClientState/C_obj/C_DynamicObj.cpp index 71c46f4a..e654348f 100644 --- a/Code/Game/DanBiasGame/GameClientState/C_obj/C_DynamicObj.cpp +++ b/Code/Game/DanBiasGame/GameClientState/C_obj/C_DynamicObj.cpp @@ -1,15 +1,7 @@ #include "C_DynamicObj.h" #include "DllInterfaces/GFXAPI.h" using namespace DanBias::Client; -struct C_DynamicObj::myData -{ - myData(){} - Oyster::Graphics::Model::Model *model; - int ID; - // light - // sound - // effect -}privData; + C_DynamicObj::C_DynamicObj(void) { } @@ -22,24 +14,4 @@ C_DynamicObj::~C_DynamicObj(void) void C_DynamicObj::Init(ModelInitData modelInit) { C_Object::Init(modelInit); - // load models - privData = new myData(); - privData->model = Oyster::Graphics::API::CreateModel(modelInit.modelPath); - privData->model->Visible = modelInit.visible; - privData->model->WorldMatrix = getWorld(); - privData->ID = modelInit.id; } - -void C_DynamicObj::Render() -{ - Oyster::Graphics::API::RenderModel(*(privData->model)); -} -void C_DynamicObj::Release() -{ - Oyster::Graphics::API::DeleteModel(privData->model); - delete privData; -} -int C_DynamicObj::GetId() -{ - return privData->ID; -} \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/C_obj/C_DynamicObj.h b/Code/Game/DanBiasGame/GameClientState/C_obj/C_DynamicObj.h index d8e7023a..f73514da 100644 --- a/Code/Game/DanBiasGame/GameClientState/C_obj/C_DynamicObj.h +++ b/Code/Game/DanBiasGame/GameClientState/C_obj/C_DynamicObj.h @@ -8,15 +8,10 @@ namespace DanBias class C_DynamicObj : public C_Object { private: - struct myData; - myData* privData; public: C_DynamicObj(void); virtual ~C_DynamicObj(void); void Init(ModelInitData modelInit); - void Render(); - void Release(); - int GetId(); };};}; #endif diff --git a/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.cpp b/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.cpp index 5e5525e9..02cc58fc 100644 --- a/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.cpp +++ b/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.cpp @@ -2,21 +2,11 @@ #include "DllInterfaces/GFXAPI.h" using namespace DanBias::Client; -struct C_Player::myData -{ - myData(){} - Oyster::Math3D::Float4x4 view; - Oyster::Math3D::Float4x4 proj; - Oyster::Graphics::Model::Model *model; - Oyster::Math3D::Float4 lookDir; - int ID; -}privData; - C_Player::C_Player(void) :C_DynamicObj() { -} +} C_Player::~C_Player(void) { @@ -26,26 +16,4 @@ C_Player::~C_Player(void) void C_Player::Init(ModelInitData modelInit) { C_Object::Init(modelInit); - // load models - privData = new myData(); - privData->model = Oyster::Graphics::API::CreateModel(modelInit.modelPath); - privData->model->Visible = modelInit.visible; - privData->model->WorldMatrix = getWorld(); - privData->ID = modelInit.id; - privData->lookDir = Oyster::Math3D::Float4 (0,0,1,0); } - - -void C_Player::Render() -{ - Oyster::Graphics::API::RenderModel(*(privData->model)); -} -void C_Player::Release() -{ - Oyster::Graphics::API::DeleteModel(privData->model); - delete privData; -} -int C_Player::GetId() -{ - return privData->ID; -} \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.h b/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.h index 556fd6dc..65a7e498 100644 --- a/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.h +++ b/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.h @@ -8,18 +8,11 @@ namespace DanBias class C_Player : public C_DynamicObj { private: - struct myData; - myData* privData; - public: C_Player(void); virtual ~C_Player(void); void Init(ModelInitData modelInit); - void Render(); - void Release(); - int GetId(); - };};}; #endif diff --git a/Code/Game/DanBiasGame/GameClientState/C_obj/C_StaticObj.cpp b/Code/Game/DanBiasGame/GameClientState/C_obj/C_StaticObj.cpp index 6e7a20e9..9b13c460 100644 --- a/Code/Game/DanBiasGame/GameClientState/C_obj/C_StaticObj.cpp +++ b/Code/Game/DanBiasGame/GameClientState/C_obj/C_StaticObj.cpp @@ -3,18 +3,10 @@ #include "DllInterfaces/GFXAPI.h" using namespace DanBias::Client; -struct C_StaticObj::myData -{ - myData(){} - Oyster::Graphics::Model::Model *model; - int ID; - -}privData; C_StaticObj::C_StaticObj(void) { + } - - C_StaticObj::~C_StaticObj(void) { @@ -22,26 +14,4 @@ C_StaticObj::~C_StaticObj(void) void C_StaticObj::Init(ModelInitData modelInit) { C_Object::Init(modelInit); - // load models - privData = new myData(); - privData->model = Oyster::Graphics::API::CreateModel(modelInit.modelPath); - privData->model->Visible = modelInit.visible; - privData->model->WorldMatrix = getWorld(); - privData->ID = modelInit.id; - } - - -void C_StaticObj::Render() -{ - Oyster::Graphics::API::RenderModel(*(privData->model)); -} -void C_StaticObj::Release() -{ - Oyster::Graphics::API::DeleteModel(privData->model); - delete privData; -} -int C_StaticObj::GetId() -{ - return privData->ID; -} \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/C_obj/C_StaticObj.h b/Code/Game/DanBiasGame/GameClientState/C_obj/C_StaticObj.h index 3bae1961..d2bcb2a9 100644 --- a/Code/Game/DanBiasGame/GameClientState/C_obj/C_StaticObj.h +++ b/Code/Game/DanBiasGame/GameClientState/C_obj/C_StaticObj.h @@ -8,15 +8,10 @@ namespace DanBias class C_StaticObj : public C_Object { private: - struct myData; - myData* privData; public: C_StaticObj(void); virtual ~C_StaticObj(void); void Init(ModelInitData modelInit); - void Render(); - void Release(); - int GetId(); };};}; #endif \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/C_obj/C_UIobject.cpp b/Code/Game/DanBiasGame/GameClientState/C_obj/C_UIobject.cpp index fc9c7d53..570fa22f 100644 --- a/Code/Game/DanBiasGame/GameClientState/C_obj/C_UIobject.cpp +++ b/Code/Game/DanBiasGame/GameClientState/C_obj/C_UIobject.cpp @@ -2,13 +2,6 @@ #include "DllInterfaces/GFXAPI.h" using namespace DanBias::Client; -struct C_UIobject::myData -{ - myData(){} - Oyster::Graphics::Model::Model *model; - int ID; -}privData; - C_UIobject::C_UIobject(void) { } @@ -20,29 +13,4 @@ C_UIobject::~C_UIobject(void) void C_UIobject::Init(ModelInitData modelInit) { C_Object::Init(modelInit); - // load models - privData = new myData(); - privData->model = Oyster::Graphics::API::CreateModel(modelInit.modelPath); - privData->model->Visible = modelInit.visible; - privData->model->WorldMatrix = getWorld(); - privData->ID = modelInit.id; - } -void C_UIobject::setPos(Oyster::Math::Float4x4 world) -{ - privData->model->WorldMatrix = world; -} - -void C_UIobject::Render() -{ - Oyster::Graphics::API::RenderModel(*(privData->model)); -} -void C_UIobject::Release() -{ - Oyster::Graphics::API::DeleteModel(privData->model); - delete privData; -} -int C_UIobject::GetId() -{ - return privData->ID; -} \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/C_obj/C_UIobject.h b/Code/Game/DanBiasGame/GameClientState/C_obj/C_UIobject.h index b41fb047..f002fcb2 100644 --- a/Code/Game/DanBiasGame/GameClientState/C_obj/C_UIobject.h +++ b/Code/Game/DanBiasGame/GameClientState/C_obj/C_UIobject.h @@ -8,16 +8,11 @@ namespace DanBias class C_UIobject : public C_Object { private: - struct myData; - myData* privData; + public: C_UIobject(void); virtual ~C_UIobject(void); void Init(ModelInitData modelInit); void setPos(Oyster::Math::Float4x4 world); - - void Render(); - void Release(); - int GetId(); };};}; #endif \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/GameState.cpp b/Code/Game/DanBiasGame/GameClientState/GameState.cpp index 8fecd86f..5214875a 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/GameState.cpp @@ -122,7 +122,7 @@ bool GameState::LoadModels() this->dynamicObjects[this->dynamicObjects.Size() -1 ]->Init(modelData); } - + /* // add crystal model modelData.position = Oyster::Math::Float3(10, 301, 0); modelData.modelPath = L"crystalformation_b.dan"; @@ -174,7 +174,7 @@ bool GameState::LoadModels() modelData.id = id++; // load models this->dynamicObjects.Push(new C_DynamicObj()); - this->dynamicObjects[this->dynamicObjects.Size() -1 ]->Init(modelData); + this->dynamicObjects[this->dynamicObjects.Size() -1 ]->Init(modelData);*/ return true; } bool GameState::LoadModels(std::string mapFile) @@ -316,7 +316,7 @@ void GameState::InitiatePlayer(int id, std::wstring modelName, Oyster::Math::Flo camera->setLook(objForward); up *= 2; - objForward *= -3; + objForward *= 3; Oyster::Math::Float3 cameraPos = up + pos + objForward; camera->SetPosition(cameraPos); @@ -566,8 +566,9 @@ void GameState::Protocol( ObjPos* pos ) if(dynamicObjects[i]->GetId() == pos->object_ID) { - dynamicObjects[i]->setPos(Float3(world[12], world[13], world[14])); - + + //dynamicObjects[i]->setPos(Float3(world[12], world[13], world[14])); + dynamicObjects[i]->setWorld(world); if(dynamicObjects[i]->GetId() == myId) // playerobj { diff --git a/Code/Game/GameLogic/Game_PlayerData.cpp b/Code/Game/GameLogic/Game_PlayerData.cpp index 25fd51c1..15de4399 100644 --- a/Code/Game/GameLogic/Game_PlayerData.cpp +++ b/Code/Game/GameLogic/Game_PlayerData.cpp @@ -8,7 +8,7 @@ Game::PlayerData::PlayerData() //set some stats that are appropriate to a player Oyster::Math::Float3 centerPosition = Oyster::Math::Float3(0,608,-5); Oyster::Math::Float3 size = Oyster::Math::Float3(0.25f,1.0f,0.5f); - Oyster::Math::Float mass = 15; + Oyster::Math::Float mass = 60; Oyster::Math::Float restitutionCoeff = 0.5; Oyster::Math::Float frictionCoeff_Static = 0.4; Oyster::Math::Float frictionCoeff_Dynamic = 0.3; diff --git a/Code/Game/GameLogic/Object.cpp b/Code/Game/GameLogic/Object.cpp index 77c256eb..b2b74838 100644 --- a/Code/Game/GameLogic/Object.cpp +++ b/Code/Game/GameLogic/Object.cpp @@ -20,8 +20,6 @@ Object::Object() this->type = OBJECT_TYPE::OBJECT_TYPE_UNKNOWN; this->objectID = GID(); - this->currPhysicsState = this->rigidBody->GetState(); - this->newPhysicsState = this->currPhysicsState; } Object::Object(OBJECT_TYPE type) @@ -29,8 +27,6 @@ Object::Object(OBJECT_TYPE type) this->rigidBody = API::Instance().AddCollisionBox(Oyster::Math::Float3(0.0f, 0.0f, 0.0f), Oyster::Math::Float4(0, 0, 0, 1), Oyster::Math::Float3(0, 0, 0), 0, 0.5f, 0.8f, 0.6f); this->type = type; this->objectID = GID(); - this->currPhysicsState = this->rigidBody->GetState(); - this->newPhysicsState = this->currPhysicsState; } Object::Object(Oyster::Physics::ICustomBody *rigidBody, OBJECT_TYPE type) @@ -38,8 +34,6 @@ Object::Object(Oyster::Physics::ICustomBody *rigidBody, OBJECT_TYPE type) this->rigidBody = rigidBody; this->type = type; this->objectID = GID(); - this->currPhysicsState = this->rigidBody->GetState(); - this->newPhysicsState = this->currPhysicsState; } Object::Object(void* collisionFuncBefore, void* collisionFuncAfter, OBJECT_TYPE type) @@ -48,8 +42,6 @@ Object::Object(void* collisionFuncBefore, void* collisionFuncAfter, OBJECT_TYPE this->type = type; this->objectID = GID(); - this->currPhysicsState = this->rigidBody->GetState(); - this->newPhysicsState = this->currPhysicsState; } Object::Object(Oyster::Physics::ICustomBody *rigidBody ,void* collisionFuncBefore, void* collisionFuncAfter, OBJECT_TYPE type) @@ -58,19 +50,14 @@ Object::Object(Oyster::Physics::ICustomBody *rigidBody ,void* collisionFuncBefor this->type = type; this->objectID = GID(); - this->currPhysicsState = this->rigidBody->GetState(); - this->newPhysicsState = this->currPhysicsState; } Object::Object(Oyster::Physics::ICustomBody *rigidBody ,Oyster::Physics::ICustomBody::SubscriptMessage (*collisionFuncBefore)(Oyster::Physics::ICustomBody *proto,Oyster::Physics::ICustomBody *deuter), Oyster::Physics::ICustomBody::SubscriptMessage (*collisionFuncAfter)(Oyster::Physics::ICustomBody *proto,Oyster::Physics::ICustomBody *deuter,Oyster::Math::Float kineticEnergyLoss), OBJECT_TYPE type) { this->rigidBody = rigidBody; - this->type = type; this->objectID = GID(); - this->currPhysicsState = this->rigidBody->GetState(); - this->newPhysicsState = this->currPhysicsState; } void Object::ApplyLinearImpulse(Oyster::Math::Float3 force) @@ -102,12 +89,11 @@ Oyster::Physics::ICustomBody* Object::GetRigidBody() void Object::BeginFrame() { - this->rigidBody->SetState(this->newPhysicsState); } // update physic void Object::EndFrame() { - this->newPhysicsState = this->currPhysicsState; + } void Object::setBeforeCollisonFunc(Oyster::Physics::ICustomBody::SubscriptMessage (*collisionFuncBefore)(Oyster::Physics::ICustomBody *proto,Oyster::Physics::ICustomBody *deuter)) diff --git a/Code/Game/GameLogic/Object.h b/Code/Game/GameLogic/Object.h index 5450e9fe..1098cb56 100644 --- a/Code/Game/GameLogic/Object.h +++ b/Code/Game/GameLogic/Object.h @@ -51,8 +51,6 @@ namespace GameLogic protected: Oyster::Physics::ICustomBody *rigidBody; - Oyster::Physics::ICustomBody::State newPhysicsState; - Oyster::Physics::ICustomBody::State currPhysicsState; static const Game* gameInstance; Oyster::Math::Float3 currLook; diff --git a/Code/Game/GameLogic/Player.cpp b/Code/Game/GameLogic/Player.cpp index de45f8cb..acbb33a9 100644 --- a/Code/Game/GameLogic/Player.cpp +++ b/Code/Game/GameLogic/Player.cpp @@ -70,12 +70,11 @@ void Player::EndFrame() Object::EndFrame(); // rotate - Oyster::Math::Float3 up = currPhysicsState.GetOrientation().v[1]; - Oyster::Math::Float3 deltaAxis = up * (-dx * 0.02) ; + //Oyster::Math::Float3 up = currPhysicsState.GetOrientation().v[1]; + //Oyster::Math::Float3 deltaAxis = up * (-dx * 0.02) ; //currPhysicsState.AddRotation(deltaAxis); - dx = 0; - this->newPhysicsState = this->currPhysicsState; + } void Player::Move(const PLAYER_MOVEMENT &movement) @@ -106,33 +105,32 @@ void Player::Move(const PLAYER_MOVEMENT &movement) void Player::MoveForward() { - Oyster::Math::Float3 forward = currPhysicsState.GetOrientation().v[2]; + Oyster::Math::Float3 forward = this->rigidBody->GetState().GetOrientation().v[2]; //Oyster::Math::Float3 forward = lookDir; - //newPhysicsState.ApplyLinearImpulse(forward * (MOVE_FORCE * this->gameInstance->GetFrameTime())); - //rigidBody->SetLinearVelocity( 10 * this->gameInstance->GetFrameTime() ); + rigidBody->SetLinearVelocity( 10 * forward.GetNormalized() ); } void Player::MoveBackwards() { - Oyster::Math::Float3 forward = currPhysicsState.GetOrientation().v[2]; + Oyster::Math::Float3 forward = this->rigidBody->GetState().GetOrientation().v[2]; //Oyster::Math::Float3 forward = lookDir; - //newPhysicsState.ApplyLinearImpulse(-forward * MOVE_FORCE * this->gameInstance->GetFrameTime()); + rigidBody->SetLinearVelocity( 10 * -forward.GetNormalized() ); } void Player::MoveRight() { //Do cross product with forward vector and negative gravity vector - Oyster::Math::Float3 forward = currPhysicsState.GetOrientation().v[2]; + Oyster::Math::Float3 forward = this->rigidBody->GetState().GetOrientation().v[2]; //Oyster::Math::Float3 forward = lookDir; - Oyster::Math::Float3 r = (-currPhysicsState.centerPos.Normalize()).Cross(forward); - //rigidBody->SetLinearVelocity(-r * 10 * this->gameInstance->GetFrameTime() ); + Oyster::Math::Float3 r = (-this->rigidBody->GetState().centerPos.Normalize()).Cross(forward); + rigidBody->SetLinearVelocity(r * 10); } void Player::MoveLeft() { //Do cross product with forward vector and negative gravity vector - Oyster::Math::Float3 forward = currPhysicsState.GetOrientation().v[2]; + Oyster::Math::Float3 forward = this->rigidBody->GetState().GetOrientation().v[2]; //Oyster::Math::Float3 forward = lookDir; - //Oyster::Math::Float3 r = (-currPhysicsState.GetGravityNormal()).Cross(forward); //Still get zero - //newPhysicsState.ApplyLinearImpulse(r * MOVE_FORCE * this->gameInstance->GetFrameTime()); + Oyster::Math::Float3 r = (-this->rigidBody->GetState().centerPos.Normalize()).Cross(forward); + rigidBody->SetLinearVelocity(-r * 10); } void Player::UseWeapon(const WEAPON_FIRE &usage) @@ -145,7 +143,7 @@ void Player::Respawn(Oyster::Math::Float3 spawnPoint) this->life = 100; this->playerState = PLAYER_STATE::PLAYER_STATE_IDLE; this->lookDir = Oyster::Math::Float4(1,0,0); - this->newPhysicsState.centerPos = spawnPoint; + //this->newPhysicsState.centerPos = spawnPoint; } void Player::Rotate(const Oyster::Math3D::Float4 lookDir) @@ -162,7 +160,7 @@ void Player::Rotate(const Oyster::Math3D::Float4 lookDir) void Player::Jump() { - Oyster::Math::Float3 up = currPhysicsState.GetOrientation().v[1]; + Oyster::Math::Float3 up = this->rigidBody->GetState().GetOrientation().v[1]; //newPhysicsState.ApplyLinearImpulse(up * MOVE_FORCE * this->gameInstance->GetFrameTime()); } @@ -181,11 +179,11 @@ bool Player::IsIdle() Oyster::Math::Float3 Player::GetPosition() const { - return (Oyster::Math::Float3)currPhysicsState.centerPos; + return (Oyster::Math::Float3) this->rigidBody->GetState().centerPos; } Oyster::Math::Float4x4 Player::GetOrientation() const { - return this->currPhysicsState.GetOrientation(); + return this->rigidBody->GetState().GetOrientation(); } Oyster::Math::Float3 Player::GetLookDir() const { From 327472792360668f23cf2b58a90a6d4d093c1ba2 Mon Sep 17 00:00:00 2001 From: dean11 Date: Tue, 11 Feb 2014 10:21:47 +0100 Subject: [PATCH 2/2] GameServer - Added more gameplay protocols and structured the old mess --- Code/DanBias.sln | 44 -- .../Game/DanBiasGame/GameClientRecieverFunc.h | 29 - .../GameClientState/GameClientState.h | 5 + .../DanBiasGame/GameClientState/GameState.cpp | 29 +- .../GameClientState/LobbyState.cpp | 2 +- .../GameClientState/LoginState.cpp | 1 + Code/Game/GameLogic/Level.cpp | 6 +- Code/Game/GameProtocols/ObjectProtocols.h | 602 +++++++++++++++--- Code/Game/GameProtocols/PlayerProtocols.h | 121 ++-- .../GameProtocols/ProtocolIdentificationID.h | 37 +- Code/Game/GameServer/GameSession.h | 7 +- .../Implementation/GameSession_Gameplay.cpp | 103 +-- .../Implementation/GameSession_General.cpp | 1 + 13 files changed, 683 insertions(+), 304 deletions(-) diff --git a/Code/DanBias.sln b/Code/DanBias.sln index 4dedaaa2..7df9f29a 100644 --- a/Code/DanBias.sln +++ b/Code/DanBias.sln @@ -37,14 +37,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetworkAPI", "Network\Netwo EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GameProtocols", "Game\GameProtocols\GameProtocols.vcxproj", "{DA2AA800-ED64-4649-8B3B-E7F1E3968B78}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DanBiasServerLauncher", "Game\DanBiasServerLauncher\DanBiasServerLauncher.vcxproj", "{060B1890-CBF3-4808-BA99-A4776222093B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Physics lab", "Physics lab\Physics lab.vcxproj", "{5128BD77-6472-4C4A-BE6F-724AD0E589C2}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GameServer", "Game\GameServer\GameServer.vcxproj", "{143BD516-20A1-4890-A3E4-F8BFD02220E7}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aDanBiasGameLauncher", "Game\aDanBiasGameLauncher\aDanBiasGameLauncher.vcxproj", "{666FEA52-975F-41CD-B224-B19AF3C0ABBA}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Mixed Platforms = Debug|Mixed Platforms @@ -247,30 +241,6 @@ Global {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Win32.Build.0 = Release|Win32 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|x64.ActiveCfg = Release|x64 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|x64.Build.0 = Release|x64 - {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Win32.ActiveCfg = Debug|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Win32.Build.0 = Debug|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|x64.ActiveCfg = Debug|x64 - {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|x64.Build.0 = Debug|x64 - {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Mixed Platforms.Build.0 = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Win32.ActiveCfg = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Win32.Build.0 = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.Release|x64.ActiveCfg = Release|x64 - {060B1890-CBF3-4808-BA99-A4776222093B}.Release|x64.Build.0 = Release|x64 - {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.Debug|Win32.ActiveCfg = Debug|Win32 - {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.Debug|Win32.Build.0 = Debug|Win32 - {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.Debug|x64.ActiveCfg = Debug|x64 - {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.Debug|x64.Build.0 = Debug|x64 - {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.Release|Mixed Platforms.Build.0 = Release|Win32 - {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.Release|Win32.ActiveCfg = Release|Win32 - {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.Release|Win32.Build.0 = Release|Win32 - {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.Release|x64.ActiveCfg = Release|x64 - {5128BD77-6472-4C4A-BE6F-724AD0E589C2}.Release|x64.Build.0 = Release|x64 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Win32.ActiveCfg = Debug|Win32 @@ -283,18 +253,6 @@ Global {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|Win32.Build.0 = Release|Win32 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|x64.ActiveCfg = Release|x64 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|x64.Build.0 = Release|x64 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Win32.ActiveCfg = Debug|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Win32.Build.0 = Debug|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|x64.ActiveCfg = Debug|x64 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|x64.Build.0 = Debug|x64 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Mixed Platforms.Build.0 = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Win32.ActiveCfg = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Win32.Build.0 = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|x64.ActiveCfg = Release|x64 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -308,8 +266,6 @@ Global {B1195BB9-B3A5-47F0-906C-8DEA384D1520} = {20720CA7-795C-45AD-A302-9383A6DD503A} {8690FDDF-C5B7-4C42-A337-BD5243F29B85} = {20720CA7-795C-45AD-A302-9383A6DD503A} {DA2AA800-ED64-4649-8B3B-E7F1E3968B78} = {20720CA7-795C-45AD-A302-9383A6DD503A} - {060B1890-CBF3-4808-BA99-A4776222093B} = {20720CA7-795C-45AD-A302-9383A6DD503A} {143BD516-20A1-4890-A3E4-F8BFD02220E7} = {20720CA7-795C-45AD-A302-9383A6DD503A} - {666FEA52-975F-41CD-B224-B19AF3C0ABBA} = {20720CA7-795C-45AD-A302-9383A6DD503A} EndGlobalSection EndGlobal diff --git a/Code/Game/DanBiasGame/GameClientRecieverFunc.h b/Code/Game/DanBiasGame/GameClientRecieverFunc.h index 15b0cdab..8c01d9c7 100644 --- a/Code/Game/DanBiasGame/GameClientRecieverFunc.h +++ b/Code/Game/DanBiasGame/GameClientRecieverFunc.h @@ -38,34 +38,6 @@ namespace DanBias } } break; - case protocol_Gameplay_PlayerMovement: - { - Client::GameClientState::KeyInput* protocolData = new Client::GameClientState::KeyInput; - for(int i = 0; i< 6; i++) - { - protocolData->key[i] = p[i+1].value.netBool; - } - - if(dynamic_cast(gameClientState)) - ((Client::GameState*)gameClientState)->Protocol(protocolData); - delete protocolData; - protocolData = NULL; - } - break; - //case protocol_Gameplay_PlayerPosition: - // { - // Client::GameClientState::PlayerPos* protocolData = new Client::GameClientState::PlayerPos; - // for(int i = 0; i< 3; i++) - // { - // protocolData->playerPos[i] = p[i].value.netFloat; - // } - // if(dynamic_cast(gameClientState)) - // ((Client::GameState*)gameClientState)->Protocol(protocolData); - // delete protocolData; - // protocolData = NULL; - // } - // break; - case protocol_Gameplay_ObjectCreate: { Client::GameClientState::NewObj protocolData;// = new Client::GameClientState::NewObj; @@ -114,7 +86,6 @@ namespace DanBias { if(dynamic_cast(gameClientState)) { - GameLogic::Protocol_LobbyCreateGame tp(); int id = p.Get(1).value.netInt; std::string name = p.Get(19).value.netCharPtr; Oyster::Math::Float4x4 w; diff --git a/Code/Game/DanBiasGame/GameClientState/GameClientState.h b/Code/Game/DanBiasGame/GameClientState/GameClientState.h index 378eeefc..0545b866 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameClientState.h +++ b/Code/Game/DanBiasGame/GameClientState/GameClientState.h @@ -35,6 +35,11 @@ public: }; struct KeyInput :public ProtocolStruct { + /* + * key[0] = + * + * + */ bool key[6]; }; struct PlayerPos :public ProtocolStruct diff --git a/Code/Game/DanBiasGame/GameClientState/GameState.cpp b/Code/Game/DanBiasGame/GameClientState/GameState.cpp index 57b39ede..50417236 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/GameState.cpp @@ -309,20 +309,11 @@ bool GameState::Release() void GameState::readKeyInput(InputClass* KeyInput) { - bool send = false; - GameLogic::Protocol_PlayerMovement movePlayer; - movePlayer.bForward = false; - movePlayer.bBackward = false; - movePlayer.bLeft = false; - movePlayer.bRight = false; - if(KeyInput->IsKeyPressed(DIK_W)) { - if(!key_forward) { - movePlayer.bForward = true; - send = true; + privData->nwClient->Send(GameLogic::Protocol_PlayerMovementForward()); key_forward = true; } } @@ -333,8 +324,7 @@ void GameState::readKeyInput(InputClass* KeyInput) { if(!key_backward) { - movePlayer.bBackward = true; - send = true; + privData->nwClient->Send(GameLogic::Protocol_PlayerMovementBackward()); key_backward = true; } } @@ -345,8 +335,7 @@ void GameState::readKeyInput(InputClass* KeyInput) { if(!key_strafeLeft) { - movePlayer.bLeft = true; - send = true; + privData->nwClient->Send(GameLogic::Protocol_PlayerMovementLeft()); key_strafeLeft = true; } } @@ -357,8 +346,7 @@ void GameState::readKeyInput(InputClass* KeyInput) { if(!key_strafeRight) { - movePlayer.bRight = true; - send = true; + privData->nwClient->Send(GameLogic::Protocol_PlayerMovementRight()); key_strafeRight = true; } } @@ -366,11 +354,6 @@ void GameState::readKeyInput(InputClass* KeyInput) key_strafeRight = false; - if (privData->nwClient->IsConnected() && send) - { - privData->nwClient->Send(movePlayer); - } - //send delta mouse movement if (KeyInput->IsMousePressed()) { @@ -437,9 +420,7 @@ void GameState::readKeyInput(InputClass* KeyInput) { if(!key_Jump) { - GameLogic::Protocol_PlayerJump playerJump; - playerJump.hasJumped = true; - privData->nwClient->Send(playerJump); + privData->nwClient->Send(GameLogic::Protocol_PlayerJump()); key_Jump = true; } } diff --git a/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp b/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp index ccfe636d..98d192dd 100644 --- a/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp @@ -95,7 +95,7 @@ GameClientState::ClientState LobbyState::Update(float deltaTime, InputClass* Key { if(!DanBias::GameServerAPI::GameStart()) { - //this->nwClient->Send(GameLogic::Protocol_LobbyStartGame()); + } } } diff --git a/Code/Game/DanBiasGame/GameClientState/LoginState.cpp b/Code/Game/DanBiasGame/GameClientState/LoginState.cpp index e2392558..4b6c8df9 100644 --- a/Code/Game/DanBiasGame/GameClientState/LoginState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/LoginState.cpp @@ -119,6 +119,7 @@ GameClientState::ClientState LoginState::Update(float deltaTime, InputClass* Key { // game ip nwClient->Connect(15152, "127.0.0.1"); + //nwClient->Connect(15152, "83.254.217.248"); if (!nwClient->IsConnected()) { diff --git a/Code/Game/GameLogic/Level.cpp b/Code/Game/GameLogic/Level.cpp index e449f14d..15f74ae7 100644 --- a/Code/Game/GameLogic/Level.cpp +++ b/Code/Game/GameLogic/Level.cpp @@ -71,9 +71,9 @@ void Level::InitiateLevel(float radius) state.SetRestitutionCoeff(0.2); rigidBody->SetState(state); - levelObj = new StaticObject(rigidBody, LevelCollisionBefore, LevelCollisionAfter, OBJECT_TYPE::OBJECT_TYPE_WORLD); - levelObj->objectID = idCount++; - rigidBody->SetCustomTag(levelObj); + this->levelObj = new StaticObject(rigidBody, LevelCollisionBefore, LevelCollisionAfter, OBJECT_TYPE::OBJECT_TYPE_WORLD); + this->levelObj->objectID = idCount++; + rigidBody->SetCustomTag(this->levelObj); /* // add box diff --git a/Code/Game/GameProtocols/ObjectProtocols.h b/Code/Game/GameProtocols/ObjectProtocols.h index 5ce10b27..2feadc5d 100644 --- a/Code/Game/GameProtocols/ObjectProtocols.h +++ b/Code/Game/GameProtocols/ObjectProtocols.h @@ -1,3 +1,8 @@ +////////////////////////////////////////////////////////// +// Created 2013 // +// Dennis Andersen, Linda Andersson // +////////////////////////////////////////////////////////// + #ifndef GAMELOGIC_OBJECT_PROTOCOLS_H #define GAMELOGIC_OBJECT_PROTOCOLS_H @@ -6,6 +11,7 @@ namespace GameLogic { + //#define protocol_Gameplay_ObjectPickup 350 struct Protocol_ObjectPickup :public Oyster::Network::CustomProtocolObject { short object_ID; @@ -50,10 +56,11 @@ namespace GameLogic Oyster::Network::CustomNetProtocol protocol; }; + //#define protocol_Gameplay_ObjectDamage 351 struct Protocol_ObjectDamage :public Oyster::Network::CustomProtocolObject { int object_ID; - float health; //Precentage% + float healthLost; //Precentage% Protocol_ObjectDamage() { @@ -64,7 +71,7 @@ namespace GameLogic this->protocol[2].type = Oyster::Network::NetAttributeType_Float; object_ID = -1; - health = 0.0f; + healthLost = 0.0f; } Protocol_ObjectDamage(Oyster::Network::CustomNetProtocol& p) { @@ -78,12 +85,12 @@ namespace GameLogic this->protocol[2].type = Oyster::Network::NetAttributeType_Float; object_ID = id; - health = hp; + healthLost = hp; } Oyster::Network::CustomNetProtocol GetProtocol() override { this->protocol[1].value = object_ID; - this->protocol[2].value = health; + this->protocol[2].value = healthLost; return protocol; } @@ -91,51 +98,89 @@ namespace GameLogic Oyster::Network::CustomNetProtocol protocol; }; + //#define protocol_Gameplay_ObjectHealthStatus 352 + struct Protocol_ObjectHealthStatus :public Oyster::Network::CustomProtocolObject + { + float currentHealth; + int id; + + Protocol_ObjectHealthStatus() + { + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + this->protocol[0].value.netShort = protocol_Gameplay_ObjectHealthStatus; + this->protocol[1].type = Oyster::Network::NetAttributeType_Int; + this->protocol[2].type = Oyster::Network::NetAttributeType_Float; + this->id = 0; + this->currentHealth = 0.0f; + } + Protocol_ObjectHealthStatus(int id, float health) + { + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + this->protocol[0].value.netShort = protocol_Gameplay_ObjectHealthStatus; + this->protocol[1].type = Oyster::Network::NetAttributeType_Int; + this->protocol[2].type = Oyster::Network::NetAttributeType_Float; + this->id = id; this->currentHealth = health; + } + Protocol_ObjectHealthStatus(Oyster::Network::CustomNetProtocol& p) + { + this->id = p[1].value.netInt; + this->currentHealth = p[2].value.netFloat; + } + Oyster::Network::CustomNetProtocol GetProtocol() override + { + this->protocol[1].value = this->id; + this->protocol[2].value = this->currentHealth; + + return protocol; + } + + private: + Oyster::Network::CustomNetProtocol protocol; + }; + + //#define protocol_Gameplay_ObjectPosition 353 struct Protocol_ObjectPosition :public Oyster::Network::CustomProtocolObject { - int object_ID; - float worldMatrix[16]; - + short object_ID; + float position[3]; + Protocol_ObjectPosition() { this->protocol[0].value = protocol_Gameplay_ObjectPosition; - this->protocol[0].type = Oyster::Network::NetAttributeType_Short; - - this->protocol[1].type = Oyster::Network::NetAttributeType_Int; + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + this->protocol[1].type = Oyster::Network::NetAttributeType_Short; + this->protocol[2].type = Oyster::Network::NetAttributeType_Float; + this->protocol[3].type = Oyster::Network::NetAttributeType_Float; + this->protocol[4].type = Oyster::Network::NetAttributeType_Float; - for (int i = 2; i <= 17; i++) - { - this->protocol[i].type = Oyster::Network::NetAttributeType_Float; - } - object_ID = -1; - memset(&worldMatrix[0], 0, sizeof(float) * 16); + object_ID = 0; + memset(&position[0], 0, sizeof(float) * 3); } Protocol_ObjectPosition(Oyster::Network::CustomNetProtocol& p) { - + object_ID = p[1].value.netShort; + position[0] = p[2].value.netFloat; + position[1] = p[3].value.netFloat; + position[2] = p[4].value.netFloat; } - Protocol_ObjectPosition(float m[16], int id) + Protocol_ObjectPosition(float v[3], int id) { this->protocol[0].value = protocol_Gameplay_ObjectPosition; this->protocol[0].type = Oyster::Network::NetAttributeType_Short; - - this->protocol[1].type = Oyster::Network::NetAttributeType_Int; - - for (int i = 2; i <= 17; i++) - { - this->protocol[i].type = Oyster::Network::NetAttributeType_Float; - } + this->protocol[1].type = Oyster::Network::NetAttributeType_Short; + this->protocol[2].type = Oyster::Network::NetAttributeType_Float; + this->protocol[3].type = Oyster::Network::NetAttributeType_Float; + this->protocol[4].type = Oyster::Network::NetAttributeType_Float; object_ID = id; - memcpy(&worldMatrix[0], &m[0], sizeof(float)*16); + memcpy(&position[0], &v[0], sizeof(float) * 3); } Oyster::Network::CustomNetProtocol GetProtocol() override { this->protocol[1].value = object_ID; - for (int i = 2; i <= 17; i++) - { - this->protocol[i].value = worldMatrix[i-2]; - } + this->protocol[2].value = position[0]; + this->protocol[3].value = position[1]; + this->protocol[4].value = position[2]; return protocol; } @@ -143,49 +188,132 @@ namespace GameLogic Oyster::Network::CustomNetProtocol protocol; }; + //#define protocol_Gameplay_ObjectScale 354 + struct Protocol_ObjectScale :public Oyster::Network::CustomProtocolObject + { + short object_ID; + float position[3]; + + Protocol_ObjectScale() + { + this->protocol[0].value = protocol_Gameplay_ObjectScale; + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + this->protocol[1].type = Oyster::Network::NetAttributeType_Short; + this->protocol[2].type = Oyster::Network::NetAttributeType_Float; + this->protocol[3].type = Oyster::Network::NetAttributeType_Float; + this->protocol[4].type = Oyster::Network::NetAttributeType_Float; + + object_ID = 0; + memset(&position[0], 0, sizeof(float) * 3); + } + Protocol_ObjectScale(Oyster::Network::CustomNetProtocol& p) + { + object_ID = p[1].value.netShort; + position[0] = p[2].value.netFloat; + position[1] = p[3].value.netFloat; + position[2] = p[4].value.netFloat; + } + Protocol_ObjectScale(float v[3], int id) + { + this->protocol[0].value = protocol_Gameplay_ObjectScale; + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + this->protocol[1].type = Oyster::Network::NetAttributeType_Short; + this->protocol[2].type = Oyster::Network::NetAttributeType_Float; + this->protocol[3].type = Oyster::Network::NetAttributeType_Float; + this->protocol[4].type = Oyster::Network::NetAttributeType_Float; + + object_ID = id; + memcpy(&position[0], &v[0], sizeof(float) * 3); + } + Oyster::Network::CustomNetProtocol GetProtocol() override + { + this->protocol[1].value = object_ID; + this->protocol[2].value = position[0]; + this->protocol[3].value = position[1]; + this->protocol[4].value = position[2]; + return protocol; + } + + private: + Oyster::Network::CustomNetProtocol protocol; + }; + + //#define protocol_Gameplay_ObjectRotation 355 + struct Protocol_ObjectRotation :public Oyster::Network::CustomProtocolObject + { + short object_ID; + float position[3]; + + Protocol_ObjectRotation() + { + this->protocol[0].value = protocol_Gameplay_ObjectRotation; + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + this->protocol[1].type = Oyster::Network::NetAttributeType_Short; + this->protocol[2].type = Oyster::Network::NetAttributeType_Float; + this->protocol[3].type = Oyster::Network::NetAttributeType_Float; + this->protocol[4].type = Oyster::Network::NetAttributeType_Float; + + object_ID = 0; + memset(&position[0], 0, sizeof(float) * 3); + } + Protocol_ObjectRotation(Oyster::Network::CustomNetProtocol& p) + { + object_ID = p[1].value.netShort; + position[0] = p[2].value.netFloat; + position[1] = p[3].value.netFloat; + position[2] = p[4].value.netFloat; + } + Protocol_ObjectRotation(float v[3], int id) + { + this->protocol[0].value = protocol_Gameplay_ObjectRotation; + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + this->protocol[1].type = Oyster::Network::NetAttributeType_Short; + this->protocol[2].type = Oyster::Network::NetAttributeType_Float; + this->protocol[3].type = Oyster::Network::NetAttributeType_Float; + this->protocol[4].type = Oyster::Network::NetAttributeType_Float; + + object_ID = id; + memcpy(&position[0], &v[0], sizeof(float) * 3); + } + Oyster::Network::CustomNetProtocol GetProtocol() override + { + this->protocol[1].value = object_ID; + this->protocol[2].value = position[0]; + this->protocol[3].value = position[1]; + this->protocol[4].value = position[2]; + return protocol; + } + + private: + Oyster::Network::CustomNetProtocol protocol; + }; + + //#define protocol_Gameplay_ObjectEnabled 356 struct Protocol_ObjectEnable :public Oyster::Network::CustomProtocolObject { - int object_ID; - float worldMatrix[16]; + int objectID; Protocol_ObjectEnable() { this->protocol[0].value = protocol_Gameplay_ObjectEnabled; - this->protocol[0].type = Oyster::Network::NetAttributeType_Short; - + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; this->protocol[1].type = Oyster::Network::NetAttributeType_Int; - - for (int i = 2; i <= 17; i++) - { - this->protocol[i].type = Oyster::Network::NetAttributeType_Float; - } - object_ID = -1; - memset(&worldMatrix[0], 0, sizeof(float) * 16); + this->objectID = -1; + } + Protocol_ObjectEnable(int objectID) + { + this->protocol[0].value = protocol_Gameplay_ObjectEnabled; + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + this->protocol[1].type = Oyster::Network::NetAttributeType_Int; + this->objectID = objectID; } Protocol_ObjectEnable(Oyster::Network::CustomNetProtocol& p) { - - } - Protocol_ObjectEnable(float m[16], int id) - { - this->protocol[0].value = protocol_Gameplay_ObjectEnabled; - this->protocol[0].type = Oyster::Network::NetAttributeType_Short; - - this->protocol[1].type = Oyster::Network::NetAttributeType_Int; - - for (int i = 2; i <= 17; i++) - { this->protocol[i].type = Oyster::Network::NetAttributeType_Float; } - - object_ID = id; - memcpy(&worldMatrix[0], &m[0], sizeof(float)*16); + this->objectID = p[1].value.netInt; } Oyster::Network::CustomNetProtocol GetProtocol() override { - this->protocol[1].value = object_ID; - for (int i = 2; i <= 17; i++) - { - this->protocol[i].value = worldMatrix[i-2]; - } + this->protocol[1].value = this->objectID; return protocol; } @@ -193,38 +321,39 @@ namespace GameLogic Oyster::Network::CustomNetProtocol protocol; }; + //#define protocol_Gameplay_ObjectDisabled 357 struct Protocol_ObjectDisable :public Oyster::Network::CustomProtocolObject { - int object_ID; - float timer; + int objectID; + float seconds; Protocol_ObjectDisable() { this->protocol[0].value = protocol_Gameplay_ObjectDisabled; this->protocol[0].type = Oyster::Network::NetAttributeType_Short; - this->protocol[1].type = Oyster::Network::NetAttributeType_Int; this->protocol[2].type = Oyster::Network::NetAttributeType_Float; + this->objectID = 0; + this->seconds = 0.0f; } - Protocol_ObjectDisable(Oyster::Network::CustomNetProtocol& p) - { - - } - Protocol_ObjectDisable(int id, float time) + Protocol_ObjectDisable(int objctID, float seconds) { this->protocol[0].value = protocol_Gameplay_ObjectDisabled; this->protocol[0].type = Oyster::Network::NetAttributeType_Short; - this->protocol[1].type = Oyster::Network::NetAttributeType_Int; this->protocol[2].type = Oyster::Network::NetAttributeType_Float; - - object_ID = id; - timer = time; + this->objectID = objctID; + this->seconds = seconds; + } + Protocol_ObjectDisable(Oyster::Network::CustomNetProtocol& p) + { + this->objectID = p[1].value.netInt; + this->seconds = p[2].value.netFloat; } Oyster::Network::CustomNetProtocol GetProtocol() override { - this->protocol[1].value = object_ID; - this->protocol[2].value = timer; + this->protocol[1].value = this->objectID; + this->protocol[2].value = this->seconds; return protocol; } @@ -232,6 +361,7 @@ namespace GameLogic Oyster::Network::CustomNetProtocol protocol; }; + //#define protocol_Gameplay_ObjectCreate 358 struct Protocol_ObjectCreate :public Oyster::Network::CustomProtocolObject { //ObjectType type; //ie player, box or whatever @@ -304,6 +434,330 @@ namespace GameLogic private: Oyster::Network::CustomNetProtocol protocol; }; + + //#define protocol_Gameplay_ObjectCreatePlayer 359 + struct Protocol_ObjectCreatePlayer :public Oyster::Network::CustomProtocolObject + { + //ObjectType type; //ie player, box or whatever + int object_ID; + int teamId; + std::string name; + std::string meshName; + float position[3]; + float rotation[3]; + float scale[3]; + + Protocol_ObjectCreatePlayer() + { + this->protocol[0].value = protocol_Gameplay_ObjectCreatePlayer; + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + + //PLAYER_ID + this->protocol[1].type = Oyster::Network::NetAttributeType_Int; + //TEAM_ID + this->protocol[2].type = Oyster::Network::NetAttributeType_Int; + //PLAYER-NAME + this->protocol[3].type = Oyster::Network::NetAttributeType_CharArray; + //MESH-NAME + this->protocol[4].type = Oyster::Network::NetAttributeType_CharArray; + //POSITION + this->protocol[5].type = Oyster::Network::NetAttributeType_Float; + this->protocol[6].type = Oyster::Network::NetAttributeType_Float; + this->protocol[7].type = Oyster::Network::NetAttributeType_Float; + //ROTATION + this->protocol[8].type = Oyster::Network::NetAttributeType_Float; + this->protocol[9].type = Oyster::Network::NetAttributeType_Float; + this->protocol[10].type = Oyster::Network::NetAttributeType_Float; + //SCALE + this->protocol[11].type = Oyster::Network::NetAttributeType_Float; + this->protocol[12].type = Oyster::Network::NetAttributeType_Float; + this->protocol[13].type = Oyster::Network::NetAttributeType_Float; + } + Protocol_ObjectCreatePlayer(Oyster::Network::CustomNetProtocol& p) + { + + } + Protocol_ObjectCreatePlayer(float position[3], float rotation[3], float scale[3], int ObjectID, int teamID, std::string name, std::string meshName) + { + this->protocol[0].value = protocol_Gameplay_ObjectCreatePlayer; + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + + //PLAYER_ID + this->protocol[1].type = Oyster::Network::NetAttributeType_Int; + //TEAM_ID + this->protocol[2].type = Oyster::Network::NetAttributeType_Int; + //PLAYER-NAME + this->protocol[3].type = Oyster::Network::NetAttributeType_CharArray; + //MESH-NAME + this->protocol[4].type = Oyster::Network::NetAttributeType_CharArray; + //POSITION + this->protocol[5].type = Oyster::Network::NetAttributeType_Float; + this->protocol[6].type = Oyster::Network::NetAttributeType_Float; + this->protocol[7].type = Oyster::Network::NetAttributeType_Float; + //ROTATION + this->protocol[8].type = Oyster::Network::NetAttributeType_Float; + this->protocol[9].type = Oyster::Network::NetAttributeType_Float; + this->protocol[10].type = Oyster::Network::NetAttributeType_Float; + //SCALE + this->protocol[11].type = Oyster::Network::NetAttributeType_Float; + this->protocol[12].type = Oyster::Network::NetAttributeType_Float; + this->protocol[13].type = Oyster::Network::NetAttributeType_Float; + + this->object_ID = ObjectID; + this->teamId = teamID; + this->name = name; + this->meshName = meshName; + memcpy(&this->position[0], &position[0], sizeof(float)*3); + memcpy(&this->rotation[0], &rotation[0], sizeof(float)*3); + memcpy(&this->scale[0], &scale[0], sizeof(float)*3); + } + Oyster::Network::CustomNetProtocol GetProtocol() override + { + + this->protocol[1].value = this->object_ID; + this->protocol[2].value = this->teamId; + this->protocol.Set(3, this->name); + this->protocol.Set(4, this->meshName); + + //POSITION + this->protocol[5].value = this->position[0]; + this->protocol[6].value = this->position[1]; + this->protocol[7].value = this->position[2]; + //ROTATION + this->protocol[8].value = this->rotation[0]; + this->protocol[9].value = this->rotation[1]; + this->protocol[10].value = this->rotation[2]; + //SCALE + this->protocol[11].value = this->scale[0]; + this->protocol[12].value = this->scale[1]; + this->protocol[13].value = this->scale[2]; + + return protocol; + } + + private: + Oyster::Network::CustomNetProtocol protocol; + }; + + //#define protocol_Gameplay_ObjectJoinTeam 360 + struct Protocol_ObjectJoinTeam :public Oyster::Network::CustomProtocolObject + { + int objectID; + int teamID; + + Protocol_ObjectJoinTeam() + { + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + this->protocol[0].value.netShort = protocol_Gameplay_ObjectJoinTeam; + this->protocol[1].type = Oyster::Network::NetAttributeType_Int; + this->protocol[2].type = Oyster::Network::NetAttributeType_Int; + this->objectID = 0; + this->teamID = 0; + } + Protocol_ObjectJoinTeam(int objID, int teamID) + { + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + this->protocol[0].value.netShort = protocol_Gameplay_ObjectJoinTeam; + this->protocol[1].type = Oyster::Network::NetAttributeType_Int; + this->protocol[2].type = Oyster::Network::NetAttributeType_Int; + this->objectID = objID; + this->teamID = teamID; + } + Protocol_ObjectJoinTeam(Oyster::Network::CustomNetProtocol& p) + { + this->objectID = p[1].value.netInt; + this->teamID = p[2].value.netInt; + } + Oyster::Network::CustomNetProtocol GetProtocol() override + { + this->protocol[1].value = this->objectID; + this->protocol[2].value = this->teamID; + return protocol; + } + + private: + Oyster::Network::CustomNetProtocol protocol; + }; + + //#define protocol_Gameplay_ObjectLeaveTeam 361 + struct Protocol_ObjectLeaveTeam :public Oyster::Network::CustomProtocolObject + { + int objectID; + Protocol_ObjectLeaveTeam() + { + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + this->protocol[0].value.netShort = protocol_Gameplay_ObjectLeaveTeam; + this->protocol[0].type = Oyster::Network::NetAttributeType_Int; + this->objectID = 0; + } + Protocol_ObjectLeaveTeam(int objectID) + { + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + this->protocol[0].value.netShort = protocol_Gameplay_ObjectLeaveTeam; + this->protocol[1].type = Oyster::Network::NetAttributeType_Int; + this->objectID = objectID; + } + Protocol_ObjectLeaveTeam(Oyster::Network::CustomNetProtocol& p) + { + this->objectID = p[1].value.netInt; + } + Oyster::Network::CustomNetProtocol GetProtocol() override + { + this->protocol[1].value = this->objectID; + return protocol; + } + + private: + Oyster::Network::CustomNetProtocol protocol; + }; + + //#define protocol_Gameplay_ObjectWeaponCooldown 362 + struct Protocol_ObjectWeaponCooldown :public Oyster::Network::CustomProtocolObject + { + float seconds; + Protocol_ObjectWeaponCooldown() + { + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + this->protocol[0].value.netShort = protocol_Gameplay_ObjectWeaponCooldown; + this->protocol[1].type = Oyster::Network::NetAttributeType_Float; + this->seconds = 0.0f; + } + Protocol_ObjectWeaponCooldown(float seconds) + { + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + this->protocol[0].value.netShort = protocol_Gameplay_ObjectWeaponCooldown; + this->protocol[1].type = Oyster::Network::NetAttributeType_Float; + this->seconds = seconds; + } + Protocol_ObjectWeaponCooldown(Oyster::Network::CustomNetProtocol& p) + { + this->seconds = p[1].value.netFloat; + } + Oyster::Network::CustomNetProtocol GetProtocol() override + { + this->protocol[1].value = this->seconds; + return protocol; + } + + private: + Oyster::Network::CustomNetProtocol protocol; + }; + + //#define protocol_Gameplay_ObjectWeaponEnergy 363 + struct Protocol_ObjectWeaponEnergy :public Oyster::Network::CustomProtocolObject + { + float energy; + Protocol_ObjectWeaponEnergy() + { + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + this->protocol[0].value.netShort = protocol_Gameplay_ObjectWeaponEnergy; + this->protocol[1].type = Oyster::Network::NetAttributeType_Float; + this->energy = 0.0f; + } + Protocol_ObjectWeaponEnergy(float energy) + { + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + this->protocol[0].value.netShort = protocol_Gameplay_ObjectWeaponEnergy; + this->protocol[1].type = Oyster::Network::NetAttributeType_Float; + this->energy = energy; + } + Protocol_ObjectWeaponEnergy(Oyster::Network::CustomNetProtocol& p) + { + this->energy = p[1].value.netFloat; + } + Oyster::Network::CustomNetProtocol GetProtocol() override + { + this->protocol[1].value = this->energy; + return protocol; + } + + private: + Oyster::Network::CustomNetProtocol protocol; + }; + + //#define protocol_Gameplay_ObjectRespawn 364 + struct Protocol_ObjectRespawn :public Oyster::Network::CustomProtocolObject + { + float position[3]; + + Protocol_ObjectRespawn() + { + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + this->protocol[0].value.netShort = protocol_Gameplay_ObjectRespawn; + + this->protocol[1].type = Oyster::Network::NetAttributeType_Float; + this->protocol[2].type = Oyster::Network::NetAttributeType_Float; + this->protocol[3].type = Oyster::Network::NetAttributeType_Float; + memset(&this->position[0], 0, sizeof(float) * 3); + } + Protocol_ObjectRespawn(float position[3]) + { + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + this->protocol[0].value.netShort = protocol_Gameplay_ObjectRespawn; + this->protocol[1].type = Oyster::Network::NetAttributeType_Float; + this->protocol[2].type = Oyster::Network::NetAttributeType_Float; + this->protocol[3].type = Oyster::Network::NetAttributeType_Float; + + memcpy(&this->position[0], &position[0], sizeof(float) * 3); + } + Protocol_ObjectRespawn(Oyster::Network::CustomNetProtocol& p) + { + this->position[0] = p[1].value.netFloat; + this->position[1] = p[2].value.netFloat; + this->position[2] = p[3].value.netFloat; + } + Oyster::Network::CustomNetProtocol GetProtocol() override + { + this->protocol[1].value = this->position[0]; + this->protocol[2].value = this->position[1]; + this->protocol[3].value = this->position[2]; + return protocol; + } + + private: + Oyster::Network::CustomNetProtocol protocol; + }; + + //#define protocol_Gameplay_ObjectDie 365 + struct Protocol_ObjectDie :public Oyster::Network::CustomProtocolObject + { + int objectID; + float seconds; + + Protocol_ObjectDie() + { + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + this->protocol[0].value.netShort = protocol_Gameplay_ObjectDie; + this->protocol[1].type = Oyster::Network::NetAttributeType_Int; + this->protocol[2].type = Oyster::Network::NetAttributeType_Float; + this->objectID = 0; + this->seconds = 0.0f; + } + Protocol_ObjectDie(int objectID, float seconds) + { + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + this->protocol[0].value.netShort = protocol_Gameplay_ObjectDie; + this->protocol[1].type = Oyster::Network::NetAttributeType_Int; + this->protocol[2].type = Oyster::Network::NetAttributeType_Float; + this->objectID = objectID; + this->seconds = seconds; + } + Protocol_ObjectDie(Oyster::Network::CustomNetProtocol& p) + { + this->objectID = p[1].value.netInt; + this->seconds = p[2].value.netFloat; + } + Oyster::Network::CustomNetProtocol GetProtocol() override + { + this->protocol[1].value = this->objectID; + this->protocol[2].value = this->seconds; + return protocol; + } + + private: + Oyster::Network::CustomNetProtocol protocol; + }; + } #endif // !GAMELOGIC_PLAYER_PROTOCOLS_H \ No newline at end of file diff --git a/Code/Game/GameProtocols/PlayerProtocols.h b/Code/Game/GameProtocols/PlayerProtocols.h index 81e6fbb8..a3c3501e 100644 --- a/Code/Game/GameProtocols/PlayerProtocols.h +++ b/Code/Game/GameProtocols/PlayerProtocols.h @@ -8,56 +8,67 @@ #include #include "ProtocolIdentificationID.h" -#include - -//protocol_Gameplay_PlayerMovement 300 -//protocol_Gameplay_PlayerMouseMovement 301 -//protocol_Gameplay_PlayerChangeWeapon 302 namespace GameLogic { - struct Protocol_PlayerMovement :public Oyster::Network::CustomProtocolObject + struct Protocol_PlayerMovementRight :public Oyster::Network::CustomProtocolObject { - bool bForward; - bool bBackward; - bool bLeft; - bool bRight; - - Protocol_PlayerMovement() + Protocol_PlayerMovementRight() { - this->protocol[0].value = protocol_Gameplay_PlayerMovement; + this->protocol[0].value = protocol_Gameplay_PlayerMovementRight; this->protocol[0].type = Oyster::Network::NetAttributeType_Short; - - this->protocol[1].type = Oyster::Network::NetAttributeType_Bool; - this->protocol[2].type = Oyster::Network::NetAttributeType_Bool; - this->protocol[3].type = Oyster::Network::NetAttributeType_Bool; - this->protocol[4].type = Oyster::Network::NetAttributeType_Bool; - } - Protocol_PlayerMovement(Oyster::Network::CustomNetProtocol& p) - { - bForward = p[1].value.netBool; - bBackward = p[2].value.netBool; - bLeft = p[3].value.netBool; - bRight = p[4].value.netBool; - } - const Protocol_PlayerMovement& operator=(Oyster::Network::CustomNetProtocol& val) - { - bForward = val[1].value.netBool; - bBackward = val[2].value.netBool; - bLeft = val[3].value.netBool; - bRight = val[4].value.netBool; - - return *this; } Oyster::Network::CustomNetProtocol GetProtocol() override - { - this->protocol[1].value = bForward; - this->protocol[2].value = bBackward; - this->protocol[3].value = bLeft; - this->protocol[4].value = bRight; + { return protocol; } - return protocol; + private: + Oyster::Network::CustomNetProtocol protocol; + }; + struct Protocol_PlayerMovementLeft :public Oyster::Network::CustomProtocolObject + { + Protocol_PlayerMovementLeft() + { + this->protocol[0].value = protocol_Gameplay_PlayerMovementLeft; + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; } + Oyster::Network::CustomNetProtocol GetProtocol() override { return protocol; } + + private: + Oyster::Network::CustomNetProtocol protocol; + }; + struct Protocol_PlayerMovementForward :public Oyster::Network::CustomProtocolObject + { + Protocol_PlayerMovementForward() + { + this->protocol[0].value = protocol_Gameplay_PlayerMovementForward; + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + } + Oyster::Network::CustomNetProtocol GetProtocol() override { return protocol; } + + private: + Oyster::Network::CustomNetProtocol protocol; + }; + struct Protocol_PlayerMovementBackward :public Oyster::Network::CustomProtocolObject + { + Protocol_PlayerMovementBackward() + { + this->protocol[0].value = protocol_Gameplay_PlayerMovementBackward; + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + } + Oyster::Network::CustomNetProtocol GetProtocol() override { return protocol; } + + private: + Oyster::Network::CustomNetProtocol protocol; + }; + + struct Protocol_PlayerJump :public Oyster::Network::CustomProtocolObject + { + Protocol_PlayerJump() + { + this->protocol[0].value = protocol_Gameplay_PlayerJump; + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + } + Oyster::Network::CustomNetProtocol GetProtocol() override { return protocol; } private: Oyster::Network::CustomNetProtocol protocol; @@ -65,7 +76,6 @@ namespace GameLogic struct Protocol_PlayerLook :public Oyster::Network::CustomProtocolObject { - float lookDirX; float lookDirY; float lookDirZ; @@ -180,35 +190,6 @@ namespace GameLogic Oyster::Network::CustomNetProtocol protocol; }; - struct Protocol_PlayerJump :public Oyster::Network::CustomProtocolObject - { - bool hasJumped; - - Protocol_PlayerJump() - { - this->protocol[0].value = protocol_Gameplay_PlayerJump; - this->protocol[0].type = Oyster::Network::NetAttributeType_Short; - - this->protocol[1].type = Oyster::Network::NetAttributeType_Bool; - } - Protocol_PlayerJump(Oyster::Network::CustomNetProtocol& p) - { - hasJumped = p[1].value.netBool; - } - const Protocol_PlayerJump& operator=(Oyster::Network::CustomNetProtocol& val) - { - hasJumped = val[1].value.netBool; - return *this; - } - Oyster::Network::CustomNetProtocol GetProtocol() override - { - this->protocol[1].value = hasJumped; - return protocol; - } - - private: - Oyster::Network::CustomNetProtocol protocol; - }; } #endif // !GAMELOGIC_PLAYER_PROTOCOLS_H diff --git a/Code/Game/GameProtocols/ProtocolIdentificationID.h b/Code/Game/GameProtocols/ProtocolIdentificationID.h index cb596a1c..46c6a213 100644 --- a/Code/Game/GameProtocols/ProtocolIdentificationID.h +++ b/Code/Game/GameProtocols/ProtocolIdentificationID.h @@ -41,17 +41,32 @@ /********* GAMEPLAY PROTOCOLS ***************************************************************************************************/ /***********[ 300 - 399 ]***********/ #define protocol_GameplayMIN 300 -#define protocol_Gameplay_PlayerMovement 300 -#define protocol_Gameplay_PlayerLookDir 301 -#define protocol_Gameplay_PlayerChangeWeapon 302 -#define protocol_Gameplay_PlayerShot 303 -#define protocol_Gameplay_PlayerJump 304 -#define protocol_Gameplay_ObjectPickup 305 -#define protocol_Gameplay_ObjectDamage 306 -#define protocol_Gameplay_ObjectPosition 307 -#define protocol_Gameplay_ObjectEnabled 308 -#define protocol_Gameplay_ObjectDisabled 309 -#define protocol_Gameplay_ObjectCreate 310 +#define protocol_Gameplay_PlayerMovementRight 300 +#define protocol_Gameplay_PlayerMovementLeft 301 +#define protocol_Gameplay_PlayerMovementForward 302 +#define protocol_Gameplay_PlayerMovementBackward 303 +#define protocol_Gameplay_PlayerLookDir 304 +#define protocol_Gameplay_PlayerChangeWeapon 305 +#define protocol_Gameplay_PlayerShot 306 +#define protocol_Gameplay_PlayerJump 307 + +#define protocol_Gameplay_ObjectPickup 350 +#define protocol_Gameplay_ObjectDamage 351 +#define protocol_Gameplay_ObjectHealthStatus 352 +#define protocol_Gameplay_ObjectPosition 353 +#define protocol_Gameplay_ObjectScale 354 +#define protocol_Gameplay_ObjectRotation 355 +#define protocol_Gameplay_ObjectEnabled 356 +#define protocol_Gameplay_ObjectDisabled 357 +#define protocol_Gameplay_ObjectCreate 358 +#define protocol_Gameplay_ObjectCreatePlayer 359 +#define protocol_Gameplay_ObjectJoinTeam 360 +#define protocol_Gameplay_ObjectLeaveTeam 361 + +#define protocol_Gameplay_ObjectWeaponCooldown 362 +#define protocol_Gameplay_ObjectWeaponEnergy 363 +#define protocol_Gameplay_ObjectRespawn 364 +#define protocol_Gameplay_ObjectDie 365 #define protocol_GameplayMAX 399 diff --git a/Code/Game/GameServer/GameSession.h b/Code/Game/GameServer/GameSession.h index 80d43a19..3b18f616 100644 --- a/Code/Game/GameServer/GameSession.h +++ b/Code/Game/GameServer/GameSession.h @@ -74,11 +74,14 @@ namespace DanBias private: void ParseProtocol ( Oyster::Network::CustomNetProtocol& p, DanBias::GameClient* c ); - void Gameplay_PlayerMovement ( GameLogic::Protocol_PlayerMovement& p, DanBias::GameClient* c ); + void Gameplay_PlayerMovementRight ( DanBias::GameClient* c ); + void Gameplay_PlayerMovementLeft ( DanBias::GameClient* c ); + void Gameplay_PlayerMovementBack ( DanBias::GameClient* c ); + void Gameplay_PlayerMovementForth ( DanBias::GameClient* c ); + void Gameplay_PlayerJump ( DanBias::GameClient* c ); void Gameplay_PlayerLookDir ( GameLogic::Protocol_PlayerLook& p, DanBias::GameClient* c ); void Gameplay_PlayerChangeWeapon ( GameLogic::Protocol_PlayerChangeWeapon& p, DanBias::GameClient* c ); void Gameplay_PlayerShot ( GameLogic::Protocol_PlayerShot& p, DanBias::GameClient* c ); - void Gameplay_PlayerJump ( GameLogic::Protocol_PlayerJump& p, DanBias::GameClient* c ); void Gameplay_ObjectPickup ( GameLogic::Protocol_ObjectPickup& p, DanBias::GameClient* c ); void Gameplay_ObjectDamage ( GameLogic::Protocol_ObjectDamage& p, DanBias::GameClient* c ); void Gameplay_ObjectPosition ( GameLogic::Protocol_ObjectPosition& p, DanBias::GameClient* c ); diff --git a/Code/Game/GameServer/Implementation/GameSession_Gameplay.cpp b/Code/Game/GameServer/Implementation/GameSession_Gameplay.cpp index b7d11e42..1d37d262 100644 --- a/Code/Game/GameServer/Implementation/GameSession_Gameplay.cpp +++ b/Code/Game/GameServer/Implementation/GameSession_Gameplay.cpp @@ -85,7 +85,7 @@ namespace DanBias void GameSession::ObjectMove(GameLogic::IObjectData* movedObject) { - float dt = GameSession::gameSession->networkTimer.getElapsedSeconds(); + //float dt = (float)GameSession::gameSession->networkTimer.getElapsedSeconds(); //Duh... This was causing alot of problems, it's in the wrong place... //Need to figure out where to put this frame locker. //We only need to send network packages when necessary, ie not 120 times per frame. @@ -93,18 +93,10 @@ namespace DanBias //graphics update (60 fps) on the client side. To send more than this would be lost //bandwidth. //if( dt >= GameSession::gameSession->networkFrameTime ) - { + //{ GameSession::gameSession->networkTimer.reset(); - - GameLogic::IObjectData* obj = movedObject; - if(movedObject->GetID() == testID) //TODO: TEST - { - float sec = (float)testTimer.getElapsedSeconds(); - sec = 0; - } - - int id = obj->GetID(); - Protocol_ObjectPosition p(obj->GetOrientation(), id); + int id = movedObject->GetID(); + Protocol_ObjectPosition p(movedObject->GetPosition(), id); //if(id != 1) GameSession::gameSession->Send(p.GetProtocol()); @@ -150,7 +142,7 @@ namespace DanBias } } */ - } + //} } void GameSession::ObjectDisabled( GameLogic::IObjectData* movedObject, float seconds ) @@ -168,43 +160,64 @@ namespace DanBias switch (p[0].value.netShort) { - case protocol_Gameplay_PlayerMovement: this->Gameplay_PlayerMovement ( Protocol_PlayerMovement (p), c ); + case protocol_Gameplay_PlayerMovementBackward: this->Gameplay_PlayerMovementBack ( c ); break; - case protocol_Gameplay_PlayerLookDir: this->Gameplay_PlayerLookDir ( Protocol_PlayerLook (p), c ); + case protocol_Gameplay_PlayerMovementForward: this->Gameplay_PlayerMovementForth ( c ); break; - case protocol_Gameplay_PlayerChangeWeapon: this->Gameplay_PlayerChangeWeapon ( Protocol_PlayerChangeWeapon (p), c ); + case protocol_Gameplay_PlayerMovementLeft: this->Gameplay_PlayerMovementLeft ( c ); break; - case protocol_Gameplay_PlayerShot: this->Gameplay_PlayerShot ( Protocol_PlayerShot (p), c ); + case protocol_Gameplay_PlayerMovementRight: this->Gameplay_PlayerMovementRight ( c ); break; - case protocol_Gameplay_PlayerJump: this->Gameplay_PlayerJump ( Protocol_PlayerJump (p), c ); + case protocol_Gameplay_PlayerJump: this->Gameplay_PlayerJump ( c ); break; - case protocol_Gameplay_ObjectPickup: this->Gameplay_ObjectPickup ( Protocol_ObjectPickup (p), c ); + case protocol_Gameplay_PlayerLookDir: this->Gameplay_PlayerLookDir ( Protocol_PlayerLook (p), c ); break; - case protocol_Gameplay_ObjectDamage: this->Gameplay_ObjectDamage ( Protocol_ObjectDamage (p), c ); + case protocol_Gameplay_PlayerChangeWeapon: this->Gameplay_PlayerChangeWeapon ( Protocol_PlayerChangeWeapon (p), c ); break; - case protocol_Gameplay_ObjectPosition: this->Gameplay_ObjectPosition ( Protocol_ObjectPosition (p), c ); + case protocol_Gameplay_PlayerShot: this->Gameplay_PlayerShot ( Protocol_PlayerShot (p), c ); break; - case protocol_Gameplay_ObjectEnabled: this->Gameplay_ObjectEnabled ( Protocol_ObjectEnable (p), c ); + + case protocol_Gameplay_ObjectPickup: this->Gameplay_ObjectPickup ( Protocol_ObjectPickup (p), c ); break; - case protocol_Gameplay_ObjectDisabled: this->Gameplay_ObjectDisabled ( Protocol_ObjectDisable (p), c ); + case protocol_Gameplay_ObjectDamage: this->Gameplay_ObjectDamage ( Protocol_ObjectDamage (p), c ); break; - case protocol_Gameplay_ObjectCreate: this->Gameplay_ObjectCreate ( Protocol_ObjectCreate (p), c ); + case protocol_Gameplay_ObjectPosition: this->Gameplay_ObjectPosition ( Protocol_ObjectPosition (p), c ); break; - case protocol_General_Status: this->General_Status ( Protocol_General_Status (p), c ); + case protocol_Gameplay_ObjectEnabled: this->Gameplay_ObjectEnabled ( Protocol_ObjectEnable (p), c ); break; - case protocol_General_Text: this->General_Text ( Protocol_General_Text (p), c ); + case protocol_Gameplay_ObjectDisabled: this->Gameplay_ObjectDisabled ( Protocol_ObjectDisable (p), c ); + break; + case protocol_Gameplay_ObjectCreate: this->Gameplay_ObjectCreate ( Protocol_ObjectCreate (p), c ); + break; + + case protocol_General_Status: this->General_Status ( Protocol_General_Status (p), c ); + break; + case protocol_General_Text: this->General_Text ( Protocol_General_Text (p), c ); break; } } - void GameSession::Gameplay_PlayerMovement ( Protocol_PlayerMovement& p, DanBias::GameClient* c ) + void GameSession::Gameplay_PlayerMovementBack ( DanBias::GameClient* c ) { - if(p.bForward) c->GetPlayer()->Move(GameLogic::PLAYER_MOVEMENT_FORWARD); - if(p.bBackward) c->GetPlayer()->Move(GameLogic::PLAYER_MOVEMENT_BACKWARD); - if(p.bLeft) c->GetPlayer()->Move(GameLogic::PLAYER_MOVEMENT_LEFT); - if(p.bRight) c->GetPlayer()->Move(GameLogic::PLAYER_MOVEMENT_RIGHT); + c->GetPlayer()->Move(GameLogic::PLAYER_MOVEMENT_BACKWARD); } - void GameSession::Gameplay_PlayerLookDir ( Protocol_PlayerLook& p, DanBias::GameClient* c ) + void GameSession::Gameplay_PlayerMovementForth ( DanBias::GameClient* c ) + { + c->GetPlayer()->Move(GameLogic::PLAYER_MOVEMENT_FORWARD); + } + void GameSession::Gameplay_PlayerMovementLeft ( DanBias::GameClient* c ) + { + c->GetPlayer()->Move(GameLogic::PLAYER_MOVEMENT_LEFT); + } + void GameSession::Gameplay_PlayerMovementRight ( DanBias::GameClient* c ) + { + c->GetPlayer()->Move(GameLogic::PLAYER_MOVEMENT_RIGHT); + } + void GameSession::Gameplay_PlayerJump ( DanBias::GameClient* c ) + { + c->GetPlayer()->Move(GameLogic::PLAYER_MOVEMENT_JUMP); + } + void GameSession::Gameplay_PlayerLookDir ( Protocol_PlayerLook& p, DanBias::GameClient* c ) { Oyster::Math3D::Float4 lookDir; lookDir.x = p.lookDirX; @@ -213,46 +226,44 @@ namespace DanBias lookDir.w = p.deltaX; c->GetPlayer()->Rotate(lookDir); } - void GameSession::Gameplay_PlayerChangeWeapon ( Protocol_PlayerChangeWeapon& p, DanBias::GameClient* c ) + void GameSession::Gameplay_PlayerChangeWeapon ( Protocol_PlayerChangeWeapon& p, DanBias::GameClient* c ) { } - void GameSession::Gameplay_PlayerShot ( Protocol_PlayerShot& p, DanBias::GameClient* c ) + void GameSession::Gameplay_PlayerShot ( Protocol_PlayerShot& p, DanBias::GameClient* c ) { if(p.secondaryPressed) c->GetPlayer()->UseWeapon(GameLogic::WEAPON_USE_SECONDARY_PRESS); if(p.primaryPressed) c->GetPlayer()->UseWeapon(GameLogic::WEAPON_USE_PRIMARY_PRESS); if(p.utilityPressed) c->GetPlayer()->UseWeapon(GameLogic::WEAPON_USE_UTILLITY_PRESS); } - void GameSession::Gameplay_PlayerJump ( Protocol_PlayerJump& p, DanBias::GameClient* c ) - { - if(p.hasJumped) c->GetPlayer()->Move(GameLogic::PLAYER_MOVEMENT_JUMP); - } - void GameSession::Gameplay_ObjectPickup ( Protocol_ObjectPickup& p, DanBias::GameClient* c ) + + + void GameSession::Gameplay_ObjectPickup ( Protocol_ObjectPickup& p, DanBias::GameClient* c ) { } - void GameSession::Gameplay_ObjectDamage ( Protocol_ObjectDamage& p, DanBias::GameClient* c ) + void GameSession::Gameplay_ObjectDamage ( Protocol_ObjectDamage& p, DanBias::GameClient* c ) { } - void GameSession::Gameplay_ObjectPosition ( Protocol_ObjectPosition& p, DanBias::GameClient* c ) + void GameSession::Gameplay_ObjectPosition ( Protocol_ObjectPosition& p, DanBias::GameClient* c ) { } - void GameSession::Gameplay_ObjectEnabled ( Protocol_ObjectEnable& p, DanBias::GameClient* c ) + void GameSession::Gameplay_ObjectEnabled ( Protocol_ObjectEnable& p, DanBias::GameClient* c ) { } - void GameSession::Gameplay_ObjectDisabled ( Protocol_ObjectDisable& p, DanBias::GameClient* c ) + void GameSession::Gameplay_ObjectDisabled ( Protocol_ObjectDisable& p, DanBias::GameClient* c ) { } - void GameSession::Gameplay_ObjectCreate ( Protocol_ObjectCreate& p, DanBias::GameClient* c ) + void GameSession::Gameplay_ObjectCreate ( Protocol_ObjectCreate& p, DanBias::GameClient* c ) { } - void GameSession::General_Status ( Protocol_General_Status& p, DanBias::GameClient* c ) + void GameSession::General_Status ( Protocol_General_Status& p, DanBias::GameClient* c ) { switch (p.status) { @@ -276,7 +287,7 @@ namespace DanBias break; } } - void GameSession::General_Text ( Protocol_General_Text& p, DanBias::GameClient* c ) + void GameSession::General_Text ( Protocol_General_Text& p, DanBias::GameClient* c ) { printf("Message recieved from (%i):\t %s\n", c->GetClient()->GetID(), p.text.c_str()); } diff --git a/Code/Game/GameServer/Implementation/GameSession_General.cpp b/Code/Game/GameServer/Implementation/GameSession_General.cpp index d6e6106c..f76428d8 100644 --- a/Code/Game/GameServer/Implementation/GameSession_General.cpp +++ b/Code/Game/GameServer/Implementation/GameSession_General.cpp @@ -156,6 +156,7 @@ namespace DanBias { if((this->clients[k] && readyList[i]) && readyList[i]->GetClient()->GetID() != this->clients[k]->GetClient()->GetID()) { + //Protocol_ObjectCreatePlayer Protocol_ObjectCreate p(this->clients[k]->GetPlayer()->GetOrientation(), this->clients[k]->GetPlayer()->GetID(), "char_white.dan"); //The model name will be custom later.. readyList[i]->GetClient()->Send(p); }