Exemple #1
0
    // ------------------------------------------------------------------------
    // 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);
        }