Skip to content

Commit

Permalink
feat: add NetworkManagerMode back to NetMan (#756)
Browse files Browse the repository at this point in the history
* feat: add NetworkManagerMode back to NetMan

* fix formatting

* remove only suffix

* add flags

* code smell

* rename and add test

* add test
  • Loading branch information
uweeby committed Apr 8, 2021
1 parent f6c491c commit f1f8f57
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 0 deletions.
26 changes: 26 additions & 0 deletions Assets/Mirage/Runtime/NetworkManager.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,16 @@
using System;
using UnityEngine;
using UnityEngine.Serialization;

namespace Mirage
{
[Flags]
public enum NetworkManagerMode {
None = 0,
Server = 1,
Client = 2,
Host = Server | Client
}

[AddComponentMenu("Network/NetworkManager")]
[HelpURL("https://miragenet.github.io/Mirage/Articles/Guides/Communications/NetworkManager.html")]
Expand All @@ -28,5 +36,23 @@ public class NetworkManager : MonoBehaviour
/// <para>This is set True in StartServer / StartClient, and set False in StopServer / StopClient</para>
/// </summary>
public bool IsNetworkActive => Server.Active || Client.Active;

/// <summary>
/// helper enum to know if we started the networkmanager as server/client/host.
/// </summary>
public NetworkManagerMode NetworkMode
{
get
{
if (!Server.Active && !Client.Active)
return NetworkManagerMode.None;
else if (Server.Active && Client.Active)
return NetworkManagerMode.Host;
else if (Server.Active)
return NetworkManagerMode.Server;
else
return NetworkManagerMode.Client;
}
}
}
}
16 changes: 16 additions & 0 deletions Assets/Tests/Runtime/Host/NetworkManagerTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,5 +44,21 @@ public void StartHostException()
manager.Server.StartHost(manager.Client).GetAwaiter().GetResult();
});
}

[Test]
public void NetworkManagerModeHostTest()
{
Assert.That(manager.NetworkMode == NetworkManagerMode.Host);
}

[UnityTest]
public IEnumerator NetworkManagerModeOfflineHostTest() => UniTask.ToCoroutine(async () =>
{
server.StopHost();
await AsyncUtil.WaitUntilWithTimeout(() => !server.Active && !client.Active);
Assert.That(manager.NetworkMode == NetworkManagerMode.None);
});
}
}

0 comments on commit f1f8f57

Please sign in to comment.