Exemple #1
0
        public void AddTurret(Vector2 hardPoint, ShipAddOnData addOnData)
        {
            ShipTurretData turretData = addOnData as ShipTurretData;
            string         dataAsset  = AssetManager.GetKeyFromData(turretData);

            ShipTurret turret = null;

            switch (turretData.TurretType)
            {
            case "Kinetic":
                turret = new ShipKineticTurret(hardPoint, dataAsset, this, true);
                break;

            case "Missile":
                turret = new ShipMissileTurret(hardPoint, dataAsset, this, true);
                break;

            case "Beam":
                turret = new ShipBeamTurret(hardPoint, dataAsset, this, true);
                break;
            }

            ShipAddOns.AddObject(turret);

            DealWithHardPoint(hardPoint, false);
        }
        private void AddUI(ShipTurretData shipTurretData)
        {
            Vector2 size = Vector2.Zero;

            // For now don't set the position of this label, because we do not know the size yet
            // However, with correct parenting we will only need to set this position at the very end when the size is calculated
            // And everything else will be correctly position

            Label name = new Label(shipTurretData.DisplayName, Vector2.Zero, Color.Red, this);

            size = name.TextDimensions;
            AddUIObject(name, "Turret Name");

            ImageAndLabel health = new ImageAndLabel("Sprites\\UI\\Icons\\Health", "Health: " + shipTurretData.Health.ToString(), new Vector2(0, SpriteFont.LineSpacing + padding), Color.White, name);

            AddUIObject(health, "Turret Health", true);
            size = new Vector2(Math.Max(size.X, health.Dimensions.X), size.Y + SpriteFont.LineSpacing + padding);

            string turretTypeIconAsset = "";

            switch (shipTurretData.TurretType)
            {
            case "Kinetic":
                turretTypeIconAsset = "Sprites\\UI\\Icons\\KineticType";
                break;

            case "Missile":
                turretTypeIconAsset = "Sprites\\UI\\Icons\\MissileType";
                break;

            case "Beam":
                turretTypeIconAsset = "Sprites\\UI\\Icons\\BeamType";
                break;
            }

            ImageAndLabel type = new ImageAndLabel(turretTypeIconAsset, "Type: " + shipTurretData.TurretType, new Vector2(0, SpriteFont.LineSpacing + padding), Color.White, health);

            AddUIObject(type, "Turret Type", true);
            size = new Vector2(Math.Max(size.X, type.Dimensions.X), size.Y + SpriteFont.LineSpacing + padding);

            Label range = new Label("Range: " + shipTurretData.Range.ToString(), new Vector2(0, SpriteFont.LineSpacing + padding), Color.White, type);

            size = new Vector2(Math.Max(size.X, range.TextDimensions.X), size.Y + SpriteFont.LineSpacing + padding);
            AddUIObject(range, "Turret Range");

            ImageAndLabel damage = new ImageAndLabel("Sprites\\UI\\Icons\\Damage", "Damage: " + shipTurretData.Damage.ToString(), new Vector2(0, SpriteFont.LineSpacing + padding), Color.White, range);

            AddUIObject(damage, "Turret Damage", true);
            size = new Vector2(Math.Max(size.X, damage.Dimensions.X), size.Y + SpriteFont.LineSpacing + padding);

            ImageAndLabel price = new ImageAndLabel("Sprites\\UI\\Icons\\MoneyIcon", shipTurretData.Price.ToString(), new Vector2(0, SpriteFont.LineSpacing + padding), damage);

            size = new Vector2(Math.Max(size.X, price.Dimensions.X), size.Y + SpriteFont.LineSpacing + padding);
            AddUIObject(price, "Turret Price");

            Size           = size + new Vector2(padding, padding) * 2;
            LocalPosition += new Vector2(0, -Size.Y * 0.5f);

            // Position the first UI element correctly
            name.LocalPosition = new Vector2(0, -Size.Y * 0.5f + SpriteFont.LineSpacing * 0.5f + padding);
        }
 public BuyShipTurretHoverInfo(ShipTurretData shipTurretData, Vector2 localPosition, BaseObject parent, float lifeTime = float.MaxValue)
     : base(shipTurretData, localPosition, parent, lifeTime)
 {
     AddUI(shipTurretData);
 }