/// <summary> /// Called after the client changes scenes /// </summary> internal static void OnClientSceneChanged() { Object.Instantiate(netManager.gameMangerPrefab); Logger.Info("The scene has been loaded to {Scene}", TCScenesManager.GetActiveScene().scene); DisplayMotdAndOrCreatePlayer().Forget(); }
protected override TCServerResponse ProcessRequest(TCServerRequest request, IPEndPoint endpoint) { Logger.Debug("Processing discovery request from `{Address}`...", endpoint.Address); try { if (request.ApplicationVersion != Application.version) { return(null); } return(new TCServerResponse { GameName = TCNetworkManager.Instance.serverConfig.gameName, MaxPlayers = netManager.maxConnections, CurrentAmountOfPlayers = netManager.numPlayers, SceneName = TCScenesManager.GetActiveScene().name }); } catch (NotImplementedException) { Logger.Error("Current transport does not support network discovery!"); throw; } }
private void Initialize() { if (client != null) { Logger.Error("The discord client is already running!"); return; } try { client = new global::Discord.GameSDK.Discord(long.Parse(settings.clientId), CreateFlags.NoRequireDiscord); client.Init(); } catch (ResultException ex) { Logger.Error("Failed to connect with Discord! {@Message} {@ResultCode}", ex.Message, ex.Result); client = null; Destroy(gameObject); return; } client?.SetLogHook(settings.logLevel, (level, message) => { switch (level) { case LogLevel.Error: Logger.Error(message); break; case LogLevel.Warn: Logger.Warn(message); break; case LogLevel.Info: Logger.Info(message); break; case LogLevel.Debug: Logger.Debug(message); break; default: throw new ArgumentOutOfRangeException(nameof(level), level, null); } }); activityManager = client?.GetActivityManager(); userManager = client?.GetUserManager(); userManager.OnCurrentUserUpdate += UpdateUserAccountInfo; TCScenesManager.PreparingSceneLoadEvent += PreparingSceneLoad; TCScenesManager.OnSceneLoadedEvent += SceneLoaded; SceneLoaded(TCScenesManager.GetActiveScene()); }
private void SceneLoaded(TCScene scene) { if (client != null) { Activity presence = new() { Assets = new ActivityAssets { LargeImage = scene.largeImageKey, LargeText = scene.LargeImageKeyText } }; if (scene.showStartTime) { presence.Timestamps = new ActivityTimestamps { Start = TimeHelper.UnixTimeNow() } } ; if (scene.isOnlineScene) { presence.Details = TCScenesManager.GetActiveScene().DisplayNameLocalized; presence.State = "Team Capture"; } else if (scene.isMainMenu) { presence.Details = "Main Menu"; } else if (!scene.isMainMenu && !scene.isOnlineScene) { presence.Details = "Loading..."; } else { Logger.Error("You CANNOT have an online scene and a main menu scene!"); } UpdateActivity(presence); } } #endregion } }
private void Setup() { scene = TCScenesManager.GetActiveScene(); if (scene == null) { Logger.Error("The scene '{@Scene}' doesn't have a TCScene assigned to it!", SceneManager.GetActiveScene().name); return; } sceneCamera = GameObject.FindWithTag(SceneCameraTag); if (sceneCamera == null) { Logger.Error( "The scene {@Scene} doesn't have a Camera with the tag `{@SceneCameraTag}` assigned to it!", scene.scene, SceneCameraTag); } }
/// <summary> /// Called after the client changes scenes /// </summary> internal static void OnClientSceneChanged(NetworkConnection conn) { Object.Instantiate(netManager.gameMangerPrefab); Logger.Info("The scene has been loaded to {Scene}", TCScenesManager.GetActiveScene().scene); }