Exemplo n.º 1
0
 private Splitter(Splitter parent, int split) :
     base(parent.Position)
 {
     MaxHealth = parent.MaxHealth / 2;
     Defence   = parent.Defence;
     MaxSpeed  = parent.MaxSpeed * 4 / 3;
     Size      = parent.Size * 3 / 4;
     Weapon    = new SplitterWeapon((SplitterWeapon)parent.Weapon);
     drawable  = new Rectangle(Position.X, Position.Y, Size.X, Size.Y);
     ShipAdder = parent.ShipAdder;
     if (split == 1)
     {
         onDeath += () =>
         {
             ((SplitterWeapon)Weapon).ShootHealth(Position);
         }
     }
     ;
     if (split > 0)
     {
         onDeath += () =>
         {
             split--;
             ShipAdder(new Splitter(this, split));
             ShipAdder(new Splitter(this, split));
         }
     }
     ;
     Health = MaxHealth;
     SetDefaultMoveStrategy();
 }
Exemplo n.º 2
0
 public SplitterWeapon(SplitterWeapon parent) :
     base(parent.Ammo)
 {
     if (parent.bulletCount != 1)
     {
         parent.bulletCount -= 1;
     }
     bulletCount = parent.bulletCount;
     BulletAdder = parent.BulletAdder;
     ReloadTime  = parent.ReloadTime;
     SuckOnShots(parent);
 }
Exemplo n.º 3
0
        public Splitter(Tier tier, Action <EnemyShip> adder) :
            base(new Vector(VALUES.WIDTH / 2, 50))
        {
            ShipAdder = adder;
            Size      = new Vector(100, 100);
            drawable  = new Rectangle(Position, new Size(Size.X, Size.Y));
            Weapon    = new SplitterWeapon(tier);
            MaxSpeed  = 7;
            int split = 1;

            switch (tier)
            {
            case Tier.T1:
                MaxHealth = 200;
                this.Weapon.AppendOnShot(new OnShots.SpeedChange(-10));
                this.Weapon.Ammo.AppendOnHit(new OnHits.SlowEffect(1));
                split = 2;
                break;

            case Tier.T2:
                MaxHealth = 300;
                this.Weapon.AppendOnShot(new OnShots.SizeChange(3));
                this.Weapon.AppendOnShot(new OnShots.SpeedChange(-10));
                this.Weapon.Ammo.AppendDmgModifier((ref int val) =>
                {
                    val += 5;
                });
                this.Weapon.Ammo.AppendOnHit(new OnHits.SlowEffect(2));
                split = 3;
                break;

            case Tier.T3:
                MaxHealth = 400;
                this.Weapon.AppendOnShot(new OnShots.SizeChange(5));
                this.Weapon.AppendOnShot(new OnShots.SpeedChange(-10));
                this.Weapon.Ammo.AppendDmgModifier((ref int val) =>
                {
                    val += 8;
                });
                this.Weapon.Ammo.AppendOnHit(new OnHits.SlowEffect(3));
                split = 4;
                break;
            }
            onDeath += () =>
            {
                ShipAdder(new Splitter(this, split));
                ShipAdder(new Splitter(this, split));
            };
            this.Health = MaxHealth;
        }