示例#1
0
 public void DrawTractorBeam(SpriteBatch spriteBatch)
 {
     if (TractorBeam.DrawBeam)
     {
         TractorBeam.Draw(spriteBatch);
     }
 }
示例#2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="textureDictionary">all the different textures the ship uses, most used are Default, Left and Right</param>
 /// <param name="position">position of the ship</param>
 /// <param name="turrets">turrets on the ship</param>
 /// <param name="healthMax">max health</param>
 /// <param name="energyMax">max energy</param>
 /// <param name="energyRegen">energy regen per frame</param>
 /// <param name="turnRate">how fast the ship turns</param>
 public Ship(IReadOnlyDictionary <string, Texture2D> textureDictionary, Vector2 position, Dictionary <string, List <ITurret> > turrets, float healthMax, float energyMax, float energyRegen, float turnRate, float speed, TractorBeam tractorBeam, int upgradeCount) : base(textureDictionary["Default"], position)
 {
     foreach (var t in turrets)
     {
         Turrets.Add(t.Key, t.Value);
     }
     foreach (var entry in textureDictionary)
     {
         TextureDictionary.Add(entry.Key, entry.Value);
     }
     Upgrades        = new Upgrade[upgradeCount];
     TractorBeam     = tractorBeam;
     HealthMax       = healthMax;
     BaseHealth      = healthMax;
     Health          = healthMax;
     BaseEnergy      = energyMax;
     EnergyMax       = energyMax;
     Energy          = energyMax;
     BaseEnergyRegen = energyRegen;
     EnergyRegen     = energyRegen;
     TurnRate        = turnRate;
     Speed           = speed;
     BackwardsSpeed  = 1 / 5f * speed;
     StrafeSpeed     = 3 / 5f * speed;
 }
示例#3
0
 public void UpdateTractorBeam(Sector sector, Ship ship)
 {
     if (!Moving && _beamDelayCounter == TractorBeam.BeamDelay)
     {
         TractorBeam.Update(sector);
     }
 }
示例#4
0
 public TractorBeam(TractorBeam tractorBeam)
 {
     Length    = tractorBeam.Length;
     DragSpeed = tractorBeam.DragSpeed;
     BeamDelay = tractorBeam.BeamDelay;
     //Sprite
     Rotation  = tractorBeam.Rotation;
     Position  = tractorBeam.Position;
     Rectangle = tractorBeam.Rectangle;
     Origin    = tractorBeam.Origin;
     Texture   = tractorBeam.Texture;
     //End
 }
示例#5
0
        public Ship(Ship ship)
        {
            TextureDictionary = ship.TextureDictionary;
            //Sprite
            Rotation  = ship.Rotation;
            Position  = ship.Position;
            Rectangle = ship.Rectangle;
            Origin    = ship.Origin;
            Texture   = ship.Texture;
            //End
            TextureIndexCounter = ship.TextureIndexCounter;
            ShipCurrentIndex    = ship.ShipCurrentIndex;
            ShipPreviousIndex   = ship.ShipPreviousIndex;
            Description         = ship.Description;
            Name            = ship.Name;
            Cost            = ship.Cost;
            TurnRate        = ship.TurnRate;
            Speed           = ship.Speed;
            BackwardsSpeed  = ship.BackwardsSpeed;
            StrafeSpeed     = ship.StrafeSpeed;
            Boost           = ship.Boost;
            Moving          = ship.Moving;
            BaseHealth      = ship.BaseHealth;
            Health          = ship.Health;
            HealthMax       = ship.HealthMax;
            BaseEnergy      = ship.BaseEnergy;
            Energy          = ship.Energy;
            EnergyMax       = ship.EnergyMax;
            BaseEnergyRegen = ship.BaseEnergyRegen;
            EnergyRegen     = ship.EnergyRegen;

            Upgrades = new Upgrade[ship.Upgrades.Length];
            for (int i = 0; i < ship.Upgrades.Length; i++)
            {
                if (ship.Upgrades[i] == null)
                {
                    continue;
                }
                Upgrades[i] = new Upgrade(ship.Upgrades[i]);
            }

            if (ship.TractorBeam != null)
            {
                TractorBeam = new TractorBeam(ship.TractorBeam);
            }

            foreach (var turretGroup in ship.Turrets)
            {
                Turrets.Add(turretGroup.Key, new List <ITurret>());
            }
            foreach (var turretList in Turrets.Values)
            {
                foreach (var turretGroup in ship.Turrets)
                {
                    foreach (var turret in turretGroup.Value)
                    {
                        turretList.Add(turret.CloneTurret(turret)); //TODO see if this can be don easier instead of implementing CloneTurret in every turret
                    }
                }
            }
        }