Example #1
0
 public void ClientJoinResponse(Player player)
 {
     debugOut("Server joined");
     mainGame.GeneralMessageQueue.Enqueue("You joined the server!");
     mainGame.joinMenu.SetJoinButtonText("Joined!");
     AudioHelper.play(ContentStore.soundGood);
     clientData.CurrentPlayer = player;
 }
Example #2
0
        public PageSettings(MainGame mainGame) : base(mainGame)
        {
            Arranger arranger = new Arranger(true, 1, 'C', ScaleManager.InterfaceScale * 2);

            muteButton = new PatchButton(15, Vector2.Zero, buttonPatch, ScaleManager.InterfaceScale, SettingsHelper.Instance.Mute ? "Un-mute Sounds" : "Mute Sounds", () => {
                SettingsHelper.Instance.Mute = !SettingsHelper.Instance.Mute;
                AudioHelper.play(ContentStore.soundPop);
                muteButton.Text = SettingsHelper.Instance.Mute ? "Un-mute Sounds" : "Mute Sounds";
            });
            addButton(muteButton);
            arranger.addObject(muteButton, 0);

            toggleUsernamesButton = new PatchButton(15, Vector2.Zero, buttonPatch, ScaleManager.InterfaceScale, SettingsHelper.Instance.ShowNameplates ? "Hide Usernames" : "Show Usernames", () => {
                SettingsHelper.Instance.ShowNameplates = !SettingsHelper.Instance.ShowNameplates;
                AudioHelper.play(ContentStore.soundPop);
                toggleUsernamesButton.Text = SettingsHelper.Instance.ShowNameplates ? "Hide Usernames" : "Show Usernames";
            });
            addButton(toggleUsernamesButton);
            arranger.addObject(toggleUsernamesButton, 0);

            playerCountCheckButton = new PatchButton(15, Vector2.Zero, buttonPatch, ScaleManager.InterfaceScale, SettingsHelper.Instance.PlayerCountCheck ? "Min. Players: 3" : "Min. Players: 1", () => {
                SettingsHelper.Instance.PlayerCountCheck = !SettingsHelper.Instance.PlayerCountCheck;
                AudioHelper.play(ContentStore.soundPop);
                playerCountCheckButton.Text = SettingsHelper.Instance.PlayerCountCheck ? "Min. Players: 3" : "Min. Players: 1";
            });
            addButton(playerCountCheckButton);
            arranger.addObject(playerCountCheckButton, 0);

            demoModeButton = new PatchButton(15, Vector2.Zero, buttonPatch, ScaleManager.InterfaceScale, SettingsHelper.Instance.DemoMode ? "Demo Mode: ON" : "Demo Mode: OFF", () => {
                SettingsHelper.Instance.DemoMode = !SettingsHelper.Instance.DemoMode;
                AudioHelper.play(ContentStore.soundPop);
                demoModeButton.Text = SettingsHelper.Instance.DemoMode ? "Demo Mode: ON" : "Demo Mode: OFF";
            });
            addButton(demoModeButton);
            arranger.addObject(demoModeButton, 0);

            resetFirstRunButton = new PatchButton(15, Vector2.Zero, buttonPatch, ScaleManager.InterfaceScale, SettingsHelper.Instance.FirstRun ? "Have fun!" : "Clear Saved Data", () => {
                if (!SettingsHelper.Instance.FirstRun)
                {
                    SettingsHelper.Instance.ResetFirstRun();
                    AudioHelper.play(ContentStore.soundPop);
                }

                resetFirstRunButton.Text = SettingsHelper.Instance.FirstRun ? "Have fun!" : "Reset First Run";
            });
            addButton(resetFirstRunButton);
            arranger.addObject(resetFirstRunButton, 0);

            PatchButton backButton = new PatchButton(5, Vector2.Zero, buttonPatch, ScaleManager.InterfaceScale, "Back", () => {
                AudioHelper.play(ContentStore.soundPop);
                mainGame.menuController.changeActivePage(mainGame.mainMenu);
            });

            addButton(backButton);
            arranger.addObject(backButton, 0);

            arranger.performArrangements();
        }
Example #3
0
 public void BidRequested(int maxBid)
 {
     debugOut("Bid requested");
     lastMaxBid = maxBid;
     MainGame.Instance.GeneralMessageQueue.Enqueue("Your turn to place a bid");
     client.frameController.activate(client.frameBid);
     client.frameBid.setMaxBid(maxBid);
     AudioHelper.play(ContentStore.soundGood);
     Thread.Sleep(1000);
 }
Example #4
0
        public PageTutorial(MainGame mainGame) : base(mainGame)
        {
            whiteout = new Texture2D(mainGame.GraphicsDevice, 1, 1);
            whiteout.SetData <Color>(new Color[] { Color.White });
            slides  = new Texture2D[14];
            anchors = new SlideAnchor[14];
            for (int i = 1; i <= 14; i++)
            {
                slides[i - 1]  = mainGame.Content.Load <Texture2D>("tutorial\\Tutorial_A" + i.ToString() + ".png");
                anchors[i - 1] = new SlideAnchor(Arranger.staticPoint(0.5f, 0.5f));
                addMovable(anchors[i - 1]);
            }
            leftArrow  = mainGame.Content.Load <Texture2D>("tutorial\\arrowLeft.png");
            rightArrow = mainGame.Content.Load <Texture2D>("tutorial\\arrowRight.png");

            scale     = (float)screenSize.Y / (float)slides[0].Height;
            texCentre = new Vector2(slides[0].Width / 2f, slides[0].Height / 2f);

            Arranger arranger = new Arranger(true, 3, 'R', ScaleManager.InterfaceScale * 2);

            LinePoly backPoly = new LinePoly(
                Vector2.Zero,
                new Vector2(-9.5f, -10f),
                new Vector2(9.5f, -10f),
                new Vector2(9.5f, 10f),
                new Vector2(-9.5f, 10f)
                );

            navigateBack = new PolyButton(Vector2.Zero, backPoly, leftArrow, new Vector2(7.5f, 8f), ScaleManager.CardScale, 0f);
            arranger.addObject(navigateBack, 0);
            addMovable(navigateBack);

            LinePoly fwdPoly = new LinePoly(
                Vector2.Zero,
                new Vector2(-9.5f, -10f),
                new Vector2(9.5f, -10f),
                new Vector2(9.5f, 10f),
                new Vector2(-9.5f, 10f)
                );

            navigateForward = new PolyButton(Vector2.Zero, fwdPoly, rightArrow, new Vector2(7.5f, 8f), ScaleManager.InterfaceScale, 0f);
            arranger.addObject(navigateForward, 2);
            addMovable(navigateForward);

            backButton = new PatchButton(5, Vector2.Zero, ContentStore.standardPatch, ScaleManager.InterfaceScale, "Back", () => {
                AudioHelper.play(ContentStore.soundPop);
                mainGame.menuController.changeActivePage(mainGame.mainMenu);
            });
            addButton(backButton);
            arranger.addObject(backButton, 1);

            arranger.performArrangements();
        }
Example #5
0
        public void EndGameMessageReceived(Player winner)
        {
            debugOut("Endgame Message Received");
            mainGame.GeneralMessageQueue.Enqueue("Game Over!");
            client.frameEndgame.populate();
            client.frameController.activate(client.frameEndgame);
            if (winner.ID == clientData.CurrentPlayer.ID)
            {
                AudioHelper.play(ContentStore.soundVictory);
            }
            Thread.Sleep(3000);

            int             maxScore = -1;
            PlayerContainer winners  = new PlayerContainer();

            foreach (Score score in network.Scores.GetAllScores())
            {
                if (maxScore == -1 || score.Value > maxScore)
                {
                    maxScore = score.Value;
                }
            }

            foreach (Score score in network.Scores.GetAllScores())
            {
                if (score.Value == maxScore)
                {
                    winners.AddPlayer(network.Players.GetPlayerByID(score.ID));
                }
            }

            String message = "";

            if (winners.GetPlayers().Count == 1)
            {
                message = winners.GetPlayers()[0].Name + " won with a score of " + maxScore + "!";
            }
            else if (winners.GetPlayers().Count == 2)
            {
                message = winners.GetPlayers()[0].Name + " and " + winners.GetPlayers()[1].Name + " drew with a score of " + maxScore + "!";
            }
            else if (winners.GetPlayers().Count > 2)
            {
                for (int i = 0; i < winners.GetPlayers().Count - 1; i++)
                {
                    message += winners.GetPlayers()[i].Name + ", ";
                }
                message += " and " + winners.GetPlayers()[winners.GetPlayers().Count - 1].Name + " drew with a score of " + maxScore + "!";
            }

            mainGame.GeneralMessageQueue.Enqueue(message);
        }
Example #6
0
 public override void update(GameTime gameTime)
 {
     base.update(gameTime);
     if (IsActive)
     {
         cycle += (float)gameTime.ElapsedGameTime.TotalSeconds;
         if (cycle >= 4f)
         {
             cycle -= 4f;
             AudioHelper.play(ContentStore.soundNeutral);
         }
     }
 }
Example #7
0
        public void HostCardPlayed(RawCard card, Player player)
        {
            if (MainGame.Instance.HostOnly)
            {
                debugOut("Card received");

                card.Player = player.ID;
                client.playCard(card);
                clientData.cardPlayed(card, player.ID);

                AudioHelper.play(ContentStore.soundSlide);
            }
        }
Example #8
0
 private void dropZoneAction(Card card)
 {
     if (!card.Fade && clientData.CardRequested)
     {
         hand.removeCard(card);
         UltraClient.Instance.network.SendCard(card.Raw, null);
         AudioHelper.play(ContentStore.soundDrop);
         clientData.CardRequested = false;
     }
     else
     {
         AudioHelper.play(ContentStore.soundBad);
     }
 }
Example #9
0
 public void CardRequested()
 {
     debugOut("Card requested");
     MainGame.Instance.GeneralMessageQueue.Enqueue("Your turn to play a card");
     AudioHelper.play(ContentStore.soundGood);
     clientData.CardRequested = true;
     client.tableToHand();
     Thread.Sleep(1000);
     if (SettingsHelper.Instance.FirstRun && lastMaxBid <= 2)
     {
         MainGame.Instance.GeneralMessageQueue.Enqueue("Drag and drop a card to play it");
         Thread.Sleep(1000);
     }
 }
Example #10
0
 public void ClientJoinFailed(Player player)
 {
     if (player == null)
     {
         mainGame.GeneralMessageQueue.Enqueue("Unable to join, please try again");
     }
     else
     {
         mainGame.GeneralMessageQueue.Enqueue(player.Name);
     }
     mainGame.joinMenu.JoinAttempted = false;
     mainGame.joinMenu.SetJoinButtonText("Join");
     AudioHelper.play(ContentStore.soundBad);
 }
Example #11
0
 public void TrickWinnerReceived(Player winner)
 {
     while (winner == null)
     {
         ;
     }
     debugOut("Trick winner received (" + winner.Name + ")");
     MainGame.Instance.GeneralMessageQueue.Enqueue(network.Players.GetPlayerByID(winner.ID).Name + " won the trick!");
     clientData.trickWon(winner.ID);
     AudioHelper.play(ContentStore.soundGood);
     lastReceivedCard = null;
     Thread.Sleep(2000);
     client.frameTable.clearTrick();
     client.frameHand.table.clearTrick();
     clientData.trickStart();
 }
Example #12
0
 public void ClientJoinSuccess(Player player)
 {
     debugOut("Player joined: " + player.Name);
     if (player.Name != MainGame.Instance.hostMenu.HostName)
     {
         MainGame.Instance.GeneralMessageQueue.Enqueue(player.Name + " has joined!");
     }
     if (UltraClient.Instance != null && player.Name != UltraClient.Instance.network.ClientName)
     {
         AudioHelper.play(ContentStore.soundGood);
     }
     if (MainGame.Instance.HostOnly)
     {
         MainGame.Instance.hostMenu.addPlayer(player);
     }
 }
Example #13
0
        public void ServerStopped()
        {
            AudioHelper.play(ContentStore.soundBad);
            if (backButton.Text == "-")
            {
                UltraClient.Instance.LeaveGameMessageReceived(UltraClient.Instance.network.Me);
                UltraClient.Instance.network.SendLeaveGameMessage(UltraClient.Instance.network.Me);
                UltraClient.Instance.network.Me = null;
                backButton.Text   = "Back";
                joinButton.Text   = "Join";
                nameField.Enabled = true;
                ipField.Enabled   = true;
                joinAttempted     = false;
                clientTask.Dispose();
//				mainGame.GeneralMessageQueue.Enqueue("You left the game!");
            }
        }
Example #14
0
        public void HostBidReceived(Bid bid)
        {
            if (MainGame.Instance.HostOnly)
            {
                while (bid == null)
                {
                    ;
                }
                debugOut("Bid received");

                clientData.placeBid(bid);

                AudioHelper.play(ContentStore.soundNeutral);
                Console.WriteLine("Bid player ID: " + bid.ID);
                Console.WriteLine(network.Players.GetPlayerByID(bid.ID).Name + " bid to win " + bid.Value);
                MainGame.Instance.GeneralMessageQueue.Enqueue(network.Players.GetPlayerByID(bid.ID).Name + " bid to win " + bid.Value);
                Thread.Sleep(1000);
            }
        }
Example #15
0
        public override void update(GameTime gameTime)
        {
            base.update(gameTime);
            for (int i = 0; i < 14; i++)
            {
                if (i == index)
                {
                    anchors[i].moveTo(position + Arranger.staticPoint(0.5f, 0.5f), ScaleManager.InterfaceScale);
                }
                else if (i > index)
                {
                    anchors[i].moveTo(position + Arranger.staticPoint(1.5f, 0.5f), ScaleManager.InterfaceScale);
                }
                else if (i < index)
                {
                    anchors[i].moveTo(position + Arranger.staticPoint(-0.5f, 0.5f), ScaleManager.InterfaceScale);
                }
            }

            foreach (GestureSample gesture in GestureManager.Gestures)
            {
                if (gesture.GestureType == GestureType.Tap)
                {
                    if (navigateBack.checkForHit(gesture.Position))
                    {
                        if (index != 0)
                        {
                            AudioHelper.play(ContentStore.soundRoll);
                            index--;
                        }
                    }
                    if (navigateForward.checkForHit(gesture.Position))
                    {
                        if (index != 13)
                        {
                            AudioHelper.play(ContentStore.soundRoll);
                            index++;
                        }
                    }
                }
            }
        }
Example #16
0
        public PageMainMenu(MainGame mainGame) : base(mainGame)
        {
            Arranger arranger = new Arranger(true, 1, 'C', ScaleManager.InterfaceScale * 2);

            spacer = new Arranger.ArrangerSpacer(128 * ScaleManager.InterfaceScale, 64 * ScaleManager.InterfaceScale, false);
            addMovable(spacer);
            arranger.addObject(spacer, 0);

            PatchButton joinButton = new PatchButton(10, Vector2.Zero, buttonPatch, ScaleManager.InterfaceScale, "Join Game", () => {
                AudioHelper.play(ContentStore.soundPop);
                mainGame.menuController.changeActivePage(mainGame.joinMenu);
            });

            addButton(joinButton);
            arranger.addObject(joinButton, 0);

            PatchButton hostButton = new PatchButton(10, Vector2.Zero, buttonPatch, ScaleManager.InterfaceScale, "Host Game", () => {
                AudioHelper.play(ContentStore.soundPop);
                mainGame.menuController.changeActivePage(mainGame.preHostGame);
            });

            addButton(hostButton);
            arranger.addObject(hostButton, 0);

            PatchButton settingsButton = new PatchButton(10, Vector2.Zero, buttonPatch, ScaleManager.InterfaceScale, "Settings", () => {
                AudioHelper.play(ContentStore.soundPop);
                mainGame.menuController.changeActivePage(mainGame.settingsMenu);
            });

            addButton(settingsButton);
            arranger.addObject(settingsButton, 0);

            PatchButton helpButton = new PatchButton(10, Vector2.Zero, buttonPatch, ScaleManager.InterfaceScale, "Help", () => {
                AudioHelper.play(ContentStore.soundPop);
                mainGame.menuController.changeActivePage(mainGame.tutorialPage);
            });

            addButton(helpButton);
            arranger.addObject(helpButton, 0);

            arranger.performArrangements();
        }
Example #17
0
        public void CardReceived(RawCard card)
        {
            debugOut("Card received");
            if (card == lastReceivedCard)
            {
                return;
            }

            if (card.Player != -1)
            {
                client.playCard(card);
                clientData.cardPlayed(card, card.Player);
            }
            else
            {
                client.dealtCard(card);
            }

            lastReceivedCard = card;

            AudioHelper.play(ContentStore.soundSlide);
        }
Example #18
0
        public override void update(GameTime gameTime)
        {
            base.update(gameTime);
            foreach (GestureSample gesture in GestureManager.Gestures)
            {
                if (gesture.GestureType == GestureType.Tap)
                {
                    if (upButton.checkForHit(gesture.Position))
                    {
                        if (value < rangeHigh)
                        {
                            value++;
                            AudioHelper.play(ContentStore.soundRoll);
                        }
                        else
                        {
                            AudioHelper.play(ContentStore.soundBad);
                        }
                    }
                    if (downButton.checkForHit(gesture.Position))
                    {
                        if (value > rangeLow)
                        {
                            value--;
                            AudioHelper.play(ContentStore.soundRoll);
                        }
                        else
                        {
                            AudioHelper.play(ContentStore.soundBad);
                        }
                    }
                }
            }

            upButton.update(gameTime);
            downButton.update(gameTime);
        }
Example #19
0
        public void BidReceived(Bid bid)
        {
            while (bid == null)
            {
                ;
            }
            debugOut("Bid received");

            if (bid == lastReceivedBid)
            {
                return;
            }

            if (bid.ID == clientData.CurrentPlayer.ID)
            {
                try {
                    client.frameController.stow(client.frameBid);
                } catch (FrameController.InvalidFrameException) {
                }
            }

            foreach (Player p in network.Players.GetPlayers())
            {
                Console.WriteLine(p.Name + " (" + p.ID + ")");
            }

            clientData.placeBid(bid);

            lastReceivedBid = bid;

            AudioHelper.play(ContentStore.soundNeutral);
            Console.WriteLine("Bid player ID: " + bid.ID);
            Console.WriteLine(network.Players.GetPlayerByID(bid.ID).Name + " bid to win " + bid.Value);
            MainGame.Instance.GeneralMessageQueue.Enqueue(network.Players.GetPlayerByID(bid.ID).Name + " bid to win " + bid.Value);
            Thread.Sleep(1000);
        }
Example #20
0
        public PageJoinGame(MainGame mainGame) : base(mainGame)
        {
            Arranger arranger = new Arranger(true, 1, 'C', ScaleManager.InterfaceScale * 2);

            nameField = new PatchField(4, 15, Vector2.Zero, ScaleManager.InterfaceScale, "Name", "Enter Name...", "Enter your Name:", true);
            if (UltraClient.Instance.network.GetLastClientName() != null)
            {
                nameField.Text = UltraClient.Instance.network.GetLastClientName();
            }
            addField(nameField);
            arranger.addObject(nameField, 0);

            String lastIP      = UltraClient.Instance.network.GetLastServerIP();
            String convertedIP = "";

            try {
                convertedIP = IPHelper.decToSimple(lastIP + ":60347");
            } catch {
                Console.WriteLine("[IPHelper] Error: Invalid conversion.");
            }

            ipField = new PatchField(4, 15, Vector2.Zero, ScaleManager.InterfaceScale, "IP", (lastIP != null ? convertedIP : "Enter Server..."), "Enter the server's IP:", true);
            addField(ipField);
            arranger.addObject(ipField, 0);

            Arranger.ArrangerSpacer spacer = new Arranger.ArrangerSpacer(128 * ScaleManager.InterfaceScale, 8 * ScaleManager.InterfaceScale, false);
            addMovable(spacer);
            arranger.addObject(spacer, 0);

            scanButton = new PatchButton(15, Vector2.Zero, buttonPatch, ScaleManager.InterfaceScale, "Scan QR Code", async() => {
                if (!joinAttempted)
                {
                    AudioHelper.play(ContentStore.soundPop);
                    var scanner = new ZXing.Mobile.MobileBarcodeScanner();
                    var result  = await scanner.Scan();
                    if (result != null)
                    {
                        ipField.Text = result.ToString();
                    }
                }
            });
            addButton(scanButton);
            arranger.addObject(scanButton, 0);

            joinButton = new PatchButton(15, Vector2.Zero, buttonPatch, ScaleManager.InterfaceScale, "Join", () => {
                if (!joinAttempted)
                {
                    joinAttempted   = true;
                    joinButton.Text = "Joining...";
                    AudioHelper.play(ContentStore.soundPop);
                    string standardIP = "";
                    String ip         = "";
                    int port          = 0;

                    try {
                        standardIP = IPHelper.simpleToDec(ipField.Text, true);

                        if (standardIP.StartsWith("IP"))
                        {
                            MainGame.Instance.GeneralMessageQueue.Enqueue(standardIP);
                            joinAttempted = false;
                            SetJoinButtonText("Join");
                            AudioHelper.play(ContentStore.soundBad);
                            return;
                        }

                        ip                = IPHelper.getIP(standardIP);
                        port              = int.Parse(IPHelper.getPort(standardIP));
                        clientTask        = UltraClient.Instance.network.StartClient(ip, port, 0, new Player(nameField.Text, 2));
                        nameField.Enabled = false;
                        ipField.Enabled   = false;
                    } catch (Exception e) {
                        UltraClient.Instance.ClientJoinFailed(null);
                        Console.WriteLine("Error: " + e.Message);
                    }
                }
            });
            addButton(joinButton);
            arranger.addObject(joinButton, 0);

            backButton = new PatchButton(5, Vector2.Zero, buttonPatch, ScaleManager.InterfaceScale, "Back", () => {
                AudioHelper.play(ContentStore.soundPop);
                if (backButton.Text != "-")
                {
                    AudioHelper.play(ContentStore.soundPop);
//					UltraClient.Instance.network.SendLeaveGameMessage(UltraClient.Instance.network.Me);
//					UltraClient.Instance.network.Me = null;
//					mainGame.GeneralMessageQueue.Enqueue("You left the game!");
//					backButton.Text = "Back";
//					joinButton.Text = "Join";
//					joinAttempted = false;
                    mainGame.menuController.changeActivePage(mainGame.mainMenu);
                }
                else
                {
                    AudioHelper.play(ContentStore.soundBad);
                }
            });
            addButton(backButton);
            arranger.addObject(backButton, 0);

            arranger.performArrangements();
        }
Example #21
0
        public PageHostGame(MainGame mainGame) : base(mainGame)
        {
            Arranger arranger = new Arranger(true, 2, 'C', ScaleManager.InterfaceScale * 2);

            spacer = new Arranger.ArrangerSpacer(100 * ScaleManager.InterfaceScale, false);
            addMovable(spacer);
            arranger.addObject(spacer, 0);

            ipField = new PatchField(2, 13, Vector2.Zero, ScaleManager.InterfaceScale, "IP", "Starting...", null, false);
            addField(ipField);
            arranger.addObject(ipField, 0);

            backButton = new PatchButton(5, Vector2.Zero, buttonPatch, ScaleManager.InterfaceScale, "Back", () => {
                AudioHelper.play(ContentStore.soundPop);
                mainGame.menuController.changeActivePage(mainGame.preHostGame);
                UltraServer.Instance.network.CloseServer();
                UltraClient.Instance.network.CloseClient();
                for (int i = 1; i <= 6; i++)
                {
                    NineGridRow row              = joinedGrid.getRow(i.ToString());
                    row.getCell("player").Text   = "...";
                    row.getCell("player").Colour = Color.White;
                }
                ClientDataStore.Instance.resetPlayers();
            });
            addButton(backButton);
            arranger.addObject(backButton, 0);

            joinedGrid = new NineGrid(Vector2.Zero, ScaleManager.InterfaceScale, ScaleManager.LargeFont, new string[] { "player" }, new int[] { 13 });
            NineGridRow header = joinedGrid.addRow("header");

            header.getCell("player").Text      = "Players";
            header.getCell("player").Alignment = 'C';
            for (int i = 1; i <= 6; i++)
            {
                NineGridRow playerRow = joinedGrid.addRow(i.ToString());
                playerRow.getCell("player").Text      = ("...");
                playerRow.getCell("player").Alignment = 'C';
            }
            addMovable(joinedGrid);
            arranger.addObject(joinedGrid, 1);

            beginButton = new PatchButton(13, Vector2.Zero, buttonPatch, ScaleManager.InterfaceScale, "Begin!", () => {
                AudioHelper.play(ContentStore.soundPop);

                int playerCount = UltraServer.Instance.network.Players.GetPlayers().Count;
                if ((playerCount < 3 && SettingsHelper.Instance.PlayerCountCheck) || (!SettingsHelper.Instance.PlayerCountCheck && playerCount == 0))
                {
                    if (!SettingsHelper.Instance.PlayerCountCheck)
                    {
                        mainGame.GeneralMessageQueue.Enqueue("At least 1 more player must join!");
                        return;
                    }

                    if (3 - playerCount > 1)
                    {
                        mainGame.GeneralMessageQueue.Enqueue("At least " + (3 - playerCount) + " more players must join!");
                    }
                    else
                    {
                        mainGame.GeneralMessageQueue.Enqueue("At least " + (3 - playerCount) + " more player must join!");
                    }

                    return;
                }

                if (mainGame.HostOnly)
                {
                    mainGame.gameIsRunning = true;
                    UltraServer.Instance.network.SendStartGameMessage();
                    GameScheduler.initialise(UltraServer.Instance.network.Players.GetPlayers(), UltraServer.Instance.network, UltraServer.Instance);
                    UltraServer.Instance.HostStarted();
                }
                else
                {
                    UltraServer.Instance.network.SendStartGameMessage();
                    GameScheduler.initialise(UltraServer.Instance.network.Players.GetPlayers(), UltraServer.Instance.network, UltraServer.Instance);
                }

                Thread schedulerThread = new Thread(new ThreadStart(GameScheduler.schedulerThread));
                schedulerThread.Start();
            });
            addButton(beginButton);
            arranger.addObject(beginButton, 1);

            arranger.performArrangements();
        }