From b656ce448d839991d9e2e832cb216f5e67aad551 Mon Sep 17 00:00:00 2001 From: dean11 Date: Wed, 19 Feb 2014 16:22:14 +0100 Subject: [PATCH 1/3] GameServer - Debuging GameLogic --- .../Implementation/GameSession_Gameplay.cpp | 8 +++++++ Code/Network/NetworkAPI/NetworkClient.cpp | 21 ++++++++++++++----- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/Code/Game/GameServer/Implementation/GameSession_Gameplay.cpp b/Code/Game/GameServer/Implementation/GameSession_Gameplay.cpp index 8cbb542d..64625cd0 100644 --- a/Code/Game/GameServer/Implementation/GameSession_Gameplay.cpp +++ b/Code/Game/GameServer/Implementation/GameSession_Gameplay.cpp @@ -61,6 +61,8 @@ using namespace DanBias; switch (e.args.type) { case NetworkClient::ClientEventArgs::EventType_Disconnect: + this->gClients[temp]->GetClient()->Disconnect(); + this->gClients[temp] = 0; break; case NetworkClient::ClientEventArgs::EventType_ProtocolFailedToRecieve: break; @@ -128,6 +130,12 @@ using namespace DanBias; int id = movedObject->GetID(); //Protocol_ObjectPosition p(movedObject->GetPosition(), id); Protocol_ObjectPositionRotation p(movedObject->GetPosition(), movedObject->GetRotation(), id); + + Oyster::Math::Float3 temp = movedObject->GetPosition(); + + if(temp.x < -300) + id = 0; + GameSession::gameSession->Send(p.GetProtocol()); //} } diff --git a/Code/Network/NetworkAPI/NetworkClient.cpp b/Code/Network/NetworkAPI/NetworkClient.cpp index fc561845..e904bb20 100644 --- a/Code/Network/NetworkAPI/NetworkClient.cpp +++ b/Code/Network/NetworkAPI/NetworkClient.cpp @@ -105,11 +105,22 @@ struct NetworkClient::PrivateData : public IThreadObject if(errorCode != 0 && errorCode != WSAEWOULDBLOCK) { - CEA parg; - parg.type = CEA::EventType_ProtocolFailedToSend; - parg.data.protocol = p; - NetEvent e = { this->parent, parg }; - this->recieveQueue.Push(e); + if( errorCode == WSAECONNABORTED || errorCode == WSAENOTCONN) + { + CEA parg; + parg.type = CEA::EventType_Disconnect; + parg.data.protocol = p; + NetEvent e = { this->parent, parg }; + this->recieveQueue.Push(e); + } + else + { + CEA parg; + parg.type = CEA::EventType_ProtocolFailedToSend; + parg.data.protocol = p; + NetEvent e = { this->parent, parg }; + this->recieveQueue.Push(e); + } } } From b5639bec90cd3731deb38e654ce583aac6f7ade8 Mon Sep 17 00:00:00 2001 From: Dennis Andersen Date: Wed, 19 Feb 2014 22:07:53 +0100 Subject: [PATCH 2/3] GameServer - Some white spaces etc.. --- .../GameClientState/LanMenuState.cpp | 4 +- Code/Game/GameLogic/Game.cpp | 20 +- Code/Game/GameLogic/Game_PlayerData.cpp | 36 ++-- .../StandAloneLauncher/Form1.Designer.cs | 192 +++++++++--------- 4 files changed, 128 insertions(+), 124 deletions(-) diff --git a/Code/Game/GameClient/GameClientState/LanMenuState.cpp b/Code/Game/GameClient/GameClientState/LanMenuState.cpp index 11ca95da..8c096617 100644 --- a/Code/Game/GameClient/GameClientState/LanMenuState.cpp +++ b/Code/Game/GameClient/GameClientState/LanMenuState.cpp @@ -60,8 +60,8 @@ bool LanMenuState::Init( SharedStateContent &shared ) // create guiElements this->privData->connectIP = new TextField( L"color_white.png", Float4(1.0f), Float4(0.0f), this, Float3(0.5f, 0.3f, 0.5f), Float2(0.8f, 0.09f), ResizeAspectRatio_None ); this->privData->connectIP->ReserveLines( 1 ); - //this->privData->connectIP->AppendText( L"127.0.0.1" ); - this->privData->connectIP->AppendText( L"194.47.150.206" ); // HACK: connecting to Dennis's server + this->privData->connectIP->AppendText( L"127.0.0.1" ); + //this->privData->connectIP->AppendText( L"194.47.150.206" ); // HACK: connecting to Dennis's server this->privData->connectIP->SetFontHeight( 0.08f ); this->privData->connectIP->SetLineSpacing( 0.005f ); this->privData->connectIP->SetTopAligned(); diff --git a/Code/Game/GameLogic/Game.cpp b/Code/Game/GameLogic/Game.cpp index ba294349..fc5567f0 100644 --- a/Code/Game/GameLogic/Game.cpp +++ b/Code/Game/GameLogic/Game.cpp @@ -68,12 +68,13 @@ void Game::GetAllPlayerPositions() const Game::PlayerData* Game::CreatePlayer() { // Find a free space in array or insert at end - int i = InsertObject(this->players, (PlayerData*)0); + + PlayerData *temp = new PlayerData(); + temp->player->GetRigidBody()->SetSubscription(Game::PhysicsOnMove); - this->players[i] = new PlayerData(); - this->players[i]->player->GetRigidBody()->SetSubscription(Game::PhysicsOnMove); + int i = InsertObject(this->players, temp); - return this->players[i]; + return temp; } Game::LevelData* Game::CreateLevel(const wchar_t mapName[255]) @@ -95,22 +96,15 @@ bool Game::NewFrame() { for (unsigned int i = 0; i < this->players.Size(); i++) { - if(this->players[i]->player) this->players[i]->player->BeginFrame(); + if(this->players[i] && this->players[i]->player) this->players[i]->player->BeginFrame(); } API::Instance().UpdateWorld(); for (unsigned int i = 0; i < this->players.Size(); i++) { - if(this->players[i]->player) this->players[i]->player->EndFrame(); - gameInstance.onMoveFnc(this->players[i]); + if(this->players[i] && this->players[i]->player) this->players[i]->player->EndFrame(); } - for (unsigned int i = 0; i < this->level->level->dynamicObjects.Size(); i++) - { - gameInstance.onMoveFnc(this->level->level->dynamicObjects[i]); - } - - return true; } diff --git a/Code/Game/GameLogic/Game_PlayerData.cpp b/Code/Game/GameLogic/Game_PlayerData.cpp index e7a77bbd..f34cf95f 100644 --- a/Code/Game/GameLogic/Game_PlayerData.cpp +++ b/Code/Game/GameLogic/Game_PlayerData.cpp @@ -5,29 +5,39 @@ using namespace GameLogic; Game::PlayerData::PlayerData() { - //set some stats that are appropriate to a player - - Oyster::Math::Float3 centerPosition = Oyster::Math::Float3(50,130,0); - - Oyster::Math::Float3 size = Oyster::Math::Float3(0.25f,2.0f,0.5f); - Oyster::Math::Float mass = 60; + Oyster::Math::Float3 centerPosition = Oyster::Math::Float3(-50,250,0); + Oyster::Math::Float height = 2.0f; + Oyster::Math::Float radius = 0.5f; + Oyster::Math::Float mass = 40; Oyster::Math::Float restitutionCoeff = 0.5f; Oyster::Math::Float frictionCoeff_Static = 0.4f; Oyster::Math::Float frictionCoeff_Dynamic = 0.3f; - //sbDesc.quaternion = Oyster::Math::Float3(0, Oyster::Math::pi, 0); //create rigid body - Oyster::Physics::ICustomBody* rigidBody = Oyster::Physics::API::Instance().AddCollisionBox(size, Oyster::Math::Float4(0, 0, 0, 1), centerPosition, mass, 0.5f, 0.8f, 0.6f ); + Oyster::Physics::ICustomBody* rigidBody = Oyster::Physics::API::Instance().AddCharacter( height, radius, Oyster::Math::Float4(0, 0, 0, 1), + centerPosition, mass, restitutionCoeff, + frictionCoeff_Static, frictionCoeff_Dynamic ); rigidBody->SetAngularFactor(0.0f); //create player with this rigid body - this->player = new Player(rigidBody, Player::PlayerCollision, ObjectSpecialType_Player,0,0); - - //this->player->GetRigidBody()->SetCustomTag(this); - player->EndFrame(); + this->player = new Player(rigidBody, Player::PlayerCollision, ObjectSpecialType_Player, 0, 0); } Game::PlayerData::PlayerData(int playerID,int teamID) { - this->player = new Player(); + Oyster::Math::Float3 centerPosition = Oyster::Math::Float3(-50,250,0); + Oyster::Math::Float height = 2.0f; + Oyster::Math::Float radius = 0.5f; + Oyster::Math::Float mass = 40; + Oyster::Math::Float restitutionCoeff = 0.5f; + Oyster::Math::Float frictionCoeff_Static = 0.4f; + Oyster::Math::Float frictionCoeff_Dynamic = 0.3f; + + //create rigid body + Oyster::Physics::ICustomBody* rigidBody = Oyster::Physics::API::Instance().AddCharacter( height, radius, Oyster::Math::Float4(0, 0, 0, 1), + centerPosition, mass, restitutionCoeff, + frictionCoeff_Static, frictionCoeff_Dynamic ); + rigidBody->SetAngularFactor(0.0f); + //create player with this rigid body + this->player = new Player(rigidBody, Player::PlayerCollision, ObjectSpecialType_Player,playerID,teamID); } Game::PlayerData::~PlayerData() { diff --git a/Code/Game/LanServer/StandAloneLauncher/Form1.Designer.cs b/Code/Game/LanServer/StandAloneLauncher/Form1.Designer.cs index 73ef627c..4f9c169d 100644 --- a/Code/Game/LanServer/StandAloneLauncher/Form1.Designer.cs +++ b/Code/Game/LanServer/StandAloneLauncher/Form1.Designer.cs @@ -37,11 +37,13 @@ this.panel_serverOptions = new System.Windows.Forms.Panel(); this.panel_commands = new System.Windows.Forms.Panel(); this.timeLimit = new System.Windows.Forms.NumericUpDown(); + this.mapName = new System.Windows.Forms.ComboBox(); this.gameModes = new System.Windows.Forms.ComboBox(); this.label3 = new System.Windows.Forms.Label(); this.forceStart = new System.Windows.Forms.CheckBox(); this.label2 = new System.Windows.Forms.Label(); this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); this.labelClientsConnected = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label(); this.nrOfClients = new System.Windows.Forms.NumericUpDown(); @@ -51,22 +53,20 @@ this.splitter1 = new System.Windows.Forms.Splitter(); this.clientInfoBox = new System.Windows.Forms.ListBox(); this.panel_CommanArea = new System.Windows.Forms.Panel(); - this.label5 = new System.Windows.Forms.Label(); - this.mapName = new System.Windows.Forms.ComboBox(); this.panelServerCommands = new System.Windows.Forms.Panel(); - this.buttonExecuteSend = new System.Windows.Forms.Button(); + this.dataProtocolFields = new System.Windows.Forms.TableLayoutPanel(); this.panel2 = new System.Windows.Forms.Panel(); + this.button2 = new System.Windows.Forms.Button(); + this.textBox1 = new System.Windows.Forms.TextBox(); this.comboBox1 = new System.Windows.Forms.ComboBox(); this.numericUpDown1 = new System.Windows.Forms.NumericUpDown(); - this.textBox1 = new System.Windows.Forms.TextBox(); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); this.label6 = new System.Windows.Forms.Label(); this.label7 = new System.Windows.Forms.Label(); this.label8 = new System.Windows.Forms.Label(); - this.dataProtocolFields = new System.Windows.Forms.TableLayoutPanel(); - this.buttonAddNewDataField = new System.Windows.Forms.Button(); - this.button2 = new System.Windows.Forms.Button(); this.buttonsAtBottom = new System.Windows.Forms.TableLayoutPanel(); + this.buttonAddNewDataField = new System.Windows.Forms.Button(); + this.buttonExecuteSend = new System.Windows.Forms.Button(); ((System.ComponentModel.ISupportInitialize)(this.listenPort)).BeginInit(); this.panel_serverOptions.SuspendLayout(); this.panel_commands.SuspendLayout(); @@ -75,10 +75,10 @@ this.panel_clientArea.SuspendLayout(); this.panel_CommanArea.SuspendLayout(); this.panelServerCommands.SuspendLayout(); + this.dataProtocolFields.SuspendLayout(); this.panel2.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit(); this.tableLayoutPanel1.SuspendLayout(); - this.dataProtocolFields.SuspendLayout(); this.buttonsAtBottom.SuspendLayout(); this.SuspendLayout(); // @@ -204,6 +204,18 @@ 0, 0}); // + // mapName + // + this.mapName.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.mapName.FormattingEnabled = true; + this.mapName.IntegralHeight = false; + this.mapName.Items.AddRange(new object[] { + "Set default"}); + this.mapName.Location = new System.Drawing.Point(72, 7); + this.mapName.Name = "mapName"; + this.mapName.Size = new System.Drawing.Size(163, 21); + this.mapName.TabIndex = 10; + // // gameModes // this.gameModes.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; @@ -255,6 +267,15 @@ this.label4.TabIndex = 8; this.label4.Text = "Map name"; // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(23, 147); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(81, 13); + this.label5.TabIndex = 8; + this.label5.Text = "Lobby clients: 0"; + // // labelClientsConnected // this.labelClientsConnected.AutoSize = true; @@ -360,27 +381,6 @@ this.panel_CommanArea.Size = new System.Drawing.Size(241, 616); this.panel_CommanArea.TabIndex = 9; // - // label5 - // - this.label5.AutoSize = true; - this.label5.Location = new System.Drawing.Point(23, 147); - this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(81, 13); - this.label5.TabIndex = 8; - this.label5.Text = "Lobby clients: 0"; - // - // mapName - // - this.mapName.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.mapName.FormattingEnabled = true; - this.mapName.IntegralHeight = false; - this.mapName.Items.AddRange(new object[] { - "Set default"}); - this.mapName.Location = new System.Drawing.Point(72, 7); - this.mapName.Name = "mapName"; - this.mapName.Size = new System.Drawing.Size(163, 21); - this.mapName.TabIndex = 10; - // // panelServerCommands // this.panelServerCommands.Controls.Add(this.dataProtocolFields); @@ -391,17 +391,24 @@ this.panelServerCommands.TabIndex = 8; this.panelServerCommands.Visible = false; // - // buttonExecuteSend + // dataProtocolFields // - this.buttonExecuteSend.Dock = System.Windows.Forms.DockStyle.Fill; - this.buttonExecuteSend.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.buttonExecuteSend.Location = new System.Drawing.Point(116, 0); - this.buttonExecuteSend.Margin = new System.Windows.Forms.Padding(0); - this.buttonExecuteSend.Name = "buttonExecuteSend"; - this.buttonExecuteSend.Size = new System.Drawing.Size(117, 21); - this.buttonExecuteSend.TabIndex = 0; - this.buttonExecuteSend.Text = "Send"; - this.buttonExecuteSend.UseVisualStyleBackColor = true; + this.dataProtocolFields.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single; + this.dataProtocolFields.ColumnCount = 1; + this.dataProtocolFields.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 21F)); + this.dataProtocolFields.Controls.Add(this.panel2, 0, 1); + this.dataProtocolFields.Controls.Add(this.tableLayoutPanel1, 0, 0); + this.dataProtocolFields.Controls.Add(this.buttonsAtBottom, 0, 2); + this.dataProtocolFields.Dock = System.Windows.Forms.DockStyle.Fill; + this.dataProtocolFields.Location = new System.Drawing.Point(0, 0); + this.dataProtocolFields.Margin = new System.Windows.Forms.Padding(0); + this.dataProtocolFields.Name = "dataProtocolFields"; + this.dataProtocolFields.RowCount = 3; + this.dataProtocolFields.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 27F)); + this.dataProtocolFields.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 27F)); + this.dataProtocolFields.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.dataProtocolFields.Size = new System.Drawing.Size(241, 85); + this.dataProtocolFields.TabIndex = 9; // // panel2 // @@ -415,6 +422,27 @@ this.panel2.Size = new System.Drawing.Size(233, 21); this.panel2.TabIndex = 0; // + // button2 + // + this.button2.Dock = System.Windows.Forms.DockStyle.Fill; + this.button2.FlatAppearance.BorderColor = System.Drawing.Color.Black; + this.button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button2.Location = new System.Drawing.Point(184, 0); + this.button2.Margin = new System.Windows.Forms.Padding(0); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(49, 21); + this.button2.TabIndex = 0; + this.button2.Text = "remove"; + this.button2.UseVisualStyleBackColor = true; + // + // textBox1 + // + this.textBox1.Dock = System.Windows.Forms.DockStyle.Left; + this.textBox1.Location = new System.Drawing.Point(120, 0); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(64, 20); + this.textBox1.TabIndex = 12; + // // comboBox1 // this.comboBox1.Dock = System.Windows.Forms.DockStyle.Left; @@ -447,21 +475,13 @@ this.numericUpDown1.Size = new System.Drawing.Size(42, 20); this.numericUpDown1.TabIndex = 11; // - // textBox1 - // - this.textBox1.Dock = System.Windows.Forms.DockStyle.Left; - this.textBox1.Location = new System.Drawing.Point(120, 0); - this.textBox1.Name = "textBox1"; - this.textBox1.Size = new System.Drawing.Size(64, 20); - this.textBox1.TabIndex = 12; - // // tableLayoutPanel1 // this.tableLayoutPanel1.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single; this.tableLayoutPanel1.ColumnCount = 3; this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 35.29412F)); this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 64.70588F)); - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 110F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 118F)); this.tableLayoutPanel1.Controls.Add(this.label6, 0, 0); this.tableLayoutPanel1.Controls.Add(this.label7, 1, 0); this.tableLayoutPanel1.Controls.Add(this.label8, 2, 0); @@ -486,7 +506,7 @@ // label7 // this.label7.AutoSize = true; - this.label7.Location = new System.Drawing.Point(46, 1); + this.label7.Location = new System.Drawing.Point(44, 1); this.label7.Name = "label7"; this.label7.Size = new System.Drawing.Size(31, 13); this.label7.TabIndex = 8; @@ -495,57 +515,12 @@ // label8 // this.label8.AutoSize = true; - this.label8.Location = new System.Drawing.Point(123, 1); + this.label8.Location = new System.Drawing.Point(116, 1); this.label8.Name = "label8"; this.label8.Size = new System.Drawing.Size(34, 13); this.label8.TabIndex = 8; this.label8.Text = "Value"; // - // dataProtocolFields - // - this.dataProtocolFields.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single; - this.dataProtocolFields.ColumnCount = 1; - this.dataProtocolFields.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 21F)); - this.dataProtocolFields.Controls.Add(this.panel2, 0, 1); - this.dataProtocolFields.Controls.Add(this.tableLayoutPanel1, 0, 0); - this.dataProtocolFields.Controls.Add(this.buttonsAtBottom, 0, 2); - this.dataProtocolFields.Dock = System.Windows.Forms.DockStyle.Fill; - this.dataProtocolFields.Location = new System.Drawing.Point(0, 0); - this.dataProtocolFields.Margin = new System.Windows.Forms.Padding(0); - this.dataProtocolFields.Name = "dataProtocolFields"; - this.dataProtocolFields.RowCount = 3; - this.dataProtocolFields.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 27F)); - this.dataProtocolFields.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 27F)); - this.dataProtocolFields.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); - this.dataProtocolFields.Size = new System.Drawing.Size(241, 85); - this.dataProtocolFields.TabIndex = 9; - // - // buttonAddNewDataField - // - this.buttonAddNewDataField.Dock = System.Windows.Forms.DockStyle.Fill; - this.buttonAddNewDataField.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.buttonAddNewDataField.Location = new System.Drawing.Point(0, 0); - this.buttonAddNewDataField.Margin = new System.Windows.Forms.Padding(0); - this.buttonAddNewDataField.Name = "buttonAddNewDataField"; - this.buttonAddNewDataField.Size = new System.Drawing.Size(116, 21); - this.buttonAddNewDataField.TabIndex = 1; - this.buttonAddNewDataField.Text = "Add field"; - this.buttonAddNewDataField.UseVisualStyleBackColor = true; - this.buttonAddNewDataField.Click += new System.EventHandler(this.buttonAddNewDataField_Click); - // - // button2 - // - this.button2.Dock = System.Windows.Forms.DockStyle.Fill; - this.button2.FlatAppearance.BorderColor = System.Drawing.Color.Black; - this.button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.button2.Location = new System.Drawing.Point(184, 0); - this.button2.Margin = new System.Windows.Forms.Padding(0); - this.button2.Name = "button2"; - this.button2.Size = new System.Drawing.Size(49, 21); - this.button2.TabIndex = 0; - this.button2.Text = "remove"; - this.button2.UseVisualStyleBackColor = true; - // // buttonsAtBottom // this.buttonsAtBottom.ColumnCount = 2; @@ -561,6 +536,31 @@ this.buttonsAtBottom.Size = new System.Drawing.Size(233, 21); this.buttonsAtBottom.TabIndex = 10; // + // buttonAddNewDataField + // + this.buttonAddNewDataField.Dock = System.Windows.Forms.DockStyle.Fill; + this.buttonAddNewDataField.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.buttonAddNewDataField.Location = new System.Drawing.Point(0, 0); + this.buttonAddNewDataField.Margin = new System.Windows.Forms.Padding(0); + this.buttonAddNewDataField.Name = "buttonAddNewDataField"; + this.buttonAddNewDataField.Size = new System.Drawing.Size(116, 21); + this.buttonAddNewDataField.TabIndex = 1; + this.buttonAddNewDataField.Text = "Add field"; + this.buttonAddNewDataField.UseVisualStyleBackColor = true; + this.buttonAddNewDataField.Click += new System.EventHandler(this.buttonAddNewDataField_Click); + // + // buttonExecuteSend + // + this.buttonExecuteSend.Dock = System.Windows.Forms.DockStyle.Fill; + this.buttonExecuteSend.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.buttonExecuteSend.Location = new System.Drawing.Point(116, 0); + this.buttonExecuteSend.Margin = new System.Windows.Forms.Padding(0); + this.buttonExecuteSend.Name = "buttonExecuteSend"; + this.buttonExecuteSend.Size = new System.Drawing.Size(117, 21); + this.buttonExecuteSend.TabIndex = 0; + this.buttonExecuteSend.Text = "Send"; + this.buttonExecuteSend.UseVisualStyleBackColor = true; + // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -581,12 +581,12 @@ this.panel_clientArea.ResumeLayout(false); this.panel_CommanArea.ResumeLayout(false); this.panelServerCommands.ResumeLayout(false); + this.dataProtocolFields.ResumeLayout(false); this.panel2.ResumeLayout(false); this.panel2.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit(); this.tableLayoutPanel1.ResumeLayout(false); this.tableLayoutPanel1.PerformLayout(); - this.dataProtocolFields.ResumeLayout(false); this.buttonsAtBottom.ResumeLayout(false); this.ResumeLayout(false); From f872cfffd1a917ad3635a47857392ffcd026261b Mon Sep 17 00:00:00 2001 From: Dennis Andersen Date: Thu, 20 Feb 2014 08:33:07 +0100 Subject: [PATCH 3/3] Added debug project to game server and some other stuff --- Code/DanBias.sln | 37 ++++ Code/Game/GameLogic/Level.cpp | 8 +- Code/Game/GameLogic/Level.h | 2 +- Code/Game/GameServer/GameClient.h | 8 + .../GameServer/Implementation/DLLMain.cpp | 1 - .../GameServer/Implementation/GameClient.cpp | 19 ++ .../Implementation/GameSession_Gameplay.cpp | 9 +- .../GameServerDebugEnvironment.vcxproj | 183 ++++++++++++++++++ .../GameServerDebugEnvironment.vcxproj.user | 22 +++ .../GameServerDebugEnvironment/Source.cpp | 48 +++++ .../StandAloneLauncher/Form1.Designer.cs | 6 +- Code/Game/LevelLoader/LevelLoader.cpp | 2 + Code/Network/NetworkAPI/NetworkClient.cpp | 40 +++- Code/Network/NetworkAPI/NetworkClient.h | 13 ++ 14 files changed, 379 insertions(+), 19 deletions(-) create mode 100644 Code/Game/LanServer/GameServerDebugEnvironment/GameServerDebugEnvironment.vcxproj create mode 100644 Code/Game/LanServer/GameServerDebugEnvironment/GameServerDebugEnvironment.vcxproj.user create mode 100644 Code/Game/LanServer/GameServerDebugEnvironment/Source.cpp diff --git a/Code/DanBias.sln b/Code/DanBias.sln index e14d2c37..033e050e 100644 --- a/Code/DanBias.sln +++ b/Code/DanBias.sln @@ -47,6 +47,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Utilities", "Misc\Utilities EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LevelLoader", "Game\LevelLoader\LevelLoader.vcxproj", "{6391E709-D9FA-4FEF-A3B9-4343DB5A0C63}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GameServerDebugEnvironment", "Game\LanServer\GameServerDebugEnvironment\GameServerDebugEnvironment.vcxproj", "{67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -715,6 +717,40 @@ Global {6391E709-D9FA-4FEF-A3B9-4343DB5A0C63}.RelWithDebInfo|x64.ActiveCfg = Release|Win32 {6391E709-D9FA-4FEF-A3B9-4343DB5A0C63}.RelWithDebInfo|x86.ActiveCfg = Release|Win32 {6391E709-D9FA-4FEF-A3B9-4343DB5A0C63}.RelWithDebInfo|x86.Build.0 = Release|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.Debug|Win32.ActiveCfg = Debug|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.Debug|Win32.Build.0 = Debug|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.Debug|x64.ActiveCfg = Debug|x64 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.Debug|x64.Build.0 = Debug|x64 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.Debug|x86.ActiveCfg = Debug|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.Debug|x86.Build.0 = Debug|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.MinSizeRel|Win32.Build.0 = Release|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.MinSizeRel|x64.ActiveCfg = Release|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.MinSizeRel|x86.ActiveCfg = Release|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.MinSizeRel|x86.Build.0 = Release|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.Release|Any CPU.ActiveCfg = Release|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.Release|Mixed Platforms.Build.0 = Release|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.Release|Win32.ActiveCfg = Release|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.Release|Win32.Build.0 = Release|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.Release|x64.ActiveCfg = Release|x64 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.Release|x64.Build.0 = Release|x64 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.Release|x86.ActiveCfg = Release|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.Release|x86.Build.0 = Release|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.RelWithDebInfo|Win32.Build.0 = Release|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.RelWithDebInfo|x64.ActiveCfg = Release|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.RelWithDebInfo|x86.ActiveCfg = Release|Win32 + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE}.RelWithDebInfo|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -737,5 +773,6 @@ Global {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE} = {1322B12B-5E37-448A-AAAF-F637460DCB23} {604A12A7-07BF-4482-BDF3-7101C811F121} = {C83A6FAD-E71F-4B1E-9D63-E93E61DDC012} {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB} = {C83A6FAD-E71F-4B1E-9D63-E93E61DDC012} + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE} = {C83A6FAD-E71F-4B1E-9D63-E93E61DDC012} EndGlobalSection EndGlobal diff --git a/Code/Game/GameLogic/Level.cpp b/Code/Game/GameLogic/Level.cpp index b3a8b101..4c79a0e9 100644 --- a/Code/Game/GameLogic/Level.cpp +++ b/Code/Game/GameLogic/Level.cpp @@ -4,6 +4,7 @@ #include "JumpPad.h" #include "ExplosiveCrate.h" #include "Portal.h" +#include //Conversion from wstring to string #include @@ -22,7 +23,7 @@ Level::~Level(void) delete this->levelObj; this->levelObj = NULL; } -Object* Level::createGameObj(ObjectHeader* obj, ICustomBody* rigidBody) +Object* Level::CreateGameObj(ObjectHeader* obj, ICustomBody* rigidBody) { Object* gameObj = NULL; @@ -55,6 +56,7 @@ Object* Level::createGameObj(ObjectHeader* obj, ICustomBody* rigidBody) { gameObj = new StaticObject(rigidBody, Object::DefaultOnCollision, (ObjectSpecialType)obj->specialTypeID, objID); } + break; case ObjectSpecialType_Stone: { gameObj = new DynamicObject(rigidBody, Object::DefaultOnCollision, (ObjectSpecialType)obj->specialTypeID, objID); @@ -261,7 +263,7 @@ bool Level::InitiateLevel(std::wstring levelPath) if(rigidBody_Static != NULL) { // create game object - Object* staticGameObj = createGameObj(staticObjData, rigidBody_Static); + Object* staticGameObj = CreateGameObj(staticObjData, rigidBody_Static); if(staticGameObj != NULL) { this->staticObjects.Push((StaticObject*)staticGameObj); @@ -295,7 +297,7 @@ bool Level::InitiateLevel(std::wstring levelPath) if(rigidBody_Dynamic != NULL) { // create game object - Object* dynamicGameObj = createGameObj(dynamicObjData, rigidBody_Dynamic); + Object* dynamicGameObj = CreateGameObj(dynamicObjData, rigidBody_Dynamic); if (dynamicGameObj != NULL) { this->dynamicObjects.Push((DynamicObject*)dynamicGameObj); diff --git a/Code/Game/GameLogic/Level.h b/Code/Game/GameLogic/Level.h index fb26280c..9dce227d 100644 --- a/Code/Game/GameLogic/Level.h +++ b/Code/Game/GameLogic/Level.h @@ -35,7 +35,7 @@ namespace GameLogic Oyster::Physics::ICustomBody* InitRigidBodyCube( const ObjectHeader* obj); Oyster::Physics::ICustomBody* InitRigidBodySphere( const ObjectHeader* obj); - Object* createGameObj(ObjectHeader* obj, Oyster::Physics::ICustomBody* rigidBody); + Object* CreateGameObj(ObjectHeader* obj, Oyster::Physics::ICustomBody* rigidBody); /******************************************************** * Creates a team in the level * @param teamSize: The size of the team you want to create diff --git a/Code/Game/GameServer/GameClient.h b/Code/Game/GameServer/GameClient.h index 6fcf6b05..497e6c2e 100644 --- a/Code/Game/GameServer/GameClient.h +++ b/Code/Game/GameServer/GameClient.h @@ -22,6 +22,7 @@ namespace DanBias { ClientState_CreatingGame, ClientState_Ready, + ClientState_Invalid, }; public: @@ -41,6 +42,7 @@ namespace DanBias inline GameLogic::IPlayerData* GetPlayer() const { return this->player; } Oyster::Network::NetClient GetClient() const { return this->client; } ClientState GetState() const { return this->state; } + int GetFailedProtocolCount() const { return this->failedPackagesCount; } void SetPlayer(GameLogic::IPlayerData* player); @@ -53,6 +55,10 @@ namespace DanBias GameLogic::IPlayerData* ReleasePlayer(); Oyster::Network::NetClient ReleaseClient(); + void Invalidate(); + int IncrementFailedProtocol(); + void ResetFailedProtocolCount(); + //NetworkSpecific void SetOwner(Oyster::Network::NetworkSession* owner); void UpdateClient(); @@ -62,7 +68,9 @@ namespace DanBias Oyster::Network::NetClient client; bool isReady; + bool isInvalid; float secondsSinceLastResponse; + int failedPackagesCount; std::wstring alias; std::wstring character; diff --git a/Code/Game/GameServer/Implementation/DLLMain.cpp b/Code/Game/GameServer/Implementation/DLLMain.cpp index 7adceac7..814a15f1 100644 --- a/Code/Game/GameServer/Implementation/DLLMain.cpp +++ b/Code/Game/GameServer/Implementation/DLLMain.cpp @@ -6,6 +6,5 @@ BOOL WINAPI DllMain( _In_ HINSTANCE hinstDLL, _In_ DWORD fdwReason, _In_ LPVOID lpvReserved ) { - return TRUE; } \ No newline at end of file diff --git a/Code/Game/GameServer/Implementation/GameClient.cpp b/Code/Game/GameServer/Implementation/GameClient.cpp index 9c04007f..3293a383 100644 --- a/Code/Game/GameServer/Implementation/GameClient.cpp +++ b/Code/Game/GameServer/Implementation/GameClient.cpp @@ -14,6 +14,8 @@ using namespace GameLogic; GameClient::GameClient(Utility::DynamicMemory::SmartPointer nwClient) { + this->isInvalid = false; + this->failedPackagesCount = 0; this->client = nwClient; this->player = 0; isReady = false; @@ -23,6 +25,7 @@ GameClient::GameClient(Utility::DynamicMemory::SmartPointerclient = 0; this->player = 0; this->isReady = false; this->character = L"crate_colonists.dan"; @@ -55,6 +58,22 @@ void GameClient::SetState(ClientState state) this->state = state; } +void GameClient::Invalidate() +{ + this->isInvalid = true; + this->isReady = false; + this->state = ClientState_Invalid; + this->client->Disconnect(); +} +int GameClient::IncrementFailedProtocol() +{ + this->failedPackagesCount++; + return this->failedPackagesCount; +} +void GameClient::ResetFailedProtocolCount() +{ + this->failedPackagesCount = 0; +} void GameClient::SetOwner(Oyster::Network::NetworkSession* owner) { diff --git a/Code/Game/GameServer/Implementation/GameSession_Gameplay.cpp b/Code/Game/GameServer/Implementation/GameSession_Gameplay.cpp index 64625cd0..53e24739 100644 --- a/Code/Game/GameServer/Implementation/GameSession_Gameplay.cpp +++ b/Code/Game/GameServer/Implementation/GameSession_Gameplay.cpp @@ -61,14 +61,15 @@ using namespace DanBias; switch (e.args.type) { case NetworkClient::ClientEventArgs::EventType_Disconnect: - this->gClients[temp]->GetClient()->Disconnect(); - this->gClients[temp] = 0; + //printf("\t(%i : %s) - EventType_Disconnect\n", cl->GetClient()->GetID(), e.sender->GetIpAddress().c_str()); + this->gClients[temp]->Invalidate(); break; case NetworkClient::ClientEventArgs::EventType_ProtocolFailedToRecieve: break; case NetworkClient::ClientEventArgs::EventType_ProtocolFailedToSend: - printf("\t(%i : %s) - EventType_ProtocolFailedToSend\n", cl->GetClient()->GetID(), e.sender->GetIpAddress().c_str()); - //this->Detach(e.sender); + //printf("\t(%i : %s) - EventType_ProtocolFailedToSend\n", cl->GetClient()->GetID(), e.sender->GetIpAddress().c_str()); + if(this->gClients[temp]->IncrementFailedProtocol() >= 5/*client->threshold*/) + this->gClients[temp]->Invalidate(); break; case NetworkClient::ClientEventArgs::EventType_ProtocolRecieved: //printf("\t(%i : %s) - EventType_ProtocolRecieved\n", cl->GetClient()->GetID(), e.sender->GetIpAddress().c_str()); diff --git a/Code/Game/LanServer/GameServerDebugEnvironment/GameServerDebugEnvironment.vcxproj b/Code/Game/LanServer/GameServerDebugEnvironment/GameServerDebugEnvironment.vcxproj new file mode 100644 index 00000000..5f715fad --- /dev/null +++ b/Code/Game/LanServer/GameServerDebugEnvironment/GameServerDebugEnvironment.vcxproj @@ -0,0 +1,183 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {67D0FB00-FF1F-4DE4-84BD-664AE93D25EE} + Win32Proj + GameServerDebugEnvironment + + + + Application + true + v110 + Unicode + + + Application + true + v110 + Unicode + + + Application + false + v110 + true + Unicode + + + Application + false + v110 + true + Unicode + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)..\Bin\Executable\ + $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ + $(ProjectName)_$(PlatformShortName)_$(Configuration) + $(SolutionDir)Game\GameServer\;C:\Program Files %28x86%29\Visual Leak Detector\include;$(SolutionDir)Misc\WindowManager;$(IncludePath) + C:\Program Files %28x86%29\Visual Leak Detector\lib\Win32;$(LibraryPath) + + + true + $(SolutionDir)..\Bin\Executable\ + $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ + $(ProjectName)_$(PlatformShortName)_$(Configuration) + $(SolutionDir)Game\GameServer\;C:\Program Files %28x86%29\Visual Leak Detector\include;$(SolutionDir)Misc\WindowManager;$(IncludePath) + C:\Program Files %28x86%29\Visual Leak Detector\lib\Win64;$(LibraryPath) + + + false + $(SolutionDir)..\Bin\Executable\ + $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ + $(ProjectName)_$(PlatformShortName)_$(Configuration) + $(SolutionDir)Game\GameServer\;C:\Program Files %28x86%29\Visual Leak Detector\include;$(SolutionDir)Misc\WindowManager;$(IncludePath) + C:\Program Files %28x86%29\Visual Leak Detector\lib\Win32;$(LibraryPath) + + + false + $(SolutionDir)..\Bin\Executable\ + $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ + $(ProjectName)_$(PlatformShortName)_$(Configuration) + $(SolutionDir)Game\GameServer\;C:\Program Files %28x86%29\Visual Leak Detector\include;$(SolutionDir)Misc\WindowManager;$(IncludePath) + C:\Program Files %28x86%29\Visual Leak Detector\lib\Win64;$(LibraryPath) + + + + + + Level3 + Disabled + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + GameServer_$(PlatformShortName)D.dll;%(DelayLoadDLLs) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + GameServer_$(PlatformShortName)D.dll;%(DelayLoadDLLs) + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + true + true + GameServer_$(PlatformShortName).dll;%(DelayLoadDLLs) + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + true + true + GameServer_$(PlatformShortName).dll;%(DelayLoadDLLs) + + + + + {35aea3c0-e0a7-4e1e-88cd-514aa5a442b1} + + + {143bd516-20a1-4890-a3e4-f8bfd02220e7} + + + + + + + + + \ No newline at end of file diff --git a/Code/Game/LanServer/GameServerDebugEnvironment/GameServerDebugEnvironment.vcxproj.user b/Code/Game/LanServer/GameServerDebugEnvironment/GameServerDebugEnvironment.vcxproj.user new file mode 100644 index 00000000..ea7197bf --- /dev/null +++ b/Code/Game/LanServer/GameServerDebugEnvironment/GameServerDebugEnvironment.vcxproj.user @@ -0,0 +1,22 @@ + + + + $(OutDir) + WindowsLocalDebugger + + + $(OutDir) + WindowsLocalDebugger + + + $(OutDir) + WindowsLocalDebugger + + + $(OutDir) + WindowsLocalDebugger + + + true + + \ No newline at end of file diff --git a/Code/Game/LanServer/GameServerDebugEnvironment/Source.cpp b/Code/Game/LanServer/GameServerDebugEnvironment/Source.cpp new file mode 100644 index 00000000..f2561a52 --- /dev/null +++ b/Code/Game/LanServer/GameServerDebugEnvironment/Source.cpp @@ -0,0 +1,48 @@ +///////////////////////////////////////////////// +// Launcher to launch Danbias server or client // +///////////////////////////////////////////////// +#define NOMINMAX +#include +#include + +#include +#include + +using namespace DanBias; + +int WINAPI WinMain( HINSTANCE hinst, HINSTANCE prevInst, PSTR cmdLine, int cmdShow) +{ + if(SetDllDirectory(L"..\\DLL") == FALSE) + { + return cmdShow; + } + + WindowShell::CreateConsoleWindow(); + + GameServerAPI::ServerInitDesc desc; + desc.listenPort = 15151; + desc.serverName = L"bla"; + + if(GameServerAPI::ServerInitiate(desc) == DanBiasServerReturn_Sucess) + { + GameServerAPI::ServerStart(); + + GameServerAPI::GameSetGameMode(L"free-for-all"); + GameServerAPI::GameSetGameName(L"DebugServer"); + GameServerAPI::GameSetGameTime(15); + GameServerAPI::GameSetMapName(L"2ofAll.bias"); + GameServerAPI::GameSetMaxClients(10); + + if(GameServerAPI::GameStart(true)) + { + int Q = 0x51; + while ( GetAsyncKeyState(Q) == 0) + { + GameServerAPI::ServerUpdate(); + } + } + GameServerAPI::ServerStop(); + } + + return 0; +} \ No newline at end of file diff --git a/Code/Game/LanServer/StandAloneLauncher/Form1.Designer.cs b/Code/Game/LanServer/StandAloneLauncher/Form1.Designer.cs index 2fc06cef..b07868f7 100644 --- a/Code/Game/LanServer/StandAloneLauncher/Form1.Designer.cs +++ b/Code/Game/LanServer/StandAloneLauncher/Form1.Designer.cs @@ -482,7 +482,7 @@ this.tableLayoutPanel1.ColumnCount = 3; this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 35.29412F)); this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 64.70588F)); - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 112F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 114F)); this.tableLayoutPanel1.Controls.Add(this.label6, 0, 0); this.tableLayoutPanel1.Controls.Add(this.label7, 1, 0); this.tableLayoutPanel1.Controls.Add(this.label8, 2, 0); @@ -507,7 +507,7 @@ // label7 // this.label7.AutoSize = true; - this.label7.Location = new System.Drawing.Point(44, 1); + this.label7.Location = new System.Drawing.Point(45, 1); this.label7.Name = "label7"; this.label7.Size = new System.Drawing.Size(31, 13); this.label7.TabIndex = 8; @@ -516,7 +516,7 @@ // label8 // this.label8.AutoSize = true; - this.label8.Location = new System.Drawing.Point(122, 1); + this.label8.Location = new System.Drawing.Point(120, 1); this.label8.Name = "label8"; this.label8.Size = new System.Drawing.Size(34, 13); this.label8.TabIndex = 8; diff --git a/Code/Game/LevelLoader/LevelLoader.cpp b/Code/Game/LevelLoader/LevelLoader.cpp index 82583696..588c4a34 100644 --- a/Code/Game/LevelLoader/LevelLoader.cpp +++ b/Code/Game/LevelLoader/LevelLoader.cpp @@ -4,6 +4,7 @@ #include "LevelLoader.h" #include "LevelParser.h" +#include using namespace GameLogic; using namespace GameLogic::LevelFileLoader; @@ -29,6 +30,7 @@ LevelLoader::LevelLoader(std::string folderPath) LevelLoader::~LevelLoader() { + Oyster::Resource::OysterResource::Clean(); } std::vector> LevelLoader::LoadLevel(std::string fileName) diff --git a/Code/Network/NetworkAPI/NetworkClient.cpp b/Code/Network/NetworkAPI/NetworkClient.cpp index e904bb20..a4bc4581 100644 --- a/Code/Network/NetworkAPI/NetworkClient.cpp +++ b/Code/Network/NetworkAPI/NetworkClient.cpp @@ -48,6 +48,7 @@ struct NetworkClient::PrivateData : public IThreadObject Connection connection; Translator translator; OysterThread thread; + bool outputEvent; OysterByte recieveBuffer; @@ -63,6 +64,7 @@ struct NetworkClient::PrivateData : public IThreadObject : ID(currID++) , parent(0) , owner(0) + , outputEvent(1) { InitWinSock(); this->thread.Create(this, false); @@ -97,9 +99,6 @@ struct NetworkClient::PrivateData : public IThreadObject OysterByte temp; CustomNetProtocol p = this->sendQueue.Pop(); - if(p[0].value.netShort == 304) - int i = 0; - this->translator.Pack(temp, p); errorCode = this->connection.Send(temp); @@ -112,6 +111,11 @@ struct NetworkClient::PrivateData : public IThreadObject parg.data.protocol = p; NetEvent e = { this->parent, parg }; this->recieveQueue.Push(e); + + if(this->outputEvent) + { + printf("\t(ID: %i | IP: %s | Protocol: %i) - EventType_Disconnect && EventType_ProtocolFailedToSend \n", this->ID, this->connection.GetIpAddress().c_str(), p[0].value.netShort); + } } else { @@ -120,8 +124,18 @@ struct NetworkClient::PrivateData : public IThreadObject parg.data.protocol = p; NetEvent e = { this->parent, parg }; this->recieveQueue.Push(e); + + if(this->outputEvent) + { + printf("\t(ID: %i | IP: %s | Protocol: %i) - EventType_ProtocolFailedToSend\n", this->ID, this->connection.GetIpAddress().c_str(), p[0].value.netShort); + } } } + + if(this->outputEvent) + { + printf("\t(ID: %i | IP: %s | Protocol: %i) Message sent!\n", this->ID, this->connection.GetIpAddress().c_str(), p[0].value.netShort); + } } return errorCode; @@ -236,6 +250,18 @@ struct NetworkClient::PrivateData : public IThreadObject e.args.type = parg.type; this->recieveQueue.Push(e); + + if(this->outputEvent) + { + printf("\t(ID: %i | IP: %s | Protocol: %i) Message recieved!\n", this->ID, this->connection.GetIpAddress().c_str(), protocol[0].value.netShort); + } + } + else + { + if(this->outputEvent) + { + printf("\t(ID: %i | IP: %s) Failed to unpack CustomNetProtocol!\n", this->ID, this->connection.GetIpAddress().c_str()); + } } } }; @@ -277,7 +303,6 @@ void NetworkClient::Update() NetEvent temp = this->privateData->recieveQueue.Pop(); this->DataRecieved(temp); - } } @@ -412,10 +437,11 @@ void NetworkClient::DataRecieved(NetEvent e) } } -//void NetworkClient::NetworkCallback(Oyster::Network::CustomNetProtocol& p) -//{} - std::string NetworkClient::GetIpAddress() { return this->privateData->connection.GetIpAddress(); } +void NetworkClient::OutputEventData(bool output) +{ + this->privateData->outputEvent; +} \ No newline at end of file diff --git a/Code/Network/NetworkAPI/NetworkClient.h b/Code/Network/NetworkAPI/NetworkClient.h index a7f3b0bb..dddef221 100644 --- a/Code/Network/NetworkAPI/NetworkClient.h +++ b/Code/Network/NetworkAPI/NetworkClient.h @@ -138,8 +138,21 @@ namespace Oyster */ virtual void DataRecieved(NetEvent e); + /** + * + */ std::string GetIpAddress(); + /** Dumps all activity to std::io + * + */ + void OutputEventData(bool output); + + /** Dumps all activity to std::io + * + */ + void SetOutputEventDataStream(FILE out); + private: NetworkClient(const NetworkClient& obj); NetworkClient& operator =(const NetworkClient& obj);