Added a class that client and server inherits from.
Class and server now share the same pointer i game. You are now able to start a client and a server on the same computer.
This commit is contained in:
@@ -17,9 +17,9 @@
|
||||
#include "Core/EKeyDown.h"
|
||||
#include "Core/EKeyUp.h"
|
||||
#include "Input/EInputCommand.h"
|
||||
#include "Network/Network.h"
|
||||
|
||||
|
||||
class Client
|
||||
class Client : public Network
|
||||
{
|
||||
public:
|
||||
Client();
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
#ifndef Network_h__
|
||||
#define Network_h__
|
||||
|
||||
#include "Core/World.h"
|
||||
#include "Core/EventBroker.h"
|
||||
#include "Network/Package.h"
|
||||
|
||||
class Network
|
||||
{
|
||||
public:
|
||||
Network();
|
||||
~Network();
|
||||
virtual void Start(World* m_world, EventBroker *eventBroker);
|
||||
virtual void Update();
|
||||
protected:
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -14,8 +14,9 @@
|
||||
#include "Core/World.h"
|
||||
#include "Core/EventBroker.h"
|
||||
#include "Game/ECreatePlayer.h"
|
||||
#include "Network/Network.h"
|
||||
|
||||
class Server
|
||||
class Server : public Network
|
||||
{
|
||||
public:
|
||||
Server();
|
||||
|
||||
+3
-3
@@ -21,6 +21,7 @@
|
||||
|
||||
// Network
|
||||
#include <boost/thread.hpp>
|
||||
#include "Network/Network.h"
|
||||
#include "Network/Server.h"
|
||||
#include "Network/Client.h"
|
||||
|
||||
@@ -50,9 +51,8 @@ private:
|
||||
|
||||
// Network methods
|
||||
void NetworkFunction();
|
||||
Client m_Client;
|
||||
Server m_Server;
|
||||
bool m_IsClient = false;
|
||||
Network* m_ClientOrServer;
|
||||
bool m_IsClientOrServer = false;
|
||||
|
||||
EventRelay<Game, Events::InputCommand> m_EInputCommand;
|
||||
bool debugOnInputCommand(const Events::InputCommand& e);
|
||||
|
||||
@@ -5,8 +5,8 @@ using namespace boost::asio::ip;
|
||||
|
||||
Client::Client() : m_Socket(m_IOService)
|
||||
{
|
||||
// Set up network stream
|
||||
m_ReceiverEndpoint = udp::endpoint(boost::asio::ip::address::from_string("192.168.1.6"), 13);
|
||||
// Set up network stream
|
||||
m_NextSnapshot.InputForward = "";
|
||||
m_NextSnapshot.InputRight = "";
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
#include "Network/Network.h"
|
||||
|
||||
Network::Network()
|
||||
{ }
|
||||
|
||||
Network::~Network()
|
||||
{ }
|
||||
|
||||
void Network::Start(World * m_world, EventBroker * eventBroker)
|
||||
{ }
|
||||
|
||||
void Network::Update()
|
||||
{ }
|
||||
+24
-16
@@ -20,7 +20,7 @@ Game::Game(int argc, char* argv[])
|
||||
m_Renderer = new Renderer(m_EventBroker);
|
||||
m_Renderer->SetFullscreen(m_Config->Get<bool>("Video.Fullscreen", false));
|
||||
m_Renderer->SetVSYNC(m_Config->Get<bool>("Video.VSYNC", false));
|
||||
m_Renderer->SetResolution(Rectangle::Rectangle(
|
||||
m_Renderer->SetResolution(Rectangle::Rectangle(
|
||||
0,
|
||||
0,
|
||||
m_Config->Get<int>("Video.Width", 1280),
|
||||
@@ -53,9 +53,9 @@ Game::Game(int argc, char* argv[])
|
||||
m_SystemPipeline->AddSystem<RaptorCopterSystem>();
|
||||
m_SystemPipeline->AddSystem<PlayerSystem>();
|
||||
m_SystemPipeline->AddSystem<EditorSystem>();
|
||||
// Invoke network
|
||||
if(m_Config->Get<bool>("Networking.StartNetwork", false) == true)
|
||||
boost::thread workerThread(&Game::NetworkFunction, this);
|
||||
// Invoke network
|
||||
if (m_Config->Get<bool>("Networking.StartNetwork", false) == true)
|
||||
boost::thread workerThread(&Game::NetworkFunction, this);
|
||||
m_LastTime = glfwGetTime();
|
||||
|
||||
debugInitialize();
|
||||
@@ -90,7 +90,9 @@ void Game::Tick()
|
||||
m_EventBroker->Swap();
|
||||
|
||||
// Update network
|
||||
m_IsClient ? m_Client.Update() : m_Server.Update();
|
||||
if (m_IsClientOrServer)
|
||||
m_ClientOrServer->Update();
|
||||
|
||||
|
||||
// Iterate through systems and update world!
|
||||
m_SystemPipeline->Update(m_World, dt);
|
||||
@@ -133,16 +135,22 @@ void Game::debugTick(double dt)
|
||||
}
|
||||
|
||||
void Game::NetworkFunction()
|
||||
{
|
||||
std::string inputMessage;
|
||||
std::cout << "Start client or server? (c/s)" << std::endl;
|
||||
std::cin >> inputMessage;
|
||||
if (inputMessage == "c" || inputMessage == "C") {
|
||||
m_IsClient = true;
|
||||
m_Client.Start(m_World, m_EventBroker);
|
||||
}
|
||||
if (inputMessage == "s" || inputMessage == "S") {
|
||||
m_IsClient = false;
|
||||
m_Server.Start(m_World, m_EventBroker);
|
||||
{
|
||||
std::string inputMessage;
|
||||
std::cout << "Start client or server? (c/s)" << std::endl;
|
||||
std::cin >> inputMessage;
|
||||
if (inputMessage == "c" || inputMessage == "C") {
|
||||
m_IsClientOrServer = true;
|
||||
m_ClientOrServer = new Client();
|
||||
}
|
||||
if (inputMessage == "s" || inputMessage == "S") {
|
||||
m_IsClientOrServer = true;
|
||||
m_ClientOrServer = new Server();
|
||||
}
|
||||
m_ClientOrServer->Start(m_World, m_EventBroker);
|
||||
// I don't think we are reaching this part of the code right now.
|
||||
// When server or client is done set it to false.
|
||||
m_IsClientOrServer = false;
|
||||
// Destroy it! (with fire)
|
||||
delete m_ClientOrServer;
|
||||
}
|
||||
Reference in New Issue
Block a user