private void DrawMeta(IPlayer player) { var size = Hud.Window.Size.Width * SkillRatio; var xUpper = currentX; var yUpper = player.PortraitUiElement.Rectangle.Y + currY - player.PortraitUiElement.Rectangle.Width * 0.1f; var xLower = currentX; var yLower = player.PortraitUiElement.Rectangle.Y + currY + size + player.PortraitUiElement.Rectangle.Width * 0.1f; var width = Hud.Window.Size.Width * ItemRatio; var height = Hud.Window.Size.Width * ItemRatio * 0.8f; foreach (MetaElement element in UpperMeta) { LabelDecorator.Paint(xUpper, yUpper, size, size, element.Text(player), element.Title, element.Hint); xUpper += size; } foreach (MetaElement element in LowerMeta) { LabelDecorator.Paint(xLower, yLower, size, size, element.Text(player), element.Title, element.Hint); xLower += size; } currentX += Math.Max(LowerMeta.Count, UpperMeta.Count) * size + gap; }
public override void PaintTopInGame(ClipState clipState) { if (clipState != ClipState.AfterClip) { return; } if ((Hud.Game.SpecialArea != SpecialArea.Rift) && (Hud.Game.SpecialArea != SpecialArea.GreaterRift)) { return; } if (Hud.Game.RiftPercentage < DisplayLimit) { return; } if (Hud.Game.RiftPercentage >= 100) { return; } var text = Hud.Game.RiftPercentage.ToString("F1", CultureInfo.InvariantCulture) + "%"; var title = "Rift Completition"; var w = Hud.Window.Size.Height * 0.1f; var h = Hud.Window.Size.Height * 0.04f; LabelDecorator.Paint(Hud.Window.Size.Width * 0.5f - w / 2, Hud.Window.Size.Height * 0.18f - h / 2, w, h, text, title); }
public void PaintTopInGame(ClipState clipState) { if (clipState != ClipState.AfterClip) { return; } if (Hud.Game.RiftPercentage < DisplayLimit) { return; } if (Hud.Game.RiftPercentage >= 100) { return; } var text = Hud.Game.RiftPercentage.ToString("F1", CultureInfo.InvariantCulture) + "%"; var title = "进度即将打满"; var w = Hud.Window.Size.Height * 0.1f; var h = Hud.Window.Size.Height * 0.04f; LabelDecorator.Paint(Hud.Window.Size.Width * 0.5f - w / 2, Hud.Window.Size.Height * 0.18f - h / 2, w, h, text, title); }
public void PaintWorld(WorldLayer layer) { var inRift = Hud.Game.SpecialArea == SpecialArea.Rift || Hud.Game.SpecialArea == SpecialArea.GreaterRift; double MRiftProgression = 0; int density = 0; var monsters = Hud.Game.AliveMonsters.Where(x => x.IsOnScreen); foreach (var monster in monsters) { double MonsterRiftProgression = 0; if (monster.IsOnScreen) { int count = Hud.Game.AliveMonsters.Count(m => (monster.FloorCoordinate.XYZDistanceTo(m.FloorCoordinate) - m.RadiusBottom) <= Distance); var monsters2 = Hud.Game.AliveMonsters.Where(mm => (monster.FloorCoordinate.XYZDistanceTo(mm.FloorCoordinate) - mm.RadiusBottom) <= MaxRadius && mm.SummonerAcdDynamicId == 0 && mm.IsElite || (monster.FloorCoordinate.XYZDistanceTo(mm.FloorCoordinate) - mm.RadiusBottom) <= MaxRadius && !mm.IsElite); if (inRift) { foreach (var monster2 in monsters2) { MonsterRiftProgression += monster2.SnoMonster.RiftProgression * 100.0d / this.Hud.Game.MaxQuestProgress; } } if (count >= density && MonsterRiftProgression >= MRiftProgression) { MCoordinate = monster.FloorCoordinate; Mcount = count; density = count; MRiftProgression = MonsterRiftProgression; } } } foreach (var monster in monsters) { if (monster.IsOnScreen && Mcount >= DisplayLimit) { if (ShowLabel) { if (!inRift) { LabelDecorator.Paint(layer, monster, MCoordinate, Distance + "yards Density:" + Mcount); } else { if (ShowProgression) { LabelDecorator.Paint(layer, monster, MCoordinate, Distance + "yards Density:" + Mcount + "(" + MaxRadius + "yards Progression:" + MRiftProgression.ToString("f2") + ")"); } else { LabelDecorator.Paint(layer, monster, MCoordinate, Distance + "yards Density:" + Mcount); } } } if (ShowCircle) { CircleDecorator.Paint(layer, monster, MCoordinate, null); } if (ShowMark) { MarkDecorator.Paint(layer, monster, MCoordinate, null); } } return; } }
public void Visit(LabelDecorator label) { }
public void Draw(LabelDecorator label) { throw new NotImplementedException(); }
/// <summary> /// Create decorators /// </summary> public virtual void CreateDecorators() { var grid = new GridDecorator { Composer = this, Color = Brushes.LightGray.Color, Panel = Control.View.GetPanel(nameof(PanelEnum.Grid), new CanvasControl()) as ICanvasControl }; var axisT = new AxisDecorator { Composer = this, Position = PositionEnum.T, Color = Brushes.DarkGray.Color, Panel = Control.AxisT.GetPanel(nameof(PanelEnum.AxisT), new CanvasControl()) as ICanvasControl }; var axisB = new AxisDecorator { Composer = this, Position = PositionEnum.B, Color = Brushes.DarkGray.Color, Panel = Control.AxisB.GetPanel(nameof(PanelEnum.AxisB), new CanvasControl()) as ICanvasControl }; var axisL = new AxisDecorator { Composer = this, Position = PositionEnum.L, Color = Brushes.DarkGray.Color, Panel = Control.AxisL.GetPanel(nameof(PanelEnum.AxisL), new CanvasControl()) as ICanvasControl }; var axisR = new AxisDecorator { Composer = this, Position = PositionEnum.R, Color = Brushes.DarkGray.Color, Panel = Control.AxisR.GetPanel(nameof(PanelEnum.AxisR), new CanvasControl()) as ICanvasControl }; var labelsT = new LabelDecorator { Composer = this, Position = PositionEnum.T, Panel = Control.AxisT.GetPanel(nameof(PanelEnum.LabelT), new CanvasControl()) as ICanvasControl }; var labelsB = new LabelDecorator { Composer = this, Position = PositionEnum.B, Panel = Control.AxisB.GetPanel(nameof(PanelEnum.LabelB), new CanvasControl()) as ICanvasControl }; var labelsL = new LabelDecorator { Composer = this, Position = PositionEnum.L, Panel = Control.AxisL.GetPanel(nameof(PanelEnum.LabelL), new CanvasControl()) as ICanvasControl }; var labelsR = new LabelDecorator { Composer = this, Position = PositionEnum.R, Panel = Control.AxisR.GetPanel(nameof(PanelEnum.LabelR), new CanvasControl()) as ICanvasControl }; var crossView = Control .View .GetPanel(nameof(PanelEnum.Cross), new CanvasControl()); var cross = new CrossDecorator { Composer = this, Panel = crossView as ICanvasControl, PanelL = Control.AxisL.GetPanel(nameof(PanelEnum.CrossL), new CanvasControl()) as ICanvasControl, PanelR = Control.AxisR.GetPanel(nameof(PanelEnum.CrossR), new CanvasControl()) as ICanvasControl, PanelT = Control.AxisT.GetPanel(nameof(PanelEnum.CrossT), new CanvasControl()) as ICanvasControl, PanelB = Control.AxisB.GetPanel(nameof(PanelEnum.CrossB), new CanvasControl()) as ICanvasControl }; crossView.Background = Brushes.Transparent; Panel.SetZIndex(crossView, 100); _decorators.Clear(); _decorators.Add(grid); _decorators.Add(axisT); _decorators.Add(axisB); _decorators.Add(axisL); _decorators.Add(axisR); _decorators.Add(cross); _decorators.Add(labelsT); _decorators.Add(labelsB); _decorators.Add(labelsL); _decorators.Add(labelsR); _decoratorsUpdates.Add(labelsT); _decoratorsUpdates.Add(labelsB); _decoratorsUpdates.Add(labelsL); _decoratorsUpdates.Add(labelsR); foreach (var decorator in _decorators) { decorator.Panel.Clear(); decorator.Create(); decorator.Panel.Invalidate(); } }
public void Draw(LabelDecorator label) { spriteBatch.Begin(); spriteBatch.DrawString(Game1.font, label.Text, label.GetPosition(), label.Color); spriteBatch.End(); }
public void Visit(LabelDecorator label) { adapter.Draw(label); }
public void PaintWorld(WorldLayer layer) { if ((Hud.Game.MapMode == MapMode.WaypointMap) || (Hud.Game.MapMode == MapMode.ActMap) || (Hud.Game.MapMode == MapMode.Map)) { return; } var inRift = Hud.Game.SpecialArea == SpecialArea.Rift || Hud.Game.SpecialArea == SpecialArea.GreaterRift; double MRiftProgression = 0; int density = 0; var monsters = Hud.Game.AliveMonsters.Where(x => x.IsOnScreen); CircleDecorator = new WorldDecoratorCollection( new GroundCircleDecorator(Hud) { Brush = Hud.Render.CreateBrush(255, 0, 255, 255, 1.5f), Radius = MaxRadius, RadiusTransformator = new StandardPingRadiusTransformator(Hud, ping), } ); foreach (var monster in monsters) { double MonsterRiftProgression = 0; if (monster.IsOnScreen) { int count = Hud.Game.AliveMonsters.Count(m => (monster.FloorCoordinate.XYZDistanceTo(m.FloorCoordinate) - m.RadiusBottom) <= Distance); var monsters2 = Hud.Game.AliveMonsters.Where(mm => (monster.FloorCoordinate.XYZDistanceTo(mm.FloorCoordinate) - mm.RadiusBottom) <= MaxRadius && mm.SummonerAcdDynamicId == 0 && mm.IsElite || (monster.FloorCoordinate.XYZDistanceTo(mm.FloorCoordinate) - mm.RadiusBottom) <= MaxRadius && !mm.IsElite); if (inRift) { foreach (var monster2 in monsters2) { MonsterRiftProgression += monster2.SnoMonster.RiftProgression * 100.0d / this.Hud.Game.MaxQuestProgress; } } if (count >= density && MonsterRiftProgression >= MRiftProgression) { MCoordinate = monster.FloorCoordinate; Mcount = count; density = count; MRiftProgression = MonsterRiftProgression; } } } foreach (var monster in monsters) { if (monster.IsOnScreen && Mcount >= DisplayLimit) { if (ShowLabel) { if (!inRift) { LabelDecorator.Paint(layer, monster, MCoordinate, Distance + "码密度:" + Mcount); } else { if (ShowProgression) { LabelDecorator.Paint(layer, monster, MCoordinate, Distance + "码密度:" + Mcount + "(" + MaxRadius + "码进度:" + MRiftProgression.ToString("f2") + ")"); } else { LabelDecorator.Paint(layer, monster, MCoordinate, Distance + "码密度:" + Mcount); } } } if (ShowCircle) { CircleDecorator.Paint(layer, monster, MCoordinate, null); } if (ShowMark) { MarkDecorator.Paint(layer, monster, MCoordinate, null); } } return; } }
/// <summary> /// Create decorators /// </summary> public virtual void CreateDecorators() { var grid = new GridDecorator { Composer = this, Color = Brushes.LightGray.Color, Panel = Control.ViewArea.SetPanel("Grid", new CanvasControl()) as ICanvasControl }; var axisT = new AxisDecorator { Composer = this, Position = PositionEnum.Top, Color = Brushes.DarkGray.Color, Panel = Control.AxisT.SetPanel("AxisT", new CanvasControl()) as ICanvasControl }; var axisB = new AxisDecorator { Composer = this, Position = PositionEnum.Bottom, Color = Brushes.DarkGray.Color, Panel = Control.AxisB.SetPanel("AxisB", new CanvasControl()) as ICanvasControl }; var axisL = new AxisDecorator { Composer = this, Position = PositionEnum.Left, Color = Brushes.DarkGray.Color, Panel = Control.AxisL.SetPanel("AxisL", new CanvasControl()) as ICanvasControl }; var axisR = new AxisDecorator { Composer = this, Position = PositionEnum.Right, Color = Brushes.DarkGray.Color, Panel = Control.AxisR.SetPanel("AxisR", new CanvasControl()) as ICanvasControl }; var labelsT = new LabelDecorator { Composer = this, Position = PositionEnum.Top, Panel = Control.AxisT.SetPanel("LabelsT", new CanvasControl()) as ICanvasControl }; var labelsB = new LabelDecorator { Composer = this, Position = PositionEnum.Bottom, Panel = Control.AxisB.SetPanel("LabelsB", new CanvasControl()) as ICanvasControl }; var labelsL = new LabelDecorator { Composer = this, Position = PositionEnum.Left, Panel = Control.AxisL.SetPanel("LabelsL", new CanvasControl()) as ICanvasControl }; var labelsR = new LabelDecorator { Composer = this, Position = PositionEnum.Right, Panel = Control.AxisR.SetPanel("LabelsR", new CanvasControl()) as ICanvasControl }; var crossView = Control.ViewArea.SetPanel("Cross", new CanvasControl()); var cross = new CrossDecorator { Composer = this, Panel = crossView as ICanvasControl, PanelL = Control.AxisL.SetPanel("CrossL", new CanvasControl()) as ICanvasControl, PanelR = Control.AxisR.SetPanel("CrossR", new CanvasControl()) as ICanvasControl, PanelT = Control.AxisT.SetPanel("CrossT", new CanvasControl()) as ICanvasControl, PanelB = Control.AxisB.SetPanel("CrossB", new CanvasControl()) as ICanvasControl }; crossView.Background = Brushes.Transparent; Panel.SetZIndex(crossView, 100); _decorators.Clear(); _decorators.Add(grid); _decorators.Add(axisT); _decorators.Add(axisB); _decorators.Add(axisL); _decorators.Add(axisR); _decorators.Add(cross); _decorators.Add(labelsT); _decorators.Add(labelsB); _decorators.Add(labelsL); _decorators.Add(labelsR); _decoratorsUpdates.Add(labelsT); _decoratorsUpdates.Add(labelsB); _decoratorsUpdates.Add(labelsL); _decoratorsUpdates.Add(labelsR); foreach (var decorator in _decorators) { decorator.Panel.Clear(); decorator.Create(); decorator.Panel.Invalidate(); } }