Browse Source

reset host button added to all samples

Arnis Lielturks 7 years ago
parent
commit
501fd6b7ea

+ 11 - 0
Source/Samples/54_P2PMultiplayer/P2PMultiplayer.cpp

@@ -121,6 +121,11 @@ void P2PMultplayer::CreateUI()
     marginTop = 280;
     marginTop = 280;
     hostInfo_ = CreateLabel("Host: ", IntVector2(20, marginTop));
     hostInfo_ = CreateLabel("Host: ", IntVector2(20, marginTop));
 
 
+    marginTop = 340;
+    CreateLabel("Give the host role to other peers", IntVector2(20, marginTop));
+    marginTop = 360;
+    resetHost_ = CreateButton("Reset host", 240, IntVector2(20, marginTop));
+
     // No viewports or scene is defined. However, the default zone's fog color controls the fill color
     // No viewports or scene is defined. However, the default zone's fog color controls the fill color
     GetSubsystem<Renderer>()->GetDefaultZone()->SetFogColor(Color(0.0f, 0.0f, 0.1f));
     GetSubsystem<Renderer>()->GetDefaultZone()->SetFogColor(Color(0.0f, 0.0f, 0.1f));
 }
 }
@@ -146,6 +151,7 @@ void P2PMultplayer::SubscribeToEvents()
     SubscribeToEvent(saveNatSettingsButton_, "Released", URHO3D_HANDLER(P2PMultplayer, HandleSaveNatSettings));
     SubscribeToEvent(saveNatSettingsButton_, "Released", URHO3D_HANDLER(P2PMultplayer, HandleSaveNatSettings));
     SubscribeToEvent(startServerButton_, "Released", URHO3D_HANDLER(P2PMultplayer, HandleStartServer));
     SubscribeToEvent(startServerButton_, "Released", URHO3D_HANDLER(P2PMultplayer, HandleStartServer));
     SubscribeToEvent(connectButton_, "Released", URHO3D_HANDLER(P2PMultplayer, HandleConnect));
     SubscribeToEvent(connectButton_, "Released", URHO3D_HANDLER(P2PMultplayer, HandleConnect));
+    SubscribeToEvent(resetHost_, "Released", URHO3D_HANDLER(P2PMultplayer, HandleResetHost));
 }
 }
 
 
 Button* P2PMultplayer::CreateButton(const String& text, int width, IntVector2 position)
 Button* P2PMultplayer::CreateButton(const String& text, int width, IntVector2 position)
@@ -289,4 +295,9 @@ void P2PMultplayer::HandleUpdate(StringHash eventType, VariantMap& eventData)
         updateTimer_.Reset();
         updateTimer_.Reset();
         UpdateInfo();
         UpdateInfo();
     }
     }
+}
+
+void P2PMultplayer::HandleResetHost(StringHash eventType, VariantMap& eventData)
+{
+    GetSubsystem<Network>()->ResetHost();
 }
 }

+ 4 - 0
Source/Samples/54_P2PMultiplayer/P2PMultiplayer.h

@@ -103,6 +103,8 @@ private:
     void HandleUpdate(StringHash eventType, VariantMap& eventData);
     void HandleUpdate(StringHash eventType, VariantMap& eventData);
     /// Update peer count label
     /// Update peer count label
     void UpdateInfo();
     void UpdateInfo();
+    /// Handle update
+    void HandleResetHost(StringHash eventType, VariantMap& eventData);
 
 
     /// NAT master server address
     /// NAT master server address
     SharedPtr<LineEdit> natServerAddress_;
     SharedPtr<LineEdit> natServerAddress_;
@@ -124,6 +126,8 @@ private:
     SharedPtr<Text> myInfo_;
     SharedPtr<Text> myInfo_;
     /// Host GUID
     /// Host GUID
     SharedPtr<Text> hostInfo_;
     SharedPtr<Text> hostInfo_;
+    /// Reset host button
+    SharedPtr<Button> resetHost_;
     /// Log messages
     /// Log messages
     Vector<String> logHistory_;
     Vector<String> logHistory_;
     /// Created server GUID field
     /// Created server GUID field

+ 1 - 1
Source/Samples/CMakeLists.txt

@@ -58,4 +58,4 @@ foreach (DIR ${DIRS})
     if (DIR)
     if (DIR)
         add_sample_subdirectory (${DIR})
         add_sample_subdirectory (${DIR})
     endif ()
     endif ()
-endforeach ()
+endforeach ()

+ 1 - 1
Source/Urho3D/AngelScript/NetworkAPI.cpp

@@ -182,7 +182,7 @@ void RegisterNetwork(asIScriptEngine* engine)
     engine->RegisterObjectMethod("Network", "const String get_hostAddress()", asMETHOD(Network, GetHostAddress), asCALL_THISCALL);
     engine->RegisterObjectMethod("Network", "const String get_hostAddress()", asMETHOD(Network, GetHostAddress), asCALL_THISCALL);
     engine->RegisterObjectMethod("Network", "void SetReady(bool)", asMETHOD(Network, SetReady), asCALL_THISCALL);
     engine->RegisterObjectMethod("Network", "void SetReady(bool)", asMETHOD(Network, SetReady), asCALL_THISCALL);
     engine->RegisterObjectMethod("Network", "bool GetReady(bool)", asMETHOD(Network, GetReady), asCALL_THISCALL);
     engine->RegisterObjectMethod("Network", "bool GetReady(bool)", asMETHOD(Network, GetReady), asCALL_THISCALL);
-    engine->RegisterObjectMethod("Network", "void ResetHost(bool)", asMETHOD(Network, ResetHost), asCALL_THISCALL);
+    engine->RegisterObjectMethod("Network", "void ResetHost()", asMETHOD(Network, ResetHost), asCALL_THISCALL);
     engine->RegisterObjectMethod("Network", "void SetNATAutoReconnect(bool)", asMETHOD(Network, SetNATAutoReconnect), asCALL_THISCALL);
     engine->RegisterObjectMethod("Network", "void SetNATAutoReconnect(bool)", asMETHOD(Network, SetNATAutoReconnect), asCALL_THISCALL);
     engine->RegisterObjectMethod("Network", "bool get_natAutoRecconect() const", asMETHOD(Network, GetNATAutoReconnect), asCALL_THISCALL);
     engine->RegisterObjectMethod("Network", "bool get_natAutoRecconect() const", asMETHOD(Network, GetNATAutoReconnect), asCALL_THISCALL);
     engine->RegisterObjectMethod("Network", "void SetMode(NetworkMode, bool = false)", asMETHOD(Network, SetMode), asCALL_THISCALL);
     engine->RegisterObjectMethod("Network", "void SetMode(NetworkMode, bool = false)", asMETHOD(Network, SetMode), asCALL_THISCALL);

+ 1 - 1
bin/Data/CommandLine.txt

@@ -1 +1 @@
-Scripts/NinjaSnowWar.as
+LuaScripts/54_P2PMultiplayer.lua -w -monitor 2

+ 11 - 0
bin/Data/LuaScripts/54_P2PMultiplayer.lua

@@ -13,6 +13,7 @@ local startServerButton = nil
 
 
 local serverGuid = nil
 local serverGuid = nil
 local connectButton = nil
 local connectButton = nil
+local resetHost = nil
 
 
 local logHistory = {}
 local logHistory = {}
 local logHistoryText = nil
 local logHistoryText = nil
@@ -82,6 +83,11 @@ function CreateUI()
     marginTop = 280;
     marginTop = 280;
     hostInfo = CreateLabel("Host: ", IntVector2(20, marginTop));
     hostInfo = CreateLabel("Host: ", IntVector2(20, marginTop));
 
 
+    marginTop = 340;
+    CreateLabel("Give the host role to other peers", IntVector2(20, marginTop));
+    marginTop = 360;
+    resetHost = CreateButton("Reset host", 240, IntVector2(20, marginTop));
+
     local size = 20
     local size = 20
     for i = 1, size do
     for i = 1, size do
         table.insert(logHistory, "")
         table.insert(logHistory, "")
@@ -112,6 +118,7 @@ function SubscribeToEvents()
     SubscribeToEvent(saveNatSettingsButton, "Released", "HandleSaveNatSettings");
     SubscribeToEvent(saveNatSettingsButton, "Released", "HandleSaveNatSettings");
     SubscribeToEvent(startServerButton, "Released", "HandleStartServer");
     SubscribeToEvent(startServerButton, "Released", "HandleStartServer");
     SubscribeToEvent(connectButton, "Released", "HandleConnect");
     SubscribeToEvent(connectButton, "Released", "HandleConnect");
+    SubscribeToEvent(resetHost, "Released", "HandleResetHost");
 end
 end
 
 
 function CreateButton(text, width, position)
 function CreateButton(text, width, position)
@@ -265,6 +272,10 @@ function HandleUpdate(eventType, eventData)
     end
     end
 end
 end
 
 
+function HandleResetHost(eventType, eventData)
+    network:ResetHost();
+end
+
 -- Create XML patch instructions for screen joystick layout specific to this sample app
 -- Create XML patch instructions for screen joystick layout specific to this sample app
 function GetScreenJoystickPatchString()
 function GetScreenJoystickPatchString()
     return
     return

+ 12 - 0
bin/Data/Scripts/54_P2PMultiplayer.as

@@ -14,6 +14,7 @@ Button@ startServerButton;
 
 
 LineEdit@ serverGuid;
 LineEdit@ serverGuid;
 Button@ connectButton;
 Button@ connectButton;
+Button@ resetHost;
 
 
 Text@ logHistoryText;
 Text@ logHistoryText;
 Array<String> logHistory;
 Array<String> logHistory;
@@ -82,6 +83,11 @@ void CreateText()
     myInfo = CreateLabel("My GUID:", IntVector2(20, marginTop));
     myInfo = CreateLabel("My GUID:", IntVector2(20, marginTop));
     marginTop = 280;
     marginTop = 280;
     hostInfo = CreateLabel("Host:", IntVector2(20, marginTop));
     hostInfo = CreateLabel("Host:", IntVector2(20, marginTop));
+
+    marginTop = 340;
+    CreateLabel("Give the host role to other peers", IntVector2(20, marginTop));
+    marginTop = 360;
+    resetHost = CreateButton("Reset host", 240, IntVector2(20, marginTop));
 }
 }
 
 
 void SubscribeToEvents()
 void SubscribeToEvents()
@@ -105,6 +111,7 @@ void SubscribeToEvents()
     SubscribeToEvent(saveNatSettingsButton, "Released", "HandleSaveNatSettings");
     SubscribeToEvent(saveNatSettingsButton, "Released", "HandleSaveNatSettings");
     SubscribeToEvent(startServerButton, "Released", "HandleStartServer");
     SubscribeToEvent(startServerButton, "Released", "HandleStartServer");
     SubscribeToEvent(connectButton, "Released", "HandleConnect");
     SubscribeToEvent(connectButton, "Released", "HandleConnect");
+    SubscribeToEvent(resetHost, "Released", "HandleResetHost");
 }
 }
 
 
 Text@ CreateLabel(const String&in text, IntVector2 pos)
 Text@ CreateLabel(const String&in text, IntVector2 pos)
@@ -248,6 +255,11 @@ void HandleUpdate(StringHash eventType, VariantMap& eventData)
     }
     }
 }
 }
 
 
+void HandleResetHost(StringHash eventType, VariantMap& eventData)
+{
+    network.ResetHost();
+}
+
 // Create XML patch instructions for screen joystick layout specific to this sample app
 // Create XML patch instructions for screen joystick layout specific to this sample app
 String patchInstructions =
 String patchInstructions =
     "<patch>" +
     "<patch>" +