예제 #1
0
        private ButtonControl joinButton, helpButton, quitButton; // the buttons

        public MainMenu(Game game, GameStateManager gameStateManager, GuiManager gui, InputManager input)
            : base(gameStateManager)
        {
            // load textures
            // this can probably go in OnEntered()
            bg = game.Content.Load<Texture2D>("textures/menu/greentank");

            // stays in constructor
            this.gameStateManager = gameStateManager;
            this.game = game;
            this.gui = gui;
            this.input = input;

            // the following code can probably go in OnEntered() as well
            graphicsDevice = game.GraphicsDevice;
            spriteBatch = new SpriteBatch(graphicsDevice);
            
            Viewport viewport = game.GraphicsDevice.Viewport;
            mainMenuScreen = new Screen(viewport.Width, viewport.Height);

            gui.Screen = mainMenuScreen;
            mainMenuScreen.Desktop.Bounds = new UniRectangle(new UniScalar(0.0f, 0.0f), new UniScalar(0.0f, 0.0f),
                                                        new UniScalar(1.0f, 0.0f), new UniScalar(1.0f, 0.0f));
            InitializeComponents();

            joinButton.Pressed += new EventHandler(joinButton_Pressed);
            helpButton.Pressed += new EventHandler(helpButton_Pressed);
            quitButton.Pressed += new EventHandler(quitButton_Pressed);
        }
예제 #2
0
        public RoomState(IGameState previousState, IGameStateService gameStateService, IGuiService guiService,
                        IInputService inputService, GraphicsDeviceManager graphics,
                        ContentManager content)
        {
            this.gameStateService = gameStateService;
            this.guiService = guiService;
            this.inputService = inputService;
            this.graphics = graphics;
            this.content = content;

            this.previousState = previousState;
            this.mouseMove = new MouseMoveDelegate(mouseMoved);

            this.teamA = new List<Peer>();
            this.teamB = new List<Peer>();

            playerIDLabels = new List<LabelControl>();
            panelVisibility = new List<bool>();
            roomScreen = new Screen(1184, 682);

            Game1.main_console.StartEvent += Start;

            spriteBatch = new SpriteBatch(graphics.GraphicsDevice);

            LoadContent(roomScreen, content);
        }
예제 #3
0
        public LobbyState(IGameStateService gameStateService, IGuiService guiService,
                        IInputService inputService, GraphicsDeviceManager graphics, 
                        ContentManager content, String username)
        {
            allRoom = Game1.main_console.ListRooms();

            this.gameStateService = gameStateService;
            this.guiService = guiService;
            this.inputService = inputService;
            this.graphics = graphics;
            this.content = content;

            this.username = username;
            this.page = 0;

            roomIDLabels = new List<LabelControl>();
            roomCapLabels = new List<LabelControl>();
            joinButtons = new List<ButtonControl>();
            panelVisibility = new List<bool>();
            joinEventHandlers = new List<EventHandler>();

            this.mouseMove = new MouseMoveDelegate(mouseMoved);

            lobbyScreen = new Screen(1194, 692);
            /*mainMenuScreen.Desktop.Bounds = new UniRectangle(
              new UniScalar(0.1f, 0.0f), new UniScalar(0.1f, 0.0f), // x and y = 10%
              new UniScalar(0.8f, 0.0f), new UniScalar(0.8f, 0.0f) // width and height = 80%
            );*/

            spriteBatch = new SpriteBatch(graphics.GraphicsDevice);

            LoadContent(lobbyScreen, content);
        }
예제 #4
0
        protected override void InitializeCore()
        {
            this.gui.Initialize();

            Viewport viewport   = this.game.GraphicsDevice.Viewport;
            Screen   mainScreen = new Screen(viewport.Width, viewport.Height);

            this.gui.Screen = mainScreen;

            mainScreen.Desktop.Bounds = new UniRectangle(
                new UniScalar(0.0f, 0.0f), new UniScalar(0.0f, 0.0f), // x and y
                new UniScalar(1.0f, 0.0f), new UniScalar(1.0f, 0.0f)  // width and height
                );
        }
예제 #5
0
        private void createDesktopControls(Screen mainScreen)
        {
            startButton = new ButtonControl();
            creditButton = new ButtonControl();
            instructionButton = new ButtonControl();
            exitButton = new ButtonControl();

            startButton.Text = "New Game"; // configure the start button
            startButton.Bounds = new UniRectangle(
              new UniScalar(-0.1f, 0.0f), new UniScalar(0.0f, 445.0f), 100, 32
            );
            startButton.Pressed += new EventHandler(
                delegate(object sender, EventArgs arguments){
                    _cont.start();
                    gui.Visible = false;
                });
            mainScreen.Desktop.Children.Add(startButton);

            creditButton.Text = "Credits"; // configure the credit button
            creditButton.Bounds = new UniRectangle(
              new UniScalar(0.1f, 0.0f), new UniScalar(0.0f, 445.0f), 100, 32
            );
            creditButton.Pressed += new EventHandler(
                delegate(object sender, EventArgs arguments){
                    _cont.credits();
                });
            mainScreen.Desktop.Children.Add(creditButton);

            instructionButton.Text = "Instructions"; // configure the instruction button
            instructionButton.Bounds = new UniRectangle(
              new UniScalar(0.3f, 0.0f), new UniScalar(0.0f, 445.0f), 100, 32
            );
            instructionButton.Pressed += new EventHandler(
                delegate(object sender, EventArgs arguments){
                    _cont.instructions();
                });
            mainScreen.Desktop.Children.Add(instructionButton);

            exitButton.Text = "Exit"; // configure the exit button
            exitButton.Bounds = new UniRectangle(
              new UniScalar(0.5f, 0.0f), new UniScalar(0.0f, 445.0f), 100, 32
            );
            exitButton.Pressed += new EventHandler(
                delegate(object sender, EventArgs arguments) { 
                    Exit(); 
                });
            mainScreen.Desktop.Children.Add(exitButton);
        }
예제 #6
0
        public MainMenuState(IGameStateService gameStateService, IGuiService guiService, 
                        IInputService inputService, GraphicsDeviceManager graphics, ContentManager content)
        {
            this.gameStateService = gameStateService;
            this.guiService = guiService;
            this.inputService = inputService;
            this.graphics = graphics;
            this.content = content;

            this.mouseMove = new MouseMoveDelegate(mouseMoved);
            this.keyHit = new KeyDelegate(keyboardEntered);

            mainMenuScreen = new Screen(349, 133);
            /*mainMenuScreen.Desktop.Bounds = new UniRectangle(
              new UniScalar(0.1f, 0.0f), new UniScalar(0.1f, 0.0f), // x and y = 10%
              new UniScalar(0.8f, 0.0f), new UniScalar(0.8f, 0.0f) // width and height = 80%
            );*/

            spriteBatch = new SpriteBatch(graphics.GraphicsDevice);

            LoadContent(mainMenuScreen, content);
        }
예제 #7
0
        public JoinMenu(Game game, GameStateManager gameStateManager, GuiManager gui, InputManager input)
            : base(gameStateManager)
        {
            this.game = game;
            this.gameStateManager = gameStateManager;
            this.gameService = new GameServiceContainer();
            this.gui = gui;
            this.input = input;

            spriteBatch = new SpriteBatch(game.GraphicsDevice);
            bg = game.Content.Load<Texture2D>("textures/menu/ScoutTank");
            
            Viewport viewport = game.GraphicsDevice.Viewport;
            joinScreen = new Screen(viewport.Width, viewport.Height);
            gui.Screen = joinScreen;

            joinScreen.Desktop.Bounds = new UniRectangle(new UniScalar(0.0f, 0.0f), new UniScalar(0.0f, 0.0f),
                                                        new UniScalar(1.0f, 0.0f), new UniScalar(1.0f, 0.0f));
            InitializeComponents();

            joinButton.Pressed += new EventHandler(joinButton_Pressed);
            backButton.Pressed += new EventHandler(backButton_Pressed);
        }
예제 #8
0
        public CreateRoomState(IGameStateService gameStateService, IGuiService guiService,
                        IInputService inputService, GraphicsDeviceManager graphics, 
                        ContentManager content)
        {
            this.gameStateService = gameStateService;
            this.guiService = guiService;
            this.inputService = inputService;
            this.graphics = graphics;
            this.content = content;

            this.previousState = gameStateService.ActiveState;
            this.mouseMove = new MouseMoveDelegate(mouseMoved);

            createRoomScreen = new Screen(458, 274);
            /*mainMenuScreen.Desktop.Bounds = new UniRectangle(
              new UniScalar(0.1f, 0.0f), new UniScalar(0.1f, 0.0f), // x and y = 10%
              new UniScalar(0.8f, 0.0f), new UniScalar(0.8f, 0.0f) // width and height = 80%
            );*/

            spriteBatch = new SpriteBatch(graphics.GraphicsDevice);

            LoadContent(createRoomScreen, content);
        }
예제 #9
0
        protected override void Initialize()
        {
            graphics.PreferredBackBufferWidth = WIDTH;
            graphics.PreferredBackBufferHeight = HEIGHT;
            graphics.ApplyChanges();

            IsMouseVisible = true;

            

            defaultTexture = new Texture2D(graphics.GraphicsDevice, 1, 1);
            defaultTexture.SetData(new[] { Color.White });

            // Create a new screen. Screens manage the state of a GUI and its rendering
            // surface. If you have a GUI in your game window, you'd first create a screen
            // for that. If you have an in-game computer display where you want to use
            // a GUI, you can create another screen for that and thus cleanly separate
            // the state of the in-game computer from your game's main menu GUI :)
            Viewport viewport = GraphicsDevice.Viewport;
            Screen mainScreen = new Screen(viewport.Width, viewport.Height);
            this.gui.Screen = mainScreen;

            // Each screen has a 'desktop' control. This invisible control by default
            // stretches across the whole screen (all controls are positioned using both
            // a percentual position/size and absolute position/size). We change this to
            // prevent GUI or HUD elements from appearing outside the title-safe area.
            mainScreen.Desktop.Bounds = new UniRectangle(
              new UniScalar(0.1f, 0.0f), new UniScalar(0.0f, 0.0f), // x and y
              new UniScalar(0.8f, 0.0f), new UniScalar(0.8f, 0.0f) // width and height
            );

            // Now let's do something funky: add buttons directly to the desktop.
            // This will also show the effect of the title-safe area.
            createDesktopControls(mainScreen);

            base.Initialize();
        }
예제 #10
0
        private void LoadContent(Screen mainScreen, ContentManager content)
        {
            background = content.Load<Texture2D>("Images\\Room\\background2");
            headerTeam = content.Load<SpriteFont>("Images\\Room\\headerTeam");

            int width = 315;
            int height = 591;
            Color[] data = new Color[width * height];
            for (int i = 0; i < width; ++i)
            {
                data[i] = Color.Black;
            }
            for (int i = width; i < (width * (height - 1)); ++i)
            {
                if (((i % width) == 0) || ((i % width) == (width - 1)))
                {
                    data[i] = Color.Black;
                }
                else
                {
                    data[i] = Color.White;
                }
            }
            for (int i = (width * (height - 1)); i < (width * height); ++i)
            {
                data[i] = Color.Black;
            }
            teamPanel = new Texture2D(graphics.GraphicsDevice, width, height);
            teamPanel.SetData(data);

            width = 308;
            height = 123;
            data = new Color[width * height];
            for (int i = 0; i < width; ++i)
            {
                data[i] = Color.Black;
            }
            for (int i = width; i < (width * (height - 1)); ++i)
            {
                if (((i % width) == 0) || ((i % width) == (width - 1)))
                {
                    data[i] = Color.Black;
                }
                else
                {
                    data[i] = Color.Aquamarine;
                }
            }
            for (int i = (width * (height - 1)); i < (width * height); ++i)
            {
                data[i] = Color.Black;
            }
            playerPanel = new Texture2D(graphics.GraphicsDevice, width, height);
            playerPanel.SetData(data);

            int j = 0;
            for (int i = 0; i < 8; i += 2)
            {
                LabelControl playerIDLeftLabel = new LabelControl("0.0.0.0");
                playerIDLeftLabel.Bounds = new UniRectangle(21, 72 + 129 * j, 115, 18);
                playerIDLeftLabel.Name = "Label Player ID " + (i + 1);

                LabelControl playerIDRightLabel = new LabelControl("0.0.0.1");
                playerIDRightLabel.Bounds = new UniRectangle(451, 72 + 129 * j, 115, 18);
                playerIDRightLabel.Name = "Label Player ID " + (i + 2);

                playerIDLabels.Add(playerIDLeftLabel);
                panelVisibility.Add(false);
                playerIDLabels.Add(playerIDRightLabel);
                panelVisibility.Add(false);

                /*mainScreen.Desktop.Children.Add(playerIDLeftLabel);
                mainScreen.Desktop.Children.Add(playerIDRightLabel);*/

                j++;
            }

            ButtonControl leftTeamButton = new ButtonControl();
            leftTeamButton.Bounds = new UniRectangle(335, 13, 40, 40);
            leftTeamButton.Name = "Left Team Button";
            leftTeamButton.imageTexture = content.Load<Texture2D>("Images\\Room\\LeftTeam");
            leftTeamButton.Pressed += new EventHandler(leftTeamPressed);

            ButtonControl rightTeamButton = new ButtonControl();
            rightTeamButton.Bounds = new UniRectangle(397, 13, 40, 40);
            rightTeamButton.Name = "Right Team Button";
            rightTeamButton.imageTexture = content.Load<Texture2D>("Images\\Room\\RightTeam");
            rightTeamButton.Pressed += new EventHandler(rightTeamPressed);

            ButtonControl chooseVehicleButton = new ButtonControl();
            chooseVehicleButton.Bounds = new UniRectangle(14, 612, 150, 60);
            chooseVehicleButton.Name = "Choose Vehicle Button";
            chooseVehicleButton.imageTexture = content.Load<Texture2D>("Images\\Room\\ChooseVehicle");
            chooseVehicleButton.imageHover = content.Load<Texture2D>("Images\\Room\\ChooseVehicleHover");
            chooseVehicleButton.Pressed += new EventHandler(chooseVehiclePressed);

            ButtonControl readyButton = new ButtonControl();
            readyButton.Bounds = new UniRectangle(443, 612, 150, 60);
            readyButton.Name = "Ready Button";
            readyButton.imageTexture = content.Load<Texture2D>("Images\\Room\\ReadyButton");
            readyButton.imageHover = content.Load<Texture2D>("Images\\Room\\ReadyButtonHover");
            readyButton.Pressed += new EventHandler(readyPressed);

            ButtonControl startGameButton = new ButtonControl();
            startGameButton.Bounds = new UniRectangle(608, 612, 150, 60);
            startGameButton.Name = "Start Game Button";
            startGameButton.imageTexture = content.Load<Texture2D>("Images\\Room\\PlayButton");
            startGameButton.imageHover = content.Load<Texture2D>("Images\\Room\\PlayButtonHover");
            startGameButton.Pressed += new EventHandler(startGamePressed);

            ButtonControl backButton = new ButtonControl();
            backButton.Bounds = new UniRectangle(1022, 612, 150, 60);
            backButton.Name = "Back Button";
            backButton.imageTexture = content.Load<Texture2D>("Images\\Room\\BackButton");
            backButton.imageHover = content.Load<Texture2D>("Images\\Room\\BackButtonHover");
            backButton.Pressed += new EventHandler(backPressed);

            mainScreen.Desktop.Children.Add(leftTeamButton);
            mainScreen.Desktop.Children.Add(rightTeamButton);
            mainScreen.Desktop.Children.Add(chooseVehicleButton);
            mainScreen.Desktop.Children.Add(readyButton);
            mainScreen.Desktop.Children.Add(startGameButton);
            mainScreen.Desktop.Children.Add(backButton);
        }
예제 #11
0
        public GameStart(IGameStateService gameStateService, IGuiService guiService,
                        IInputService inputService, GraphicsDeviceManager graphics, 
                        ContentManager content, List<Peer> teamA, List<Peer> teamB)
        {
            this.gameStateService = gameStateService;
            this.guiService = guiService;
            this.inputService = inputService;
            this.graphics = graphics;
            this.Content = content;
            this.previousState = gameStateService.ActiveState;

            this.numberOfPlayers = Game1.main_console.Room.Members.Count();
            gameStartScreen = new Screen(680, 680);

            spriteBatch = new SpriteBatch(graphics.GraphicsDevice);
            Game1.main_console.GameEvent += ProcessMessages;

            this.teamA = teamA;
            this.teamB = teamB;
            idxA = 0;
            idxB = 0;

            LoadContent();
        }
예제 #12
0
    public void TestInjectCharacter() {
      Screen screen = new Screen(100.0f, 100.0f);
      Controls.Desktop.InputControl control = new Controls.Desktop.InputControl();
      screen.Desktop.Children.Add(control);

      screen.InjectCharacter('a');
      Assert.AreEqual(string.Empty, control.Text);

      screen.FocusedControl = control;

      screen.InjectCharacter('a');
      Assert.AreEqual("a", control.Text);
    }
예제 #13
0
        public void Initialize()
        {
            //load in skin
            //Nuclex.UserInterface.Visuals.Flat.FlatGuiVisualizer.FromResource(

            //retrieve viewport
            viewport = game.GraphicsDevice.Viewport;

            gameScreen = new Screen(viewport.Width, viewport.Height);

            menuScreen = new Screen(viewport.Width, viewport.Height);

            createScreen = new Screen(viewport.Width, viewport.Height);
            startScreen = new Screen(viewport.Width, viewport.Height);

            speciesDialog = new SpeciesDialog();
            //set clear button listener
            speciesDialog.clearButton.Pressed += new EventHandler(clearButton_Pressed);

            //DEBUG DIALOG!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            //gameScreen.Desktop.Children.Add(speciesDialog);
            //DEBUG DIALOG!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

            //GameUI gameUI = new GameUI(gameScreen, baseGame.spriteSheet);
            gui.Screen = startScreen;

            //listeners
            mouse.MouseMoved += new Nuclex.Input.Devices.MouseMoveDelegate(mouse_MouseMoved);
            //mouse.MouseButtonPressed += new Nuclex.Input.Devices.MouseButtonDelegate(mouse_MouseButtonReleased);
            mouse.MouseButtonReleased += new Nuclex.Input.Devices.MouseButtonDelegate(mouse_MouseButtonReleased);
            mouse.MouseWheelRotated += new Nuclex.Input.Devices.MouseWheelDelegate(mouse_MouseWheelRotated);

            keyboard.KeyReleased += new Nuclex.Input.Devices.KeyDelegate(keyboard_KeyReleased);

            keyboard.KeyPressed += new Nuclex.Input.Devices.KeyDelegate(keyboard_KeyPressed);
        }
예제 #14
0
    public void TestKeyPressWithFocusedControl() {
      Screen screen = new Screen(100.0f, 100.0f);
      KeyboardTestControl child1 = new KeyboardTestControl();
      KeyboardTestControl child2 = new KeyboardTestControl();
      screen.Desktop.Children.Add(child1);
      screen.Desktop.Children.Add(child2);

      screen.FocusedControl = child2;

      screen.InjectKeyPress(Keys.A);
      Assert.AreEqual(0, child1.HeldKeyCount);
      Assert.AreEqual(1, child2.HeldKeyCount);
      screen.InjectKeyRelease(Keys.A);
      Assert.AreEqual(0, child1.HeldKeyCount);
      Assert.AreEqual(0, child2.HeldKeyCount);
    }
예제 #15
0
    public void TestAcceptAndCancelFromKeyboard() {
      Screen screen = new Screen(100.0f, 100.0f);
      CommandTestControl test = new CommandTestControl();
      screen.Desktop.Children.Add(test);
      screen.FocusedControl = test;

      screen.InjectKeyPress(Keys.Escape);
      Assert.AreEqual(Command.Cancel, test.LastCommand);

      screen.InjectKeyPress(Keys.Enter);
      Assert.AreEqual(Command.Accept, test.LastCommand);
    }
예제 #16
0
 public void TestClassicFocusSwitching() {
   Screen screen = new Screen(100.0f, 100.0f);
   screen.InjectCommand(Command.SelectPrevious);
   screen.InjectCommand(Command.SelectNext);
   // TODO: Implement classic focus switching and do some real testing here
 }
예제 #17
0
 public void TestFocusSwitchingWithDisconnectedControl() {
   Screen screen = new Screen(100.0f, 100.0f);
   screen.FocusedControl = new Controls.Control();
   screen.InjectCommand(Command.Down);
   // No exception means success
 }
예제 #18
0
    public void TestNoFocusChangeOnHandledDirectionalCommand() {
      Screen screen = new Screen(100.0f, 100.0f);
      IInputReceiver mockedReceiver = mockReceiver(screen);
      DelegatingControl one = new DelegatingControl(mockedReceiver);
      one.Bounds = new UniRectangle(40, 10, 20, 20);
      Controls.Desktop.ButtonControl two = new Controls.Desktop.ButtonControl();
      two.Bounds = new UniRectangle(40, 40, 20, 20);

      screen.Desktop.Children.Add(one);
      screen.Desktop.Children.Add(two);

      Expect.Once.On(mockedReceiver).Method("InjectCommand").WithAnyArguments();

      screen.FocusedControl = one;
      screen.InjectCommand(Command.Down);

      Assert.AreSame(one, screen.FocusedControl);

      this.mockery.VerifyAllExpectationsHaveBeenMet();
    }
예제 #19
0
    public void TestFocusSwitchingWithUnfocusableControl() {
      Screen screen = new Screen(100.0f, 100.0f);
      Controls.Desktop.ButtonControl one = new Controls.Desktop.ButtonControl();
      one.Bounds = new UniRectangle(40, 10, 20, 20);
      Controls.Control two = new Controls.Control();
      two.Bounds = new UniRectangle(40, 40, 20, 20);
      Controls.Desktop.ButtonControl three = new Controls.Desktop.ButtonControl();
      three.Bounds = new UniRectangle(40, 70, 20, 20);

      screen.Desktop.Children.Add(one);
      screen.Desktop.Children.Add(two);
      screen.Desktop.Children.Add(three);

      screen.FocusedControl = one;
      screen.InjectKeyPress(Keys.Down);
      screen.InjectKeyRelease(Keys.Down);
      Assert.AreSame(three, screen.FocusedControl);
    }
예제 #20
0
    public void TestFocusSwitching() {
      Screen screen = new Screen(100.0f, 100.0f);
      Controls.Desktop.ButtonControl center = new Controls.Desktop.ButtonControl();
      center.Bounds = new UniRectangle(40, 40, 20, 20);
      Controls.Desktop.ButtonControl left = new Controls.Desktop.ButtonControl();
      left.Bounds = new UniRectangle(10, 51, 20, 20);
      Controls.Desktop.ButtonControl right = new Controls.Desktop.ButtonControl();
      right.Bounds = new UniRectangle(70, 29, 20, 20);
      Controls.Desktop.ButtonControl up = new Controls.Desktop.ButtonControl();
      up.Bounds = new UniRectangle(29, 10, 20, 20);
      Controls.Desktop.ButtonControl down = new Controls.Desktop.ButtonControl();
      down.Bounds = new UniRectangle(51, 70, 20, 20);

      screen.Desktop.Children.Add(center);
      screen.Desktop.Children.Add(left);
      screen.Desktop.Children.Add(right);
      screen.Desktop.Children.Add(up);
      screen.Desktop.Children.Add(down);

      screen.FocusedControl = center;
      screen.InjectKeyPress(Keys.Down);
      Assert.AreSame(down, screen.FocusedControl);

      screen.FocusedControl = center;
      screen.InjectKeyPress(Keys.Up);
      Assert.AreSame(up, screen.FocusedControl);

      screen.FocusedControl = center;
      screen.InjectKeyPress(Keys.Left);
      Assert.AreSame(left, screen.FocusedControl);

      screen.FocusedControl = center;
      screen.InjectKeyPress(Keys.Right);
      Assert.AreSame(right, screen.FocusedControl);
    }
예제 #21
0
    public void TestMousePressWithActivatedControl() {
      Screen screen = new Screen(100.0f, 100.0f);
      MouseTestControl child = new MouseTestControl();
      child.Bounds = new UniRectangle(55.0f, 10.0f, 35.0f, 80.0f);
      screen.Desktop.Children.Add(child);

      screen.InjectKeyPress(Keys.A);

      screen.InjectMousePress(MouseButtons.Left);
      Assert.AreEqual(MouseButtons.Left, child.HeldMouseButtons);
    }
예제 #22
0
        private void LoadContent(Screen mainScreen, ContentManager content)
        {
            background = content.Load<Texture2D>("Images\\CreateRoom\\background2");
            header = content.Load<SpriteFont>("Images\\CreateRoom\\header");

            LabelControl roomNameLabel = new LabelControl("Room Name");
            roomNameLabel.Bounds = new UniRectangle(44, 91, 98, 20);
            roomNameLabel.Name = "Label Room Name";

            roomNameInput = new InputControl();
            roomNameInput.Bounds = new UniRectangle(217, 88, 213, 26);
            roomNameInput.Name = "Input Room Name";

            LabelControl maxPlayerLabel = new LabelControl("Maimum Player");
            maxPlayerLabel.Bounds = new UniRectangle(44, 155, 123, 20);
            maxPlayerLabel.Name = "Label Maximum Player";

            twoChoice = new ChoiceControl();
            twoChoice.Name = "Choice Two Player";
            twoChoice.Text = "2";
            twoChoice.Bounds = new UniRectangle(217, 155, 35, 20);
            twoChoice.Selected = true;

            fourChoice = new ChoiceControl();
            fourChoice.Name = "Choice Four Player";
            fourChoice.Text = "4";
            fourChoice.Bounds = new UniRectangle(258, 155, 35, 20);

            sixChoice = new ChoiceControl();
            sixChoice.Name = "Choice Six Player";
            sixChoice.Text = "6";
            sixChoice.Bounds = new UniRectangle(299, 155, 35, 20);

            eightChoice = new ChoiceControl();
            eightChoice.Name = "Choice Eight Player";
            eightChoice.Text = "8";
            eightChoice.Bounds = new UniRectangle(340, 155, 35, 20);

            ButtonControl createRoomButton = new ButtonControl();
            createRoomButton.Bounds = new UniRectangle(48, 208, 104, 46);
            createRoomButton.Name = "Create Room Button";
            createRoomButton.Pressed += new EventHandler(createRoomPressed);
            createRoomButton.Text = "Create";

            ButtonControl cancelButton = new ButtonControl();
            cancelButton.Bounds = new UniRectangle(326, 208, 104, 46);
            cancelButton.Name = "Cancel Button";
            cancelButton.Pressed += new EventHandler(cancelPressed);
            cancelButton.Text = "Cancel";

            mainScreen.Desktop.Children.Add(roomNameLabel);
            mainScreen.Desktop.Children.Add(roomNameInput);
            mainScreen.Desktop.Children.Add(maxPlayerLabel);
            mainScreen.Desktop.Children.Add(twoChoice);
            mainScreen.Desktop.Children.Add(fourChoice);
            mainScreen.Desktop.Children.Add(sixChoice);
            mainScreen.Desktop.Children.Add(eightChoice);

            mainScreen.Desktop.Children.Add(createRoomButton);
            mainScreen.Desktop.Children.Add(cancelButton);
        }
예제 #23
0
    /// <summary>Mocks a receiver for the input processing of a control</summary>
    /// <param name="screen">Screen to mock an input receiver on</param>
    /// <returns>The mocked input receiver</returns>
    private IInputReceiver mockReceiver(Screen screen) {
      IInputReceiver mockedReceiver = this.mockery.NewMock<IInputReceiver>();

      DelegatingControl delegatingControl = new DelegatingControl(mockedReceiver);
      screen.Desktop.Children.Add(delegatingControl);
      screen.FocusedControl = delegatingControl;

      return mockedReceiver;
    }
예제 #24
0
        private void LoadContent(Screen mainScreen, ContentManager content)
        {
            background = content.Load<Texture2D>("Images\\Lobby\\background1");
            backgroundMusic = content.Load<Song>("Music\\03 Gunbound- Now Loading");

            avatar = content.Load<Texture2D>("Images\\Lobby\\Gunbound_dragon");
            int width = 869;
            int height = 519;
            Color[] data = new Color[width * height];
            for (int i = 0; i < width; ++i)
            {
                data[i] = Color.Black;
            }
            for (int i = width; i < (width * (height - 1)); ++i)
            {
                if (((i % width) == 0) || ((i % width) == (width - 1)))
                {
                    data[i] = Color.Black;
                }
                else
                {
                    data[i] = Color.White;
                }
            }
            for (int i = (width * (height-1)); i < (width * height); ++i)
            {
                data[i] = Color.Black;
            }
            mainPanel = new Texture2D(graphics.GraphicsDevice, width, height);
            mainPanel.SetData(data);

            width = 282;
            height = 519;
            data = new Color[width * height];
            for (int i = 0; i < width; ++i)
            {
                data[i] = Color.Black;
            }
            for (int i = width; i < (width * (height - 1)); ++i)
            {
                if (((i % width) == 0) || ((i % width) == (width - 1)))
                {
                    data[i] = Color.Black;
                }
                else
                {
                    data[i] = Color.White;
                }
            }
            for (int i = (width * (height - 1)); i < (width * height); ++i)
            {
                data[i] = Color.Black;
            }
            userPanel = new Texture2D(graphics.GraphicsDevice, width, height);
            userPanel.SetData(data);

            roomPanel = content.Load<Texture2D>("Images\\Lobby\\roombox");
            width = roomPanel.Width;
            height = roomPanel.Height;
            data = new Color[width * height];
            roomPanel.GetData(data);
            for (int i = 0; i < width; ++i)
            {
                data[i] = Color.Black;
            }
            for (int i = width; i < (width * (height - 1)); i += width)
            {
                data[i] = Color.Black;
                data[i + (width - 1)] = Color.Gray;
            }
            for (int i = (width * (height - 1)); i < (width * height); ++i)
            {
                data[i] = Color.Gray;
            }
            roomPanel.SetData(data);

            Texture2D buttonBackGround = content.Load<Texture2D>("Images\\Lobby\\buttes2");
            int j = 0;
            for (int i = 0; i < 10; i+=2)
            {
                LabelControl roomIDLeftLabel = new LabelControl("Test dulu");
                roomIDLeftLabel.Bounds = new UniRectangle(25, 32 + 102 * j, 55, 16);
                roomIDLeftLabel.Name = "Label Room ID " + (i + 1);

                LabelControl roomCapLeftLabel = new LabelControl("Sekian / sekian");
                roomCapLeftLabel.Bounds = new UniRectangle(25, 50 + 102 * j, 55, 16);
                roomCapLeftLabel.Name = "Label Room Cap " + (i + 1);

                ButtonControl joinLeftButton = new ButtonControl();
                joinLeftButton.Text = "JOIN";
                joinLeftButton.Bounds = new UniRectangle(334, 67 + 102 * j, 101, 28);
                joinLeftButton.Name = "Join Button " + (i + 1);
                joinLeftButton.imageTexture = buttonBackGround;

                LabelControl roomIDRightLabel = new LabelControl("Test dulu");
                roomIDRightLabel.Bounds = new UniRectangle(451, 32 + 102 * j, 55, 16);
                roomIDRightLabel.Name = "Label Room ID " + (i + 2);

                LabelControl roomCapRightLabel = new LabelControl("Sekian / sekian");
                roomCapRightLabel.Bounds = new UniRectangle(451, 50 + 102 * j, 55, 16);
                roomCapRightLabel.Name = "Label Room Cap " + (i + 2);

                ButtonControl joinRightButton = new ButtonControl();
                joinRightButton.Text = "JOIN";
                joinRightButton.Bounds = new UniRectangle(760, 67 + 102 * j, 101, 28);
                joinRightButton.Name = "Join Button " + (i + 2);
                joinRightButton.imageTexture = buttonBackGround;

                roomIDLabels.Add(roomIDLeftLabel);
                roomCapLabels.Add(roomCapLeftLabel);
                joinButtons.Add(joinLeftButton);
                panelVisibility.Add(false);
                joinEventHandlers.Add(new EventHandler(joinRoomPressed));
                roomIDLabels.Add(roomIDRightLabel);
                roomCapLabels.Add(roomCapRightLabel);
                joinButtons.Add(joinRightButton);
                panelVisibility.Add(false);
                joinEventHandlers.Add(new EventHandler(joinRoomPressed));

                /*mainScreen.Desktop.Children.Add(roomIDLeftLabel);
                mainScreen.Desktop.Children.Add(roomCapLeftLabel);
                mainScreen.Desktop.Children.Add(joinLeftButton);
                mainScreen.Desktop.Children.Add(roomIDRightLabel);
                mainScreen.Desktop.Children.Add(roomCapRightLabel);
                mainScreen.Desktop.Children.Add(joinRightButton);*/

                j++;
            }

            LabelControl usernameLabel = new LabelControl(username);
            usernameLabel.Bounds = new UniRectangle(938, 20, 157, 32);
            usernameLabel.Name = "Label Username";

            ButtonControl createRoomButton = new ButtonControl();
            createRoomButton.Bounds = new UniRectangle(15, 537, 151, 151);
            createRoomButton.Name = "Create Room Button";
            createRoomButton.imageTexture = content.Load<Texture2D>("Images\\Lobby\\CreateRoom");
            createRoomButton.imageHover = content.Load<Texture2D>("Images\\Lobby\\CreateRoomHover");
            createRoomButton.Pressed += new EventHandler(createRoomPressed);

            ButtonControl refreshButton = new ButtonControl();
            refreshButton.Bounds = new UniRectangle(200, 537, 151, 151);
            refreshButton.Name = "Refresh Button";
            refreshButton.imageTexture = content.Load<Texture2D>("Images\\Lobby\\Refresh");
            refreshButton.imageHover = content.Load<Texture2D>("Images\\Lobby\\RefreshHover");
            refreshButton.Pressed += new EventHandler(refreshPressed);

            ButtonControl leftPageButton = new ButtonControl();
            leftPageButton.Bounds = new UniRectangle(622, 537, 151, 151);
            leftPageButton.Name = "Left Page Button";
            leftPageButton.imageTexture = content.Load<Texture2D>("Images\\Lobby\\LeftPage");
            leftPageButton.imageHover = content.Load<Texture2D>("Images\\Lobby\\LeftPageHover");
            leftPageButton.Pressed += new EventHandler(leftPagePressed);

            ButtonControl rightPageButton = new ButtonControl();
            rightPageButton.Bounds = new UniRectangle(781, 537, 151, 151);
            rightPageButton.Name = "Right Page Button";
            rightPageButton.imageTexture = content.Load<Texture2D>("Images\\Lobby\\RightPage");
            rightPageButton.imageHover = content.Load<Texture2D>("Images\\Lobby\\RightPageHover");
            rightPageButton.Pressed += new EventHandler(rightPagePressed);

            ButtonControl exitGameButton = new ButtonControl();
            exitGameButton.Bounds = new UniRectangle(1026, 537, 151, 151);
            exitGameButton.Name = "Exit Button";
            exitGameButton.imageTexture = content.Load<Texture2D>("Images\\Lobby\\Exit");
            exitGameButton.imageHover = content.Load<Texture2D>("Images\\Lobby\\ExitHover");
            exitGameButton.Pressed += new EventHandler(exitPressed);

            mainScreen.Desktop.Children.Add(usernameLabel);
            mainScreen.Desktop.Children.Add(createRoomButton);
            mainScreen.Desktop.Children.Add(refreshButton);
            mainScreen.Desktop.Children.Add(leftPageButton);
            mainScreen.Desktop.Children.Add(rightPageButton);
            mainScreen.Desktop.Children.Add(exitGameButton);
        }
예제 #25
0
    public void TestKeyPressWithActivatedControl() {
      Screen screen = new Screen(100.0f, 100.0f);
      KeyboardTestControl child1 = new KeyboardTestControl();
      KeyboardTestControl child2 = new KeyboardTestControl();
      child2.Bounds = new UniRectangle(10.0f, 10.0f, 80.0f, 80.0f);
      screen.Desktop.Children.Add(child1);
      screen.Desktop.Children.Add(child2);

      // Click on child 2
      screen.InjectMouseMove(50.0f, 50.0f);
      screen.InjectMousePress(MouseButtons.Left);

      // Now child 2 should be receiving the input instead of child 1
      screen.InjectKeyPress(Keys.A);
      Assert.AreEqual(0, child1.HeldKeyCount);
      Assert.AreEqual(1, child2.HeldKeyCount);
      screen.InjectKeyRelease(Keys.A);
      Assert.AreEqual(0, child1.HeldKeyCount);
      Assert.AreEqual(0, child2.HeldKeyCount);
    }
예제 #26
0
        public ChimeraGame(string firstLevel)
        {
            mFirstLevelName = firstLevel;

            this.Window.AllowUserResizing = true;
            this.Window.ClientSizeChanged += ResizedWindow;

            Game = this;
            Graphics = new GraphicsDeviceManager(this);
            Graphics.PreferredBackBufferWidth = 1280;
            Graphics.PreferredBackBufferHeight = 720;
            Graphics.PreferMultiSampling = true;
            //Graphics.ToggleFullScreen();

            Content.RootDirectory = "Content";

            forward = new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Down, Microsoft.Xna.Framework.Input.Keys.W);
            celShading = new KeyInputAction(PlayerIndex.One, InputAction.ButtonAction.Pressed, Microsoft.Xna.Framework.Input.Keys.F2);

            // DEBUG
            mDebugScreen = new Nuclex.UserInterface.Screen(Graphics.PreferredBackBufferWidth, Graphics.PreferredBackBufferHeight);
            mDebugGUI = new GuiManager(Services);
            mDebugGUI.Screen = mDebugScreen;
            DebugConsole debugConsole = new DebugConsole();
            mDebugScreen.Desktop.Children.Add(debugConsole);
            mDebugInput = new InputManager(Services, Window.Handle);

            Components.Add(mDebugInput);
            Components.Add(mDebugGUI);
            mDebugGUI.DrawOrder = 1000;

            mDebugScreen.FocusedControl = DebugConsole.ConsoleInput;
            DebugConsole.AddCommand("exit", new DebugConsole.ConsoleCommand(ExitConsoleCommand));
            DebugConsole.AddCommand("enableAllParts", new DebugConsole.ConsoleCommand(EnableParts));
            DebugConsole.AddCommand("partMenu", new DebugConsole.ConsoleCommand(PartMenuCommand));
            DebugConsole.AddCommand("resizeShadowCascade", new DebugConsole.ConsoleCommand(ResizeShadowCascadesCommand));
            DebugConsole.AddCommand("collisions", new DebugConsole.ConsoleCommand(CollisionMeshCommand));
            DebugConsole.AddCommand("debug", new DebugConsole.ConsoleCommand(DebugConsoleCommand));
            DebugConsole.AddCommand("visualizeCascades", new DebugConsole.ConsoleCommand(VisualizeCascadesCommand));
            DebugConsole.AddCommand("celShading", new DebugConsole.ConsoleCommand(CelShadingCommand));
            DebugConsole.AddCommand("outlining", new DebugConsole.ConsoleCommand(OutliningCommand));
            DebugConsole.AddCommand("drawBoundingBoxes", new DebugConsole.ConsoleCommand(BoundingBoxCommand));
            DebugConsole.AddCommand("BirdsEyeView", new DebugConsole.ConsoleCommand(BirdsEyeViewCommand));
            DebugConsole.AddCommand("BEV", new DebugConsole.ConsoleCommand(BirdsEyeViewCommand));
            DebugConsole.AddCommand("level", new DebugConsole.ConsoleCommand(LoadLevel));
            DebugConsole.AddCommand("toggleShadows", new DebugConsole.ConsoleCommand(ToggleShadows));
            DebugConsole.AddCommand("wireframe", new DebugConsole.ConsoleCommand(WireframeCommand));
            DebugConsole.Hide();
            // END

            CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Sensor.SensorGroup, CollisionRules.DefaultDynamicCollisionGroup), CollisionRule.NoSolver);
            CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Sensor.SensorGroup, CollisionRules.DefaultKinematicCollisionGroup), CollisionRule.NoSolver);
            CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Sensor.SensorGroup, Projectile.ProjectileGroup), CollisionRule.NoBroadPhase);
            CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Sensor.SensorGroup, Sensor.SensorGroup), CollisionRule.NoBroadPhase);
            CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Sensor.SensorGroup, TerrainPhysics.TerrainPhysicsGroup), CollisionRule.NoBroadPhase);
            CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Sensor.SensorGroup, InvisibleWall.InvisibleWallGroup), CollisionRule.NoBroadPhase);

            CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Projectile.SensorProjectileGroup, CollisionRules.DefaultDynamicCollisionGroup), CollisionRule.NoSolver);
            CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Projectile.SensorProjectileGroup, CollisionRules.DefaultKinematicCollisionGroup), CollisionRule.NoSolver);
            CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Projectile.SensorProjectileGroup, Projectile.ProjectileGroup), CollisionRule.NoBroadPhase);
            CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Projectile.SensorProjectileGroup, Sensor.SensorGroup), CollisionRule.NoBroadPhase);
            CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Projectile.SensorProjectileGroup, Projectile.SensorProjectileGroup), CollisionRule.NoBroadPhase);
            CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Projectile.SensorProjectileGroup, InvisibleWall.InvisibleWallGroup), CollisionRule.NoBroadPhase);

            CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Wormhole.WormholeGroup, CollisionRules.DefaultDynamicCollisionGroup), CollisionRule.NoSolver);
            CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Wormhole.WormholeGroup, CollisionRules.DefaultKinematicCollisionGroup), CollisionRule.NoSolver);
            CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Wormhole.WormholeGroup, Projectile.ProjectileGroup), CollisionRule.NoBroadPhase);
            CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Wormhole.WormholeGroup, Wormhole.WormholeGroup), CollisionRule.NoBroadPhase);
            CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Wormhole.WormholeGroup, TerrainPhysics.TerrainPhysicsGroup), CollisionRule.NoBroadPhase);
            CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(Wormhole.WormholeGroup, InvisibleWall.InvisibleWallGroup), CollisionRule.NoBroadPhase);
        }
예제 #27
0
    public void TestMouseWheel() {
      Screen screen = new Screen();
      MouseTestControl control = new MouseTestControl();
      control.Bounds = new UniRectangle(10.0f, 10.0f, 80.0f, 80.0f);
      screen.Desktop.Children.Add(control);

      screen.InjectMouseMove(50.0f, 50.0f);
      screen.InjectMouseWheel(12.34f);
      Assert.AreEqual(12.34f, control.MouseWheelTicks);
    }
예제 #28
0
        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            viewport = GraphicsDevice.Viewport;
            Screen defaultScreen = new Screen(viewport.Width, viewport.Height);
            gui.Screen = defaultScreen;

            gameStateManager = new GameStateManager(new GameServiceContainer());
            gameStateManager.Push(new MainMenu(this, gameStateManager, gui, Input));

            base.Initialize();
        }
예제 #29
0
    public void TestFocusChangeEvent() {
      Screen screen = new Screen(100.0f, 100.0f);
      IFocusChangeSubscriber mockedSubscriber = mockSubscriber(screen);

      Controls.Control child1 = new Controls.Control();
      Controls.Control child2 = new Controls.Control();
      screen.Desktop.Children.Add(child1);
      screen.Desktop.Children.Add(child2);

      Expect.Once.On(mockedSubscriber).Method("FocusChanged").WithAnyArguments();
      screen.FocusedControl = child1;
      Expect.Once.On(mockedSubscriber).Method("FocusChanged").WithAnyArguments();
      screen.FocusedControl = child2;

      this.mockery.VerifyAllExpectationsHaveBeenMet();
    }
예제 #30
0
    /// <summary>Mocks a subscriber to the screen's events</summary>
    /// <param name="screen">Screen to mock an event subcriber to</param>
    /// <returns>The mocked event subscriber</returns>
    private IFocusChangeSubscriber mockSubscriber(Screen screen) {
      IFocusChangeSubscriber mockedSubscriber =
        this.mockery.NewMock<IFocusChangeSubscriber>();

      screen.FocusChanged += new EventHandler<Controls.ControlEventArgs>(
        mockedSubscriber.FocusChanged
      );

      return mockedSubscriber;
    }
예제 #31
0
    public void TestMouseWheelWithActivatedControl() {
      Screen screen = new Screen(100.0f, 100.0f);
      MouseTestControl control = new MouseTestControl();
      control.Bounds = new UniRectangle(10.0f, 10.0f, 80.0f, 80.0f);
      screen.Desktop.Children.Add(control);

      screen.InjectKeyPress(Keys.A);
      screen.InjectMouseWheel(12.34f);
      Assert.AreEqual(12.34f, control.MouseWheelTicks);
    }