コード例 #1
0
ファイル: ChatManager.cs プロジェクト: sharknice/Sharky
 private async void ObserveChatAsync(RepeatedField <ChatReceived> chatsReceived, int frame)
 {
     foreach (var chatReceived in chatsReceived)
     {
         var chat = new Chat.Chat {
             botName = Self.PlayerName, message = chatReceived.Message, time = DateTimeOffset.Now.ToUnixTimeMilliseconds(), user = Enemy.PlayerName
         };
         if (chatReceived.PlayerId == Self.PlayerId)
         {
             Console.WriteLine($"{frame} sharkbot chat: {chatReceived.Message}");
             ChatHistory.MyChatHistory[frame] = chatReceived.Message;
             if (ApiEnabled)
             {
                 UpdateChatAsync(chat);
             }
         }
         else
         {
             Console.WriteLine($"{frame} enemy chat: {chatReceived.Message}");
             ChatHistory.EnemyChatHistory[frame] = chatReceived.Message;
             if (string.IsNullOrEmpty(ActiveChatData.EnemyName))
             {
                 ActiveChatData.EnemyName = EnemyNameService.GetNameFromChat(chat.message, EnemyPlayerManager.Enemies);
             }
             GetChatResponseAsync(chat, frame);
         }
         //GetChatResponseAsync(chat, frame); // TODO: remove this, this is for testing
     }
 }
コード例 #2
0
 void OnOwnerLeft(Chat.Chat chat, Chat.IChatOwnerInfo owner)
 {
     if (chat == null)
     {
         throw new ArgumentNullException(nameof(chat));
     }
 }
コード例 #3
0
        public void ChatUnitTest()
        {
            Client[]    clients = new Client[2];
            Chat.Chat[] chats   = new Chat.Chat[2];

            Mock <IUserMethods>[] clientMocks = new Mock <IUserMethods> [2];
            Mock <IUserMethods>[] chatMock    = new Mock <IUserMethods> [2];

            string[]   names          = new string[] { "Vlad", "Bill" };
            int[]      ports          = new int[] { 3011, 4007 };
            IPEndPoint iPEndPointVlad = null;
            IPEndPoint iPEndPointBill = null;

            foreach (var iPAdress in Dns.GetHostEntry(Dns.GetHostName()).AddressList)
            {
                if (iPAdress.AddressFamily == AddressFamily.InterNetwork)
                {
                    iPEndPointVlad = new IPEndPoint(iPAdress, 3011);
                    iPEndPointBill = new IPEndPoint(iPAdress, 4007);
                    break;
                }
            }

            for (int i = 0; i < 2; i++)
            {
                clientMocks[i] = new Mock <IUserMethods>();
                chatMock[i]    = new Mock <IUserMethods>();

                clientMocks[i].Setup(r => r.ReadName()).Returns(names[i]);
                clientMocks[i].Setup(q => q.ReadPort()).Returns(ports[i]);

                clients[i] = new Client(new StringMethods(), clientMocks[i].Object);
            }

            chatMock[0].Setup(l => l.ReadMessage()).Returns("connect");
            clientMocks[0].Setup(l => l.ReadIPEndPoint()).Returns(iPEndPointBill);

            chatMock[1].Setup(p => p.ReadMessage()).Returns(() =>
            {
                Thread.Sleep(50);
                return("exit");
            });

            chats[0] = new Chat.Chat(new StringMethods(), chatMock[0].Object);
            Thread thread = new Thread(() => chats[0].P2PChat(clients[0]));

            thread.Start();

            chats[1] = new Chat.Chat(new StringMethods(), chatMock[1].Object);
            chats[1].P2PChat(clients[1]);

            Assert.AreEqual(1, chats[0].ConnectedClientsHistory.Count);
            Assert.AreEqual(1, chats[1].ConnectedClientsHistory.Count);
        }
コード例 #4
0
ファイル: ChatManager.cs プロジェクト: sharknice/Sharky
        private async void UpdateChatAsync(Chat.Chat chat)
        {
            var chatRequest = new ChatRequest {
                chat = chat, type = "starcraft", conversationName = ConversationName, requestTime = DateTime.Now
            };

            var jsonString  = JsonConvert.SerializeObject(chatRequest);
            var httpContent = new StringContent(jsonString, Encoding.UTF8, "application/json");

            try
            {
                var response = await HttpClient.PutAsync("https://localhost:44311/api/chatupdate", httpContent); // TODO: load url from configuration, have option to disable

                response.EnsureSuccessStatusCode();
            }
            catch (Exception)
            {
            }
        }
コード例 #5
0
ファイル: ChatManager.cs プロジェクト: sharknice/Sharky
        private bool GetGameResponse(Chat.Chat chat, int frame)
        {
            var lower = " " + chat.message.ToLower() + " ";

            foreach (var chatData in ChatDataService.DefaultChataData)
            {
                if (ChatResponseTimeReady(chatData, frame))
                {
                    var matchData = MatchesTrigger(lower, chatData.Triggers);
                    if (matchData.Success)
                    {
                        chatData.LastResponseFrame       = frame;
                        LastResponseTimes[chatData.Type] = frame;
                        var message = ChatDataService.GetChatMessage(chatData, matchData, ActiveChatData.EnemyName);
                        ChatService.SendChatMessages(message);
                        return(true);
                    }
                }
            }

            return(false);
        }
コード例 #6
0
ファイル: ChatManager.cs プロジェクト: sharknice/Sharky
        private async void GetChatResponseAsync(Chat.Chat chat, int frame)
        {
            if (GetGameResponse(chat, frame))
            {
                return;
            }

            if (ApiEnabled)
            {
                var chatRequest = new ChatRequest {
                    chat = chat, type = "starcraft", conversationName = ConversationName, requestTime = DateTime.Now
                };

                var jsonString  = JsonConvert.SerializeObject(chatRequest);
                var httpContent = new StringContent(jsonString, Encoding.UTF8, "application/json");

                try
                {
                    var response = await HttpClient.PutAsync("https://localhost:44311/api/chat", httpContent); // TODO: load url from configuration

                    response.EnsureSuccessStatusCode();

                    var jsonResponse = await response.Content.ReadAsStringAsync();

                    var chatResponse = JsonConvert.DeserializeObject <ChatResponse>(jsonResponse);

                    if (chatResponse.confidence > .5)
                    {
                        ChatService.SendChatMessages(chatResponse.response);
                    }
                }
                catch (Exception)
                {
                }
            }
        }
コード例 #7
0
 void OnOwnerJoined(Chat.Chat chat, Chat.IChatOwnerInfo owner)
 {
 }
コード例 #8
0
 void OnNewMessage(Chat.Chat chat, Chat.Entry entry)
 {
 }