Пример #1
0
        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;
        }
Пример #2
0
        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);
        }
Пример #3
0
        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;
            }
        }
Пример #5
0
 public void Visit(LabelDecorator label)
 {
 }
 public void Draw(LabelDecorator label)
 {
     throw new NotImplementedException();
 }
Пример #7
0
        /// <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);
 }
Пример #10
0
        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;
            }
        }
Пример #11
0
        /// <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();
            }
        }