private void SetupSocket_Minigames_3()
        {
            socket.On("started_minigame_3", data => {
                Debug.LogInfo($"Socket.IO: 'started_minigame_3', received data:\n{data?.ToString()}\n", "NETWORK");
                var minigameData = (JObject)data;
                ActiveMinigame3  = new NetworkNeverHaveIEver(minigameData.Value <string>("gameGuid"), minigameData.Value <string>("ownerGuid"));
                startedMinigame3 = true;
            });
            socket.On("voted_minigame_3", data => {
                Debug.LogInfo($"Socket.IO: 'voted_minigame_3', received data:\n{data?.ToString()}\n", "NETWORK");
                var minigameData = (JObject)data;
                var redirect     = minigameData.TryGetValue("redirect", out _);
                ActiveMinigame3.SetVote(minigameData.Value <string>("guid"), minigameData.Value <string>("vote"));
                if (redirect)
                {
                    return;
                }
                if (ActiveMinigame3.Owner == PlayerData.GUID && ActiveMinigame3.IsQuestionDone)
                {
                    socket.Emit("results_minigame_3", "");
                    Debug.LogInfo($"Socket.IO Emit: 'results_minigame_3', sent data: \"\"", "NETWORK");
                    showResultsMinigame3 = true;
                }
                else
                {
                    newVoteMinigame3 = true;
                }
            });

            socket.On("request_minigame_3", data => {
                Debug.LogInfo($"Socket.IO: 'request_minigame_3', received data:\n{data?.ToString()}\n", "NETWORK");
                var minigameData  = (JObject)data;
                var questionIndex = minigameData.Value <int>("question");
                var question      = Minigame3Element.GetQuestion(questionIndex);
                ActiveMinigame3.StartNewQuestion(question);
                newQuestionMinigame3 = true;
            });
            socket.On("results_minigame_3", data => {
                Debug.LogInfo($"Socket.IO: 'results_minigame_3', received data:\n{data?.ToString()}\n", "NETWORK");
                showResultsMinigame3 = true;
            });
            socket.On("finished_minigame_3", data => {
                Debug.LogInfo($"Socket.IO: 'finished_minigame_3', received data:\n{data?.ToString()}\n", "NETWORK");
                finishedMinigame3 = true;
            });
        }
 public override void Load()
 {
     Root.AddChild(new Image(0, 0, Globals.WIDTH, Globals.HEIGHT, new game.Sprite("data/sprites/locations/coffee_fellows/bar.jpg")));
     Root.AddChild(new Button(Globals.WIDTH / 3f + 20, 40, 200, 40, "Start minigame", () => { NetworkManager.Instance.StartMinigame3(); }));
     Root.AddChild(chatInstance    = new ChatElement(0, 0, Globals.WIDTH / 3f, Globals.HEIGHT));
     Root.AddChild(jukeboxInstance = new JukeboxElement(0, 0, Globals.WIDTH, Globals.HEIGHT, "data/sprites/locations/coffee_fellows/jukebox.jpg",
                                                        new [] { "Song1", "Song2", "Song3", "Song4", "Song5" }));
     Root.AddChild(new Button(916, 420, 255, 110, "Open jukebox", ButtonStyle.Transparent, () => { jukeboxInstance.Initialize(); }));
     Root.AddChild(minigame3Element = new Minigame3Element(730f, 314f, 1100f, 450f, LabelStyle.Default.Alter(textSizeNormal: 24f, textAlignmentNormal: FontLoader.CenterCenterAlignment, textColorNormal: Color.White), LabelStyle.Default.Alter(textColorNormal: Color.White), LabelStyle.Default.Alter(textSizeNormal: 12f, textColorNormal: Color.White, textAlignmentNormal: FontLoader.CenterTopAlignment), LabelStyle.Default.Alter(textAlignmentNormal: FontLoader.LeftCenterAlignment, textColorNormal: Color.White), LabelStyle.Default.Alter(textAlignmentNormal: FontLoader.CenterCenterAlignment, textColorNormal: Color.White), ButtonStyle.Transparent, ButtonStyle.Default.Alter(backgroundColorNormal: Color.FromArgb(255, 73, 73, 81), backgroundColorHover: Color.FromArgb(255, 73, 73, 81), backgroundColorPressed: Color.FromArgb(255, 73, 73, 81), borderSizeHover: 4, borderSizeNormal: 4, borderSizePressed: 4, borderColorNormal: Color.White, borderColorHover: Color.White, borderColorPressed: Color.White, textColorHover: Color.Transparent, textColorNormal: Color.Transparent, textColorPressed: Color.Transparent)));
     Root.AddChild(new Button(10, 10, Globals.WIDTH / 3f - 20f, 40, "Leave room", () => {
         SoundManager.Instance.StopPlaying(jukeboxInstance.CurrentlyPlaying);
         NetworkManager.Instance.LeaveRoom();
     }));
     ChatElement.ActiveChat          = chatInstance;
     JukeboxElement.ActiveJukebox    = jukeboxInstance;
     Minigame3Element.ActiveMinigame = minigame3Element;
     IsLoaded = true;
 }