// ------------------------------------------------------------------------ // Functions // ------------------------------------------------------------------------ public void Setup( MessageSO message, int index, ChatRunner chatRunner ) { Text.text = message.Options[index]; Button.onClick.AddListener( delegate { chatRunner.SelectOption(message, index); } ); }
private ChatRunner StartChatRunner() { ChatRunner cr = new ChatRunner(); Func <int, string, bool> callback = (int code, string response) => { cr.Running = false; switch (code) { case 200: ChatMessage message; try { message = JsonConvert.DeserializeObject <ChatMessage>(response); } catch (JsonReaderException) { Puts($"Could not decode JSON message from body: {response}"); return(true); } if (message != null) { string chatName = message?.DisplayName; string consoleName = message?.DisplayName; if ((chatName != null) && (message.ClanTag != string.Empty)) { chatName = $"{string.Format(lang.GetMessage("chat.ClanTag", this), message.ClanTag)}{chatName}"; consoleName = $"{string.Format(lang.GetMessage("console.ClanTag", this), message.ClanTag)}{consoleName}"; } Puts(string.Format(lang.GetMessage("console.Msg", this), consoleName, message?.Message)); string chatMessage = string.Format(lang.GetMessage("chat.Msg", this), chatName, message?.Message); foreach (IPlayer p in players.Connected) { p.Message(chatMessage); } } return(true); case 204: // Status No Content return(true); } return(false); }; cr.Timer = timer.Every(1f, () => { if (!cr.Running) { if ((bool)PoundBot.Call("API_GetChannelMessage", new object[] { this, "chat", callback })) { cr.LastRun = DateTime.UtcNow; cr.Running = true; cr.LastStartOK = true; } else { // The API is down or could not start cr.LastStartOK = false; } } else if (cr.LastStartOK && cr.LastRun.AddSeconds(60) < DateTime.UtcNow) { cr.Running = false; RestartChatRunner(cr.ID); } }); return(cr); }