82 lines
2.4 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|