using System; using Mirror; using UnityEngine; public class NetPlayer : NetworkBehaviour { public PlayerType playerType; public static NetPlayer localPlayer; void Start() { if(!isLocalPlayer){return;} localPlayer = this; NetPlayer[] players = FindObjectsOfType(); if (players.Length > 1) { playerType = PlayerType.Client; Shooter.client.player = this; } else { playerType = PlayerType.Master; Shooter.master.player = this; } CmdSetPlayerType(playerType.ToString()); } [Command] void CmdSetPlayerType(string type){ SetPlayerType(type); RpcSetPlayerType(type); } [ClientRpc] void RpcSetPlayerType(string type){ SetPlayerType(type); } void SetPlayerType(string type){ playerType = (PlayerType)Enum.Parse(typeof(PlayerType), type); if(playerType == PlayerType.Master){ Shooter.master.player = this; }else{ Shooter.client.player = this; } } public void RequestSwapBubbles(){ if(isLocalPlayer && !isServer){ CmdSwapBubbles(); }else if(isLocalPlayer && isServer){ swapBubbles(); } } [Command] void CmdSwapBubbles(){ swapBubbles(); } void swapBubbles(){ if(playerType == PlayerType.Master){ Shooter.master.SwapBubbles(); }else{ Shooter.client.SwapBubbles(); } } public void RequestShoot(float lookAngle) { if(isLocalPlayer && !isServer){ CmdShoot(lookAngle); }else if(isLocalPlayer && isServer){ shoot(lookAngle); } } [Command] void CmdShoot(float lookAngle){ shoot(lookAngle); } void shoot(float lookAngle){ if(playerType == PlayerType.Master){ Shooter.master.Shoot(lookAngle); }else{ Shooter.client.Shoot(lookAngle); } } } public enum PlayerType { Master, Client }