/// <summary> /// Follows the warp master if the warp mode is set to MASTER and warp master is in another subspace /// </summary> private IEnumerator FollowWarpMaster() { var seconds = new WaitForSeconds(CheckFollowMasterSInterval); while (true) { try { if (!Enabled) { break; } if (MainSystem.Singleton.GameRunning) { if (ClientSubspaceList.ContainsKey(SettingsSystem.ServerSettings.WarpMaster) && ClientSubspaceList[SettingsSystem.ServerSettings.WarpMaster] != CurrentSubspace) { //Follow the warp master into warp if needed CurrentSubspace = ClientSubspaceList[SettingsSystem.ServerSettings.WarpMaster]; } } } catch (Exception e) { Debug.LogError($"[LMP]: Error in coroutine FollowWarpMaster {e}"); throw; } yield return(seconds); } }
public void RemovePlayer(string playerName) { if (ClientSubspaceList.ContainsKey(playerName)) { ClientSubspaceList.Remove(playerName); } }
public int GetPlayerSubspace(string playerName) { if (ClientSubspaceList.ContainsKey(playerName)) { return(ClientSubspaceList[playerName]); } return(0); }
public override void OnDisabled() { GameEvents.onTimeWarpRateChanged.Remove(WarpEvents.OnTimeWarpChanged); ClientSubspaceList.Clear(); Subspaces.Clear(); _currentSubspace = int.MinValue; SkipSubspaceProcess = false; WaitingSubspaceIdFromServer = false; SyncedToLastSubspace = false; }
public bool PlayerIsInPastSubspace(string player) { if (ClientSubspaceList.ContainsKey(player) && CurrentSubspace >= 0) { var playerSubspace = ClientSubspaceList[player]; if (playerSubspace == -1) { return(false); } return(playerSubspace != CurrentSubspace && Subspaces[playerSubspace] < Subspaces[CurrentSubspace]); } return(false); }