Merge remote-tracking branch 'origin/GameServer' into GameClient
This commit is contained in:
commit
f2cbbfcf69
|
@ -54,6 +54,7 @@ IObjectData* Game::LevelData::GetObjectAt(int ID) const
|
|||
|
||||
void Game::LevelData::GetAllDynamicObjects(Utility::DynamicMemory::DynamicArray<IObjectData*>& mem) const
|
||||
{
|
||||
mem.Resize(level->dynamicObjects.Size());
|
||||
for(int i = 0; i < level->dynamicObjects.Size(); i++)
|
||||
{
|
||||
mem[i] = level->dynamicObjects[i];
|
||||
|
|
|
@ -17,6 +17,13 @@ namespace DanBias
|
|||
*/
|
||||
class GameClient
|
||||
{
|
||||
public:
|
||||
enum ClientState
|
||||
{
|
||||
ClientState_CreatingGame,
|
||||
ClientState_Ready,
|
||||
};
|
||||
|
||||
public:
|
||||
GameClient(Utility::DynamicMemory::SmartPointer<Oyster::Network::NetworkClient> nwClient);
|
||||
virtual~GameClient();
|
||||
|
@ -33,6 +40,7 @@ namespace DanBias
|
|||
inline bool IsReady() const { return this->isReady; }
|
||||
inline GameLogic::IPlayerData* GetPlayer() const { return this->player; }
|
||||
Oyster::Network::NetClient GetClient() const { return this->client; }
|
||||
ClientState GetState() const { return this->state; }
|
||||
|
||||
|
||||
void SetPlayer(GameLogic::IPlayerData* player);
|
||||
|
@ -40,6 +48,7 @@ namespace DanBias
|
|||
void SetAlias(std::wstring alias);
|
||||
void SetCharacter(std::wstring character);
|
||||
void SetSinceLastResponse(float seconds);
|
||||
void SetState(ClientState state);
|
||||
|
||||
GameLogic::IPlayerData* ReleasePlayer();
|
||||
Oyster::Network::NetClient ReleaseClient();
|
||||
|
@ -50,13 +59,15 @@ namespace DanBias
|
|||
|
||||
private:
|
||||
GameLogic::IPlayerData* player;
|
||||
Utility::DynamicMemory::SmartPointer<Oyster::Network::NetworkClient> client;
|
||||
Oyster::Network::NetClient client;
|
||||
|
||||
bool isReady;
|
||||
float secondsSinceLastResponse;
|
||||
|
||||
std::wstring alias;
|
||||
std::wstring character;
|
||||
|
||||
ClientState state;
|
||||
};
|
||||
}//End namespace DanBias
|
||||
|
||||
|
|
|
@ -58,6 +58,9 @@ namespace DanBias
|
|||
void LobbyReady(GameLogic::Protocol_LobbyClientReadyState& p, Oyster::Network::NetworkClient* c); //id = protocol_Lobby_ClientReadyState:
|
||||
void LobbyQuerryGameData(GameLogic::Protocol_QuerryGameType& p, Oyster::Network::NetworkClient* c); //id = protocol_Lobby_QuerryGameType:
|
||||
|
||||
private:
|
||||
int FindClient(Oyster::Network::NetworkClient* c);
|
||||
|
||||
private:
|
||||
void ClientEventCallback(Oyster::Network::NetEvent<Oyster::Network::NetworkClient*, Oyster::Network::NetworkClient::ClientEventArgs> e) override;
|
||||
void ClientConnectedEvent(Utility::DynamicMemory::SmartPointer<Oyster::Network::NetworkClient> client) override;
|
||||
|
|
|
@ -50,6 +50,10 @@ void GameClient::SetCharacter(std::wstring character)
|
|||
{
|
||||
this->character = character;
|
||||
}
|
||||
void GameClient::SetState(ClientState state)
|
||||
{
|
||||
this->state = state;
|
||||
}
|
||||
|
||||
|
||||
void GameClient::SetOwner(Oyster::Network::NetworkSession* owner)
|
||||
|
@ -58,7 +62,12 @@ void GameClient::SetOwner(Oyster::Network::NetworkSession* owner)
|
|||
}
|
||||
void GameClient::UpdateClient()
|
||||
{
|
||||
switch (this->state)
|
||||
{
|
||||
case ClientState_Ready:
|
||||
this->client->Update();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ GameLobby::GameLobby()
|
|||
{ }
|
||||
GameLobby::~GameLobby()
|
||||
{
|
||||
this->clients.Clear();
|
||||
this->gClients.Clear();
|
||||
}
|
||||
void GameLobby::Release()
|
||||
{
|
||||
|
@ -26,11 +26,11 @@ void GameLobby::Release()
|
|||
}
|
||||
void GameLobby::Update()
|
||||
{
|
||||
for (unsigned int i = 0; i < this->clients.Size(); i++)
|
||||
for (unsigned int i = 0; i < this->gClients.Size(); i++)
|
||||
{
|
||||
if(this->clients[i])
|
||||
if(this->gClients[i])
|
||||
{
|
||||
this->clients[i]->Update();
|
||||
this->gClients[i]->GetClient()->Update();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -119,7 +119,7 @@ void GameLobby::ClientEventCallback(NetEvent<NetworkClient*, NetworkClient::Clie
|
|||
break;
|
||||
case NetworkClient::ClientEventArgs::EventType_ProtocolFailedToSend:
|
||||
printf("\t(%i : %s) - EventType_ProtocolFailedToSend\n", e.sender->GetID(), e.sender->GetIpAddress().c_str());
|
||||
e.sender->Disconnect();
|
||||
//e.sender->Disconnect();
|
||||
//this->readyList.Remove(e.sender);
|
||||
//this->gClients.Remove(e.sender);
|
||||
break;
|
||||
|
@ -184,7 +184,9 @@ void GameLobby::ProcessClients()
|
|||
}
|
||||
bool GameLobby::Attach(Utility::DynamicMemory::SmartPointer<Oyster::Network::NetworkClient> client)
|
||||
{
|
||||
if(this->clientCount = this->description.maxClients) return false;
|
||||
if(this->clientCount == this->description.maxClients) return false;
|
||||
|
||||
client->SetOwner(this);
|
||||
|
||||
bool added = false;
|
||||
for (unsigned int i = 0; i < this->gClients.Size(); i++)
|
||||
|
|
|
@ -40,26 +40,46 @@ void GameLobby::GeneralStatus(GameLogic::Protocol_General_Status& p, Oyster::Net
|
|||
{
|
||||
case Protocol_General_Status::States_ready:
|
||||
{
|
||||
|
||||
int temp = FindClient(c);
|
||||
if(temp != -1 )
|
||||
{
|
||||
switch (this->gClients[temp]->GetState())
|
||||
{
|
||||
case GameClient::ClientState_CreatingGame:
|
||||
{
|
||||
this->gameSession.Join(this->gClients[temp]);
|
||||
this->gClients[temp] = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
c->Disconnect();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case Protocol_General_Status::States_idle:
|
||||
{
|
||||
|
||||
}
|
||||
break;
|
||||
case Protocol_General_Status::States_leave:
|
||||
break;
|
||||
case Protocol_General_Status::States_disconected:
|
||||
{
|
||||
Detach(c)->Disconnect();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
void GameLobby::GeneralText(GameLogic::Protocol_General_Text& p, Oyster::Network::NetworkClient* c)
|
||||
{
|
||||
for (unsigned int i = 0; i < this->clients.Size(); i++)
|
||||
for (unsigned int i = 0; i < this->gClients.Size(); i++)
|
||||
{
|
||||
if(this->clients[i])
|
||||
if(this->gClients[i])
|
||||
{
|
||||
this->clients[i]->Send(p);
|
||||
this->gClients[i]->GetClient()->Send(p);
|
||||
}
|
||||
}
|
||||
printf(p.text.c_str());
|
||||
|
@ -69,9 +89,9 @@ void GameLobby::LobbyStartGame(GameLogic::Protocol_LobbyStartGame& p, Oyster::Ne
|
|||
if(this->sessionOwner->GetClient()->GetID() == c->GetID())
|
||||
{
|
||||
//Send countdown timer before lobby shuts down
|
||||
for (unsigned int i = 0; i < this->clients.Size(); i++)
|
||||
for (unsigned int i = 0; i < this->gClients.Size(); i++)
|
||||
{
|
||||
this->clients[i]->Send(Protocol_LobbyStartGame(3.0f));
|
||||
this->gClients[i]->GetClient()->Send(Protocol_LobbyStartGame(3.0f));
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -118,32 +138,41 @@ void GameLobby::LobbyQuerryGameData(GameLogic::Protocol_QuerryGameType& p, Oyste
|
|||
{
|
||||
if(this->gameSession)
|
||||
{
|
||||
gClient temp;
|
||||
bool found = false;
|
||||
|
||||
//find client in waiting list
|
||||
for (unsigned int i = 0; !found && i < this->clients.Size(); i++)
|
||||
{
|
||||
if(this->gClients[i]->GetClient()->GetID() == c->GetID())
|
||||
{
|
||||
temp = this->gClients[i];
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
int temp = FindClient(c);
|
||||
|
||||
//Something is wrong
|
||||
if(!found)
|
||||
if(temp == -1)
|
||||
{
|
||||
c->Disconnect();
|
||||
}
|
||||
else
|
||||
{
|
||||
//Send game data
|
||||
this->gameSession.Join(temp);
|
||||
Protocol_LobbyCreateGame lcg((char)1, (char)0, Utility::String::WStringToString(this->description.mapName, std::string()));
|
||||
c->Send(lcg);
|
||||
this->gClients[temp]->SetState(GameClient::ClientState_CreatingGame);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
// Nothing.-
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int GameLobby::FindClient(Oyster::Network::NetworkClient* c)
|
||||
{
|
||||
int temp = -1;
|
||||
|
||||
//find client in waiting list
|
||||
for (unsigned int i = 0; i < this->gClients.Size(); i++)
|
||||
{
|
||||
if(this->gClients[i]->GetClient()->GetID() == c->GetID())
|
||||
{
|
||||
temp = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return temp;
|
||||
}
|
|
@ -45,7 +45,7 @@ using namespace DanBias;
|
|||
//Find the idiot
|
||||
for (unsigned int i = 0; i < this->gClients.Size(); i++)
|
||||
{
|
||||
if(this->gClients[i]->Equals(e.sender))
|
||||
if(this->gClients[i] && this->gClients[i]->Equals(e.sender))
|
||||
{
|
||||
temp = i;
|
||||
}
|
||||
|
@ -78,7 +78,7 @@ using namespace DanBias;
|
|||
{
|
||||
for (unsigned int i = 0; i < this->gClients.Size(); i++)
|
||||
{
|
||||
if(this->gClients[i])
|
||||
if(this->gClients[i] )
|
||||
{
|
||||
this->gClients[i]->UpdateClient();
|
||||
}
|
||||
|
|
|
@ -200,17 +200,11 @@ bool GameSession::Join(gClient gameClient)
|
|||
gameClient->SetPlayer(playerData);
|
||||
NetworkClient* nwClient = gameClient->GetClient();
|
||||
|
||||
// Send the level information
|
||||
{
|
||||
Protocol_LobbyCreateGame lcg((char)1, (char)0, Utility::String::WStringToString(this->description.mapName, std::string()));
|
||||
nwClient->Send(lcg);
|
||||
}
|
||||
|
||||
// Send the player data only
|
||||
{
|
||||
Protocol_ObjectCreatePlayer oc( playerData->GetPosition(), playerData->GetRotation(), playerData->GetScale(),
|
||||
playerData->GetID(), true, playerData->GetTeamID(),
|
||||
/*nwClient->GetAlias()*/"", /*playerData->GetMesh()*/"char_white.dan");
|
||||
/*nwClient->GetAlias()*/"Unknown", /*playerData->GetMesh()*/"char_white.dan");
|
||||
nwClient->Send(oc);
|
||||
}
|
||||
|
||||
|
@ -223,7 +217,7 @@ bool GameSession::Join(gClient gameClient)
|
|||
IPlayerData* temp = this->gClients[i]->GetPlayer();
|
||||
Protocol_ObjectCreatePlayer oc( temp->GetPosition(), temp->GetRotation(), temp->GetScale(),
|
||||
temp->GetID(), false, temp->GetTeamID(),
|
||||
/*nwClient->GetAlias()*/"", /*playerData->GetMesh()*/"char_white.dan");
|
||||
/*nwClient->GetAlias()*/"Unknown", /*playerData->GetMesh()*/"char_white.dan");
|
||||
nwClient->Send(oc);
|
||||
}
|
||||
}
|
||||
|
@ -259,6 +253,8 @@ bool GameSession::Join(gClient gameClient)
|
|||
}
|
||||
}
|
||||
|
||||
gameClient->SetState(GameClient::ClientState_Ready);
|
||||
|
||||
return added;
|
||||
}
|
||||
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
this.forceStart = new System.Windows.Forms.CheckBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.label4 = 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();
|
||||
this.buttonStartGame = new System.Windows.Forms.Button();
|
||||
|
@ -50,13 +51,14 @@
|
|||
this.ServerInfoTextArea = new System.Windows.Forms.RichTextBox();
|
||||
this.splitter1 = new System.Windows.Forms.Splitter();
|
||||
this.clientInfoBox = new System.Windows.Forms.ListBox();
|
||||
this.labelClientsConnected = new System.Windows.Forms.Label();
|
||||
this.panel_CommanArea = new System.Windows.Forms.Panel();
|
||||
((System.ComponentModel.ISupportInitialize)(this.listenPort)).BeginInit();
|
||||
this.panel_serverOptions.SuspendLayout();
|
||||
this.panel_commands.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.timeLimit)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.nrOfClients)).BeginInit();
|
||||
this.panel_clientArea.SuspendLayout();
|
||||
this.panel_CommanArea.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// serverToggle
|
||||
|
@ -135,9 +137,10 @@
|
|||
this.panel_serverOptions.Controls.Add(this.label_listenPort);
|
||||
this.panel_serverOptions.Controls.Add(this.lanBroadcast);
|
||||
this.panel_serverOptions.Controls.Add(this.label_serverName);
|
||||
this.panel_serverOptions.Location = new System.Drawing.Point(12, 12);
|
||||
this.panel_serverOptions.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.panel_serverOptions.Location = new System.Drawing.Point(0, 0);
|
||||
this.panel_serverOptions.Name = "panel_serverOptions";
|
||||
this.panel_serverOptions.Size = new System.Drawing.Size(183, 141);
|
||||
this.panel_serverOptions.Size = new System.Drawing.Size(200, 141);
|
||||
this.panel_serverOptions.TabIndex = 6;
|
||||
//
|
||||
// panel_commands
|
||||
|
@ -153,19 +156,19 @@
|
|||
this.panel_commands.Controls.Add(this.label1);
|
||||
this.panel_commands.Controls.Add(this.nrOfClients);
|
||||
this.panel_commands.Controls.Add(this.buttonStartGame);
|
||||
this.panel_commands.Location = new System.Drawing.Point(12, 159);
|
||||
this.panel_commands.Location = new System.Drawing.Point(3, 150);
|
||||
this.panel_commands.Name = "panel_commands";
|
||||
this.panel_commands.Size = new System.Drawing.Size(183, 202);
|
||||
this.panel_commands.Size = new System.Drawing.Size(191, 202);
|
||||
this.panel_commands.TabIndex = 7;
|
||||
this.panel_commands.Visible = false;
|
||||
//
|
||||
// mapName
|
||||
//
|
||||
this.mapName.Location = new System.Drawing.Point(78, 7);
|
||||
this.mapName.Location = new System.Drawing.Point(75, 10);
|
||||
this.mapName.Name = "mapName";
|
||||
this.mapName.Size = new System.Drawing.Size(98, 20);
|
||||
this.mapName.Size = new System.Drawing.Size(113, 20);
|
||||
this.mapName.TabIndex = 12;
|
||||
this.mapName.Text = "Unknown";
|
||||
this.mapName.Text = "2ofAll_updated.bias";
|
||||
//
|
||||
// timeLimit
|
||||
//
|
||||
|
@ -194,7 +197,7 @@
|
|||
"Team death-match"});
|
||||
this.gameModes.Location = new System.Drawing.Point(78, 66);
|
||||
this.gameModes.Name = "gameModes";
|
||||
this.gameModes.Size = new System.Drawing.Size(99, 21);
|
||||
this.gameModes.Size = new System.Drawing.Size(110, 21);
|
||||
this.gameModes.TabIndex = 10;
|
||||
//
|
||||
// label3
|
||||
|
@ -236,6 +239,15 @@
|
|||
this.label4.TabIndex = 8;
|
||||
this.label4.Text = "Map name";
|
||||
//
|
||||
// labelClientsConnected
|
||||
//
|
||||
this.labelClientsConnected.AutoSize = true;
|
||||
this.labelClientsConnected.Location = new System.Drawing.Point(9, 149);
|
||||
this.labelClientsConnected.Name = "labelClientsConnected";
|
||||
this.labelClientsConnected.Size = new System.Drawing.Size(104, 13);
|
||||
this.labelClientsConnected.TabIndex = 8;
|
||||
this.labelClientsConnected.Text = "Clients connected: 0";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
|
@ -282,9 +294,10 @@
|
|||
this.panel_clientArea.Controls.Add(this.ServerInfoTextArea);
|
||||
this.panel_clientArea.Controls.Add(this.splitter1);
|
||||
this.panel_clientArea.Controls.Add(this.clientInfoBox);
|
||||
this.panel_clientArea.Location = new System.Drawing.Point(202, 12);
|
||||
this.panel_clientArea.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panel_clientArea.Location = new System.Drawing.Point(200, 0);
|
||||
this.panel_clientArea.Name = "panel_clientArea";
|
||||
this.panel_clientArea.Size = new System.Drawing.Size(303, 349);
|
||||
this.panel_clientArea.Size = new System.Drawing.Size(535, 616);
|
||||
this.panel_clientArea.TabIndex = 8;
|
||||
//
|
||||
// ServerInfoTextArea
|
||||
|
@ -297,7 +310,7 @@
|
|||
this.ServerInfoTextArea.Location = new System.Drawing.Point(0, 152);
|
||||
this.ServerInfoTextArea.Name = "ServerInfoTextArea";
|
||||
this.ServerInfoTextArea.ReadOnly = true;
|
||||
this.ServerInfoTextArea.Size = new System.Drawing.Size(303, 197);
|
||||
this.ServerInfoTextArea.Size = new System.Drawing.Size(535, 464);
|
||||
this.ServerInfoTextArea.TabIndex = 1;
|
||||
this.ServerInfoTextArea.Text = "";
|
||||
//
|
||||
|
@ -306,7 +319,7 @@
|
|||
this.splitter1.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.splitter1.Location = new System.Drawing.Point(0, 147);
|
||||
this.splitter1.Name = "splitter1";
|
||||
this.splitter1.Size = new System.Drawing.Size(303, 5);
|
||||
this.splitter1.Size = new System.Drawing.Size(535, 5);
|
||||
this.splitter1.TabIndex = 2;
|
||||
this.splitter1.TabStop = false;
|
||||
//
|
||||
|
@ -316,26 +329,26 @@
|
|||
this.clientInfoBox.FormattingEnabled = true;
|
||||
this.clientInfoBox.Location = new System.Drawing.Point(0, 0);
|
||||
this.clientInfoBox.Name = "clientInfoBox";
|
||||
this.clientInfoBox.Size = new System.Drawing.Size(303, 147);
|
||||
this.clientInfoBox.Size = new System.Drawing.Size(535, 147);
|
||||
this.clientInfoBox.TabIndex = 0;
|
||||
//
|
||||
// labelClientsConnected
|
||||
// panel_CommanArea
|
||||
//
|
||||
this.labelClientsConnected.AutoSize = true;
|
||||
this.labelClientsConnected.Location = new System.Drawing.Point(9, 149);
|
||||
this.labelClientsConnected.Name = "labelClientsConnected";
|
||||
this.labelClientsConnected.Size = new System.Drawing.Size(104, 13);
|
||||
this.labelClientsConnected.TabIndex = 8;
|
||||
this.labelClientsConnected.Text = "Clients connected: 0";
|
||||
this.panel_CommanArea.Controls.Add(this.panel_commands);
|
||||
this.panel_CommanArea.Controls.Add(this.panel_serverOptions);
|
||||
this.panel_CommanArea.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
this.panel_CommanArea.Location = new System.Drawing.Point(0, 0);
|
||||
this.panel_CommanArea.Name = "panel_CommanArea";
|
||||
this.panel_CommanArea.Size = new System.Drawing.Size(200, 616);
|
||||
this.panel_CommanArea.TabIndex = 9;
|
||||
//
|
||||
// Form1
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(517, 373);
|
||||
this.ClientSize = new System.Drawing.Size(735, 616);
|
||||
this.Controls.Add(this.panel_clientArea);
|
||||
this.Controls.Add(this.panel_commands);
|
||||
this.Controls.Add(this.panel_serverOptions);
|
||||
this.Controls.Add(this.panel_CommanArea);
|
||||
this.Name = "Form1";
|
||||
this.Text = "Form1";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormClosingEvent);
|
||||
|
@ -347,6 +360,7 @@
|
|||
((System.ComponentModel.ISupportInitialize)(this.timeLimit)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.nrOfClients)).EndInit();
|
||||
this.panel_clientArea.ResumeLayout(false);
|
||||
this.panel_CommanArea.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
@ -376,6 +390,7 @@
|
|||
private System.Windows.Forms.TextBox mapName;
|
||||
private System.Windows.Forms.CheckBox forceStart;
|
||||
private System.Windows.Forms.Label labelClientsConnected;
|
||||
private System.Windows.Forms.Panel panel_CommanArea;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -9,6 +9,8 @@ using System.Threading.Tasks;
|
|||
using System.Windows.Forms;
|
||||
using System.Windows.Interop;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading;
|
||||
using System.Timers;
|
||||
|
||||
namespace StandAloneLauncher
|
||||
{
|
||||
|
@ -30,13 +32,12 @@ namespace StandAloneLauncher
|
|||
|
||||
return true;
|
||||
}
|
||||
|
||||
public void Run()
|
||||
{
|
||||
while (this.Created)
|
||||
{
|
||||
Application.DoEvents();
|
||||
|
||||
//Do some stuff
|
||||
this.gameServer.ServerUpdate();
|
||||
this.labelClientsConnected.Text = "Clients connected: " + this.gameServer.GetClientsConnectedCount().ToString();
|
||||
}
|
||||
|
@ -88,8 +89,9 @@ namespace StandAloneLauncher
|
|||
{
|
||||
//this.gameServer.GameSetGameMode(this.gameModes.SelectedText);
|
||||
this.gameServer.GameSetGameTime((int)this.timeLimit.Value);
|
||||
//this.gameServer.GameSetMapId(0);
|
||||
this.gameServer.GameSetMapName(this.mapName.Text);
|
||||
this.gameServer.GameSetMaxClients((int)this.nrOfClients.Value);
|
||||
|
||||
if (!this.gameServer.GameStart( this.forceStart.Checked ))
|
||||
{
|
||||
this.ServerInfoTextArea.AppendText(DateTime.Now.ToUniversalTime() + "\n\t" + "Failed to start the game session!\n");
|
||||
|
|
|
@ -52,6 +52,8 @@ OHRESOURCE OysterResource::LoadResource(const wchar_t* filename, ResourceType ty
|
|||
}
|
||||
}
|
||||
|
||||
if(!resourceData) return 0;
|
||||
|
||||
return resourceData->GetResourceHandle();
|
||||
}
|
||||
OHRESOURCE OysterResource::LoadResource(const wchar_t filename[], CustomLoadFunction loadFnc, int customId, bool force)
|
||||
|
|
|
@ -40,12 +40,13 @@ CustomNetProtocol::CustomNetProtocol()
|
|||
{
|
||||
this->privateData = new PrivateData();
|
||||
}
|
||||
CustomNetProtocol::CustomNetProtocol(CustomNetProtocol& o)
|
||||
CustomNetProtocol::CustomNetProtocol(const CustomNetProtocol& o)
|
||||
{
|
||||
this->privateData = new PrivateData();
|
||||
this->privateData->attributes = o.privateData->attributes;
|
||||
}
|
||||
const CustomNetProtocol& CustomNetProtocol::operator=(CustomNetProtocol& o)
|
||||
|
||||
CustomNetProtocol& CustomNetProtocol::operator=(const CustomNetProtocol& o)
|
||||
{
|
||||
if(this->privateData)
|
||||
{
|
||||
|
@ -56,11 +57,29 @@ const CustomNetProtocol& CustomNetProtocol::operator=(CustomNetProtocol& o)
|
|||
this->privateData->attributes = o.privateData->attributes;
|
||||
return *this;
|
||||
}
|
||||
|
||||
CustomNetProtocol::~CustomNetProtocol()
|
||||
{
|
||||
delete this->privateData;
|
||||
this->privateData = 0;
|
||||
}
|
||||
|
||||
const NetAttributeContainer& CustomNetProtocol::operator[](int ID) const
|
||||
{
|
||||
//if(!this->privateData) this->privateData = new PrivateData();
|
||||
if((unsigned int)ID >= this->privateData->attributes.Size())
|
||||
{
|
||||
NetAttributeContainer temp;
|
||||
|
||||
temp.type = NetAttributeType_UNKNOWN;
|
||||
memset(&temp.value, 0, sizeof(NetAttributeValue));
|
||||
|
||||
this->privateData->attributes.Push(ID, temp);
|
||||
}
|
||||
|
||||
return this->privateData->attributes[ID];
|
||||
}
|
||||
|
||||
NetAttributeContainer& CustomNetProtocol::operator[](int ID)
|
||||
{
|
||||
//if(!this->privateData) this->privateData = new PrivateData();
|
||||
|
|
|
@ -130,10 +130,12 @@ namespace Oyster
|
|||
public:
|
||||
CustomNetProtocol();
|
||||
~CustomNetProtocol();
|
||||
CustomNetProtocol(CustomNetProtocol& o);
|
||||
const CustomNetProtocol& operator=(CustomNetProtocol& o);
|
||||
CustomNetProtocol( const CustomNetProtocol& o);
|
||||
CustomNetProtocol& operator=(const CustomNetProtocol& o);
|
||||
|
||||
const NetAttributeContainer& operator[](int ID) const;
|
||||
NetAttributeContainer& operator[](int ID);
|
||||
|
||||
void Set(int id, Oyster::Network::NetAttributeValue val, Oyster::Network::NetAttributeType type);
|
||||
void Set(int ID, std::string s);
|
||||
const NetAttributeContainer& Get(int id);
|
||||
|
|
|
@ -96,6 +96,10 @@ struct NetworkClient::PrivateData : public IThreadObject
|
|||
//printf("\t(%i)\n", this->sendQueue.Size());
|
||||
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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue