Example #1
0
        public override void Update(GameTime gameTime)
        {
            base.Update(gameTime);

            if (YnG.Keys.JustPressed(Keys.Up) || YnG.Keys.JustPressed(Keys.Down) || YnG.Keys.JustPressed(Keys.Left) || YnG.Keys.JustPressed(Keys.Right) || _checkForHover)
            {
                if (YnG.Keys.JustPressed(Keys.Up) || YnG.Keys.JustPressed(Keys.Left))
                {
                    menuItemIndex--;
                }

                else if (YnG.Keys.JustPressed(Keys.Down) || YnG.Keys.JustPressed(Keys.Right))
                {
                    menuItemIndex++;
                }

                menuItemIndex = menuItemIndex < 0 ? (menuItems.Length - 1) : menuItemIndex;
                menuItemIndex = menuItemIndex > (menuItems.Length - 1) ? 0 : menuItemIndex;

                ResetColor();

                menuItems[menuItemIndex].Color = Color.DodgerBlue;

                if (menuItemIndex < 3)
                {
                    menuItemSelector.Position = new Vector2(0, menuItems[menuItemIndex].Y + menuItems[menuItemIndex].ScaledHeight / 2 - menuItemSelector.ScaledHeight / 2);
                    menuItemSelector.Visible  = true;
                }
                else
                {
                    menuItemSelector.Visible = false;
                }

                _checkForHover = false;
            }
            else if (YnG.Keys.JustPressed(Keys.Enter) || YnG.Keys.JustPressed(Keys.Space) || _checkForNext)
            {
                string nextState = String.Empty;

                switch (menuItemIndex)
                {
                case 0: (YnG.Game as MazeGame).PrepareNewLevel(1, true); break;

                case 1: nextState = "selection"; break;

                case 2: nextState = "options"; break;

                case 3: nextState = "about"; break;

                case 4: YnG.Exit(); break;
                }

                if (nextState != String.Empty)
                {
                    stateManager.SetActive(nextState, true);
                }

                _checkForNext = false;
            }
        }
Example #2
0
        protected override void item_MouseJustClicked(object sender, MouseClickEntityEventArgs e)
        {
            MenuItem item = (sender as MenuItem);

            if (item != null)
            {
                switch (item.ItemPosition)
                {
                case 0: YnG.SwitchState(new SelectShipState()); break;

                case 1:
                    Registry.AudioManager.SpeakAsync("This section is disabled at this time");
                    //YnG.SwitchState(new MultiPlayerState(2));
                    break;

                case 2: YnG.SwitchState(new ScoreState()); break;

                case 3: YnG.SwitchState(new OptionsState()); break;

                case 4: YnG.SwitchState(new CreditsState()); break;

                case 5: YnG.Exit(); break;
                }
            }
        }
Example #3
0
        public void BuildGui()
        {
            YnLabel title = new YnLabel();

            title.Text       = "I'm lost";
            title.CustomFont = YnG.Content.Load <SpriteFont>("Fonts/TitleFont");
            //title.Layout(); // Forçage du layout pour avoir la taille du texte
            title.Position = new Vector2(YnG.Width / 2 - title.Width / 2, title.Height);
            _gui.Add(title);

            YnPanel menu = new YnPanel();

            menu.HasBackground = false;
            menu.Position      = new Vector2(YnG.Width / 2 - 170 / 2, title.Position.Y + title.Height * 1.5F);
            menu.Padding       = 10;
            _gui.Add(menu);

            const int buttonWidth  = 150;
            const int buttonHeight = 50;

            SpriteFont   menuFont   = YnG.Content.Load <SpriteFont>("Fonts/MainMenuFont");
            YnTextButton playButton = menu.Add(new YnTextButton());

            playButton.Text        = "Jouer";
            playButton.Width       = buttonHeight;
            playButton.Width       = buttonWidth;
            playButton.CustomFont  = menuFont;
            playButton.MouseClick += delegate(object o, MouseClickEntityEventArgs e)
            {
                // TODO
            };

            YnTextButton settingsButton = menu.Add(new YnTextButton());

            settingsButton.Text        = "Options";
            settingsButton.Width       = buttonHeight;
            settingsButton.Width       = buttonWidth;
            settingsButton.CustomFont  = menuFont;
            settingsButton.MouseClick += delegate(object o, MouseClickEntityEventArgs e)
            {
                // TODO
            };

            YnTextButton exitButton = menu.Add(new YnTextButton());

            exitButton.Text        = "Quitter";
            exitButton.Width       = buttonHeight;
            exitButton.Width       = buttonWidth;
            exitButton.CustomFont  = menuFont;
            exitButton.MouseClick += delegate(object o, MouseClickEntityEventArgs e)
            {
                YnG.Exit();
            };


            _gui.Initialize();
            //_gui.PrepareWidgets();
        }
Example #4
0
        public override void Update(GameTime gameTime)
        {
            base.Update(gameTime);

            if (YnG.Keys.JustPressed(Keys.Enter) || MouseInRectangle(playRectangle) || TouchInRectangle(playRectangle))
            {
                YnG.StateManager.SetActive("scene", true);
            }

            else if (YnG.Keys.JustPressed(Keys.Escape) || YnG.Gamepad.JustPressed(PlayerIndex.One, Buttons.Back) || MouseInRectangle(quitRectangle) || TouchInRectangle(quitRectangle))
            {
                YnG.Exit();
            }
        }
Example #5
0
        protected override void item_MouseJustClicked(object sender, MouseClickEntityEventArgs e)
        {
            MenuItem item = (sender as MenuItem);

            if (item != null)
            {
                if (item.ItemPosition == 2)
                {
                    YnG.SwitchState(new SelectShipState());
                }
                else
                {
                    _selectedLevel = item.ItemPosition;
                    Registry.AudioManager.StopMusic();
                    YnG.SwitchState(new SoloPlayerState((SpaceShipType)_selectedShip, (LevelType)_selectedLevel));
                }
            }
        }
        protected override void item_MouseJustClicked(object sender, MouseClickEntityEventArgs e)
        {
            MenuItem item = (sender as MenuItem);

            if (item != null)
            {
                if (item.ItemPosition < 4)
                {
                    DesactiveAllShipProfile(shipProfileItem[item.ItemPosition]);
                    shipProfileItem[item.ItemPosition].Active = true;
                    _selectedShip = item.ItemPosition;

                    Registry.AudioManager.SpeakAsync(shipProfileItem[item.ItemPosition].SpaceShipDescription.Model + ". " + shipProfileItem[item.ItemPosition].SpaceShipDescription.Description);
                }
                else if (item.ItemPosition == 4)
                {
                    YnG.SwitchState(new MenuState());
                }
                else if (item.ItemPosition == 5)
                {
                    YnG.SwitchState(new SelectLevelState(_selectedShip));
                }
            }
        }
Example #7
0
 protected override void item_MouseJustClicked(object sender, MouseClickEntityEventArgs e)
 {
     YnG.SwitchState(new MenuState());
 }
Example #8
0
 protected override void Initialize()
 {
     base.Initialize();
     YnG.SwitchState(new SplashscreenState());
 }
Example #9
0
        public void ChangeGameStatus(GameStatus newStatus, bool restart = false)
        {
            if (newStatus == GameStatus.Loose)
            {
                // Audio
                Registry.AudioManager.MusicVolume = 0.2f;

                Registry.AudioManager.SpeakAsync("Mission failed ! You're ship has been destroyed !");

                // Interface
                gameUI.Kill();

                // Aliens
                _ennemyManager.Kill();

                // Joueurs
                if (_player.Active)
                {
                    _player.Kill();
                }

                // Messages
                _looseTimer.Start();
                messageBoxManager.ActiveMessageBox(MessageBoxType.End);
            }

            else if (newStatus == GameStatus.Paused)
            {
                _ennemyManager.Enabled = false;

                _player.Enabled = false;

                gameUI.Enabled = false;

                messageBoxManager.ActiveMessageBox(MessageBoxType.Pause);
            }

            else if (newStatus == GameStatus.Running)
            {
                _ennemyManager.Enabled = true;

                _player.Enabled = true;

                gameUI.Active = true;
                messageBoxManager.DesactiveMessageBoxes();
            }

            else if (newStatus == GameStatus.Starting)
            {
                Registry.AudioManager.SpeakAsync("Get ready !");

                _ennemyManager.Enabled = false;

                _player.Enabled = false;

                messageBoxManager.ActiveMessageBox(MessageBoxType.Start);
            }

            else if (newStatus == GameStatus.Success)
            {
                Registry.AudioManager.StopMusic();
                YnG.SwitchState(new ScoreState(true));
            }

            else if (newStatus == GameStatus.Quit)
            {
                Registry.AudioManager.StopMusic();
                YnG.SwitchState(new ScoreState(true));
            }

            else if (newStatus == GameStatus.Died)
            {
                Registry.AudioManager.StopMusic();
                YnG.SwitchState(new ScoreState(true));
            }

            gameStatus = newStatus;

            if (restart)
            {
                RestartScene();
            }
        }
Example #10
0
        public override void Update(GameTime gameTime)
        {
            base.Update(gameTime);

            #region MessageBox Début de la partie

            if (gameStatus == GameStatus.Starting)
            {
                _startGameTimer.Update(gameTime);
            }

            #endregion

            #region Mise à jour globale du jeu

            else if (gameStatus == GameStatus.Running)
            {
                // Quitter le jeu
                // Todo retour au menu ou affichage du menu de pause
                if (YnG.Keys.Escape)
                {
                    ChangeGameStatus(GameStatus.Paused);
                    return;
                }
            }

            #endregion

            #region MessageBox Partie en pause

            else if (gameStatus == GameStatus.Paused)
            {
                if (YnG.Keys.JustPressed(Keys.Enter))
                {
                    ChangeGameStatus(GameStatus.Quit);
                }
                else if (YnG.Keys.JustPressed(Keys.P))
                {
                    ChangeGameStatus(GameStatus.Running);
                }
            }

            #endregion

            #region MessageBox Fin de partie

            // Si la partie est terminée on réinitialise le tout
            // Et on affichage la box de fin
            else if (gameStatus == GameStatus.Loose)
            {
                _looseTimer.Update(gameTime);

                // Mise à jour de la box de fin
                string message = messageBoxManager.MessageBoxEnd.BaseMessage;
                message += String.Format("\n\nGet ready in {0}\n\n\nOr press Enter or Space to continue", _looseTimer.TimeRemaining);
                messageBoxManager.MessageBoxEnd.Message = message;
            }

            else if (gameStatus == GameStatus.Success)
            {
                YnG.SwitchState(new ScoreState());
            }

            #endregion
        }
 void timer_Completed()
 {
     YnG.SwitchState(new MenuState());
 }
Example #12
0
        public override void Update(GameTime gameTime)
        {
            base.Update(gameTime);
            _ambianceManager.Update(gameTime);

            _narationTimer.Update(gameTime);

            if (_deadlySceenOfDeath)
            {
                // Le joueur est là où il ne devrait pas!
                // Fondu qui va bien
                _deathAlpha += 0.01F;

                if (_deathAlpha >= 1.0F && _ambianceManager.TransitionDone())
                {
                    // Le joueur est mort : TP sur le banc
                    _deathAlpha = 0.0F;
                    SetData(ImlostGame.Scenes ["scene_1"]);
                }
            }
            else
            {
                if (_showSplash)
                {
                    // Splash affiché, on le masque si on clique n'importe où
                    if (YnG.Mouse.JustClicked(MouseButton.Left) || GetTouchState() ||
                        YnG.Keys.JustPressed(Keys.C) || YnG.Keys.JustPressed(Keys.NumPad0) || YnG.Gamepad.JustPressed(PlayerIndex.One, Buttons.Y))
                    {
                        _showSplash = false;
                    }
                }
                else
                {
                    _menuIcon.Update(gameTime);
                    _notesIcon.Update(gameTime);

                    //Gestion du curseur par manette xbox360
                    if (GamePad.GetState(PlayerIndex.One).IsConnected)
                    {
#if !LINUX
                        Mouse.SetPosition(YnG.Mouse.X + (int)YnG.Gamepad.RightStickValue(PlayerIndex.One).X * 20, YnG.Mouse.Y - (int)YnG.Gamepad.RightStickValue(PlayerIndex.One).Y * 20);
#endif
                    }

                    if (MouseInRectangle(_menuIcon.Rectangle) && YnG.Mouse.JustClicked(MouseButton.Left) || GetTouchState() ||
                        YnG.Keys.JustPressed(Keys.C) || YnG.Keys.JustPressed(Keys.NumPad0) || YnG.Gamepad.JustPressed(PlayerIndex.One, Buttons.Y))
                    {
                        // Click sur le menu
                        // TODO
                    }

                    // Images sur la scène
                    List <YnEntity> safeList = new List <YnEntity>(_itemsOnScreen);
                    foreach (YnEntity img in safeList)
                    {
                        img.Update(gameTime);
                    }

                    if (YnG.Mouse.MouseState.LeftButton == ButtonState.Pressed && !_dragging)
                    {
                        foreach (YnEntity img in _itemImages.Values)
                        {
                            if (MouseInRectangle(img.Rectangle))
                            {
                                _dragging = true;

                                _draggedImage = new YnEntity(img.AssetName);
                                _draggedImage.LoadContent();
                            }
                        }
                    }

                    if (YnG.Mouse.Released(MouseButton.Left) && _dragging)
                    {
                        _draggedImage.Position = new Vector2(YnG.Mouse.X - _draggedImage.Width / 2, YnG.Mouse.Y - _draggedImage.Height / 2);

                        if (YnG.Mouse.Released(MouseButton.Left))
                        {
                            // Drop
                            List <YnEntity> safeList2 = new List <YnEntity>(_itemsOnScreen);
                            foreach (YnEntity img in safeList2)
                            {
                                if (img.Rectangle.Intersects(_draggedImage.Rectangle))
                                {
                                    // Intersection
                                    DoDrop(_draggedImage, img);
                                }
                            }
                        }
                    }

                    if (_dragging)
                    {
                        _draggedImage.Position = new Vector2(YnG.Mouse.X - _draggedImage.Width / 2, YnG.Mouse.Y - _draggedImage.Height / 2);
                    }

                    if (YnG.Mouse.Released(MouseButton.Left))
                    {
                        _dragging = false;
                    }

                    // Déplacement au clavier, et manette Xbox360
                    if ((YnG.Keys.JustPressed(Keys.Z) || YnG.Keys.JustPressed(Keys.Up) || YnG.Gamepad.JustPressed(PlayerIndex.One, Buttons.LeftThumbstickUp)) &&
                        _sceneData.TopScene != String.Empty)
                    {
                        GoUp();
                    }
                    else if ((YnG.Keys.JustPressed(Keys.S) || YnG.Keys.JustPressed(Keys.Down) || YnG.Gamepad.JustPressed(PlayerIndex.One, Buttons.LeftThumbstickDown)) &&
                             _sceneData.BottomScene != String.Empty)
                    {
                        GoDown();
                    }
                    else if ((YnG.Keys.JustPressed(Keys.Q) || YnG.Keys.JustPressed(Keys.Left) || YnG.Gamepad.JustPressed(PlayerIndex.One, Buttons.LeftThumbstickLeft)) &&
                             _sceneData.LeftScene != String.Empty)
                    {
                        GoLeft();
                    }
                    else if ((YnG.Keys.JustPressed(Keys.D) || YnG.Keys.JustPressed(Keys.Right) || YnG.Gamepad.JustPressed(PlayerIndex.One, Buttons.LeftThumbstickRight)) &&
                             _sceneData.RightScene != String.Empty)
                    {
                        GoRight();
                    }
                    else if (YnG.Keys.JustPressed(Keys.Escape) || YnG.Gamepad.JustPressed(PlayerIndex.One, Buttons.Back))
                    {
                        YnG.Exit();
                    }

                    if (YnG.Mouse.JustClicked(MouseButton.Left) || GetTouchState() ||
                        YnG.Keys.JustPressed(Keys.C) || YnG.Keys.JustPressed(Keys.NumPad0) || YnG.Gamepad.JustPressed(PlayerIndex.One, Buttons.Y))
                    {
                        // Click sur le bouton de menu
                        int mx = YnG.Mouse.X;
                        int my = YnG.Mouse.Y;
                        if (MouseInRectangle(_menuHitbox) || TouchInRectangle(_menuHitbox) ||
                            YnG.Keys.JustPressed(Keys.C) || YnG.Keys.JustPressed(Keys.NumPad0) || YnG.Gamepad.JustPressed(PlayerIndex.One, Buttons.Y))
                        {
                            // Afficher ou masquer le menu
                            // 97 => hauteur du menu
                            // 25 => hauteur de la poignée
                            int delta = 97 - 25;
                            if (_menuIsShown)
                            {
                                // Déplacement de la hitbox vers le haut
                                _menuHitbox.Y += delta;

                                // Déplacement du background vers le haut
                                _menuBackground.Y += delta;
                            }
                            else
                            {
                                // Déplacement de la hitbox vers le bas
                                _menuHitbox.Y -= delta;

                                // Déplacement du background vers le bas
                                _menuBackground.Y -= delta;
                            }
                            _menuIsShown = !_menuIsShown;

                            _menuIcon.Visible  = _menuIsShown;
                            _notesIcon.Visible = _menuIsShown;

                            // Un peu brutasse comme méthode...
                            // On cache tout
                            foreach (KeyValuePair <string, YnEntity> pair in _itemImages)
                            {
                                pair.Value.Visible = false;
                            }

                            // Et on ne raffiche que ce qui est dans l'inventaire du joueur
                            int itemPadding = 20;
                            int nbItems     = _inventory.Count;
                            int x           = YnG.Width / 2 - (56 * nbItems) / 2;
                            if (nbItems > 1)
                            {
                                x -= ((nbItems - 1) * itemPadding) / 2;
                            }

                            foreach (InventoryItem item in _inventory)
                            {
                                if (_menuIsShown)
                                {
                                    _itemImages [item.Code].Visible = true;

                                    // Replacement de l'élément, centré en bas, de gauche à droite
                                    Vector2 pos = new Vector2(x, YnG.Height - 63);
                                    _itemImages [item.Code].Position = pos;

                                    x += 56 + itemPadding;
                                }
                            }
                        }
                    }
                }
            }
        }