override public void OnMove(GoRogue.FOV playerFov, System.Collections.Generic.IList <Entity> monsters) { if (this.CurrentShield < KlogborgShield.MaxShield && !monsters.Any(m => playerFov.BooleanFOV[m.X, m.Y] == true)) { this.CurrentShield = KlogborgShield.MaxShield; } }
internal void RegenerateShield(GoRogue.FOV playerFov, IList <Entity> monsters) { this.Shield.OnMove(playerFov, monsters); if (!this.Shield.IsDown()) { this.ChangeToShieldColor(); } }
public void OnMoveResetsShieldToMaxIfNoMonstersInFov() { // Arrange var shield = new KlogborgShield(); shield.Damage(24); var fov = new GoRogue.FOV(new ArrayMap <bool>(10, 10)); fov.Calculate(5, 5, 5); var monsters = new List <Entity>() { Entity.CreateFromTemplate("Zug", 0, 2), Entity.CreateFromTemplate("Slink", 9, 8) }; // Act shield.OnMove(fov, monsters); // Assert Assert.That(shield.CurrentShield, Is.EqualTo(KlogborgShield.MaxShield)); }
public void OnMoveLeavesShieldValueIntactIfMonstersAreInFov() { // Arrange var shield = new KlogborgShield(); shield.Damage(24); var fov = new GoRogue.FOV(new ArrayMap <bool>(10, 10)); fov.Calculate(5, 5, 5); var monsters = new List <Entity>() { Entity.CreateFromTemplate("Zug", 6, 6) }; // Act shield.OnMove(fov, monsters); // Assert Assert.That(shield.CurrentShield, Is.Not.EqualTo(KlogborgShield.MaxShield)); }
public virtual void OnMove(GoRogue.FOV playerFov, IList <Entity> monsters) { this.CurrentShield += Shield.ShieldRegenPerMove; this.CurrentShield = Math.Min(this.CurrentShield, Shield.MaxShield); }
protected LivingCharacter(MapConsole map, Color foreground, Color background, int glyph) : base(map, foreground, background, glyph) { FOVSight = new GoRogue.FOV(map.MapToFOV); FOVLighted = new GoRogue.FOV(map.MapToFOV); }