public void SubmitInLocalCharacterSelection(int _playerId) { if (!PhotonNetwork.offlineMode) { return; } if (!TDS_GameManager.PlayersInfo.Any(i => i.PlayerID == _playerId)) { characterSelectionMenu.AddNewPlayer(_playerId); return; } TDS_CharacterSelectionElement _elem = characterSelectionMenu.CharacterSelectionElements.Where(e => (e.PlayerInfo != null) && (e.PlayerInfo.PlayerID == _playerId) && (e.IsUsedLocally)).FirstOrDefault(); if (_elem) { if (!_elem.IsLocked) { //_elem.LockElement(true); _elem.ReadyToggle.isOn = true; _elem.TriggerToggle(); return; } } if (TDS_GameManager.PlayersInfo.Any(i => !i.IsReady)) { return; } TDS_UIManager.Instance?.LoadLevel(); }
public void RemoveLocalPlayer(int _playerID) { TDS_CharacterSelectionElement _elem = characterSelectionElements.Where(e => (e.PlayerInfo != null) && (e.PlayerInfo.PlayerID == _playerID) && (e.IsUsedLocally)).FirstOrDefault(); if (!_elem) { return; } _elem.RemovePlayerLocalID(); }
public void AddNewPlayer(int _playerID) { TDS_CharacterSelectionElement _elem = characterSelectionElements.Where(e => (e.PlayerInfo == null) && (!e.IsUsedLocally)).FirstOrDefault(); if (!_elem) { return; } _elem.SetPlayerLocalID(_playerID); }
/// <summary> /// Make the elements selectable or not if a player select it /// If the local can't be selected, display the next selectable element /// </summary> /// <param name="_previousType">Previous Type of the player</param> /// <param name="_newType">new Type of the player</param> public void UpdateOnlineSelection(PlayerType _newType, int _playerID) { characterSelectionElements.ToList().ForEach(e => e.CharacterSelectionImages.Where(i => i.CharacterType == _newType).ToList().ForEach(i => i.CanBeSelected = false)); TDS_CharacterSelectionElement _element = characterSelectionElements.Where(e => (e.PlayerInfo != null) && (e.PlayerInfo.PhotonPlayer.ID == _playerID)).FirstOrDefault(); if (_element) { _element.DisplayImageOfType(_newType); } if (!TDS_GameManager.LocalIsReady && !LocalElement.CurrentSelection.CanBeSelected) { LocalElement.DisplayNextImage(); } }
/// <summary> /// Remove the player from the character selection Elements /// If the player is'nt connected anymore, clear all the character selection elements /// </summary> /// <param name="_removedPlayer"></param> public void RemovePhotonPlayer(PhotonPlayer _removedPlayer) { if (PhotonNetwork.room == null || !PhotonNetwork.connected || PhotonNetwork.player == null) { ClearOnlineMenu(); return; } if (_removedPlayer == PhotonNetwork.player) { return; } TDS_CharacterSelectionElement _cleanedElement = characterSelectionElements.Where(e => (e.PlayerInfo != null) && (e.PlayerInfo.PhotonPlayer == _removedPlayer)).FirstOrDefault(); if (_cleanedElement) { _cleanedElement.DisconnectPlayer(); } }
public void ChangeImageAtPlayer(int _playerId, int _value) { if (!PhotonNetwork.offlineMode || !TDS_GameManager.PlayersInfo.Any(i => i.PlayerID == _playerId)) { return; } TDS_CharacterSelectionElement _elem = characterSelectionMenu.CharacterSelectionElements.Where(e => (e.PlayerInfo != null) && (e.PlayerInfo.PlayerID == _playerId) && (e.IsUsedLocally)).FirstOrDefault(); if (!_elem) { return; } if (_value > 0) { _elem.DisplayNextImage(); return; } _elem.DisplayPreviousImage(); }
/// <summary> /// Add a new player within the CharacterSelectionElements /// If the added player is the local player, set the element as the local element /// </summary> /// <param name="_newPlayer">Id of the added player</param> public void AddNewPhotonPlayer(PhotonPlayer _newPlayer, PlayerType _type = PlayerType.Unknown) { TDS_GameManager.PlayersInfo.Add(new TDS_PlayerInfo(PhotonNetwork.player.ID, null, _newPlayer)); TDS_CharacterSelectionElement _elem = characterSelectionElements.Where(e => e.PlayerInfo == null).FirstOrDefault(); if (!_elem) { return; } _elem.SetPhotonPlayer(_newPlayer); if (_newPlayer.ID == PhotonNetwork.player.ID) { LocalElement = _elem; LocalElement.SetPlayerLocal(); return; } if (_type != PlayerType.Unknown) { _elem.DisplayImageOfType(_type); } }
/// <summary> /// Called when the toggle is pressed /// Update the ready settings /// If the player has an Unknown PlayerType, the game cannot start /// </summary> public void OnLocalPlayerReadyOnline(bool _isReady) { TDS_CharacterSelectionElement _elem = characterSelectionMenu.CharacterSelectionElements.Where(e => (e.PlayerInfo != null) && (e.PlayerInfo.PhotonPlayer == PhotonNetwork.player)).FirstOrDefault(); if (_elem == null) { return; } _elem.IsLocked = _isReady; TDS_RPCManager.Instance.RPCPhotonView.RPC("CallMethodOnline", PhotonTargets.All, TDS_RPCManager.GetInfo(photonView, this.GetType(), "SetOnlinePlayerReady"), new object[] { PhotonNetwork.player.ID, TDS_GameManager.LocalIsReady }); if (!_isReady) { TDS_RPCManager.Instance.RPCPhotonView.RPC("CallMethodOnline", PhotonTargets.All, TDS_RPCManager.GetInfo(photonView, this.GetType(), "UnlockPlayerType"), new object[] { (int)characterSelectionMenu.LocalElement.CurrentSelection.CharacterType }); } if (!PhotonNetwork.isMasterClient) { TDS_RPCManager.Instance.RPCPhotonView.RPC("CallMethodOnline", PhotonTargets.MasterClient, TDS_RPCManager.GetInfo(photonView, typeof(TDS_UIManager), "UpdateReadySettings"), new object[] { PhotonNetwork.player.ID, TDS_GameManager.LocalIsReady }); return; } TDS_UIManager.Instance?.UpdateReadySettings(PhotonNetwork.player.ID, TDS_GameManager.LocalIsReady); }
public void CancelInLocalCharacterSelection(int _playerId) { if (!PhotonNetwork.offlineMode || !TDS_GameManager.PlayersInfo.Any(i => i.PlayerID == _playerId)) { return; } TDS_CharacterSelectionElement _elem = characterSelectionMenu.CharacterSelectionElements.Where(e => (e.PlayerInfo != null) && (e.PlayerInfo.PlayerID == _playerId) && (e.IsUsedLocally)).FirstOrDefault(); if (_elem && _elem.IsLocked) { _elem.ReadyToggle.isOn = false; _elem.TriggerToggle(); return; } characterSelectionMenu.RemoveLocalPlayer(_playerId); if (TDS_GameManager.PlayersInfo.Count == 0) { TDS_GameManager.PlayersInfo.Clear(); TDS_UIManager.Instance?.ActivateMenu(UIState.InMainMenu); } }