コード例 #1
0
        public FrameTable(Vector2 position) : base(position)
        {
            snap        = new CircleSnap(Arranger.staticPoint(0.5f, 0.5f), (ScaleManager.CardScale * 64f / 2f) + (ScaleManager.CardScaleSmall * (64f / 2f + 13f)));
            trumpOffset = Arranger.staticPoint(0.5f, 0.5f);
            LinePoly tableTabPoly = new LinePoly(
                Vector2.Zero,
                new Vector2(29, 0),
                new Vector2(29, 5),
                new Vector2(20, 16),
                new Vector2(-20, 16),
                new Vector2(-29, 5),
                new Vector2(-29, 0)
                );

            tableTab = new PolyButton(Arranger.staticPoint(3 / 4f, 1f), tableTabPoly, ContentStore.tableTab, new Vector2(27, 0), ScaleManager.CardScale, 0f);
            LinePoly handTabPoly = new LinePoly(
                Vector2.Zero,
                new Vector2(29, 0),
                new Vector2(29, -5),
                new Vector2(20, -16),
                new Vector2(-20, -16),
                new Vector2(-29, -5),
                new Vector2(-29, -0)
                );

            handTab    = new PolyButton(Arranger.staticPoint(3 / 4f, 1f), handTabPoly, ContentStore.handTab, new Vector2(27, 14), ScaleManager.CardScale, 0f);
            tablePatch = ContentStore.tablePatch;
            namePlates = new List <NamePlate>();
        }
コード例 #2
0
        public void setUp()
        {
            ICollection <Player> playerList = ClientDataStore.Instance.Players;

            foreach (Player player in playerList)
            {
                NineGridRow row        = scoreboard.addRow(player.ID.ToString());
                NineCell    playerCell = row.getCell("player");
                string      nameText   = player.Name;
                if (nameText.Length > 12)
                {
                    nameText = nameText.Substring(0, 10) + "...";
                }
                playerCell.Text   = nameText;
                playerCell.Colour = ColourHelper.getPlayerColour(player.ID, playerList.Count);
                NineCell scoreCell = row.getCell("score");
                scoreCell.Text      = "0";
                scoreCell.Alignment = 'C';
                NineCell bidCell = row.getCell("bid");
                bidCell.Text      = "-";
                bidCell.Alignment = 'C';
                NineCell trickCell = row.getCell("tricks");
                trickCell.Text      = "0";
                trickCell.Alignment = 'C';
            }
            scoreboard.blink(new Vector2(scoreboard.Position.X, 0f));
            scoreTab.blink(new Vector2(scoreTab.Position.X, scoreboard.Height));
            stowPosition    = Arranger.staticPoint(0f, 0f);
            stowPosition.Y -= scoreboard.Height;
            patchPos        = scoreboard.Position.ToPoint();
            patchSize       = new Point(69 * ScaleManager.InterfaceScale, scoreboard.Height);
            patchPos.X      = (int)((scoreTab.Position.X - (32.5f * ScaleManager.InterfaceScale)) + 0.5f);
        }
コード例 #3
0
ファイル: PlayerIndicator.cs プロジェクト: liangyee/Wizard
 public PlayerIndicator(Vector2 position) : base(position)
 {
     offset     = Arranger.staticPoint(0f, 0.5f);
     indicator  = ContentStore.playerIndicator;
     glow       = ContentStore.playerIndicatorGlow;
     indOrigin  = new Vector2(0f, 7.5f);
     glowOrigin = new Vector2(0f, 10.5f);
 }
コード例 #4
0
ファイル: PageSettings.cs プロジェクト: liangyee/Wizard
        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();
        }
コード例 #5
0
 public ParallaxBackground(Vector2 position) : base(position)
 {
     tablePoint = new ParallaxPoint(Arranger.staticPoint(0.5f, 0f), 0);
     couchPoint = new ParallaxPoint(Arranger.staticPoint(0.5f, 1f), 4);
     legLPoint  = new ParallaxPoint(Arranger.staticPoint(0f, 0f), 5);
     legRPoint  = new ParallaxPoint(Arranger.staticPoint(1f, 0f), 5);
     armLPoint  = new ParallaxPoint(Arranger.staticPoint(0f, 1f), 2);
     armRPoint  = new ParallaxPoint(Arranger.staticPoint(1f, 1f), 2);
 }
コード例 #6
0
ファイル: PageTutorial.cs プロジェクト: liangyee/Wizard
        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();
        }
コード例 #7
0
        public void setUp()
        {
            blackout = new Texture2D(MainGame.Instance.GraphicsDevice, 1, 1);
            blackout.SetData <Color>(new Color[] { Color.Black });

            ICollection <Player> playerList = ClientDataStore.Instance.Players;

            for (int i = 0; i < playerList.Count; i++)
            {
                scoreboard.addRow(i.ToString());
            }
            Arranger arranger = new Arranger(true, 1, 'C', 0);

            arranger.addObject(scoreboard, 0);
            arranger.performArrangements();
            GameClient.Instance.frameController.editStow(this, Arranger.staticPoint(0f, 1f));
        }
コード例 #8
0
ファイル: PageTutorial.cs プロジェクト: liangyee/Wizard
        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++;
                        }
                    }
                }
            }
        }
コード例 #9
0
ファイル: MessageQueue.cs プロジェクト: liangyee/Wizard
        public void update(GameTime gameTime)
        {
            int      dequeueCount = 0;
            Arranger arranger     = new Arranger(true, 1, 'C', 0);

            continueOperation.WaitOne();
            try {
                foreach (MessageBanner message in activeMessages)
                {
                    while (message == null)
                    {
                        ;
                    }
                    if (message.Expired)
                    {
                        dequeueCount++;
                    }
                    arranger.addObject(message, 0);
                }
            } catch (Exception e) {
                Console.WriteLine("[MessageQueue.update] 'activeMessages' collection: " + e.Message);
            }

            continueOperation.Set();

            List <Arranger.ArrangedObject> objects = arranger.calculateArrangements();

            try {
                foreach (Arranger.ArrangedObject obj in objects)
                {
                    ((Movable)obj.Object).moveTo(obj.Position, 5);
                    ((Movable)obj.Object).update(gameTime);
                }
            } catch (Exception e) {
                Console.WriteLine("[MessageQueue.update] 'objects' collection: " + e.Message);
            }

            for (int i = 0; i < dequeueCount; i++)
            {
                activeMessages.Dequeue();
            }
        }
コード例 #10
0
ファイル: PageMainMenu.cs プロジェクト: liangyee/Wizard
        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();
        }
コード例 #11
0
ファイル: FrameBid.cs プロジェクト: liangyee/Wizard
        public FrameBid(Vector2 position) : base(position)
        {
            ticker = new Ticker(new Vector2(screenSize.X * 3f / 5f, screenSize.Y * 1f / 3f), ScaleManager.InterfaceScale);
            ticker.setRange(0, 0);
            button = new PatchButton(9, new Vector2(screenSize.X * 4f / 5f, screenSize.Y * 1f / 3f), ContentStore.standardPatch, ScaleManager.InterfaceScale, "Place Bid", () => {
                UltraClient.Instance.network.SendBid(new Bid(ticker.Value, ClientDataStore.Instance.CurrentPlayer.ID), null);
                Console.WriteLine("SENT BID");
                GameClient.Instance.frameController.stow(this);
            });
            patch = ContentStore.bidPatch;
            int      padding  = ScaleManager.InterfaceScale * 2;
            Arranger arranger = new Arranger(false, 1, 'R', padding);

            arranger.addObject(ticker, 0);
            arranger.addObject(button, 0);
            arranger.performArrangements();
            Point topLeft = new Vector2(ticker.Position.X - ((ticker.Width / 2) + padding), ticker.Position.Y - ((ticker.Height / 2) + padding)).ToPoint();

            patchSize = patch.wrap(new Point(ScaleManager.ScreenSize.X - topLeft.X, ticker.Height + 2 * padding), ScaleManager.InterfaceScale);
            patchPos  = new Point(ScaleManager.ScreenSize.X - patchSize.X, (ScaleManager.ScreenSize.Y - patchSize.Y) / 2);
        }
コード例 #12
0
ファイル: FrameHand.cs プロジェクト: liangyee/Wizard
        public FrameHand(Vector2 position) : base(position)
        {
            hand       = new CardContainer();
            handSnap   = new CardSnap(new Vector2(0, screenSize.Y), (float)screenSize.X, false);
            dropZone   = new DropZone(Arranger.staticPoint(0.5f, 0.25f), Arranger.staticPoint(1f, 0.5f), dropZoneAction);
            table      = new QuickCardTable(new Vector2(screenSize.X / 2f, screenSize.Y / 4f), new Vector2(screenSize.X, screenSize.Y / 2f));
            clientData = ClientDataStore.Instance;
            clientData.LeadSuitChanged += new ClientDataStore.LeadSuitChangedHandler(leadSuitChanged);

            LinePoly tableTabPoly = new LinePoly(
                Vector2.Zero,
                new Vector2(29, 0),
                new Vector2(29, 5),
                new Vector2(20, 16),
                new Vector2(-20, 16),
                new Vector2(-29, 5),
                new Vector2(-29, 0)
                );

            tableTab = new PolyButton(Arranger.staticPoint(3 / 4f, 1f), tableTabPoly, ContentStore.tableTab, new Vector2(27, 0), ScaleManager.CardScale, 0f);
        }
コード例 #13
0
        public FrameScoreboard(Vector2 position) : base(position)
        {
            scoreboard = new NineGrid(Vector2.Zero, ScaleManager.InterfaceScale, ScaleManager.LargeFont, new string[] { "player", "score", "bid", "tricks" }, new int[] { 12, 6, 4, 4 });
            NineGridRow header     = scoreboard.addRow("header");
            NineCell    playerCell = header.getCell("player");

            playerCell.Text      = "Player";
            playerCell.Alignment = 'C';
            NineCell scoreCell = header.getCell("score");

            scoreCell.Text      = "Score";
            scoreCell.Alignment = 'C';
            NineCell bidCell = header.getCell("bid");

            bidCell.Text      = "Bid";
            bidCell.Alignment = 'C';
            NineCell trickCell = header.getCell("tricks");

            trickCell.Text      = "Won";
            trickCell.Alignment = 'C';
            LinePoly scoreTabPoly = new LinePoly(
                Vector2.Zero,
                new Vector2(34.5f, 0),
                new Vector2(34.5f, 5),
                new Vector2(25.5f, 16),
                new Vector2(-25.5f, 16),
                new Vector2(-34.5f, 5),
                new Vector2(-34.5f, 0)
                );

            scoreTab = new PolyButton(Arranger.staticPoint(1 / 4f, 0f), scoreTabPoly, ContentStore.scoreTab, new Vector2(32.5f, 0), ScaleManager.CardScale, 0f);
            Arranger arranger = new Arranger(true, 1, 'L', 0);

            arranger.addObject(scoreboard, 0);
            arranger.performArrangements();
            trayPatch = ContentStore.scorePatch;
            patchPos  = Point.Zero;
            patchSize = Point.Zero;
        }
コード例 #14
0
        public GameClient()
        {
            DebugCards.init();

            frameController = new FrameController();

            frameTable      = new FrameTable(Vector2.Zero);
            frameHand       = new FrameHand(Vector2.Zero);
            frameBid        = new FrameBid(Vector2.Zero);
            frameScoreboard = new FrameScoreboard(Vector2.Zero);
            playerIndicator = new PlayerIndicator(Vector2.Zero);
            frameEndgame    = new FrameEndgame(Vector2.Zero);
            frameController.addFrame(frameHand, Arranger.staticPoint(0f, 1f), true);
            frameController.addFrame(frameTable, Arranger.staticPoint(0f, -1f), false);
            frameController.addFrame(frameBid, Arranger.staticPoint(1f, 0f), false);
            frameController.addFrame(frameScoreboard, Vector2.Zero, false);
            frameController.addFrame(playerIndicator, Arranger.staticPoint(-1f, 0f), false);
            frameController.addFrame(frameEndgame, Arranger.staticPoint(0f, 0f), false);

            parallax = new ParallaxBackground(Vector2.Zero);
            frameHand.injectParallax(parallax);

            playerHand = frameHand.hand;
        }
コード例 #15
0
        protected override void LoadContent()
        {
            Content.RootDirectory = "Content";
            ContentStore.load(Content);
            spriteBatch = new SpriteBatch(GraphicsDevice);
            Point screenSize = new Point(GraphicsDevice.DisplayMode.Width, GraphicsDevice.DisplayMode.Height);

            ScaleManager.setDefaultValues(screenSize, ContentStore.getAllFonts());
            DebugGUI.init(GraphicsDevice);
            QRRenderer.init(GraphicsDevice);
            Arranger.init(screenSize);

            Card.setTexture(ContentStore.cardAtlas);
            Card.setDefaultScale(ScaleManager.CardScale);

            game = GameClient.Instance;

            menuController = new MenuController();
            mainMenu       = new PageMainMenu(this);
            joinMenu       = new PageJoinGame(this);
            hostMenu       = new PageHostGame(this);
            settingsMenu   = new PageSettings(this);
            tutorialPage   = new PageTutorial(this);
            preHostGame    = new PagePreHostGame(this);
            pages          = new List <Page>()
            {
                mainMenu, joinMenu, hostMenu, settingsMenu, tutorialPage, preHostGame
            };
            menuController.addPage(mainMenu, new Point(0, 0));
            menuController.addPage(joinMenu, new Point(1, 0));
            menuController.addPage(preHostGame, new Point(-1, 0));
            menuController.addPage(hostMenu, new Point(-2, 0));
            menuController.addPage(settingsMenu, new Point(0, 1));
            menuController.addPage(tutorialPage, new Point(0, -1));
            menuController.changeActivePage(mainMenu);
        }
コード例 #16
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();
        }
コード例 #17
0
ファイル: MessageQueue.cs プロジェクト: liangyee/Wizard
 public void Enqueue(string text)
 {
     continueOperation.WaitOne();
     activeMessages.Enqueue(new MessageBanner(Arranger.staticPoint(0.5f, 0.5f), text, 300f, 3000f, 300f, ScaleManager.InterfaceScale));
     continueOperation.Set();
 }
コード例 #18
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();
        }