You can now choose if you want to become a client or a server from the menu.
This commit is contained in:
@@ -1,14 +0,0 @@
|
||||
#ifndef Events_BecomeServer_h__
|
||||
#define Events_BecomeServer_h__
|
||||
|
||||
#include "Core/EventBroker.h"
|
||||
|
||||
namespace Events
|
||||
{
|
||||
|
||||
struct BecomeServer : public Event
|
||||
{ };
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,15 @@
|
||||
#ifndef Events_BecomeServerOrClient_h__
|
||||
#define Events_BecomeServerOrClient_h__
|
||||
|
||||
#include "Core/EventBroker.h"
|
||||
|
||||
namespace Events
|
||||
{
|
||||
|
||||
struct BecomeServer : public Event { };
|
||||
|
||||
struct BecomeClient : public Event { };
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
+3
-1
@@ -29,7 +29,7 @@
|
||||
#include "Network/Network.h"
|
||||
#include "Network/Server.h"
|
||||
#include "Network/Client.h"
|
||||
#include "Network/EBecomeServer.h"
|
||||
#include "Network/EBecomeServerOrClient.h"
|
||||
|
||||
// Sound
|
||||
#include "Sound/SoundManager.h"
|
||||
@@ -74,6 +74,8 @@ private:
|
||||
|
||||
EventRelay<Game, Events::BecomeServer> m_EBecomeServer;
|
||||
bool OnBecomeServer(const Events::BecomeServer& e);
|
||||
EventRelay<Game, Events::BecomeClient> m_EBecomeClient;
|
||||
bool OnBecomeClient(const Events::BecomeClient& e);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#include "Input/EInputCommand.h"
|
||||
#include "Network/ESearchForServers.h"
|
||||
#include "Network/EConnectRequest.h"
|
||||
#include "Network/EBecomeServer.h"
|
||||
#include "Network/EBecomeServerOrClient.h"
|
||||
|
||||
|
||||
class MainMenuSystem : public ImpureSystem
|
||||
|
||||
+27
-13
@@ -65,6 +65,8 @@ Game::Game(int argc, char* argv[])
|
||||
|
||||
// Create the core event broker
|
||||
m_EventBroker = new EventBroker();
|
||||
EVENT_SUBSCRIBE_MEMBER(m_EBecomeServer, &Game::OnBecomeServer);
|
||||
EVENT_SUBSCRIBE_MEMBER(m_EBecomeClient, &Game::OnBecomeClient);
|
||||
|
||||
// Create the renderer
|
||||
m_Renderer = new Renderer(m_EventBroker, m_Config);
|
||||
@@ -75,7 +77,7 @@ Game::Game(int argc, char* argv[])
|
||||
0,
|
||||
m_Config->Get<int>("Video.Width", 1280),
|
||||
m_Config->Get<int>("Video.Height", 720)
|
||||
));
|
||||
));
|
||||
m_Renderer->Initialize();
|
||||
//m_Renderer->Camera()->SetFOV(glm::radians(m_Config->Get<float>("Video.FOV", 90.f)));
|
||||
m_RenderFrame = new RenderFrame();
|
||||
@@ -164,8 +166,6 @@ Game::Game(int argc, char* argv[])
|
||||
m_SystemPipeline->AddSystem<EditorSystem>(updateOrderLevel, m_Renderer, m_RenderFrame);
|
||||
|
||||
m_LastTime = glfwGetTime();
|
||||
EVENT_SUBSCRIBE_MEMBER(m_EBecomeServer, &Game::OnBecomeServer);
|
||||
|
||||
}
|
||||
|
||||
Game::~Game()
|
||||
@@ -175,11 +175,12 @@ Game::~Game()
|
||||
delete m_OctreeCollision;
|
||||
delete m_OctreeTrigger;
|
||||
delete m_SoundManager;
|
||||
m_EventBroker->Unsubscribe(m_EBecomeServer);
|
||||
m_EventBroker->Unsubscribe(m_EBecomeClient);
|
||||
if (m_NetworkClient != nullptr) {
|
||||
delete m_NetworkClient;
|
||||
}
|
||||
if (m_NetworkServer != nullptr) {
|
||||
m_EventBroker->Unsubscribe(m_EBecomeServer);
|
||||
delete m_NetworkServer;
|
||||
}
|
||||
delete m_World;
|
||||
@@ -276,8 +277,7 @@ int Game::parseArgs(int argc, char* argv[])
|
||||
|
||||
bool Game::OnBecomeServer(const Events::BecomeServer& e)
|
||||
{
|
||||
//// Initialize network
|
||||
//if (m_Config->Get<bool>("Networking.StartNetwork", false)) {
|
||||
|
||||
// if (m_IsServer) {
|
||||
// m_NetworkServer = new Server(m_World, m_EventBroker, m_NetworkPort);
|
||||
// m_Renderer->SetWindowTitle(m_Renderer->WindowTitle() + " SERVER");
|
||||
@@ -286,14 +286,28 @@ bool Game::OnBecomeServer(const Events::BecomeServer& e)
|
||||
// m_NetworkClient->Connect(m_NetworkAddress, m_NetworkPort);
|
||||
// m_Renderer->SetWindowTitle(m_Renderer->WindowTitle() + " CLIENT");
|
||||
// }
|
||||
//} else {
|
||||
// // If network is disabled, pretend we're a server
|
||||
// m_IsClient = true;
|
||||
// m_IsServer = true;
|
||||
//}
|
||||
//printf("Event received LOL\n");
|
||||
//return false;
|
||||
|
||||
if (m_NetworkServer != nullptr) {
|
||||
delete m_NetworkServer;
|
||||
}
|
||||
if (m_NetworkClient != nullptr) {
|
||||
delete m_NetworkClient;
|
||||
}
|
||||
m_NetworkServer = new Server(m_World, m_EventBroker, m_NetworkPort);
|
||||
m_Renderer->SetWindowTitle(m_Renderer->WindowTitle() + " SERVER");
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Game::OnBecomeClient(const Events::BecomeClient& e)
|
||||
{
|
||||
if (m_NetworkServer != nullptr) {
|
||||
delete m_NetworkServer;
|
||||
}
|
||||
if (m_NetworkClient != nullptr) {
|
||||
delete m_NetworkClient;
|
||||
}
|
||||
m_NetworkClient = new Client(m_World, m_EventBroker, std::make_unique<MultiplayerSnapshotFilter>(m_EventBroker));
|
||||
m_NetworkClient->Connect(m_NetworkAddress, m_NetworkPort);
|
||||
m_Renderer->SetWindowTitle(m_Renderer->WindowTitle() + " CLIENT");
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -50,6 +50,7 @@ bool MainMenuSystem::OnInputCommand(const Events::InputCommand& e)
|
||||
return true;
|
||||
}
|
||||
if (e.Command == "Play" && e.Value == 1) {
|
||||
m_EventBroker->Publish(Events::BecomeClient());
|
||||
auto menus = m_World->GetComponents("Menu");
|
||||
if (menus == nullptr) {
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user