public MessageBoxControl()
        {
            DataContext = this;
            InitializeComponent();
            _username = user.Username;
            socket    = AppSocket.Instance;
            GetChatRooms();
            currentChannel = "Général";
            socket.Emit("joinChannel", user.Username, "Général");

            socket.On("newChannel", (data) =>
            {
                GetChatRooms();
            });

            socket.On("chat message", (data) =>
            {
                Console.WriteLine("message!");
                Newtonsoft.Json.Linq.JObject obj        = (Newtonsoft.Json.Linq.JObject)data;
                Newtonsoft.Json.Linq.JToken un          = obj.GetValue("username");
                Newtonsoft.Json.Linq.JToken ts          = obj.GetValue("timestamp");
                Newtonsoft.Json.Linq.JToken ms          = obj.GetValue("message");
                Newtonsoft.Json.Linq.JToken channelName = obj.GetValue("channel");
                string newMessage = Environment.NewLine + un.ToString() + ts.ToString() + ":\n" + ms.ToString() + Environment.NewLine;
                updateDictionnary(newMessage.ToString(), channelName.ToString());
                Dispatcher.Invoke(() =>
                {
                    if (currentChannel == channelName.ToString())
                    {
                        messageList.Text += newMessage.ToString();
                    }
                });
            });
        }
Example #2
0
        public WaitingRoomViewModel()
        {
            socket.On("joinGame", (data) =>
            {
                Console.WriteLine(data);
                Newtonsoft.Json.Linq.JArray test = (Newtonsoft.Json.Linq.JArray)data;
                Console.WriteLine(test.Count);
                if (test.Count != 0)
                {
                    for (int i = 0; i < test.Count; i++)
                    {
                        string text = test[i] + ", ";
                        Console.WriteLine("names: " + text);
                        TextBoxData += text;
                    }
                }
            });

            socket.On("nextRound", (data) =>
            {
                Mediator.Notify("GoToFreeForAll", "");
            });
        }
        private void GetChatRooms()
        {
            List <string> temp = new List <string>();

            socket.Emit("channels");
            socket.On("channels", (data) =>
            {
                temp = (JsonConvert.DeserializeObject <List <string> >(data.ToString()));
                Dispatcher.Invoke(() =>
                {
                    foreach (var channel in temp)
                    {
                        if (!channels.Contains(channel))
                        {
                            channels.Add(channel);
                            ListOfChannels.Items.Add(channel);
                        }
                    }
                });
            });
        }
        public DrawingWindow()
        {
            InitializeComponent();

            drawingAttributes           = surfaceDessin.DefaultDrawingAttributes;
            drawingAttributes.Color     = (Color)ColorConverter.ConvertFromString("#000000");
            drawingAttributes.Height    = 10;
            drawingAttributes.Width     = 10;
            drawingAttributes.StylusTip = StylusTip.Ellipse;

            socket.On(SocketEvents.STROKE_DRAWING, (points) => {
                Dispatcher.Invoke(() => {
                    Stroke newStroke                      = new Stroke(JsonConvert.DeserializeObject <StylusPointCollection>(points.ToString()));
                    newStroke.DrawingAttributes           = drawingAttributes;
                    newStroke.DrawingAttributes.Color     = drawingAttributes.Color;
                    newStroke.DrawingAttributes.Width     = drawingAttributes.Width;
                    newStroke.DrawingAttributes.Height    = drawingAttributes.Height;
                    newStroke.DrawingAttributes.StylusTip = drawingAttributes.StylusTip;
                    surfaceDessin.Strokes.Add(newStroke);
                    ongoingStrokeIndex.Add(newStroke);
                });
            });

            socket.On(SocketEvents.STROKE_COLLECTED, (points) => {
                Dispatcher.Invoke(() => {
                    Stroke newStroke = new Stroke(JsonConvert.DeserializeObject <StylusPointCollection>(points.ToString()));
                    newStroke.DrawingAttributes.Color     = drawingAttributes.Color;
                    newStroke.DrawingAttributes.Width     = drawingAttributes.Width;
                    newStroke.DrawingAttributes.Height    = drawingAttributes.Height;
                    newStroke.DrawingAttributes.StylusTip = drawingAttributes.StylusTip;

                    foreach (Stroke strokeToDelete in ongoingStrokeIndex)
                    {
                        surfaceDessin.Strokes.Remove(strokeToDelete);
                    }

                    surfaceDessin.Strokes.Add(newStroke);
                    ongoingStrokeIndex.Clear();
                });
            });

            socket.On(SocketEvents.STROKE_ERASING, (points) => {
                Dispatcher.Invoke(() => {
                    List <StylusPoint> pointsToCheck = (JsonConvert.DeserializeObject <List <StylusPoint> >(points.ToString()));
                    pointsToCheck.ForEach((point) => {
                        StrokeCollection strokesToBeErased = surfaceDessin.Strokes.HitTest(new Point(point.X, point.Y));
                        surfaceDessin.Strokes.Remove(strokesToBeErased);
                    });
                });
            });

            socket.On(SocketEvents.STROKE_SEGMENT_ERASING, (points) => {
                Dispatcher.Invoke(() => {
                    List <StylusPoint> pointsToCheck = (JsonConvert.DeserializeObject <List <StylusPoint> >(points.ToString()));

                    Console.WriteLine(pointsToCheck.Count + " POINTS");
                    IncrementalStrokeHitTester eraserTester = surfaceDessin.Strokes.GetIncrementalStrokeHitTester(generateStylusShape());
                    eraserTester.StrokeHit += EraserTester_StrokeHit;
                    pointsToCheck.ForEach((point) => eraserTester.AddPoint(new Point(point.X, point.Y)));
                    eraserTester.StrokeHit -= EraserTester_StrokeHit;
                    eraserTester.EndHitTesting();
                });
            });

            socket.On(SocketEvents.STROKE_COLOR, (color) =>
            {
                Dispatcher.Invoke(() => {
                    string hex = "#" + ((Int64)color).ToString("X8");
                    drawingAttributes.Color = (Color)ColorConverter.ConvertFromString(hex);
                });
            });

            socket.On(SocketEvents.STROKE_SIZE, (size) =>
            {
                Dispatcher.Invoke(() => {
                    drawingAttributes.Height = Convert.ToInt32(size.ToString());
                    drawingAttributes.Width  = Convert.ToInt32(size.ToString());
                });
            });

            socket.On(SocketEvents.STROKE_TIP, (tip) =>
            {
                Dispatcher.Invoke(() => {
                    drawingAttributes.StylusTip = ((string)tip == Tool.PEN_ROUND_TIP) ? StylusTip.Ellipse : StylusTip.Rectangle;
                });
            });

            socket.On(SocketEvents.STROKE_TOOL, (tool) =>
            {
                Dispatcher.Invoke(() => {
                    OutilSelectionne = tool.ToString();
                });
            });
        }
        /// <summary>
        /// Constructeur de VueModele
        /// On récupère certaines données initiales du modèle et on construit les commandes
        /// sur lesquelles la vue se connectera.
        /// </summary>
        public FreeForAllViewModel()
        {
            JoiningGameWindow tes = new JoiningGameWindow();

            socket.On("nextRound", (data) =>
            {
                Console.WriteLine("se rend au next round");
                //    string test = data.ToString();
                Console.WriteLine(data);
                JavaScriptSerializer js = new JavaScriptSerializer();
                info        = js.Deserialize <response>(data.ToString());
                string name = info.draftsman;
                string user = User.instance.Username;
                if (name == user)
                {
                    ActivateDrawing  = true;
                    ActivateGuessing = false;
                }
                else
                {
                    ActivateDrawing  = false;
                    ActivateGuessing = true;
                }


                TextBoxWordData = info.game.name;
            });

            socket.On("answer", (data) =>
            {
                Console.WriteLine("answer socket");
                Newtonsoft.Json.Linq.JObject obj = (Newtonsoft.Json.Linq.JObject)data;
                Newtonsoft.Json.Linq.JToken un   = obj.GetValue("valid");
                Newtonsoft.Json.Linq.JToken ts   = obj.GetValue("score");
                bool validity = (bool)un;
                if (validity)
                {
                    answerBox = false;
                }
                else
                {
                    answerBox = true;
                }
                Console.WriteLine("answer validity: " + answerBox.ToString());
                Console.WriteLine("score: " + (string)ts);
            });

            ButtonCommand = new RelayCommand(o => ConvertDrawingToSVG("ToSVG"));
            // On écoute pour des changements sur le modèle. Lorsqu'il y en a, EditeurProprieteModifiee est appelée.
            editeur.PropertyChanged += new PropertyChangedEventHandler(EditeurProprieteModifiee);

            // On initialise les attributs de dessin avec les valeurs de départ du modèle.
            AttributsDessin       = new DrawingAttributes();
            AttributsDessin.Color = (Color)ColorConverter.ConvertFromString(editeur.CouleurSelectionnee);
            AjusterPointe();

            Traits = editeur.traits;

            // Pour les commandes suivantes, il est toujours possible des les activer.
            // Donc, aucune vérification de type Peut"Action" à faire.
            ChoisirPointe = new RelayCommand <string>(editeur.ChoisirPointe);
            ChoisirOutil  = new RelayCommand <string>(editeur.ChoisirOutil);
        }