public void PaintWorld(WorldLayer layer) { var shrines = Hud.Game.Shrines.Where(x => !x.IsDisabled && !x.IsOperated && x.DisplayOnOverlay && (x.Type != ShrineType.HealingWell) && (x.Type != ShrineType.PoolOfReflection)); foreach (var actor in shrines) { switch (actor.SnoActor.Sno) { case (ActorSnoEnum)225025: case (ActorSnoEnum)176074: BlessedShrineDecorator.Paint(layer, actor, actor.FloorCoordinate, actor.SnoActor.NameLocalized); if (EnableSpeak && (actor.LastSpeak == null) && Hud.Sound.LastSpeak.TimerTest(2000) && BlessedSpeak != "") { if (BlessedSpeak == "默认") { Hud.Sound.Speak(actor.SnoActor.NameLocalized); } else { Hud.Sound.Speak(BlessedSpeak); } actor.LastSpeak = Hud.Time.CreateAndStartWatch(); } break; case (ActorSnoEnum)225262: case (ActorSnoEnum)176075: EnlightenedShrineDecorator.Paint(layer, actor, actor.FloorCoordinate, actor.SnoActor.NameLocalized); if (EnableSpeak && (actor.LastSpeak == null) && Hud.Sound.LastSpeak.TimerTest(2000) && EnlightenedSpeak != "") { if (EnlightenedSpeak == "默认") { Hud.Sound.Speak(actor.SnoActor.NameLocalized); } else { Hud.Sound.Speak(EnlightenedSpeak); } actor.LastSpeak = Hud.Time.CreateAndStartWatch(); } break; case (ActorSnoEnum)225263: case (ActorSnoEnum)176076: FortuneShrineDecorator.Paint(layer, actor, actor.FloorCoordinate, actor.SnoActor.NameLocalized); if (EnableSpeak && (actor.LastSpeak == null) && Hud.Sound.LastSpeak.TimerTest(2000) && FortuneSpeak != "") { if (FortuneSpeak == "默认") { Hud.Sound.Speak(actor.SnoActor.NameLocalized); } else { Hud.Sound.Speak(FortuneSpeak); } actor.LastSpeak = Hud.Time.CreateAndStartWatch(); } break; case (ActorSnoEnum)225266: case (ActorSnoEnum)176077: FrenziedShrineDecorator.Paint(layer, actor, actor.FloorCoordinate, actor.SnoActor.NameLocalized); if (EnableSpeak && (actor.LastSpeak == null) && Hud.Sound.LastSpeak.TimerTest(2000) && FrenziedSpeak != "") { if (FrenziedSpeak == "默认") { Hud.Sound.Speak(actor.SnoActor.NameLocalized); } else { Hud.Sound.Speak(FrenziedSpeak); } actor.LastSpeak = Hud.Time.CreateAndStartWatch(); } break; case (ActorSnoEnum)260342: case (ActorSnoEnum)260346: FleetingShrineDecorator.Paint(layer, actor, actor.FloorCoordinate, actor.SnoActor.NameLocalized); if (EnableSpeak && (actor.LastSpeak == null) && Hud.Sound.LastSpeak.TimerTest(2000) && FleetingSpeak != "") { if (FleetingSpeak == "默认") { Hud.Sound.Speak(actor.SnoActor.NameLocalized); } else { Hud.Sound.Speak(FleetingSpeak); } actor.LastSpeak = Hud.Time.CreateAndStartWatch(); } break; case (ActorSnoEnum)260343: case (ActorSnoEnum)260347: EmpoweredShrineDecorator.Paint(layer, actor, actor.FloorCoordinate, actor.SnoActor.NameLocalized); if (EnableSpeak && (actor.LastSpeak == null) && Hud.Sound.LastSpeak.TimerTest(2000) && EmpoweredSpeak != "") { if (EmpoweredSpeak == "默认") { Hud.Sound.Speak(actor.SnoActor.NameLocalized); } else { Hud.Sound.Speak(EmpoweredSpeak); } actor.LastSpeak = Hud.Time.CreateAndStartWatch(); } break; case (ActorSnoEnum)434409: case (ActorSnoEnum)269349: BanditShrineDecorator.Paint(layer, actor, actor.FloorCoordinate, actor.SnoActor.NameLocalized); if (EnableSpeak && (actor.LastSpeak == null) && Hud.Sound.LastSpeak.TimerTest(2000) && BanditSpeak != "") { if (BanditSpeak == "默认") { Hud.Sound.Speak(actor.SnoActor.NameLocalized); } else { Hud.Sound.Speak(BanditSpeak); } actor.LastSpeak = Hud.Time.CreateAndStartWatch(); } break; case (ActorSnoEnum)330695: PowerPylonDecorator.Paint(layer, actor, actor.FloorCoordinate, actor.SnoActor.NameLocalized); if (EnableSpeak && (actor.LastSpeak == null) && Hud.Sound.LastSpeak.TimerTest(2000) && PowerSpeak != "") { if (PowerSpeak == "默认") { Hud.Sound.Speak(actor.SnoActor.NameLocalized); } else { Hud.Sound.Speak(PowerSpeak); } actor.LastSpeak = Hud.Time.CreateAndStartWatch(); } break; case (ActorSnoEnum)330696: case (ActorSnoEnum)398654: ConduitPylonDecorator.Paint(layer, actor, actor.FloorCoordinate, actor.SnoActor.NameLocalized); if (EnableSpeak && (actor.LastSpeak == null) && Hud.Sound.LastSpeak.TimerTest(2000) && ConduitSpeak != "") { if (ConduitSpeak == "默认") { Hud.Sound.Speak(actor.SnoActor.NameLocalized); } else { Hud.Sound.Speak(ConduitSpeak); } actor.LastSpeak = Hud.Time.CreateAndStartWatch(); } break; case (ActorSnoEnum)330697: ChannelingPylonDecorator.Paint(layer, actor, actor.FloorCoordinate, actor.SnoActor.NameLocalized); if (EnableSpeak && (actor.LastSpeak == null) && Hud.Sound.LastSpeak.TimerTest(2000) && ChannelingSpeak != "") { if (ChannelingSpeak == "默认") { Hud.Sound.Speak(actor.SnoActor.NameLocalized); } else { Hud.Sound.Speak(ChannelingSpeak); } actor.LastSpeak = Hud.Time.CreateAndStartWatch(); } break; case (ActorSnoEnum)330698: ShieldPylonDecorator.Paint(layer, actor, actor.FloorCoordinate, actor.SnoActor.NameLocalized); if (EnableSpeak && (actor.LastSpeak == null) && Hud.Sound.LastSpeak.TimerTest(2000) && ShieldSpeak != "") { if (ShieldSpeak == "默认") { Hud.Sound.Speak(actor.SnoActor.NameLocalized); } else { Hud.Sound.Speak(ShieldSpeak); } actor.LastSpeak = Hud.Time.CreateAndStartWatch(); } break; case (ActorSnoEnum)330699: SpeedPylonDecorator.Paint(layer, actor, actor.FloorCoordinate, actor.SnoActor.NameLocalized); if (EnableSpeak && (actor.LastSpeak == null) && Hud.Sound.LastSpeak.TimerTest(2000) && SpeedSpeak != "") { if (SpeedSpeak == "默认") { Hud.Sound.Speak(actor.SnoActor.NameLocalized); } else { Hud.Sound.Speak(SpeedSpeak); } actor.LastSpeak = Hud.Time.CreateAndStartWatch(); } break; } } var healingWells = Hud.Game.Shrines.Where(x => !x.IsDisabled && !x.IsOperated && x.DisplayOnOverlay && (x.Type == ShrineType.HealingWell)); foreach (var actor in healingWells) { HealingWellDecorator.ToggleDecorators <GroundLabelDecorator>(!actor.IsOnScreen); // do not display ground labels when the actor is on the screen HealingWellDecorator.Paint(layer, actor, actor.FloorCoordinate, actor.SnoActor.NameLocalized); if (EnableSpeak && (actor.LastSpeak == null) && Hud.Sound.LastSpeak.TimerTest(2000) && HealingSpeak != "") { if (HealingSpeak == "默认") { Hud.Sound.Speak(actor.SnoActor.NameLocalized); } else { Hud.Sound.Speak(HealingSpeak); } actor.LastSpeak = Hud.Time.CreateAndStartWatch(); } } var poolOfReflections = Hud.Game.Shrines.Where(x => !x.IsDisabled && !x.IsOperated && x.DisplayOnOverlay && (x.Type == ShrineType.PoolOfReflection)); foreach (var actor in poolOfReflections) { PoolOfReflectionDecorator.ToggleDecorators <GroundLabelDecorator>(!actor.IsOnScreen); // do not display ground labels when the actor is on the screen PoolOfReflectionDecorator.Paint(layer, actor, actor.FloorCoordinate, actor.SnoActor.NameLocalized); if (EnableSpeak && (actor.LastSpeak == null) && Hud.Sound.LastSpeak.TimerTest(2000) && PoolSpeak != "") { if (PoolSpeak == "默认") { Hud.Sound.Speak(actor.SnoActor.NameLocalized); } else { Hud.Sound.Speak(PoolSpeak); } actor.LastSpeak = Hud.Time.CreateAndStartWatch(); } } var riftPylonSpawnPoints = Hud.Game.Actors.Where(x => x.SnoActor.Sno == ActorSnoEnum._markerlocation_tieredriftpylon); foreach (var actor in riftPylonSpawnPoints) { PossibleRiftPylonDecorator.Paint(layer, actor, actor.FloorCoordinate, "??塔"); if (EnableSpeak && (actor.LastSpeak == null) && Hud.Sound.LastSpeak.TimerTest(2000) && PossibleRiftPylonSpeak != "") { Hud.Sound.Speak(PossibleRiftPylonSpeak); actor.LastSpeak = Hud.Time.CreateAndStartWatch(); } } }
public void PaintWorld(WorldLayer layer) { foreach (var marker in Hud.Game.Markers) { if (Hud.Game.Shrines.Any(x => x.IsShrine && x.FloorCoordinate.XYDistanceTo(marker.FloorCoordinate) <= 2)) { continue; } var decorator = marker.IsUsed ? UsedMarkerDecorator : GenericMarkerDecorator; if (!marker.IsUsed) { if (marker.IsPylon) { decorator = PylonDecorator; } else if (marker.IsPoolOfReflection) { decorator = PoolOfReflectionDecorator; } else if (marker.IsHealingWell) { decorator = HealingWellDecorator; } } var texture = Hud.Texture.GetTexture(marker.TextureSno, marker.TextureFrameIndex); foreach (var deco in decorator.GetDecorators <MapTextureDecorator>()) { deco.Texture = texture; } foreach (var deco in decorator.GetDecorators <MapLabelDecorator>()) { deco.RadiusOffset = texture != null ? 20 : 10; } decorator.ToggleDecorators <MapShapeDecorator>(texture == null); var groundLabelVisible = true; if (TooFarMarkerRange != null && marker.FloorCoordinate.XYDistanceTo(Hud.Game.Me.FloorCoordinate) > TooFarMarkerRange.Value) { groundLabelVisible = false; } if (marker.FloorCoordinate.IsOnScreen()) { groundLabelVisible = false; } decorator.ToggleDecorators <GroundLabelDecorator>(groundLabelVisible); // do not display ground labels when the actor is on the screen var mapLabelVisible = !marker.IsHealingWell && !marker.IsShrine && !marker.IsPoolOfReflection && !marker.IsPylon; decorator.ToggleDecorators <MapLabelDecorator>(mapLabelVisible); decorator.Paint(layer, null, marker.FloorCoordinate, marker.Name); } var shrines = Hud.Game.Shrines.Where(x => !x.IsDisabled && !x.IsOperated && x.IsShrine); foreach (var actor in shrines) { ShrineDecorator.ToggleDecorators <GroundLabelDecorator>(!actor.IsOnScreen); // do not display ground labels when the actor is on the screen ShrineDecorator.Paint(layer, actor, actor.FloorCoordinate, actor.SnoActor.NameLocalized); } if (Hud.Game.SpecialArea == SpecialArea.GreaterRift) { var riftPylonSpawnPoints = Hud.Game.Actors.Where(x => x.SnoActor.Sno == ActorSnoEnum._markerlocation_tieredriftpylon); foreach (var actor in riftPylonSpawnPoints) { PossibleRiftPylonDecorator.Paint(layer, actor, actor.FloorCoordinate, "pylon?"); } } }