Files
UltimateFishing/Assets/Scripts/Assembly-CSharp/DemoOwnershipGui.cs
2026-02-21 16:45:37 +08:00

82 lines
2.4 KiB
C#

using System;
using ExitGames.UtilityScripts;
using UnityEngine;
public class DemoOwnershipGui : MonoBehaviour
{
public GUISkin Skin;
public bool TransferOwnershipOnRequest = true;
public void OnOwnershipRequest(object[] viewAndPlayer)
{
PhotonView photonView = viewAndPlayer[0] as PhotonView;
PhotonPlayer photonPlayer = viewAndPlayer[1] as PhotonPlayer;
Debug.Log(string.Concat("OnOwnershipRequest(): Player ", photonPlayer, " requests ownership of: ", photonView, "."));
if (TransferOwnershipOnRequest)
{
photonView.TransferOwnership(photonPlayer.ID);
}
}
public void OnOwnershipTransfered(object[] viewAndPlayers)
{
PhotonView photonView = viewAndPlayers[0] as PhotonView;
PhotonPlayer photonPlayer = viewAndPlayers[1] as PhotonPlayer;
PhotonPlayer photonPlayer2 = viewAndPlayers[2] as PhotonPlayer;
Debug.Log(string.Concat("OnOwnershipTransfered for PhotonView", photonView.ToString(), " from ", photonPlayer2, " to ", photonPlayer));
}
public void OnGUI()
{
GUI.skin = Skin;
GUILayout.BeginArea(new Rect(Screen.width - 200, 0f, 200f, Screen.height));
string text = ((!TransferOwnershipOnRequest) ? "rejecting to pass" : "passing objects");
if (GUILayout.Button(text))
{
TransferOwnershipOnRequest = !TransferOwnershipOnRequest;
}
GUILayout.EndArea();
if (PhotonNetwork.inRoom)
{
int iD = PhotonNetwork.player.ID;
string arg = ((!PhotonNetwork.player.IsMasterClient) ? string.Empty : "(master) ");
string colorName = GetColorName(PhotonNetwork.player.ID);
GUILayout.Label(string.Format("player {0}, {1} {2}(you)", iD, colorName, arg));
PhotonPlayer[] otherPlayers = PhotonNetwork.otherPlayers;
foreach (PhotonPlayer photonPlayer in otherPlayers)
{
iD = photonPlayer.ID;
arg = ((!photonPlayer.IsMasterClient) ? string.Empty : "(master)");
colorName = GetColorName(photonPlayer.ID);
GUILayout.Label(string.Format("player {0}, {1} {2}", iD, colorName, arg));
}
if (PhotonNetwork.inRoom && PhotonNetwork.otherPlayers.Length == 0)
{
GUILayout.Label("Join more clients to switch object-control.");
}
}
else
{
GUILayout.Label(PhotonNetwork.connectionStateDetailed.ToString());
}
}
private string GetColorName(int playerId)
{
switch (Array.IndexOf(PlayerRoomIndexing.instance.PlayerIds, playerId))
{
case 0:
return "red";
case 1:
return "blue";
case 2:
return "yellow";
case 3:
return "green";
default:
return string.Empty;
}
}
}