100 lines
2.1 KiB
C#
100 lines
2.1 KiB
C#
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<NetPlayer>();
|
|
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
|
|
} |