Ejemplo n.º 1
0
        /// <summary>
        /// Crée le menu en jeu avec la possibilité de créer une nouvelle sauvegarde, de revenir en jeu ou de retourner
        /// au menu principal.
        /// </summary>
        /// <param name="form"> La fenêtre de l'application </param>
        /// <param name="state"> L'état de la partie </param>
        public GameMenuState(MainForm form, WindowsState state) : base(form, Screen)
        {
            var tooMuchSave = new TooMuchSaveState(Form, this);

            var bSave = new Button(new Point(600, 250), "Sauvegarder", () =>
            {
                if (GameSave.Saves.Count >= GameSave.NbMax)
                {
                    Form.SetState(tooMuchSave);
                }
                else
                {
                    Form.SetState(new CreateSaveState(Form, this));
                }
            });
            var bRetour = new Button(new Point(600, 400), "Retour", () =>
            {
                Form.SetState(state);
                ButtonsHandler.Reset();
            });
            var bMenu = new Button(new Point(600, 550), "Menu principal", () =>
            {
                Form.SetMainMenuState();
            });

            bSave.BottomButton   = bRetour;
            bRetour.TopButton    = bSave;
            bRetour.BottomButton = bMenu;
            bMenu.TopButton      = bRetour;

            ButtonsHandler = new ButtonsHandler(bSave);
            ButtonsHandler.Add(bRetour);
            ButtonsHandler.Add(bMenu);
            ButtonsHandler.LinkToEchap(bRetour);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Initialise l'état de la fenêtre à son menu prncipal.
        /// Définit ses bordures, sa taille, son titre et son icône.
        /// Indique que la fenêtre récupère les évènements du clavier, lui donne la fonction de création du backbuffer
        /// pour dessiner et celle pour l'afficher.
        /// Enfin, lance le timer avec la fréquence d'image par seconde désirée qui va actualiser l'application.
        /// </summary>
        private void InitializeComponents()
        {
            _mainMenuState = new MainMenuState(this);
            _state         = _mainMenuState;

            FormBorderStyle = FormBorderStyle.FixedDialog;
            Size            = new Size(FixedWidth, FixedHeight);
            MinimizeBox     = false;
            MaximizeBox     = false;
            Text            = "Tentacle Slicers";
            Icon            = new Icon(HudComponent.ImagePath + "windows/icon.ico");

            _timer = new Timer {
                Interval = 1000 / Ips
            };
            _stopwatch = new Stopwatch();

            Load        += Event_CreateBackBuffer;
            Paint       += Event_Paint;
            KeyDown     += Event_KeyDown;
            KeyPress    += Event_KeyPressed;
            KeyUp       += Event_KeyUp;
            _timer.Tick += Event_Loop;

            _timer.Start();
            _stopwatch.Start();
        }
 /// <summary>
 /// Crée l'état avec un unique bouton menant vers l'état précédent.
 /// </summary>
 /// <param name="form"> La fenêtre de l'application </param>
 /// <param name="state"> L'état précédent </param>
 public TooMuchSaveState(MainForm form, WindowsState state) : base(form, Screen)
 {
     ButtonsHandler = new ButtonsHandler(new Button(new Point(450, 400), "Nombre maximal de sauvegardes atteint",
                                                    () =>
     {
         Form.SetState(state);
     }));
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Crée l'état avec une paire de boutons par map pour créer la nouvelle partie avec la map et le nombre de
        /// joueurs souhaité.
        /// </summary>
        /// <param name="form"> La fenêtre de l'application </param>
        /// <param name="state"> L'état précédent de l'application </param>
        public NewGameState(MainForm form, WindowsState state) : base(form, Screen)
        {
            var maps = Map.MapNames();
            var b    = new Button[2, maps.Count];

            // Création des boutons
            var bRetour = new Button(new Point(600, 700), "Retour", () =>
            {
                Form.SetState(state);
            });

            for (var j = 0; j < maps.Count; ++j)
            {
                var numMap = j;
                b[0, j] = new Button(new Point(450, 200 + 150 * j), maps[j] + "\n(Duo)", () =>
                {
                    Form.SetState(new GameState(Form, numMap, 2));
                });
                b[1, j] = new Button(new Point(750, 200 + 150 * j), maps[j] + "\n(Solo)", () =>
                {
                    Form.SetState(new GameState(Form, numMap, 1));
                });
            }

            // Liaison des boutons entre eux
            for (var j = 0; j < maps.Count; ++j)
            {
                if (j < maps.Count - 1)
                {
                    b[0, j].BottomButton = b[0, j + 1];
                    b[1, j].BottomButton = b[1, j + 1];
                }
                else
                {
                    b[0, j].BottomButton = bRetour;
                    b[1, j].BottomButton = bRetour;
                }
                if (j > 0)
                {
                    b[0, j].TopButton = b[0, j - 1];
                    b[1, j].TopButton = b[1, j - 1];
                }
                b[0, j].RightButton = b[1, j];
                b[1, j].LeftButton  = b[0, j];
            }
            bRetour.TopButton = b[0, 0];

            // Création du ButtonHandler
            ButtonsHandler = new ButtonsHandler(bRetour);
            foreach (var button in b)
            {
                ButtonsHandler.Add(button);
            }
            ButtonsHandler.LinkToEchap(bRetour);
        }
        /// <summary>
        /// Crée l'état avec le bouton retour permettant de retourner au menu principal.
        /// Une grille de boutons est crée, chaque bouton correpondant à une sauvegarde qui peut être chargée pour
        /// entrer en jeu.
        /// </summary>
        /// <param name="form"> La fenêtre de l'application </param>
        /// <param name="mainMenu"> Le menu principal </param>
        public ChooseSaveState(MainForm form, WindowsState mainMenu) : base(form, Screen)
        {
            var bRetour = new Button(new Point(600, 700), "Retour", () =>
            {
                Form.SetState(mainMenu);
            });

            // Remplit de gauche à droite et de haut en bas la grille de 3x3 sauvegardes
            var bSaves = new Button[3, 3];

            for (var num = 0; num < GameSave.Saves.Count; ++num)
            {
                var i         = num / 3;
                var j         = num % 3;
                var save      = GameSave.Saves[num];
                var playerStr = save.NumberOfPlayers == 1 ? "Solo" : "Duo";
                bSaves[i, j] = new Button(new Point(300 + j * 300, 200 + i * 150),
                                          save.Name + '\n' + playerStr + ", niveau " + save.Level, () =>
                {
                    Form.SetState(new GameState(form, save));
                });
            }

            // Relie les boutons de la grille entre eux
            for (var i = 0; i < 3; ++i)
            {
                for (var j = 0; j < 3; ++j)
                {
                    var save = bSaves[i, j];
                    if (save == null)
                    {
                        continue;
                    }

                    if (i + 1 >= 3 || bSaves[i + 1, j] == null)
                    {
                        save.BottomButton = bRetour;
                    }
                    else
                    {
                        save.BottomButton = bSaves[i + 1, j];
                    }
                    if (i > 0)
                    {
                        save.TopButton = bSaves[i - 1, j];
                    }
                    if (j > 0)
                    {
                        save.LeftButton = bSaves[i, j - 1];
                    }
                    if (j < 2 && bSaves[i, j + 1] != null)
                    {
                        save.RightButton = bSaves[i, j + 1];
                    }
                }
            }
            if (bSaves[0, 1] != null)
            {
                bRetour.TopButton = bSaves[0, 1];
            }
            else if (bSaves[0, 0] != null)
            {
                bRetour.TopButton = bSaves[0, 0];
            }

            ButtonsHandler = new ButtonsHandler(bRetour);
            foreach (var b in bSaves)
            {
                if (b != null)
                {
                    ButtonsHandler.Add(b);
                }
            }
            ButtonsHandler.LinkToEchap(bRetour);
        }
Ejemplo n.º 6
0
 /// <summary>
 /// Crée l'état avec le menu en jeu vers lequel retourner et le texte à afficher à la fenêtre.
 /// </summary>
 /// <param name="form"> La fenêtre de l'application </param>
 /// <param name="state"> L'état précédent </param>
 public CreateSaveState(MainForm form, WindowsState state) : base(form)
 {
     _state    = state;
     _name     = "";
     _nameText = new Text("", 20);
 }
Ejemplo n.º 7
0
 /// <summary>
 /// Redirige la fenêtre sur son menu principal.
 /// </summary>
 public void SetMainMenuState()
 {
     _mainMenuState.Update();
     _state = _mainMenuState;
 }
Ejemplo n.º 8
0
 /// <summary>
 /// Délègue l'actualisation et les évènements du clavier à l'objet donné.
 /// </summary>
 /// <param name="state"> Le nouvel état de la fenêtre </param>
 public void SetState(WindowsState state)
 {
     _state = state;
 }