diff --git a/Assets/Scripts/ColorManipulation.cs b/Assets/Scripts/ColorManipulation.cs new file mode 100644 index 0000000..1e30749 --- /dev/null +++ b/Assets/Scripts/ColorManipulation.cs @@ -0,0 +1,6 @@ +using UnityEngine; + +public static class ColorManipulation +{ + public static Color GetRandomColor() => new(Random.value, Random.value, Random.value); +} \ No newline at end of file diff --git a/Assets/Scripts/MyNetworkPlayer1.cs.meta b/Assets/Scripts/ColorManipulation.cs.meta similarity index 83% rename from Assets/Scripts/MyNetworkPlayer1.cs.meta rename to Assets/Scripts/ColorManipulation.cs.meta index 713feef..7b3d59a 100644 --- a/Assets/Scripts/MyNetworkPlayer1.cs.meta +++ b/Assets/Scripts/ColorManipulation.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 200a2e870f62694458ff9e42c9fa7ff5 +guid: 5c5b7d3af1f171c46b09250081a08927 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Scripts/MyNetworkManager.cs b/Assets/Scripts/MyNetworkManager.cs index 6b54472..ee2ddec 100644 --- a/Assets/Scripts/MyNetworkManager.cs +++ b/Assets/Scripts/MyNetworkManager.cs @@ -9,8 +9,8 @@ public class MyNetworkManager : NetworkManager MyNetworkPlayer player = conn.identity.GetComponent(); player.SetDisplayName($"Player {numPlayers.ToString()}"); - player.SetPlayerColor(GetRandomColor()); + player.SetPlayerColor(ColorManipulation.GetRandomColor()); } - - private static Color GetRandomColor() => new(Random.value, Random.value, Random.value); + + } \ No newline at end of file diff --git a/Assets/Scripts/MyNetworkPlayer.cs b/Assets/Scripts/MyNetworkPlayer.cs index e7910f7..eba64fe 100644 --- a/Assets/Scripts/MyNetworkPlayer.cs +++ b/Assets/Scripts/MyNetworkPlayer.cs @@ -1,4 +1,3 @@ -using System; using Mirror; using TMPro; using UnityEngine; @@ -7,6 +6,7 @@ public class MyNetworkPlayer : NetworkBehaviour { [Header("Connections")] [SerializeField] private TMP_Text _playerNameObject; + [Header("Variables")] [SyncVar(hook = nameof(SetPlayerNameTagText))] [SerializeField] @@ -15,7 +15,9 @@ public class MyNetworkPlayer : NetworkBehaviour [SyncVar(hook = nameof(SetPlayerNameTagColor))] [SerializeField] private Color _playerColor = Color.black; - + + #region Server + [Server] public void SetDisplayName(string newDisplayName) { @@ -28,6 +30,43 @@ public class MyNetworkPlayer : NetworkBehaviour _playerColor = newPlayerColor; } + [Command] + private void CmdSetDisplayName(string newDisplayName) + { + if (NameLengthIsCorrect(newDisplayName)) + { + RpcDebugLog($"Setting player names{newDisplayName}"); + SetDisplayName(newDisplayName); + } + else + { + RpcDebugLog($"new name: {newDisplayName} : is too long"); + } + } + + [Command] + private void CmdSetNewColor() + { + Color newColor = ColorManipulation.GetRandomColor(); + RpcDebugLog($"Setting player color{newColor.ToString()}"); + SetPlayerColor(newColor); + } + + private bool NameLengthIsCorrect(string newDisplayName) + { + return newDisplayName.Length < 10; + } + + [ClientRpc] + private void RpcDebugLog(string message) + { + Debug.Log(message); + } + + #endregion + + #region Client + private void SetPlayerNameTagText(string oldText, string newText) { if (_playerNameObject != null) @@ -43,4 +82,18 @@ public class MyNetworkPlayer : NetworkBehaviour _playerNameObject.color = newColor; } } + + [ContextMenu("SetName")] + private void SetMyName() + { + CmdSetDisplayName("New Name"); + } + + [ContextMenu("NewColor")] + private void SetNewColor() + { + CmdSetNewColor(); + } + + #endregion } \ No newline at end of file diff --git a/Assets/Scripts/MyNetworkPlayer1.cs b/Assets/Scripts/MyNetworkPlayer1.cs deleted file mode 100644 index a8a3020..0000000 --- a/Assets/Scripts/MyNetworkPlayer1.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Mirror; -using UnityEngine; - -public class MyNetworkPlayer1 : NetworkBehaviour -{ - [SyncVar] - [SerializeField] - private Transform _transform; - - -} \ No newline at end of file