diff --git a/EnhancedStreamChat/Chat/ChatHandler.cs b/EnhancedStreamChat/Chat/ChatHandler.cs index d9ba3d1..8b87cac 100644 --- a/EnhancedStreamChat/Chat/ChatHandler.cs +++ b/EnhancedStreamChat/Chat/ChatHandler.cs @@ -26,8 +26,7 @@ public class ChatHandler : MonoBehaviour public static ChatHandler Instance = null; public static ConcurrentQueue RenderQueue = new ConcurrentQueue(); public static Func ChatMessageFilters; - - public bool displayStatusMessage = false; + public Image lockButtonImage; public Image background; public GameObject lockButtonPrimitive; @@ -52,6 +51,8 @@ public class ChatHandler : MonoBehaviour private string _lastFontName; private CustomText _testMessage = null; private readonly WaitUntil _delay = new WaitUntil(() => { return Instance._waitForFrames == 0; }); + private bool _hasDisplayedStatus = false; + private DateTime _startupTime = DateTime.Now; public static void OnLoad() { @@ -130,31 +131,38 @@ private void OnConfigChanged() background.color = ChatConfig.Instance.BackgroundColor; } - public void FixedUpdate() + public void Update() { if (Drawing.MaterialsCached) { // Wait a few seconds after we've connect to the chat, then send our welcome message - if (displayStatusMessage && TwitchWebSocketClient.Initialized && (TwitchWebSocketClient.IsChannelValid || (DateTime.Now - TwitchWebSocketClient.ConnectionTime).TotalSeconds >= 10)) + if (!_hasDisplayedStatus && TwitchWebSocketClient.Initialized && (TwitchWebSocketClient.IsChannelValid || ((DateTime.Now - _startupTime).TotalSeconds >= 10 && (DateTime.Now - TwitchWebSocketClient.ConnectionTime).TotalSeconds >= 10))) { string msg; if (TwitchWebSocketClient.Connected && TwitchWebSocketClient.LoggedIn) { - ImageDownloader.Instance.Init(); - if (TwitchLoginConfig.Instance.TwitchChannelName == String.Empty) + { msg = $"Welcome to Enhanced Stream Chat! To continue, enter your Twitch channel name in the Enhanced Stream Chat settings submenu, or manually in TwitchLoginInfo.ini, which is located in your Beat Saber\\UserData\\StreamCore directory."; + } else if (TwitchWebSocketClient.IsChannelValid) + { + ImageDownloader.Instance.Init(); msg = $"Success joining channel \"{TwitchLoginConfig.Instance.TwitchChannelName}\""; + } else + { msg = $"Failed to join channel \"{TwitchLoginConfig.Instance.TwitchChannelName}\". Please enter a valid Twitch channel name in the Enhanced Twitch Chat settings submenu, or manually in TwitchLoginInfo.ini, then try again."; + } } else msg = "Failed to login to Twitch! Please check your login info in UserData\\StreamCore\\TwitchLoginInfo.ini, then try again."; + + //msg += $" Connected: {TwitchWebSocketClient.Connected}, LoggedIn: {TwitchWebSocketClient.LoggedIn}, ChannelValid: {TwitchWebSocketClient.IsChannelValid}, TimeDiff: {(DateTime.Now - _startupTime).TotalSeconds}"; RenderQueue.Enqueue(new ChatMessage(msg, new TwitchMessage())); - displayStatusMessage = false; + _hasDisplayedStatus = true; } if (_configChanged) @@ -203,7 +211,6 @@ public void FixedUpdate() } StartCoroutine(AddNewChatMessage(messageToSend.msg, messageToSend)); } - } // Save images to file when we're at the main menu else if (Globals.IsAtMainMenu && ImageDownloader.ImageSaveQueue.Count > 0 && ImageDownloader.ImageSaveQueue.TryDequeue(out var saveInfo)) @@ -234,8 +241,8 @@ public void LateUpdate() private void RegisterMessageHandlers() { - TwitchWebSocketClient.OnTwitchChannelUpdated += (newChannel) => displayStatusMessage = true; - TwitchWebSocketClient.OnConnected += () => displayStatusMessage = true; + TwitchWebSocketClient.OnTwitchChannelUpdated += (newChannel) => _hasDisplayedStatus = false; + TwitchWebSocketClient.OnConnected += () => _hasDisplayedStatus = false; // PRIVMSG handler TwitchMessageHandlers.PRIVMSG += (twitchMsg) => diff --git a/EnhancedStreamChat/Images/ImageDownloader.cs b/EnhancedStreamChat/Images/ImageDownloader.cs index d41a53a..7ba5c27 100644 --- a/EnhancedStreamChat/Images/ImageDownloader.cs +++ b/EnhancedStreamChat/Images/ImageDownloader.cs @@ -130,7 +130,7 @@ public static void OnLoad() { if (Instance) return; - new GameObject("EnhancedTwitchChatImageDownloader").AddComponent(); + new GameObject("EnhancedStreamChatImageDownloader").AddComponent(); } public void Awake() diff --git a/EnhancedStreamChat/Plugin.cs b/EnhancedStreamChat/Plugin.cs index b68fd9b..88f0285 100644 --- a/EnhancedStreamChat/Plugin.cs +++ b/EnhancedStreamChat/Plugin.cs @@ -20,7 +20,7 @@ public class Plugin : IPlugin { public static readonly string ModuleName = "EnhancedStreamChat"; public string Name => ModuleName; - public string Version => "2.0.1"; + public string Version => "2.0.2"; public static Plugin Instance { get; private set; } diff --git a/EnhancedStreamChat/Properties/AssemblyInfo.cs b/EnhancedStreamChat/Properties/AssemblyInfo.cs index a17b428..b480a4d 100644 --- a/EnhancedStreamChat/Properties/AssemblyInfo.cs +++ b/EnhancedStreamChat/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.0.1.0")] -[assembly: AssemblyFileVersion("2.0.1.0")] +[assembly: AssemblyVersion("2.0.2.0")] +[assembly: AssemblyFileVersion("2.0.2.0")] diff --git a/EnhancedStreamChat/UI/Settings.cs b/EnhancedStreamChat/UI/Settings.cs index e98e9ee..c27bcff 100644 --- a/EnhancedStreamChat/UI/Settings.cs +++ b/EnhancedStreamChat/UI/Settings.cs @@ -42,7 +42,7 @@ public static void OnLoad() //MenuButtonUI.AddButton("Restart Game", () => { System.Diagnostics.Process.Start(Path.Combine(Environment.CurrentDirectory, System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName), Environment.CommandLine); Application.Quit(); }); - var menu = SettingsUI.CreateSubMenu("Enhanced Twitch Chat"); + var menu = SettingsUI.CreateSubMenu("Enhanced Stream Chat"); var channelName = menu.AddString("Twitch Channel Name", "The name of the channel you want Enhanced Twitch Chat to monitor"); channelName.SetValue += (channel) => { TwitchLoginConfig.Instance.TwitchChannelName = channel; }; channelName.GetValue += () => { return TwitchLoginConfig.Instance.TwitchChannelName; };