diff --git a/Code/Dokumentation/Danbias Structure.uxf b/Code/Dokumentation/Danbias Structure.uxf index c24380c9..d52aa795 100644 --- a/Code/Dokumentation/Danbias Structure.uxf +++ b/Code/Dokumentation/Danbias Structure.uxf @@ -1,212 +1,197 @@ - 11 + 7 com.umlet.element.Class - 847 - 363 - 132 - 33 + 728 + 413 + 91 + 21 - Graphics + Graphics <<module>> +bg=orange com.umlet.element.Class - 561 - 363 - 132 - 33 + 546 + 413 + 84 + 21 - Sound + Sound<<?>> com.umlet.element.Class - 671 - 209 - 132 - 33 + 616 + 322 + 84 + 21 - Physics + Physics <<module>> +bg=orange com.umlet.element.Class - 858 - 132 - 121 - 33 + 735 + 238 + 77 + 21 - Game client + Game client <<dll>> +bg=red com.umlet.element.Class - 484 - 209 - 154 - 33 + 616 + 287 + 98 + 21 - Gamelogic + Gamelogic <<dll>> +bg=red com.umlet.element.Class - 506 - 132 - 121 - 33 + 504 + 238 + 84 + 21 - Game server + Game server <<dll>> +bg=red com.umlet.element.Class - 671 - 132 - 132 - 33 + 616 + 238 + 84 + 21 - Network + Network <<module>> +bg=orange com.umlet.element.Class - 704 - 363 - 132 - 33 + 637 + 413 + 84 + 21 - Input + Input<<lib>> +bg=blue com.umlet.element.Class - 495 - 55 - 176 - 44 + 714 + 182 + 98 + 28 - DanBiasClientLauncher + GameLauncher <<exe>> bg=green com.umlet.element.Relation - 880 - 132 - 54 - 252 + 749 + 238 + 34 + 188 lt=<- - 33;231;33;209;33;33 + 21;175;21;161;21;21 com.umlet.element.Relation - 583 - 132 - 351 - 252 + 560 + 238 + 223 + 188 lt=<- - 33;231;33;209;330;209;330;33 + 21;175;21;161;210;161;210;21 com.umlet.element.Relation - 528 - 132 - 54 - 98 + 525 + 238 + 146 + 62 lt=<- - 33;77;33;33 + 133;49;133;35;21;35;21;21 com.umlet.element.Relation - 594 - 110 - 98 - 54 + 567 + 224 + 62 + 34 lt=<- - 77;33;33;33 + 49;21;21;21 com.umlet.element.Relation - 605 - 187 - 87 - 54 + 637 + 287 + 34 + 48 lt=<- - 66;33;33;33 + 21;35;21;21 com.umlet.element.Relation - 737 - 132 - 197 - 252 + 658 + 238 + 125 + 188 lt=<- - 33;231;33;209;176;209;176;33 + 21;175;21;161;112;161;112;21 com.umlet.element.Relation - 770 - 110 - 109 - 54 + 679 + 224 + 69 + 34 lt=<- - 33;33;88;33 - - - com.umlet.element.Relation - - 880 - 66 - 54 - 87 - - lt=>- - 33;33;33;66 - - - com.umlet.element.Relation - - 528 - 66 - 54 - 87 - - lt=>- - 33;33;33;66 + 21;21;56;21 com.umlet.element.Package - 440 - 22 - 550 - 396 + 455 + 161 + 371 + 287 GameEngine @@ -214,21 +199,21 @@ bg=green com.umlet.element.Relation - 880 - 363 - 54 - 164 + 749 + 413 + 34 + 104 lt=<<. - 33;33;33;143 + 21;21;21;91 com.umlet.element.Package - 891 - 506 - 319 - 220 + 756 + 504 + 203 + 140 Graphics @@ -236,10 +221,10 @@ bg=green com.umlet.element.Class - 902 - 539 - 297 - 176 + 763 + 525 + 189 + 112 <<interface>> OysterGfx @@ -256,10 +241,10 @@ Release(resource :Model*) :void com.umlet.element.Package - 561 - 506 - 308 - 242 + 546 + 504 + 196 + 154 Input @@ -267,21 +252,21 @@ Release(resource :Model*) :void com.umlet.element.Relation - 649 - 363 - 142 - 175 + 602 + 413 + 90 + 111 lt=<<. - 121;33;121;154;33;154 + 77;21;77;98;21;98 com.umlet.element.Class - 572 - 539 - 286 - 198 + 553 + 525 + 182 + 126 <<interface>> RawInput @@ -299,32 +284,33 @@ Enable(Enable :bool) :void com.umlet.element.Class - 451 - 363 - 99 - 33 + 462 + 413 + 77 + 21 - Window API + Window API<<lib>> +bg=blue com.umlet.element.Relation - 462 - 132 - 472 - 252 + 483 + 238 + 300 + 188 lt=<- - 33;231;33;209;451;209;451;33 + 21;175;21;161;287;161;287;21 com.umlet.element.Package - 176 - 506 - 374 - 242 + 301 + 504 + 238 + 154 Sound @@ -332,10 +318,10 @@ Enable(Enable :bool) :void com.umlet.element.Class - 187 - 539 - 352 - 121 + 308 + 525 + 224 + 77 <<interface>> SoundWrapper @@ -349,10 +335,10 @@ Release(Resource :ResourceHandle*) :void com.umlet.element.Class - 187 - 693 - 352 - 44 + 308 + 623 + 224 + 28 <<API>> -- @@ -362,79 +348,152 @@ FMOD com.umlet.element.Relation - 330 - 627 - 54 - 87 + 399 + 581 + 34 + 55 lt=<<. - 33;66;33;33 + 21;42;21;21 com.umlet.element.Relation - 286 - 363 - 362 - 175 + 371 + 413 + 230 + 111 lt=<<. - 341;33;341;88;253;88;253;154;33;154 + 217;21;217;56;161;56;161;98;21;98 com.umlet.element.Class - 781 - 55 - 198 - 44 + 476 + 329 + 84 + 28 - DanBiasServerLauncher + Math <<lib>> +-- +/Is used globaly/ +bg=blue + + + + com.umlet.element.Relation + + 539 + 238 + 237 + 125 + + lt=<- + 21;112;224;112;224;21 + + + com.umlet.element.Class + + 476 + 294 + 77 + 28 + + Misc <<lib>> +-- +/Is used globaly/ +bg=blue + + + + com.umlet.element.Relation + + 539 + 273 + 90 + 76 + + lt=<- + 21;63;56;63;56;21;77;21 + + + UMLClass + + 105 + 168 + 245 + 140 + + /*HISTORY*/ +-- +10/2-2014 +Renamed DanBiasClientLauncher -> GameLauncher +Removed DanBiasServerLauncher - connected to GameClient +Added missing cconnections +Specified what type of box and added a colour +-- +elementstyle=wordwrap +bg=gray + + + + + com.umlet.element.Relation + + 749 + 189 + 34 + 62 + + lt=<- + 21;49;21;21 + + + com.umlet.element.Class + + 504 + 189 + 91 + 28 + + ServerUI <<exe>> +-- +/template for future/ bg=green - com.umlet.element.Class + com.umlet.element.Relation - 671 - 253 - 132 - 33 + 525 + 196 + 34 + 55 - Math - + lt=<- + 21;42;21;21 com.umlet.element.Relation - 770 - 132 - 153 - 164 + 539 + 308 + 90 + 48 lt=<- - 33;143;132;143;132;33 - - - com.umlet.element.Class - - 682 - 297 - 99 - 33 - - Misc - + 21;35;63;35;63;21;77;21 com.umlet.element.Relation - 605 - 198 - 87 - 98 + 532 + 273 + 97 + 41 lt=<- - 66;77;44;77;44;33;33;33 + 21;28;56;28;56;21;84;21 diff --git a/Code/Dokumentation/GameServer.uxf b/Code/Dokumentation/GameServer.uxf index 735a2592..890e2cbb 100644 --- a/Code/Dokumentation/GameServer.uxf +++ b/Code/Dokumentation/GameServer.uxf @@ -1,13 +1,13 @@ - - 10 + + 8 UMLClass - 610 - 340 - 100 - 30 + 632 + 344 + 104 + 24 GameLobby @@ -16,137 +16,100 @@ UMLClass - 580 - 480 - 160 - 80 + 624 + 416 + 128 + 48 GameSession -- /One instance of a game/ -/including x number of/ -/players./ +/including n players./ com.umlet.element.Relation - 620 - 340 - 60 - 160 + 664 + 344 + 40 + 88 lt=->>>> - 30;140;40;30 + 24;72;24;24 com.umlet.element.Relation - 710 - 480 - 100 - 50 + 664 + 440 + 40 + 104 lt=>>>>- - 80;30;30;30 + 24;88;24;24 UMLClass - 600 - 180 - 120 - 120 + 40 + 120 + 368 + 344 - GameServer + GameServerAPI <<singleton>> +-- +{innerclass ++ServerInitDesc<<struct>> +-- +serverName :char pointer +listenPort :int +bool broadcast :bool +ServerInitDesc() :void +innerclass} +{innerclass ++GameServerInfo<<struct>> +-- +listenPort :unsigned int +serverIp :const char pointer +innerclass} + ++static DanBiasServerReturn ServerInitiate(const ServerInitDesc& desc); ++static ServerStart() :void ++static ServerStop() :void ++static ServerUpdate() :void ++static ServerGetInfo() :GameServerInfo ++static ServerIsRunning() :bool ++static GameSetMapId( val :const int& ) :void ++static GameSetMaxClients( val :const int& ) :void ++static GameSetGameMode(val :const int&) :void ++static GameSetGameTime(val :const int&) :void ++static GameGetMapId() :int ++static GameGetMaxClients() :int ++static GameGetGameMode() :int ++static GameGetGameTime() :int ++static GameGetGameName() :const char pointer ++static GameStart() :bool com.umlet.element.Relation - 630 - 270 - 50 - 90 - - lt=>>>>- - 30;70;30;30 - - - UMLClass - - 590 - 100 - 130 + 384 + 328 + 264 40 - <<wrapper>> -DanBiasServerAPI - - - - com.umlet.element.Relation - - 630 - 110 - 50 - 90 - - lt=>>>>- - - 30;70;30;30 - - - UMLClass - - 1060 - 330 - 120 - 50 - - NetworkSession - - - - com.umlet.element.Relation - - 690 - 220 - 390 - 50 - - lt=-<<<< - 30;30;370;30 - - - com.umlet.element.Relation - - 680 - 320 - 400 - 50 - - lt=->>>>> - 30;30;380;30 - - - com.umlet.element.Relation - - 690 - 340 - 390 - 160 - - lt=->>>>> - 30;140;40;40;370;30 + lt=>>>>- + 248;24;24;24 com.umlet.element.Package - 460 - 640 - 120 - 50 + 440 + 424 + 96 + 40 GameLogicAPI bg=blue @@ -155,21 +118,21 @@ bg=blue com.umlet.element.Relation - 370 - 530 - 350 - 290 + 512 + 424 + 128 + 40 lt=<<. - 90;150;30;270;330;240;240;30 + 24;24;112;24 UMLClass - 790 - 500 - 100 - 30 + 624 + 528 + 144 + 24 GameClient @@ -177,21 +140,21 @@ bg=blue com.umlet.element.Relation - 670 - 530 - 150 - 180 + 520 + 416 + 120 + 104 lt=<<. - 130;160;30;30 + 24;88;64;88;64;24;104;24 com.umlet.element.Package - 800 - 670 - 120 - 40 + 448 + 480 + 96 + 48 GameProtocols bg=#aaaaa @@ -200,10 +163,10 @@ bg=#aaaaa com.umlet.element.Package - 1040 - 200 - 160 - 190 + 720 + 160 + 152 + 24 NetworkAPI bg=#a21aff @@ -212,56 +175,84 @@ bg=#a21aff UMLClass - 1060 - 280 - 120 - 40 + 40 + 24 + 320 + 64 - NetworkClient - - - - UMLClass - - 1060 - 230 - 120 - 40 - - NetworkServer + /*HISTORY*/ +-- +10/2-2014 +Restructured old +-- +elementstyle=wordwrap +bg=gray com.umlet.element.Relation - 690 - 240 - 390 - 80 + 720 + 160 + 40 + 272 - lt=-> - 30;30;200;30;200;60;370;60 + lt=<<. + 24;24;24;256 com.umlet.element.Relation - 690 - 260 - 390 - 100 + 704 + 160 + 40 + 200 - lt=-<<<< - 30;30;180;30;180;80;370;80 + lt=<<. + 24;24;24;184 com.umlet.element.Relation - 860 - 270 - 380 - 260 + 384 + 152 + 352 + 40 - lt=>>>- - 320;30;360;30;360;230;30;240 + lt=<<. + 336;24;24;24 + + + com.umlet.element.Relation + + 736 + 160 + 40 + 384 + + lt=<<. + 24;24;24;368 + + + com.umlet.element.Relation + + 520 + 480 + 136 + 64 + + lt=<<. + 24;24;120;24;120;48 + + + com.umlet.element.Relation + + 512 + 432 + 160 + 112 + + lt=<<. + 24;24;72;24;72;72;144;72;144;96 diff --git a/Code/Dokumentation/Resource.uxf b/Code/Dokumentation/Resource.uxf index c62ae895..1258c9af 100644 --- a/Code/Dokumentation/Resource.uxf +++ b/Code/Dokumentation/Resource.uxf @@ -1,13 +1,13 @@ - - 16 + + 6 com.umlet.element.Class - 560 - 80 - 176 - 80 + 198 + 300 + 66 + 30 <<interface>> OysterResource @@ -16,23 +16,23 @@ OysterResource com.umlet.element.Relation - 528 - 112 - 206 - 160 + 186 + 312 + 76 + 60 lt=>> implements - 112;128;112;48 + 42;48;42;18 com.umlet.element.Actor - 352 - 240 - 128 - 192 + 120 + 360 + 48 + 72 Dev @@ -40,22 +40,22 @@ implements com.umlet.element.Relation - 320 - 32 - 272 - 240 + 108 + 282 + 102 + 90 lt=<. interacts> - 240;80;96;80;96;208 + 90;30;36;30;36;78 com.umlet.element.Class - 576 - 576 - 160 - 32 + 204 + 486 + 60 + 12 CustomLoader @@ -63,10 +63,10 @@ interacts> com.umlet.element.Class - 576 - 528 - 160 - 32 + 204 + 468 + 60 + 12 ByteLoader @@ -75,33 +75,33 @@ ByteLoader com.umlet.element.Relation - 464 - 384 - 144 - 192 + 162 + 414 + 54 + 72 lt=<<- - 80;48;48;48;48;160;112;160 + 30;18;18;18;18;60;42;60 com.umlet.element.Relation - 368 - 384 - 266 - 240 + 126 + 414 + 98 + 90 lt=<<- implements partly - 176;48;144;48;144;208;208;208 + 66;18;54;18;54;78;78;78 UMLClass - 544 - 240 - 208 - 128 + 192 + 360 + 78 + 48 -- <<interface>> @@ -115,10 +115,10 @@ halign=center UMLClass - 544 - 400 - 208 - 80 + 192 + 420 + 78 + 30 OResource @@ -130,13 +130,171 @@ halign=center com.umlet.element.Relation - 688 - 256 - 196 - 224 + 252 + 366 + 66 + 84 lt=>>>> manages> - 64;192;112;192;112;48;64;48 + 18;72;36;72;36;18;18;18 + + + UMLClass + + 108 + 282 + 240 + 234 + + old +bg=gray + + + + UMLClass + + 402 + 342 + 576 + 204 + + ResourceManager +-- ++ ResourceManager() :void ++ ~ResourceManager() :void ++ HBYTEARRAY LoadBytes(const wchar_t filename[], ResourceType type, int customId = -1, bool force = false) ++ HRESOURCE LoadResource(const wchar_t filename[], LoadFunction loadFnc = 0, UnloadFunction unloadFnc = 0, int customId = -1, bool force = false) ++ HRESOURCE ReloadResource(const wchar_t filename[]) ++ HRESOURCE ReloadResource(HRESOURCE& resource) ++ void Clean() ++ void ReleaseResource(const HRESOURCE& resource) ++ void ReleaseResource(const wchar_t filename[]) ++ void SetResourceId(const HRESOURCE& resource, unsigned int id) ++ void SetResourceId(const wchar_t filename[], unsigned int id) ++ ResourceType GetResourceType(const HRESOURCE& resource) ++ ResourceType GetResourceType (const wchar_t filename[]) ++ const wchar_t* GetResourceFilename(const HRESOURCE& resource); ++ HRESOURCE GetResourceHandle(const wchar_t filename[]) ++ int GetResourceId(const HRESOURCE& resource); ++ int GetResourceId(const wchar_t filename[]); +-- +- ResourceManager(const ResourceManager& obj); +- const ResourceManager& operator=(const ResourceManager&); +- std::map<std::wstring, ResourceData*> resources; + + + + UMLClass + + 390 + 198 + 600 + 360 + + Oyster <<namespace>> +-- + + + + + UMLClass + + 396 + 222 + 588 + 330 + + Resource <<namespace>> +-- + + + + + UMLClass + + 534 + 282 + 126 + 18 + + HRESOURCE: void* <<typedef>> + + + + UMLClass + + 534 + 300 + 126 + 18 + + HBYTE: char <<typedef>> + + + + UMLClass + + 534 + 318 + 126 + 18 + + HBYTEARRAY: char* <<typedef>> + + + + UMLClass + + 534 + 246 + 264 + 18 + + UnloadFunction :void(*UnloadFunction)(void* loadedData) <<typedef>> + + + + UMLClass + + 534 + 264 + 288 + 18 + + LoadFunction :void*(*LoadFunction)(const wchar_t filename[]) <<typedef>> + + + + UMLClass + + 402 + 246 + 126 + 90 + + ResourceType <<enum>> +-- +ResourceType_Byte_Raw +ResourceType_Byte_ANSI +ResourceType_Byte_UTF8 +ResourceType_Byte_UNICODE +ResourceType_Byte_UTF16LE +ResourceType_CUSTOM +ResourceType_INVALID + + + + + UMLClass + + 378 + 174 + 630 + 396 + + New +bg=green + diff --git a/Code/Game/DanBiasGame/GameClientRecieverFunc.h b/Code/Game/DanBiasGame/GameClientRecieverFunc.h index 15b0cdab..3ea449ec 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; @@ -110,11 +82,24 @@ namespace DanBias ((Client::GameState*)gameClientState)->Protocol(&protocolData); } break; + case protocol_Gameplay_ObjectPositionRotation: + { + + Client::GameClientState::ObjPos protocolData; + protocolData.object_ID = p[1].value.netInt; + for(int i = 0; i< 16; i++) + { + protocolData.worldPos[i] = p[i+2].value.netFloat; + } + + if(dynamic_cast(gameClientState)) + ((Client::GameState*)gameClientState)->Protocol(&protocolData); + } + break; case protocol_Lobby_Create: { 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/C_obj/C_DynamicObj.h b/Code/Game/DanBiasGame/GameClientState/C_obj/C_DynamicObj.h index f73514da..ecb874d1 100644 --- a/Code/Game/DanBiasGame/GameClientState/C_obj/C_DynamicObj.h +++ b/Code/Game/DanBiasGame/GameClientState/C_obj/C_DynamicObj.h @@ -14,4 +14,4 @@ public: void Init(ModelInitData modelInit); };};}; -#endif +#endif \ 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 65a7e498..9d7c3de0 100644 --- a/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.h +++ b/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.h @@ -15,4 +15,3 @@ public: };};}; #endif - diff --git a/Code/Game/DanBiasGame/GameClientState/C_obj/C_StaticObj.cpp b/Code/Game/DanBiasGame/GameClientState/C_obj/C_StaticObj.cpp index 9b13c460..a61768e4 100644 --- a/Code/Game/DanBiasGame/GameClientState/C_obj/C_StaticObj.cpp +++ b/Code/Game/DanBiasGame/GameClientState/C_obj/C_StaticObj.cpp @@ -1,4 +1,3 @@ - #include "C_StaticObj.h" #include "DllInterfaces/GFXAPI.h" using namespace DanBias::Client; diff --git a/Code/Game/DanBiasGame/GameClientState/GameClientState.h b/Code/Game/DanBiasGame/GameClientState/GameClientState.h index 8e79cab3..2907317c 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 e7d41cb3..5c620021 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/GameState.cpp @@ -10,12 +10,9 @@ using namespace Oyster::Math; struct GameState::myData { myData(){} - //std::vector object; int modelCount; Oyster::Network::NetworkClient* nwClient; gameStateState state; - - }privData; GameState::GameState(void) @@ -24,6 +21,7 @@ GameState::GameState(void) key_backward = false; key_strafeRight = false; key_strafeLeft = false; + timer = 0; } @@ -49,12 +47,12 @@ bool GameState::Init(Oyster::Network::NetworkClient* nwClient) } GameState::gameStateState GameState::LoadGame() { - Oyster::Graphics::Definitions::Pointlight plight; - plight.Pos = Float3(615, 0 ,5); - plight.Color = Float3(0.9f,0.7f,0.2f); - plight.Radius = 100; - plight.Bright = 0.5f; - Oyster::Graphics::API::AddLight(plight); + Oyster::Graphics::Definitions::Pointlight plight; + plight.Pos = Float3(615, 0 ,5); + plight.Color = Float3(0.9f,0.7f,0.2f); + plight.Radius = 100; + plight.Bright = 0.5f; + Oyster::Graphics::API::AddLight(plight); plight.Pos = Float3(10,800,5); plight.Color = Float3(0.9f,0.7f,0.3f); plight.Radius = 300; @@ -78,6 +76,7 @@ GameState::gameStateState GameState::LoadGame() //Oyster::Graphics::API::AddLight(plight); // use level loader //LoadModels("3bana.bias"); + // hardcoded objects LoadModels(); Float3 startPos = Float3(0,0,20.0f); @@ -105,7 +104,7 @@ bool GameState::LoadModels() this->staticObjects.Push(new C_StaticObj()); this->staticObjects[this->staticObjects.Size() -1 ]->Init(modelData); - + // add box model modelData.position = Oyster::Math::Float3(0,0,0); modelData.rotation = Oyster::Math::Quaternion::identity; @@ -341,7 +340,12 @@ GameClientState::ClientState GameState::Update(float deltaTime, InputClass* KeyI // read server data // update objects { - readKeyInput(KeyInput); + timer += deltaTime; + if(timer > 0.03) + { + readKeyInput(KeyInput); + timer = 0; + } camera->UpdateViewMatrix(); } @@ -394,20 +398,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) + //if(!key_forward) { - movePlayer.bForward = true; - send = true; + privData->nwClient->Send(GameLogic::Protocol_PlayerMovementForward()); key_forward = true; } } @@ -416,10 +411,9 @@ void GameState::readKeyInput(InputClass* KeyInput) if(KeyInput->IsKeyPressed(DIK_S)) { - if(!key_backward) + //if(!key_backward) { - movePlayer.bBackward = true; - send = true; + privData->nwClient->Send(GameLogic::Protocol_PlayerMovementBackward()); key_backward = true; } } @@ -428,10 +422,9 @@ void GameState::readKeyInput(InputClass* KeyInput) if(KeyInput->IsKeyPressed(DIK_A)) { - if(!key_strafeLeft) + //if(!key_strafeLeft) { - movePlayer.bLeft = true; - send = true; + privData->nwClient->Send(GameLogic::Protocol_PlayerMovementLeft()); key_strafeLeft = true; } } @@ -440,10 +433,9 @@ void GameState::readKeyInput(InputClass* KeyInput) if(KeyInput->IsKeyPressed(DIK_D)) { - if(!key_strafeRight) + //if(!key_strafeRight) { - movePlayer.bRight = true; - send = true; + privData->nwClient->Send(GameLogic::Protocol_PlayerMovementRight()); key_strafeRight = true; } } @@ -451,11 +443,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()) { @@ -488,6 +475,7 @@ void GameState::readKeyInput(InputClass* KeyInput) } else key_Shoot = false; + if(KeyInput->IsKeyPressed(DIK_X)) { if(!key_Shoot) @@ -502,6 +490,7 @@ void GameState::readKeyInput(InputClass* KeyInput) } else key_Shoot = false; + if(KeyInput->IsKeyPressed(DIK_C)) { if(!key_Shoot) @@ -522,9 +511,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; } } @@ -564,42 +551,25 @@ void GameState::Protocol( ObjPos* pos ) { world[i] = pos->worldPos[i]; } - //printf("pos for obj %d, ",pos->object_ID ); + for (unsigned int i = 0; i < dynamicObjects.Size(); i++) { if(dynamicObjects[i]->GetId() == pos->object_ID) { - //dynamicObjects[i]->setPos(Float3(world[12], world[13], world[14])); - dynamicObjects[i]->setWorld(world); + dynamicObjects[i]->setPos(Float3(world[0], world[1], world[2])); + dynamicObjects[i]->setRot(Quaternion(Float3(world[3], world[4], world[5]), world[6])); + //dynamicObjects[i]->setWorld(world); if(dynamicObjects[i]->GetId() == myId) // playerobj { - Float3 right = Float3(world[0], world[1], world[2]); - Float3 up = Float3(world[4], world[5], world[6]); - Float3 objForward = Float3(world[8], world[9], world[10]); - Float3 pos = Float3(world[12], world[13], world[14]); - Float3 cameraLook = camera->GetLook(); - Float3 cameraUp = camera->GetUp(); - - - - /*Oyster::Math::Float3 newUp = cameraUp.Dot(up); - up *= newUp; - up.Normalize(); - Oyster::Math::Float3 newLook = up.Cross(right); - newLook.Normalize();*/ - - //camera->setRight(right); - //camera->setUp(up); - //camera->setLook(objForward); - + Float3 pos = dynamicObjects[i]->getPos(); + Float3 up = dynamicObjects[i]->getWorld().v[1]; + Float3 objForward = dynamicObjects[i]->getWorld().v[2]; up *= 2; objForward *= -2; Oyster::Math::Float3 cameraPos = pos + up + objForward; - camera->SetPosition(cameraPos); - //camera->UpdateViewMatrix(); - + camera->SetPosition(cameraPos); } } } diff --git a/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp b/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp index d54f2363..df165e40 100644 --- a/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp @@ -96,7 +96,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 4f148624..a7bc8299 100644 --- a/Code/Game/DanBiasGame/GameClientState/LoginState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/LoginState.cpp @@ -204,6 +204,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/Game.h b/Code/Game/GameLogic/Game.h index 2ae96ce3..601b0f0c 100644 --- a/Code/Game/GameLogic/Game.h +++ b/Code/Game/GameLogic/Game.h @@ -36,6 +36,8 @@ namespace GameLogic int GetTeamID() const override; PLAYER_STATE GetState() const override; Oyster::Math::Float3 GetPosition() override; + Oyster::Math::Quaternion GetRotation() override; + Oyster::Math::Float3 GetScale() override; Oyster::Math::Float4x4 GetOrientation() override; int GetID() const override; OBJECT_TYPE GetObjectType() const override; @@ -50,6 +52,8 @@ namespace GameLogic LevelData(); ~LevelData(); Oyster::Math::Float3 GetPosition() override; + Oyster::Math::Quaternion GetRotation() override; + Oyster::Math::Float3 GetScale() override; Oyster::Math::Float4x4 GetOrientation() override; int GetID() const override; OBJECT_TYPE GetObjectType() const override; diff --git a/Code/Game/GameLogic/GameAPI.h b/Code/Game/GameLogic/GameAPI.h index 3505b123..d51cf4a6 100644 --- a/Code/Game/GameLogic/GameAPI.h +++ b/Code/Game/GameLogic/GameAPI.h @@ -36,10 +36,22 @@ namespace GameLogic public: /******************************************************** * Gets players position - * @param playerID: ID of the player whos position you want + * @return Returns the players position ********************************************************/ virtual Oyster::Math::Float3 GetPosition() = 0; + /******************************************************** + * Gets players rotation as quaternion + * @return Returns a quaternion + ********************************************************/ + virtual Oyster::Math::Quaternion GetRotation() = 0; + + /******************************************************** + * Gets players position + * @return Returns the player scale + ********************************************************/ + virtual Oyster::Math::Float3 GetScale() = 0; + /******************************************************** * Gets players current orientation * @param playerID: ID of the player whos position you want diff --git a/Code/Game/GameLogic/Game_LevelData.cpp b/Code/Game/GameLogic/Game_LevelData.cpp index 9bd3275a..b8006af3 100644 --- a/Code/Game/GameLogic/Game_LevelData.cpp +++ b/Code/Game/GameLogic/Game_LevelData.cpp @@ -20,6 +20,14 @@ Oyster::Math::Float3 Game::LevelData::GetPosition() //return this->level->GetCenter(); return Oyster::Math::Float3(); } +Oyster::Math::Quaternion Game::LevelData::GetRotation() +{ + return Oyster::Math::Quaternion(); +} +Oyster::Math::Float3 Game::LevelData::GetScale() +{ + return Oyster::Math::Float3(); +} Oyster::Math::Float4x4 Game::LevelData::GetOrientation() { //return this->level->GetOrientation(); diff --git a/Code/Game/GameLogic/Game_PlayerData.cpp b/Code/Game/GameLogic/Game_PlayerData.cpp index 6b25c94f..39ce44cb 100644 --- a/Code/Game/GameLogic/Game_PlayerData.cpp +++ b/Code/Game/GameLogic/Game_PlayerData.cpp @@ -6,7 +6,7 @@ using namespace GameLogic; 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 centerPosition = Oyster::Math::Float3(0,628,-25); Oyster::Math::Float3 size = Oyster::Math::Float3(0.25f,1.0f,0.5f); Oyster::Math::Float mass = 60; Oyster::Math::Float restitutionCoeff = 0.5; @@ -48,6 +48,14 @@ Oyster::Math::Float3 Game::PlayerData::GetPosition() { return this->player->GetPosition(); } +Oyster::Math::Quaternion Game::PlayerData::GetRotation() +{ + return this->player->GetRotation(); +} +Oyster::Math::Float3 Game::PlayerData::GetScale() +{ + return this->player->GetScale(); +} Oyster::Math::Float4x4 Game::PlayerData::GetOrientation() { return this->player->GetOrientation(); diff --git a/Code/Game/GameLogic/Object.cpp b/Code/Game/GameLogic/Object.cpp index 6770be75..78141e5f 100644 --- a/Code/Game/GameLogic/Object.cpp +++ b/Code/Game/GameLogic/Object.cpp @@ -47,7 +47,7 @@ Object::Object(void* collisionFuncBefore, void* collisionFuncAfter, OBJECT_TYPE Object::Object(Oyster::Physics::ICustomBody *rigidBody ,void* collisionFuncBefore, void* collisionFuncAfter, OBJECT_TYPE type) { this->rigidBody = rigidBody; - this->rigidBody->SetSubscription((Oyster::Physics::ICustomBody::EventAction_AfterCollisionResponse)collisionFuncAfter); + this->type = type; this->objectID = GID(); } @@ -55,7 +55,7 @@ Object::Object(Oyster::Physics::ICustomBody *rigidBody ,void* collisionFuncBefor 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->rigidBody->SetSubscription((Oyster::Physics::ICustomBody::EventAction_AfterCollisionResponse)collisionFuncAfter); + this->type = type; this->objectID = GID(); } @@ -88,7 +88,7 @@ Oyster::Physics::ICustomBody* Object::GetRigidBody() void Object::BeginFrame() { - + } // update physic void Object::EndFrame() @@ -105,37 +105,27 @@ void Object::setAfterCollisonFunc(Oyster::Physics::ICustomBody::SubscriptMessage this->rigidBody->SetSubscription((Oyster::Physics::ICustomBody::EventAction_AfterCollisionResponse)(collisionFuncAfter)); } - +Oyster::Math::Float3 Object::GetPosition() +{ + Oyster::Physics::ICustomBody::State state; + state = this->rigidBody->GetState(); + return state.centerPos; +} +Oyster::Math::Quaternion Object::GetRotation() +{ + Oyster::Physics::ICustomBody::State state; + state = this->rigidBody->GetState(); + return state.quaternion; +} +Oyster::Math::Float3 Object::GetScale() +{ + Oyster::Physics::ICustomBody::State state; + state = this->rigidBody->GetState(); + return Float3(); +} Oyster::Math::Float4x4 Object::GetOrientation() { Oyster::Physics::ICustomBody::State state; state = this->rigidBody->GetState(); return state.GetOrientation(); -} - - -Oyster::Math::Float3 Object::GetPosition() -{ - return this->position; -} -Oyster::Math::Float3 Object::GetRotation() -{ - return this->rotation; -} -Oyster::Math::Float3 Object::GetScaling() -{ - return this->scale; -} - -void Object::SetPosition(Oyster::Math::Float3 position) -{ - this->position = position; -} -void Object::SetRotation(Oyster::Math::Float3 rotation) -{ - this->rotation = rotation; -} -void Object::SetScaling(Oyster::Math::Float3 scale) -{ - this->scale = scale; } \ No newline at end of file diff --git a/Code/Game/GameLogic/Object.h b/Code/Game/GameLogic/Object.h index 6e4b9a81..293ba85d 100644 --- a/Code/Game/GameLogic/Object.h +++ b/Code/Game/GameLogic/Object.h @@ -25,20 +25,14 @@ namespace GameLogic 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); ~Object(void); - // API overrides - OBJECT_TYPE GetObjectType() const; + OBJECT_TYPE GetObjectType() const override; + int GetID() const override; + Oyster::Math::Float3 GetPosition() override; + Oyster::Math::Quaternion GetRotation() override; + Oyster::Math::Float3 GetScale() override; + Oyster::Math::Float4x4 GetOrientation() override; + void setID(int id); - int GetID() const; - Oyster::Math::Float4x4 GetOrientation(); - - - Oyster::Math::Float3 GetPosition(); - Oyster::Math::Float3 GetRotation(); - Oyster::Math::Float3 GetScaling(); - - void SetPosition(Oyster::Math::Float3 position); - void SetRotation(Oyster::Math::Float3 rotation); - void SetScaling(Oyster::Math::Float3 scale); Oyster::Physics::ICustomBody* GetRigidBody(); void ApplyLinearImpulse(Oyster::Math::Float3 force); @@ -52,7 +46,7 @@ namespace GameLogic static Oyster::Physics::ICustomBody::SubscriptMessage DefaultCollisionBefore(Oyster::Physics::ICustomBody *rigidBodyLevel, Oyster::Physics::ICustomBody *obj); static Oyster::Physics::ICustomBody::SubscriptMessage DefaultCollisionAfter(Oyster::Physics::ICustomBody *rigidBodyLevel, Oyster::Physics::ICustomBody *obj, Oyster::Math::Float kineticEnergyLoss); - public: //TODO: Hax This should be private when level is dynamic + public: //HACK: This should be private when level is dynamic OBJECT_TYPE type; int objectID; @@ -62,11 +56,6 @@ namespace GameLogic static const Game* gameInstance; Oyster::Math::Float3 currLook; Oyster::Math::Float3 newLook; - - Oyster::Math::Float3 position; - Oyster::Math::Float3 rotation; - Oyster::Math::Float3 scale; - }; } diff --git a/Code/Game/GameProtocols/ObjectProtocols.h b/Code/Game/GameProtocols/ObjectProtocols.h index 5ce10b27..753d61e3 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,202 @@ 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; + }; + + struct Protocol_ObjectPositionRotation :public Oyster::Network::CustomProtocolObject + { + short object_ID; + float position[3]; + float rotation[3]; + + Protocol_ObjectPositionRotation() + { + this->protocol[0].value = protocol_Gameplay_ObjectPositionRotation; + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + this->protocol[1].type = Oyster::Network::NetAttributeType_Short; + //POSITION + this->protocol[2].type = Oyster::Network::NetAttributeType_Float; + this->protocol[3].type = Oyster::Network::NetAttributeType_Float; + this->protocol[4].type = Oyster::Network::NetAttributeType_Float; + //ROTATION + this->protocol[5].type = Oyster::Network::NetAttributeType_Float; + this->protocol[6].type = Oyster::Network::NetAttributeType_Float; + this->protocol[7].type = Oyster::Network::NetAttributeType_Float; + + this->object_ID = 0; + memset(&this->position[0], 0, sizeof(float) * 3); + memset(&this->rotation[0], 0, sizeof(float) * 3); + } + Protocol_ObjectPositionRotation(Oyster::Network::CustomNetProtocol& p) + { + this->object_ID = p[1].value.netShort; + //POSITION + this->position[0] = p[2].value.netFloat; + this->position[1] = p[3].value.netFloat; + this->position[2] = p[4].value.netFloat; + //ROTATION + this->rotation[0] = p[5].value.netFloat; + this->rotation[1] = p[6].value.netFloat; + this->rotation[2] = p[7].value.netFloat; + } + Protocol_ObjectPositionRotation(float p[3], float r[3], int id) + { + this->protocol[0].value = protocol_Gameplay_ObjectPositionRotation; + this->protocol[0].type = Oyster::Network::NetAttributeType_Short; + this->protocol[1].type = Oyster::Network::NetAttributeType_Short; + //POSITION + this->protocol[2].type = Oyster::Network::NetAttributeType_Float; + this->protocol[3].type = Oyster::Network::NetAttributeType_Float; + this->protocol[4].type = Oyster::Network::NetAttributeType_Float; + //ROTATION + this->protocol[5].type = Oyster::Network::NetAttributeType_Float; + this->protocol[6].type = Oyster::Network::NetAttributeType_Float; + this->protocol[7].type = Oyster::Network::NetAttributeType_Float; + + object_ID = id; + memcpy(&this->position[0], &p[0], sizeof(float) * 3); + memcpy(&this->rotation[0], &r[0], sizeof(float) * 3); + } + Oyster::Network::CustomNetProtocol GetProtocol() override + { + this->protocol[1].value = this->object_ID; + this->protocol[2].value = this->position[0]; + this->protocol[3].value = this->position[1]; + this->protocol[4].value = this->position[2]; + this->protocol[5].value = this->rotation[0]; + this->protocol[6].value = this->rotation[1]; + this->protocol[7].value = this->rotation[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 +391,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 +431,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 +504,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..c9418b4e 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_ObjectPositionRotation 356 +#define protocol_Gameplay_ObjectEnabled 357 +#define protocol_Gameplay_ObjectDisabled 358 +#define protocol_Gameplay_ObjectCreate 359 +#define protocol_Gameplay_ObjectCreatePlayer 360 +#define protocol_Gameplay_ObjectJoinTeam 361 +#define protocol_Gameplay_ObjectLeaveTeam 362 +#define protocol_Gameplay_ObjectWeaponCooldown 363 +#define protocol_Gameplay_ObjectWeaponEnergy 364 +#define protocol_Gameplay_ObjectRespawn 365 +#define protocol_Gameplay_ObjectDie 366 #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 6cf5ec5c..9fed11f2 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,16 +93,24 @@ 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; - - int id = obj->GetID(); - Protocol_ObjectPosition p(obj->GetOrientation(), id); +//<<<<<<< HEAD +// { +// GameSession::gameSession->networkTimer.reset(); +// +// GameLogic::IObjectData* obj = movedObject; +// +// int id = obj->GetID(); +// Protocol_ObjectPosition p(obj->GetOrientation(), id); +// GameSession::gameSession->Send(p.GetProtocol()); +// } +//======= + //{ + // GameSession::gameSession->networkTimer.reset(); + int id = movedObject->GetID(); + //Protocol_ObjectPosition p(movedObject->GetPosition(), id); + Protocol_ObjectPositionRotation p(movedObject->GetPosition(), movedObject->GetRotation(), id); GameSession::gameSession->Send(p.GetProtocol()); - } - + //} } void GameSession::ObjectDisabled( GameLogic::IObjectData* movedObject, float seconds ) { @@ -119,43 +127,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; @@ -164,46 +193,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) { @@ -227,7 +254,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/Misc/Misc.vcxproj b/Code/Misc/Misc.vcxproj index efb3cc48..1943f9bb 100644 --- a/Code/Misc/Misc.vcxproj +++ b/Code/Misc/Misc.vcxproj @@ -149,10 +149,30 @@ - - - - + + false + false + false + false + + + false + false + false + false + + + false + false + false + false + + + false + false + false + false + false false @@ -177,8 +197,18 @@ - - + + false + false + false + false + + + false + false + false + false + false false diff --git a/Code/Misc/Resource/ResourceManager.h b/Code/Misc/Resource/ResourceManager.h index 4c90966e..d5684538 100644 --- a/Code/Misc/Resource/ResourceManager.h +++ b/Code/Misc/Resource/ResourceManager.h @@ -13,6 +13,7 @@ namespace Oyster typedef void* HRESOURCE; typedef char HBYTE; typedef HBYTE* HBYTEARRAY; + /** Typedef on a fuction required for custom unloading */ typedef void(*UnloadFunction)(void* loadedData); diff --git a/Code/suo6F49.tmp b/Code/suo6F49.tmp deleted file mode 100644 index ef7e4637..00000000 Binary files a/Code/suo6F49.tmp and /dev/null differ diff --git a/Code/suoBC7E.tmp b/Code/suoBC7E.tmp deleted file mode 100644 index ef7e4637..00000000 Binary files a/Code/suoBC7E.tmp and /dev/null differ diff --git a/Code/suoC9A6.tmp b/Code/suoC9A6.tmp deleted file mode 100644 index ef7e4637..00000000 Binary files a/Code/suoC9A6.tmp and /dev/null differ diff --git a/Code/suoDD74.tmp b/Code/suoDD74.tmp deleted file mode 100644 index ef7e4637..00000000 Binary files a/Code/suoDD74.tmp and /dev/null differ diff --git a/Code/suoE071.tmp b/Code/suoE071.tmp deleted file mode 100644 index ef7e4637..00000000 Binary files a/Code/suoE071.tmp and /dev/null differ diff --git a/Code/suoE544.tmp b/Code/suoE544.tmp deleted file mode 100644 index ef7e4637..00000000 Binary files a/Code/suoE544.tmp and /dev/null differ diff --git a/Code/suoFE00.tmp b/Code/suoFE00.tmp deleted file mode 100644 index ef7e4637..00000000 Binary files a/Code/suoFE00.tmp and /dev/null differ