コード例 #1
0
        public Listeners(Socket socket, Client client)
        {
            socket.On("message", (Action <object>)((data) =>
            {
                Console.WriteLine("MESSAGE INCOMING");
                Message message = new Message(data.ToString());
                System.Windows.Application.Current.Dispatcher.Invoke(delegate
                {
                    MessageList.Add(message);
                });

                Console.WriteLine((string)("+++++++++++ MESSAGE:" + message.Text + " " + message.Type + " +++++++++++"));
            }));

            socket.On("roomSwitched", (data) =>
            {
                RoomParameter roomParameter = new RoomParameter(data.ToString());
                Client.RoomId = roomParameter.RoomId;
                Console.WriteLine("+++++++++++ ROOM SWITCHED:" + roomParameter.RoomName + " +++++++++++");
                OnChatroomSwitched(roomParameter.RoomName);
            });

            socket.On("isWaiting", () =>
            {
                OnIsWaiting();
                System.Windows.Application.Current.Dispatcher.Invoke(delegate
                {
                    MessageList.Clear();
                    MessageList.Add(new Message("Waiting for an Opponent...", MessageDisplayType.MessageInfo));
                });
            });

            socket.On("gameover", () =>
            {
                Console.WriteLine("GAMEOVER");
                System.Windows.Application.Current.Dispatcher.Invoke(delegate
                {
                    Client.IsOnTurn = false;
                    Client.EmitEndSession();
                    MessageList.Clear();
                    OnMatchAbort();
                });
            });

            socket.On("turnBroadcast", (data) =>
            {
                OnTurnBroadcast(new TurnBroadcast(data.ToString()));
            });

            socket.On("gameBegins", () =>
            {
            });

            socket.On("cSharpSaveReset", () =>
            {
                System.Windows.Application.Current.Dispatcher.Invoke(delegate
                {
                    OnMatchStart(true);
                });
            });

            socket.On("matchParameter", (data) =>
            {
                MatchParameter mP    = new MatchParameter(data.ToString());
                Client.OpponentsName = mP.OpponentsName;
                Client.OpponentsId   = mP.OpponentsId;
                Client.IsOnTurn      = mP.FirstTurn;
                var delayedTurnEmit  = System.Threading.Tasks.Task.Run(() => OnSetOnTurn(mP.FirstTurn));
                delayedTurnEmit.Wait(TimeSpan.FromMilliseconds(300));
                OnSetOnTurn(mP.FirstTurn);
            });

            socket.On("winnerBroadcast", (data) =>
            {
                WinnerBroadcast wB = new WinnerBroadcast(data.ToString());
                OnMatchResult(wB.animation);
                System.Windows.Application.Current.Dispatcher.Invoke(delegate
                {
                    if (wB.isWinner)
                    {
                        MessageList.Add(new Message("You Won!", MessageDisplayType.ResultWin));
                    }
                    else
                    {
                        MessageList.Add(new Message("You Lost!", MessageDisplayType.ResultLose));
                    }
                });
            });

            socket.On("drawBroadcast", (data) =>
            {
                System.Windows.Application.Current.Dispatcher.Invoke(delegate
                {
                    MessageList.Add(new Message("You both are too dumb to win", MessageDisplayType.ResultDraw));
                });
            });

            socket.On("scoreBroadcast", (data) =>
            {
                ScoreBroadcast sb = new ScoreBroadcast(data.ToString());
                OnScoreBroadcast("You   " + sb.clientScore + " : " + sb.opponentsScore + "   " + Client.OpponentsName);
            });

            socket.On("revancheRequest", (data) =>
            {
                System.Windows.Application.Current.Dispatcher.Invoke(delegate
                {
                    //TODO
                    MessageList.Add(new Message(Client.OpponentsName + " wants a revanche... Take it or leave it.", MessageDisplayType.RevancheInvitation));
                });
            });

            socket.On("playAgainRequest", (data) =>
            {
                System.Windows.Application.Current.Dispatcher.Invoke(delegate
                {
                    //TODO
                    MessageList.Add(new Message(Client.OpponentsName + " wants to play again...", MessageDisplayType.PlayAgainInvitation));
                });
            });

            socket.On("revancheAccepted", (data) =>
            {
                System.Windows.Application.Current.Dispatcher.Invoke(delegate
                {
                    MessageList.Clear();
                    OnMatchStart(true);
                    MessageList.Add(new Message(Client.OpponentsName + " wants to kick your ass again!", MessageDisplayType.MessageInfo));
                });
            });

            socket.On("playAgainAccepted", (data) =>
            {
                System.Windows.Application.Current.Dispatcher.Invoke(delegate
                {
                    MessageList.Clear();
                    OnMatchStart(true);
                    MessageList.Add(new Message(Client.OpponentsName + " wants to play again!", MessageDisplayType.MessagePrimary));
                });
            });

            socket.On("firstTurn", () =>
            {
                System.Windows.Application.Current.Dispatcher.Invoke(delegate
                {
                    MessageList.Clear();
                });
            });

            socket.On("setOnTurn", (data) =>
            {
                var delayedTurnEmit = System.Threading.Tasks.Task.Run(() => OnSetOnTurn((bool)data));
                delayedTurnEmit.Wait(TimeSpan.FromMilliseconds(400));
                OnSetOnTurn((bool)data);
                Client.IsOnTurn = (bool)data;
            });

            socket.On("opponentFound", (data) =>
            {
                System.Windows.Application.Current.Dispatcher.Invoke(delegate
                {
                    OnMatchStart(false);
                    MessageList.Clear();
                    MessageList.Add(new Message("Opponent found, you're playing against " + data, MessageDisplayType.MessageInfo));
                    System.Windows.Application.Current.MainWindow.DataContext = new GameViewModel();
                });
            });

            socket.On("idCommit", (data) =>
            {
                Client.SocketId = data.ToString();
                Console.WriteLine("+++++++++++ ID COMMIT:" + data + " +++++++++++");
            });

            socket.On("updateOnlineUsers", (data) =>
            {
                OnUpdateOnlineUsers((int)(long)data);
            });
        }
コード例 #2
0
 private void OnScoreBroadcast(string score)
 {
     ScoreBroadcast?.Invoke(score, EventArgs.Empty);
 }