Example #1
0
        public FinalResultHud(ContentManager content, Director director, Scene scene, bool[] selectedPlayers)
            : base(content, director, scene)
        {
            playerCount = selectedPlayers.Where(s => s).Count();
            playerScoreTextHudElements = new List <TextHudElement>(playerCount);

            Vector2 scale = new Vector2(1.5f, 1.5f);

            // Add player score to the Hud
            foreach (KeyValuePair <Player, Score> s in scene.Scores)
            {
                Func <object, string> textFunc  = arg => s.Value.getScore().ToString();
                Func <object, Color>  colorFunc = arg => Color.White;
                TextHudElement        currentPlayerScoreTextHudElement = new TextHudElement(this, fonts.Last(), textFunc,
                                                                                            colorFunc, null, null, scale: scale);

                Vector3 playerScorePos = new Vector3(scene.FinalScorePos[(int)s.Key.playerIndex].Center.ToVector2(), 0f);
                Vector3 size           = scene.CharacterWonPos[(int)s.Key.playerIndex].GetCenterPosition();
                currentPlayerScoreTextHudElement.SetPosition(new Vector3(playerScorePos.X - 10, playerScorePos.Y - 20, 0));
                playerScoreTextHudElements.Add(currentPlayerScoreTextHudElement);
            }

            hudElements.AddRange(playerScoreTextHudElements);
        }
Example #2
0
        public MatchHud(ContentManager content, Director director, Scene scene, bool[] selectedPlayers) : base(content, director, scene)
        {
            playerCount = 4;            //scene.GetPlayers().Count;
            playerScoreTextHudElements = new List <TextHudElement>(playerCount);
            playerAmmoCount            = new List <AmmoSpriteHudElement>();
            playerAmmoSprites          = new List <Sprite> [playerCount];
            //Init SpriteHudElements
            matchUI = new List <SimpleSpriteHudElement>();

            //Add Match UI for the selected players
            Actor actor;

            for (int i = 0; i < selectedPlayers.Length; i++)
            {
                if (selectedPlayers[i])
                {
                    actor = scene.MatchUiPos[i];
                    matchUI.Add(new SimpleSpriteHudElement(this, (Sprite)actor.getRepresentation()));
                }
            }

            //Add Match trasure count UI( assumes that Treasure UI is saved last in the tiled map)
            actor = scene.MatchUiPos[scene.MatchUiPos.Count - 1];
            matchUI.Add(new SimpleSpriteHudElement(this, (Sprite)actor.getRepresentation()));

            //Init TextHudElements
            InitHudUIPositions();

            InitAmmoCountSprites();

            // Add player score to the Hud
            foreach (Player p in scene.GetPlayers())
            {
                Func <object, string> textFunc  = (object arg) => scene.Scores[p].getScore().ToString();
                Func <object, Color>  colorFunc = (object arg) => Color.Black;
                TextHudElement        currentPlayerScoreTextHudElement = new TextHudElement(this, fonts.Last(), textFunc, colorFunc, null, null);
                currentPlayerScoreTextHudElement.SetPosition(new Vector3(playerScorePos[(int)p.playerIndex], 0));
                playerScoreTextHudElements.Add(currentPlayerScoreTextHudElement);

                DefaultCharacter character = p.PossesedCharacters[0] as DefaultCharacter;
                if (character != null)
                {
                    Func <Sprite> spriteFunc = () =>
                    {
                        var ammoCount = ((DefaultCharacter)p.PossesedCharacters[0]).AmmoCount;
                        if (ammoCount > 0)
                        {
                            Sprite playerAmmoSprite =
                                playerAmmoSprites[(int)p.playerIndex][(int)ammoCount - 1];
                            Rectangle boundingBox = character.CharacterPhysics.BoundingBox;
                            playerAmmoSprite.SetPosition(new Vector3(boundingBox.Center.X - 10, boundingBox.Top - 10, 0));
                            return(playerAmmoSprite);
                        }
                        return(null);
                    };
                    AmmoSpriteHudElement currentPlayerAmmoHudElement = new AmmoSpriteHudElement(this, spriteFunc, null);
                    playerAmmoCount.Add(currentPlayerAmmoHudElement);
                    //......
                }
            }

            //Add treasureCount to the Hud
            Func <object, string> treasureTextFunc  = (object arg) => scene.TreasuresLeft.ToString();
            Func <object, Color>  treasureColorFunc = (object arg) => Color.IndianRed;
            TextHudElement        treasureCount     = new TextHudElement(this, fonts.Last(), treasureTextFunc, treasureColorFunc, null, null);

            treasureCount.SetPosition(new Vector3(treasureScorePos, 0f));
            playerScoreTextHudElements.Add(treasureCount);

            hudElements.AddRange(matchUI);
            hudElements.AddRange(playerScoreTextHudElements);
            hudElements.AddRange(playerAmmoCount);
        }