Beispiel #1
0
        static public void Draw()
        {
            if (GM == null)
            {
                throw new Exception("HUD: La fonction SetGameManager doit avoir été appelée au moins au fois avant la fonction Draw");
            }

            DrawableRectangle.DrawRectangle(Vector2.Zero, new Vector2(1f, 0.07f), Color.Black);

            #region affichage des messages

            FontSupport.PrintStatus(25, "  " + mMessagePermanent, mColorMsgPermanent);
            if (mMessageTmpFrame < mMessageTmpDisplayTime)
            {
                mMessageTmpFrame++;
                FontSupport.PrintStatus(24, "  " + mMessageTmp, Color.Black);
            }
            #endregion

            if (GM.mState == GameState.CreationDeLaMap)
            {
                FontSupport.PrintStatus(2, "          -- Creation de la map --", Color.DarkBlue);

                FontSupport.PrintStatusPixelPosition(40, (int)(Game1.sGraphics.PreferredBackBufferHeight * 0.95f),
                                                     "[Clic gauche] Placer un mur    [Clic droit] Placer un teleporteur    [Entree] Terminer", Color.White);
            }

            if (GM.mState == GameState.PlacementPlayers)
            {
                FontSupport.PrintStatus(2, "          -- Placement des joueurs -- (Distance de securite : " + GameRules.Sécurité + " cases)", Color.DarkRed);

                FontSupport.PrintStatusPixelPosition(40, (int)(Game1.sGraphics.PreferredBackBufferHeight * 0.95f),
                                                     "[Clic gauche] Placer un joueur sur une case rose      [Entree] Terminer / Commencer le jeu", Color.White);
            }

            if (GM.mState == GameState.Jeu || GM.mState == GameState.FinDuJeu)
            {
                if (GM.mState == GameState.Jeu)
                {
                    FontSupport.PrintStatus(2, "          -- Partie en cours --", Color.Black);
                }
                else
                {
                    FontSupport.PrintStatus(2, "          -- PARTIE TERMINEE --", Color.Black);
                }
                int espacement = Game1.sGraphics.PreferredBackBufferWidth / (GM.Players.Count + 1);

                for (int i = 0; i < GM.Players.Count; i++)
                {
                    string vies = " ";
                    if (GM.Players[i].mVies >= 0)
                    {
                        for (int v = GameRules.Vies; v > 0; v--)
                        {
                            if (v > GM.Players[i].mVies)
                            {
                                vies += "[X]";
                            }
                            else
                            {
                                vies += "[O]";
                            }
                        }
                    }
                    else
                    {
                        vies += "est mort !";
                    }

                    FontSupport.PrintStatusPixelPosition((int)(espacement * (i + 0.5f)),
                                                         (int)(Game1.sGraphics.PreferredBackBufferHeight * 0.95f),
                                                         GM.Players[i].mNom + vies,
                                                         GM.Players[i].Couleur);
                }
            }
        }
Beispiel #2
0
        public void DrawGame()
        {
            mMap.Draw(Players);

            if (mState == GameState.CreationDeLaMap)
            {
                if (mMap[CaseSelectionnée] != null && mMap[CaseSelectionnée].Type == TypeElement.Vide)
                {
                    DrawableRectangle.DrawCase(CaseSelectionnée, Color.Gray);
                }
            }

            if (mState == GameState.PlacementPlayers)
            {
                mMap.DrawPlacementPlayer(CasesPlacementPlayers);

                foreach (Player p in Players)
                {
                    p.DrawPlayer();
                    FontSupport.PrintStatusAt(p.Position + new Vector2(0.3f, 0.9f), p.mInitiales, Color.Black);
                }

                if (mMap[CaseSelectionnée] != null && mMap[CaseSelectionnée].Type == TypeElement.Vide)
                {
                    DrawableRectangle.DrawCase(CaseSelectionnée, Color.Gray);
                }
            }

            if (mState == GameState.Jeu)
            {
                mMap.DrawAccessible(PlayersEnJeu[mIndexPlayer]);

                foreach (Player p in PlayersEnJeu)
                {
                    p.DrawPlayer();
                    FontSupport.PrintStatusAt(p.Position + new Vector2(0.3f, 0.9f), p.mInitiales, Color.Black);
                }

                #region Draw Path (en vert foncé)
                if (PlayersEnJeu[mIndexPlayer].Mode == PlayerMode.Deplacement)
                {
                    List <Case> path = new List <Case>();
                    if (PlayersEnJeu[mIndexPlayer].CasesAccessibles != null && PlayersEnJeu[mIndexPlayer].CasesAccessibles.Contains(CaseSelectionnée))
                    {
                        path = PlayersEnJeu[mIndexPlayer].CasesAccessibles.PathTo(CaseSelectionnée);
                        foreach (Case c in path)
                        {
                            if (c != PlayersEnJeu[mIndexPlayer].Case)
                            {
                                if (mMap[c].Type == TypeElement.Téléporteur)
                                {
                                    DrawableRectangle.DrawCase(c, CouleurPath, CouleurAccessibles);
                                }
                                else
                                {
                                    DrawableRectangle.DrawCase(c, CouleurPath);
                                }
                            }
                        }
                    }
                }
                if (PlayersEnJeu[mIndexPlayer].Mode == PlayerMode.Coincé && mMap[CaseSelectionnée] != null && PlayersEnJeu[mIndexPlayer].CasesPourTeleportation.Contains(CaseSelectionnée))
                {
                    DrawableRectangle.DrawCase(CaseSelectionnée, Color.DarkSalmon);
                }
                #endregion
            }


            if (mState == GameState.FinDuJeu)
            {
                PlayersEnJeu[0].DrawPlayer();
                FontSupport.PrintStatusAt(PlayersEnJeu[0].Position + new Vector2(0.3f, 0.9f), PlayersEnJeu[0].mInitiales, Color.Black);
            }

            HUD.Draw();

            #region du debug
            string isMurPlayer = (mMap[CaseSelectionnée] != null) ? (mMap[CaseSelectionnée].Type == TypeElement.MurPlayer).ToString() : "null";
            string dansList    = "nope";
            if (PlayersEnJeu != null && PlayersEnJeu.Count > 0 && mIndexPlayer < PlayersEnJeu.Count)
            {
                dansList = (PlayersEnJeu[mIndexPlayer].CasesPourTeleportation != null) ? PlayersEnJeu[mIndexPlayer].CasesPourTeleportation.Contains(CaseSelectionnée).ToString() : "null";
            }
            #endregion
            FontSupport.PrintStatus(1, " [ZQSD/Molette] Bouger camera     | Case = " + CaseSelectionnée + " | isMurPlayer? " + isMurPlayer + " | dansList? " + dansList, Color.Gray);
            //FontSupport.PrintStatus(1, "Camera.Width : " + Camera.Width + " | Camera.Height : " + Camera.Height);
        }