summaryrefslogtreecommitdiff
path: root/Mage/Assets/ThirdParty/Photon/PhotonUnityNetworking/Demos/PunCockpit/PunCockpit.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Mage/Assets/ThirdParty/Photon/PhotonUnityNetworking/Demos/PunCockpit/PunCockpit.cs')
-rw-r--r--Mage/Assets/ThirdParty/Photon/PhotonUnityNetworking/Demos/PunCockpit/PunCockpit.cs807
1 files changed, 807 insertions, 0 deletions
diff --git a/Mage/Assets/ThirdParty/Photon/PhotonUnityNetworking/Demos/PunCockpit/PunCockpit.cs b/Mage/Assets/ThirdParty/Photon/PhotonUnityNetworking/Demos/PunCockpit/PunCockpit.cs
new file mode 100644
index 0000000..bfb5752
--- /dev/null
+++ b/Mage/Assets/ThirdParty/Photon/PhotonUnityNetworking/Demos/PunCockpit/PunCockpit.cs
@@ -0,0 +1,807 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="PunCockpit.cs" company="Exit Games GmbH">
+// Part of: Pun Cockpit Demo
+// </copyright>
+// <author>developer@exitgames.com</author>
+// --------------------------------------------------------------------------------------------------------------------
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+
+using UnityEngine;
+using UnityEngine.UI;
+
+using Photon.Pun.Demo.Cockpit.Forms;
+using Photon.Pun.Demo.Shared;
+using Photon.Realtime;
+using Hashtable = ExitGames.Client.Photon.Hashtable;
+
+namespace Photon.Pun.Demo.Cockpit
+{
+ /// <summary>
+ /// UI based work in progress to test out api and act as foundation when dealing with room, friends and player list
+ /// </summary>
+ public class PunCockpit : MonoBehaviourPunCallbacks
+ {
+ public static PunCockpit Instance;
+ public static bool Embedded;
+ public static string EmbeddedGameTitle = "";
+
+ public bool debug = false;
+
+ public string UserId { get; set; }
+
+ public Text Title;
+ public Text StateText; // set in inspector
+ public Text UserIdText; // set in inspector
+
+ [Header("Demo Integration")]
+
+ public CanvasGroup MinimalCanvasGroup;
+ public CanvasGroup MaximalCanvasGroup;
+ public GameObject MinimizeButton;
+ public GameObject MinimalUIEmbeddHelp;
+
+ [Header("Connection UI")]
+ public GameObject ConnectingLabel;
+ public GameObject ConnectionPanel;
+ public GameObject AdvancedConnectionPanel;
+ public Dropdown ConnectAsDropDown;
+
+ [Header("Common UI")]
+ public GameObject InfosPanel;
+ public GameObject MinimalUiInfosPanel;
+
+ [Header("Lobby UI")]
+ public GameObject LobbyPanel;
+ public Selectable JoinLobbyButton;
+ public RoomListView RoomListManager;
+ public FriendListView FriendListManager;
+ public GameObject RoomListMatchMakingForm;
+
+ [Header("Game UI")]
+ public GameObject GamePanel;
+ public PlayerListView PlayerListManager;
+ public PlayerDetailsController PlayerDetailsManager;
+
+ public InputField RoomCustomPropertyInputfield;
+
+ [Header("Photon Settings")]
+ /// <summary>
+ /// The game version override. This is one way to let the user define the gameversion, and set it properly right after we call connect to override the server settings
+ /// Check ConnectAndJoinRandom.cs for another example of gameversion overriding
+ /// </summary>
+ public string GameVersionOverride = String.Empty;
+
+ /// <summary>
+ /// The reset flag for best cloud ServerSettings.
+ /// This is one way to let the user define if bestcloud cache should be reseted when connecting.
+ /// </summary>
+ public bool ResetBestRegionCodeInPreferences = false;
+
+ [Header("Room Options")]
+ public int MaxPlayers = 4;
+ public int PlayerTtl = 0;
+ public int EmptyRoomTtl = 0;
+ public string Plugins = "";
+ public bool PublishUserId = true;
+ public bool IsVisible = true;
+ public bool IsOpen = true;
+ //public bool CheckUserOnJoin = false;
+ public bool CleanupCacheOnLeave = true;
+ public bool DeleteNullProperties = false;
+
+ [Header("Room Options UI")]
+ public IntInputField PlayerTtlField;
+ public IntInputField EmptyRoomTtlField;
+ public IntInputField MaxPlayersField;
+ public StringInputField PluginsField;
+ public BoolInputField PublishUserIdField;
+ public BoolInputField IsVisibleField;
+ public BoolInputField IsOpenField;
+ public BoolInputField CleanupCacheOnLeaveField;
+ // public BoolInputField CheckUserOnJoinField;
+ public BoolInputField DeleteNullPropertiesField;
+
+ [Header("Friends Options")]
+ public FriendListView.FriendDetail[] FriendsList =
+ new FriendListView.FriendDetail[]{
+ new FriendListView.FriendDetail("Joe","Joe"),
+ new FriendListView.FriendDetail("Jane","Jane"),
+ new FriendListView.FriendDetail("Bob","Bob")
+ };
+
+ [Header("Modal window")]
+ public CanvasGroup ModalWindow;
+
+ public RegionListView RegionListView;
+ public Text RegionListLoadingFeedback;
+
+ public void Start()
+ {
+
+ Instance = this;
+
+ // doc setup
+
+ DocLinks.Language = DocLinks.Languages.English;
+ DocLinks.Product = DocLinks.Products.Pun;
+ DocLinks.Version = DocLinks.Versions.V2;
+
+ //
+
+ ModalWindow.gameObject.SetActive (false);
+
+ MaximalCanvasGroup.gameObject.SetActive(true);
+
+ this.UserIdText.text = "";
+ this.StateText.text = "";
+ this.StateText.gameObject.SetActive(true);
+ this.UserIdText.gameObject.SetActive(true);
+ this.Title.gameObject.SetActive(true);
+
+ this.ConnectingLabel.SetActive(false);
+ this.LobbyPanel.SetActive(false);
+ this.GamePanel.SetActive(false);
+
+ if (string.IsNullOrEmpty(UserId))
+ {
+ UserId = "user" + Environment.TickCount % 99; //made-up username
+ }
+
+ PlayerTtlField.SetValue(this.PlayerTtl);
+ EmptyRoomTtlField.SetValue(this.EmptyRoomTtl);
+ MaxPlayersField.SetValue(this.MaxPlayers);
+ PluginsField.SetValue(this.Plugins);
+ PublishUserIdField.SetValue(this.PublishUserId);
+ IsVisibleField.SetValue(this.IsVisible);
+ IsOpenField.SetValue(this.IsOpen);
+ CleanupCacheOnLeaveField.SetValue(this.CleanupCacheOnLeave);
+ //CheckUserOnJoinField.SetValue (this.CheckUserOnJoin);
+ DeleteNullPropertiesField.SetValue(this.DeleteNullProperties);
+
+
+
+ // prefill dropdown selection of users
+ ConnectAsDropDown.ClearOptions();
+ ConnectAsDropDown.AddOptions(FriendsList.Select(x => x.NickName).ToList());
+
+
+ // check the current network status
+
+ if (PhotonNetwork.IsConnected)
+ {
+ if (PhotonNetwork.Server == ServerConnection.GameServer)
+ {
+ this.OnJoinedRoom ();
+
+ }
+ else if (PhotonNetwork.Server == ServerConnection.MasterServer || PhotonNetwork.Server == ServerConnection.NameServer)
+ {
+
+ if (PhotonNetwork.InLobby)
+ {
+ this.OnJoinedLobby ();
+ }
+ else
+ {
+ this.OnConnectedToMaster ();
+ }
+
+ }
+ }else
+ {
+ this.SwitchToSimpleConnection();
+
+ if (!Embedded)
+ {
+ MinimizeButton.SetActive(false);
+ SwitchtoMaximalPanel();
+ }
+ else
+ {
+ this.Title.text = EmbeddedGameTitle;
+ SwitchtoMinimalPanel();
+ }
+ }
+ }
+
+ public void SwitchtoMinimalPanel()
+ {
+ MinimalCanvasGroup.gameObject.SetActive(true);
+ MaximalCanvasGroup.alpha = 0f;
+ MaximalCanvasGroup.blocksRaycasts = false;
+ MaximalCanvasGroup.interactable = false;
+ }
+
+ public void SwitchtoMaximalPanel()
+ {
+ MinimalUIEmbeddHelp.SetActive(false);
+ MinimalCanvasGroup.gameObject.SetActive(false);
+
+ MaximalCanvasGroup.alpha = 1f;
+ MaximalCanvasGroup.blocksRaycasts = true;
+ MaximalCanvasGroup.interactable = true;
+ }
+
+ public void SwitchToAdvancedConnection()
+ {
+ this.ConnectionPanel.gameObject.SetActive(false);
+ this.AdvancedConnectionPanel.gameObject.SetActive(true);
+ }
+
+ public void SwitchToSimpleConnection()
+ {
+ this.ConnectionPanel.gameObject.SetActive(true);
+ this.AdvancedConnectionPanel.gameObject.SetActive(false);
+ }
+
+ public void ToggleInfosInMinimalPanel()
+ {
+ MinimalUiInfosPanel.SetActive(!MinimalUiInfosPanel.activeSelf);
+ }
+
+ public void RequestInfosPanel(GameObject Parent)
+ {
+ if (Parent != null)
+ {
+ InfosPanel.transform.SetParent(Parent.transform, false);
+ }
+ }
+
+ public void OnUserIdSubmited(string userId)
+ {
+ this.UserId = userId;
+ this.Connect();
+ }
+
+ public void SetPlayerTtlRoomOption(int value)
+ {
+ this.PlayerTtl = value;
+ if (debug) Debug.Log("PunCockpit:PlayerTtl = " + this.PlayerTtl);
+ }
+
+ public void SetEmptyRoomTtlRoomOption(int value)
+ {
+ this.EmptyRoomTtl = value;
+ if (debug) Debug.Log("PunCockpit:EmptyRoomTtl = " + this.EmptyRoomTtl);
+ }
+
+ public void SetMaxPlayersRoomOption(int value)
+ {
+ this.MaxPlayers = value;
+ if (debug) Debug.Log("PunCockpit:MaxPlayers = " + this.MaxPlayers);
+ }
+
+ public void SetPluginsRoomOption(string value)
+ {
+ this.Plugins = value;
+ if (debug) Debug.Log("PunCockpit:Plugins = " + this.Plugins);
+ }
+
+ public void SetPublishUserId(bool value)
+ {
+ this.PublishUserId = value;
+ if (debug) Debug.Log("PunCockpit:PublishUserId = " + this.PublishUserId);
+ }
+
+ public void SetIsVisible(bool value)
+ {
+ this.IsVisible = value;
+ if (debug) Debug.Log("PunCockpit:IsVisible = " + this.IsVisible);
+ }
+
+ public void SetIsOpen(bool value)
+ {
+ this.IsOpen = value;
+ if (debug) Debug.Log("PunCockpit:IsOpen = " + this.IsOpen);
+ }
+
+ // public void SetCheckUserOnJoin(bool value)
+ // {
+ // this.CheckUserOnJoin = value;
+ // Debug.Log ("CheckUserOnJoin = " + this.CheckUserOnJoin);
+ // }
+
+ public void SetResetBestRegionCodeInPreferences(bool value)
+ {
+ this.ResetBestRegionCodeInPreferences = value;
+ if (debug) Debug.Log("PunCockpit:ResetBestRegionCodeInPreferences = " + this.ResetBestRegionCodeInPreferences);
+ }
+
+ public void SetCleanupCacheOnLeave(bool value)
+ {
+ this.CleanupCacheOnLeave = value;
+ if (debug) Debug.Log("PunCockpit:CleanupCacheOnLeave = " + this.CleanupCacheOnLeave);
+ }
+
+ public void SetDeleteNullProperties(bool value)
+ {
+ this.DeleteNullProperties = value;
+ if (debug) Debug.Log("PunCockpit:DeleteNullProperties = " + this.DeleteNullProperties);
+ }
+
+ LoadBalancingClient _lbc;
+ bool _regionPingProcessActive;
+ List<Region> RegionsList;
+
+ /// <summary>
+ /// in progress, not fully working
+ /// </summary>
+ public void PingRegions()
+ {
+ ModalWindow.gameObject.SetActive (true);
+
+ RegionListLoadingFeedback.text = "Connecting to NameServer...";
+ _regionPingProcessActive = true;
+ if (debug) Debug.Log("PunCockpit:PingRegions:ConnectToNameServer");
+
+
+ _lbc = new LoadBalancingClient();
+
+ _lbc.AddCallbackTarget(this);
+
+
+ _lbc.StateChanged += OnStateChanged;
+
+ _lbc.AppId = PhotonNetwork.PhotonServerSettings.AppSettings.AppIdRealtime;
+ _lbc.ConnectToNameServer ();
+
+ }
+
+ void Update()
+ {
+ if (_lbc!=null) _lbc.Service();
+
+ if (RegionsList !=null)
+ {
+ if (this.ModalWindow.gameObject.activeInHierarchy) {
+
+ if (PunCockpit.Instance.debug) Debug.Log("PunCockpit:OnRegionsPinged");
+
+ this.RegionListView.OnRegionListUpdate (RegionsList);
+ }
+
+ _lbc = null;
+
+ RegionListLoadingFeedback.text = string.Empty;
+
+ RegionsList = null;
+ }
+ }
+
+
+ void OnStateChanged(ClientState previousState, ClientState state)
+ {
+ if (state == ClientState.ConnectedToNameServer) {
+ _lbc.StateChanged -= this.OnStateChanged;
+
+ if (debug) Debug.Log("PunCockpit:OnStateChanged: ClientState.ConnectedToNameServer. Waiting for OnRegionListReceived callback.");
+
+ RegionListLoadingFeedback.text = "Waiting for application Region List...";
+ }
+ }
+
+ public override void OnRegionListReceived(RegionHandler regionHandler)
+ {
+ if (PunCockpit.Instance.debug)
+ Debug.Log ("PunCockpit:OnRegionListReceived: " + regionHandler);
+
+ if (_regionPingProcessActive)
+ {
+ RegionListLoadingFeedback.text = "Pinging Regions...";
+ _regionPingProcessActive = false;
+ regionHandler.PingMinimumOfRegions (OnRegionsPinged, null);
+ }
+ }
+
+
+ private void OnRegionsPinged(RegionHandler regionHandler)
+ {
+ RegionsList = regionHandler.EnabledRegions.OrderBy(x=>x.Ping).ToList();
+ // will check this on Update() to get back to the main thread.
+
+ }
+
+ public void CloseRegionListView()
+ {
+
+ RegionsList = null;
+
+ if (_lbc != null) {
+ _lbc.Disconnect ();
+ _lbc = null;
+ }
+
+ _regionPingProcessActive = false;
+
+ this.RegionListView.ResetList ();
+ this.ModalWindow.gameObject.SetActive (false);
+ }
+
+ public void LoadLevel(string level)
+ {
+ if (debug) Debug.Log("PunCockpit:LoadLevel(" +level+")");
+ PhotonNetwork.LoadLevel(level);
+ }
+
+ public void SetRoomCustomProperty(string value)
+ {
+ if (debug) Debug.Log("PunCockpit:SetRoomCustomProperty() c0 = " + value);
+ PhotonNetwork.CurrentRoom.SetCustomProperties(new Hashtable() { { "C0", value } });
+ }
+
+ private string roomNameToEnter;
+
+ public void JoinRoom(string roomName)
+ {
+ this.RoomListManager.ResetList();
+ this.LobbyPanel.gameObject.SetActive(false);
+ this.ConnectingLabel.SetActive(true);
+ this.roomNameToEnter = roomName;
+ PhotonNetwork.JoinRoom(roomName);
+ }
+
+ public void CreateRoom()
+ {
+ this.CreateRoom(null, null, LobbyType.Default);
+ }
+
+ public void CreateRoom(string roomName, string lobbyName = "MyLobby", LobbyType lobbyType = LobbyType.SqlLobby, string[] expectedUsers = null)
+ {
+ if (debug) Debug.Log("PunCockpit:CreateRoom roomName:" + roomName + " lobbyName:" + lobbyName + " lobbyType:" + lobbyType + " expectedUsers:" + (expectedUsers == null ? "null" : expectedUsers.ToStringFull()));
+
+ this.RoomListManager.ResetList();
+ this.LobbyPanel.gameObject.SetActive(false);
+ this.ConnectingLabel.SetActive(true);
+
+ RoomOptions _roomOptions = this.GetRoomOptions();
+ if (debug) Debug.Log("PunCockpit:Room options <" + _roomOptions + ">");
+
+ TypedLobby sqlLobby = new TypedLobby(lobbyName, lobbyType);
+ bool _result = PhotonNetwork.CreateRoom(roomName, _roomOptions, sqlLobby, expectedUsers);
+
+ if (debug) Debug.Log("PunCockpit:CreateRoom() -> " + _result);
+
+ }
+
+ public void JoinRandomRoom()
+ {
+ PhotonNetwork.JoinRandomRoom();
+ }
+
+ public void LeaveRoom()
+ {
+ PlayerListManager.ResetList();
+ this.GamePanel.gameObject.SetActive(false);
+ this.ConnectingLabel.SetActive(true);
+
+ PhotonNetwork.LeaveRoom();
+
+ }
+
+ public void Connect()
+ {
+ this.ConnectionPanel.gameObject.SetActive(false);
+ this.AdvancedConnectionPanel.gameObject.SetActive(false);
+
+ PhotonNetwork.AuthValues = new AuthenticationValues();
+ PhotonNetwork.AuthValues.UserId = this.UserId;
+
+ this.ConnectingLabel.SetActive(true);
+
+ PhotonNetwork.ConnectUsingSettings();
+ //if (GameVersionOverride != string.Empty) {
+ // PhotonNetwork.GameVersion = "28"; // GameVersionOverride;
+ // }
+ }
+
+ public void ReConnect()
+ {
+ this.ConnectionPanel.gameObject.SetActive(false);
+ this.AdvancedConnectionPanel.gameObject.SetActive(false);
+
+ PhotonNetwork.AuthValues = new AuthenticationValues();
+ PhotonNetwork.AuthValues.UserId = this.UserId;
+
+ this.ConnectingLabel.SetActive(true);
+
+ PhotonNetwork.Reconnect();
+ }
+
+ public void ReconnectAndRejoin()
+ {
+ this.ConnectionPanel.gameObject.SetActive(false);
+ this.AdvancedConnectionPanel.gameObject.SetActive(false);
+
+ PhotonNetwork.AuthValues = new AuthenticationValues();
+ PhotonNetwork.AuthValues.UserId = this.UserId;
+
+ this.ConnectingLabel.SetActive(true);
+
+ PhotonNetwork.ReconnectAndRejoin();
+ }
+
+
+ public void ConnectToBestCloudServer()
+ {
+
+ PhotonNetwork.NetworkingClient.AppId = PhotonNetwork.PhotonServerSettings.AppSettings.AppIdRealtime;
+
+ this.ConnectionPanel.gameObject.SetActive(false);
+ this.AdvancedConnectionPanel.gameObject.SetActive(false);
+
+ PhotonNetwork.AuthValues = new AuthenticationValues();
+ PhotonNetwork.AuthValues.UserId = this.UserId;
+
+ this.ConnectingLabel.SetActive(true);
+
+ if (this.ResetBestRegionCodeInPreferences) {
+ ServerSettings.ResetBestRegionCodeInPreferences ();
+ }
+
+ PhotonNetwork.ConnectToBestCloudServer();
+ if (GameVersionOverride != string.Empty) {
+ PhotonNetwork.GameVersion = GameVersionOverride;
+ }
+ }
+
+ public void ConnectToRegion(string region)
+ {
+
+ if (debug) Debug.Log("PunCockpit:ConnectToRegion(" + region + ")");
+
+ PhotonNetwork.NetworkingClient.AppId = PhotonNetwork.PhotonServerSettings.AppSettings.AppIdRealtime;
+
+ this.ConnectionPanel.gameObject.SetActive(false);
+ this.AdvancedConnectionPanel.gameObject.SetActive(false);
+
+ PhotonNetwork.AuthValues = new AuthenticationValues();
+ PhotonNetwork.AuthValues.UserId = this.UserId;
+
+ this.ConnectingLabel.SetActive(true);
+
+ bool _result = PhotonNetwork.ConnectToRegion(region);
+
+ if (GameVersionOverride != string.Empty) {
+ PhotonNetwork.GameVersion = GameVersionOverride;
+ }
+
+ if (debug) Debug.Log("PunCockpit:ConnectToRegion(" + region + ") ->" + _result);
+ }
+
+
+
+ public void ConnectOffline()
+ {
+ if (debug) Debug.Log("PunCockpit:ConnectOffline()");
+ PhotonNetwork.OfflineMode = true;
+ }
+
+ public void JoinLobby()
+ {
+ if (debug) Debug.Log("PunCockpit:JoinLobby()");
+ bool _result = PhotonNetwork.JoinLobby();
+
+ if (!_result) {
+ Debug.LogError ("PunCockpit: Could not joinLobby");
+ }
+
+ }
+
+ public void Disconnect()
+ {
+ if (debug) Debug.Log("PunCockpit:Disconnect()");
+ PhotonNetwork.Disconnect();
+ }
+
+
+ public void OpenDashboard()
+ {
+ Application.OpenURL("https://dashboard.photonengine.com");
+ }
+
+
+ #region CONNECT UI
+ public void OnDropdownConnectAs(int dropdownIndex)
+ {
+ if (debug) Debug.Log("PunCockpit:OnDropdownConnectAs(" + dropdownIndex + ")");
+
+ this.UserId = this.FriendsList[dropdownIndex].UserId;
+ PlayerPrefs.SetString(UserIdUiForm.UserIdPlayerPref, this.UserId);
+
+ StartCoroutine(OnDropdownConnectAs_CB());
+ }
+
+ IEnumerator OnDropdownConnectAs_CB()
+ {
+ // wait for the dropdown to animate.
+ yield return new WaitForSeconds(0.2f);
+
+ this.Connect();
+ }
+
+ #endregion
+ #region IN LOBBY UI
+
+ public void OnLobbyToolsViewTabChanged(string tabId)
+ {
+ // Debug.Log("PunCockpit:OnLobbyToolsViewTabChanged("+tabId+")");
+ }
+
+
+ #endregion
+
+ #region IN ROOM UI
+
+ public void OnSelectPlayer()
+ {
+
+ }
+
+ #endregion
+
+ #region PUN CallBacks
+
+ public override void OnConnected()
+ {
+ if (debug) Debug.Log("PunCockpit:OnConnected()");
+
+ this.ConnectingLabel.SetActive(false);
+
+ this.UserIdText.text = "UserId:" + this.UserId + " Nickname:" + PhotonNetwork.NickName;
+ }
+
+ public override void OnDisconnected(DisconnectCause cause)
+ {
+ if (debug) Debug.Log("PunCockpit:OnDisconnected("+cause+")");
+
+ this.ConnectingLabel.SetActive(false);
+ this.UserIdText.text = string.Empty;
+ this.StateText.text = string.Empty;
+
+ this.GamePanel.gameObject.SetActive(false);
+ this.LobbyPanel.gameObject.SetActive(false);
+ this.ConnectionPanel.gameObject.SetActive(true);
+
+ }
+
+ public override void OnConnectedToMaster()
+ {
+ if (debug) Debug.Log("PunCockpit:OnConnectedToMaster()");
+
+
+ this.StateText.text = "Connected to Master" + (PhotonNetwork.OfflineMode ? " <Color=Red><b>Offline</b></color>" : "");
+
+ this.SetUpLobbyGenericUI();
+ }
+
+ public override void OnJoinedLobby()
+ {
+ this.StateText.text = "Connected to Lobby";
+
+ if (debug) Debug.Log("PunCockpit:OnJoinedLobby()");
+ this.SetUpLobbyGenericUI();
+ }
+
+ void SetUpLobbyGenericUI()
+ {
+ this.ConnectingLabel.gameObject.SetActive(false);
+ this.AdvancedConnectionPanel.gameObject.SetActive(false);
+ this.LobbyPanel.gameObject.SetActive(true);
+ this.RoomListManager.OnJoinedLobbyCallBack();
+ this.FriendListManager.SetFriendDetails(this.FriendsList);
+
+ JoinLobbyButton.interactable = !PhotonNetwork.InLobby && !PhotonNetwork.OfflineMode;
+
+
+ RoomListManager.gameObject.SetActive(!PhotonNetwork.OfflineMode);
+ FriendListManager.gameObject.SetActive(!PhotonNetwork.OfflineMode);
+
+ RoomListMatchMakingForm.SetActive(!PhotonNetwork.InLobby);
+ }
+
+ public override void OnRoomPropertiesUpdate(Hashtable propertiesThatChanged)
+ {
+ if (debug) Debug.Log("PunCockpit:OnRoomPropertiesUpdate() " + propertiesThatChanged.ToStringFull());
+
+ if (propertiesThatChanged.ContainsKey("C0"))
+ {
+ RoomCustomPropertyInputfield.text = propertiesThatChanged["C0"].ToString();
+ }
+ }
+
+ public override void OnLeftLobby()
+ {
+ if (debug) Debug.Log("PunCockpit:OnLeftLobby()");
+
+ this.RoomListManager.ResetList();
+ this.LobbyPanel.gameObject.SetActive(false);
+ }
+
+ public override void OnCreateRoomFailed(short returnCode, string message)
+ {
+ if (debug) Debug.Log("PunCockpit:OnCreateRoomFailed(" + returnCode + "," + message + ")");
+ }
+
+ public override void OnJoinRandomFailed(short returnCode, string message)
+ {
+ if (debug) Debug.Log("PunCockpit:OnJoinRandomFailed(" + returnCode + "," + message + ")");
+ }
+
+ public override void OnJoinedRoom()
+ {
+
+ this.StateText.text = "Connected to GameServer " + (PhotonNetwork.OfflineMode ? " <Color=Red><b>Offline</b></color>" : "");
+
+
+ if (debug) Debug.Log("PunCockpit:OnJoinedRoom()");
+
+ this.ConnectingLabel.gameObject.SetActive(false);
+
+ this.PlayerListManager.ResetList();
+
+ this.GamePanel.gameObject.SetActive(true);
+
+ this.PlayerDetailsManager.SetPlayerTarget(PhotonNetwork.LocalPlayer);
+
+ }
+
+ public override void OnJoinRoomFailed(short returnCode, string message)
+ {
+ switch (returnCode)
+ {
+ case ErrorCode.JoinFailedFoundInactiveJoiner:
+ if (!string.IsNullOrEmpty(this.roomNameToEnter))
+ {
+ PhotonNetwork.RejoinRoom(this.roomNameToEnter);
+ this.roomNameToEnter = null;
+ }
+ break;
+ }
+ }
+
+ public override void OnLeftRoom()
+ {
+ if (debug) Debug.Log("PunCockpit:OnLeftRoom()");
+ this.GamePanel.gameObject.SetActive(false);
+
+ if (PhotonNetwork.OfflineMode)
+ {
+ this.ConnectingLabel.gameObject.SetActive(false);
+ this.ConnectionPanel.gameObject.SetActive (true);
+ }
+ }
+
+ #endregion
+
+
+ RoomOptions GetRoomOptions()
+ {
+ RoomOptions _roomOptions = new RoomOptions();
+
+ _roomOptions.MaxPlayers = (byte)this.MaxPlayers;
+
+ _roomOptions.IsOpen = this.IsOpen;
+
+ _roomOptions.IsVisible = this.IsVisible;
+
+ _roomOptions.EmptyRoomTtl = this.EmptyRoomTtl;
+
+ _roomOptions.PlayerTtl = this.PlayerTtl;
+
+ _roomOptions.PublishUserId = this.PublishUserId;
+
+ _roomOptions.CleanupCacheOnLeave = this.CleanupCacheOnLeave;
+ _roomOptions.DeleteNullProperties = this.DeleteNullProperties;
+
+ _roomOptions.CustomRoomProperties = new ExitGames.Client.Photon.Hashtable() { { "C0", "Hello" } };
+ _roomOptions.CustomRoomPropertiesForLobby = new string[] { "C0" };
+
+
+ return _roomOptions;
+ }
+ }
+} \ No newline at end of file