Beispiel #1
0
        /// <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;
            }
        }
Beispiel #3
0
        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
    }
}
Beispiel #5
0
        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);
            }
        }
Beispiel #6
0
 /// <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);
 }