public void PaintTopInGame(ClipState clipState)
        {
            if (clipState != ClipState.BeforeClip)
            {
                return;
            }
            if (HideWhenUiIsHidden && Hud.Render.UiHidden)
            {
                return;
            }
            if (!Enabled)
            {
                return;
            }
            var paintInfoList = GeneratePaintList();

            if (paintInfoList == null || paintInfoList.Count == 0)
            {
                return;
            }

            var x = 0;
            var y = Hud.Window.Size.Height * 0.25f - Hud.Window.Size.Height * PositionOffset;

            BuffPainter.PaintHorizontalCenter(paintInfoList, x, y, Hud.Window.Size.Width, ruleCalculatorCoE.StandardIconSize, ruleCalculatorCoE.StandardIconSpacing);
        }
        public void PaintTopInGame(ClipState clipState)
        {
            if (Hud.Render.UiHidden)
            {
                return;
            }
            if (clipState != ClipState.BeforeClip)
            {
                return;
            }

            RuleCalculator.CalculatePaintInfo(Hud.Game.Me);
            if (RuleCalculator.PaintInfoList.Count == 0)
            {
                return;
            }

            var y = Hud.Window.Size.Height * 0.5f + Hud.Window.Size.Height * PositionOffset;

            BuffPainter.PaintHorizontalCenter(RuleCalculator.PaintInfoList, 0, y, Hud.Window.Size.Width, RuleCalculator.StandardIconSize, RuleCalculator.StandardIconSpacing);
        }
Пример #3
0
        public void PaintWorld(WorldLayer layer)
        {
            if ((Hud.Game.MapMode == MapMode.WaypointMap) || (Hud.Game.MapMode == MapMode.ActMap) || (Hud.Game.MapMode == MapMode.Map))
            {
                return;
            }
            var players = Hud.Game.Players;

            foreach (var p in players)
            {
                var portraitRect = p.PortraitUiElement.Rectangle;
                if (p.IsMe)
                {
                    RuleCalculatorMe.CalculatePaintInfo(p);
                    if (RuleCalculatorMe.PaintInfoList.Count != 0)
                    {
                        if (MeScreenPaint)
                        {
                            BuffPainter.PaintHorizontalCenter(
                                RuleCalculatorMe.PaintInfoList,
                                0,
                                Hud.Window.Size.Height * 0.5f + Hud.Window.Size.Height * MePositionOffset,
                                Hud.Window.Size.Width,
                                RuleCalculatorMe.StandardIconSize,
                                RuleCalculatorMe.StandardIconSpacing
                                );
                        }
                    }
                    if (MePortraitPaint)
                    {
                        BuffPainter.PaintHorizontal(
                            RuleCalculatorMe.PaintInfoList,
                            portraitRect.Right,
                            portraitRect.Top + portraitRect.Height * 0.72f,
                            RuleCalculatorMe.StandardIconSize,
                            RuleCalculatorMe.StandardIconSpacing
                            );
                    }
                }
                else
                {
                    if (p.IsOnScreen && p.CoordinateKnown)
                    {
                        var ScreenCoordinate = p.FloorCoordinate.ToScreenCoordinate();
                        var PlayerX          = ScreenCoordinate.X;
                        var PlayerY          = ScreenCoordinate.Y;
                        RuleCalculators[p.HeroClassDefinition.HeroClass].CalculatePaintInfo(p);
                        if (RuleCalculators[p.HeroClassDefinition.HeroClass].PaintInfoList.Count != 0)
                        {
                            if (OtherScreenPaint)
                            {
                                BuffPainter.PaintHorizontalCenter(
                                    RuleCalculators[p.HeroClassDefinition.HeroClass].PaintInfoList,
                                    PlayerX,
                                    PlayerY - Hud.Window.Size.Height * 0.05f + Hud.Window.Size.Height * PositionOffset,
                                    0,
                                    RuleCalculators[p.HeroClassDefinition.HeroClass].StandardIconSize,
                                    RuleCalculators[p.HeroClassDefinition.HeroClass].StandardIconSpacing
                                    );
                            }
                            if (OtherPortraitPaint)
                            {
                                BuffPainter.PaintHorizontal(
                                    RuleCalculators[p.HeroClassDefinition.HeroClass].PaintInfoList,
                                    portraitRect.Right,
                                    portraitRect.Top + portraitRect.Height * 0.72f,
                                    RuleCalculators[p.HeroClassDefinition.HeroClass].StandardIconSize,
                                    RuleCalculators[p.HeroClassDefinition.HeroClass].StandardIconSpacing
                                    );
                            }
                        }
                    }
                }

                if (Debug)
                {
                    DebugPrint(layer, p);
                }
            }
        }
        public void PaintTopInGame(ClipState clipState)
        {
            if (clipState != ClipState.BeforeClip)
            {
                return;
            }
            if (HideWhenUiIsHidden && Hud.Render.UiHidden)
            {
                return;
            }

            foreach (var player in Hud.Game.Players)
            {
                if (!player.HasValidActor)
                {
                    continue;
                }

                var buff = player.Powers.GetBuff(430674);
                if ((buff == null) || (buff.IconCounts[0] <= 0))
                {
                    continue;
                }

                var classSpecificRules = GetCurrentRules(player.HeroClassDefinition.HeroClass);

                _ruleCalculator.CalculatePaintInfo(player, classSpecificRules);

                if (_ruleCalculator.PaintInfoList.Count == 0)
                {
                    return;
                }
                if (!_ruleCalculator.PaintInfoList.Any(info => info.TimeLeft > 0))
                {
                    return;
                }

                var highestElementalBonus = player.Offense.HighestElementalDamageBonus;

                for (int i = 0; i < _ruleCalculator.PaintInfoList.Count; i++)
                {
                    var info = _ruleCalculator.PaintInfoList[0];
                    if (info.TimeLeft <= 0)
                    {
                        _ruleCalculator.PaintInfoList.RemoveAt(0);
                        _ruleCalculator.PaintInfoList.Add(info);
                    }
                    else
                    {
                        break;
                    }
                }

                for (int orderIndex = 0; orderIndex < _ruleCalculator.PaintInfoList.Count; orderIndex++)
                {
                    var info = _ruleCalculator.PaintInfoList[orderIndex];
                    var best = false;
                    switch (info.Rule.IconIndex)
                    {
                    case 1: best = player.Offense.BonusToArcane == highestElementalBonus; break;

                    case 2: best = player.Offense.BonusToCold == highestElementalBonus; break;

                    case 3: best = player.Offense.BonusToFire == highestElementalBonus; break;

                    case 4: best = player.Offense.BonusToHoly == highestElementalBonus; break;

                    case 5: best = player.Offense.BonusToLightning == highestElementalBonus; break;

                    case 6: best = player.Offense.BonusToPhysical == highestElementalBonus; break;

                    case 7: best = player.Offense.BonusToPoison == highestElementalBonus; break;
                    }
                    if (best)
                    {
                        info.Size *= 1.35f;
                    }
                    if (best && orderIndex > 0)
                    {
                        info.TimeLeft = (orderIndex - 1) * 4 + _ruleCalculator.PaintInfoList[0].TimeLeft;
                    }
                    else
                    {
                        info.TimeLeftNumbersOverride = false;
                    }
                }
                var portraitRect = player.PortraitUiElement.Rectangle;

                var x = portraitRect.Right;
                var y = portraitRect.Top + portraitRect.Height * 0.51f;
                if (player.IsMe)
                {
                    if (MeScreenPaint)
                    {
                        BuffPainter.PaintHorizontalCenter(_ruleCalculator.PaintInfoList, 0, Hud.Window.Size.Height * 0.5f - Hud.Window.Size.Height * 0.2f, Hud.Window.Size.Width, _ruleCalculator.StandardIconSize, 0);
                    }
                    if (MePortraitPaint)
                    {
                        BuffPainter.PaintHorizontal(_ruleCalculator.PaintInfoList, x, y, _ruleCalculator.StandardIconSize, 0);
                    }
                }
                else
                {
                    var ScreenCoordinate = player.FloorCoordinate.ToScreenCoordinate();
                    var PlayerX          = ScreenCoordinate.X;
                    var PlayerY          = ScreenCoordinate.Y;
                    if (OtherScreenPaint)
                    {
                        BuffPainter.PaintHorizontalCenter(_ruleCalculator.PaintInfoList, PlayerX, PlayerY - Hud.Window.Size.Height * 0.15f, 0, _ruleCalculator.StandardIconSize, 0);
                    }
                    if (OtherPortraitPaint)
                    {
                        BuffPainter.PaintHorizontal(_ruleCalculator.PaintInfoList, x, y, _ruleCalculator.StandardIconSize, 0);
                    }
                }
            }
        }
Пример #5
0
        public void PaintWorld(WorldLayer layer)
        {
            var players = Hud.Game.Players;

            foreach (var p in players)
            {
                if (p.IsMe)
                {
                    RuleCalculatorMe.CalculatePaintInfo(p);
                    if (RuleCalculatorMe.PaintInfoList.Count != 0)
                    {
                        BuffPainter.PaintHorizontalCenter(
                            RuleCalculatorMe.PaintInfoList,
                            0,
                            p.ScreenCoordinate.Y + Hud.Window.Size.Height * PositionOffset,
                            Hud.Window.Size.Width,
                            RuleCalculatorMe.StandardIconSize,
                            RuleCalculatorMe.StandardIconSpacing
                            );
                    }
                }
                else
                {
                    if (!p.CoordinateKnown)
                    {
                        continue;
                    }
                    if (p.IsOnScreen && !OthersAlwaysNextToPortrait)
                    {
                        RuleCalculators[p.HeroClassDefinition.HeroClass].SizeMultiplier = SizeMultiplier;
                        RuleCalculators[p.HeroClassDefinition.HeroClass].CalculatePaintInfo(p);
                        if (RuleCalculators[p.HeroClassDefinition.HeroClass].PaintInfoList.Count != 0)
                        {
                            BuffPainter.PaintHorizontalCenter(
                                RuleCalculators[p.HeroClassDefinition.HeroClass].PaintInfoList,
                                p.ScreenCoordinate.X,
                                p.ScreenCoordinate.Y + Hud.Window.Size.Height * PositionOffset,
                                0,
                                RuleCalculators[p.HeroClassDefinition.HeroClass].StandardIconSize,
                                RuleCalculators[p.HeroClassDefinition.HeroClass].StandardIconSpacing
                                );
                        }
                    }
                    else
                    {
                        RuleCalculators[p.HeroClassDefinition.HeroClass].SizeMultiplier = PortraitSizeMultiplier;
                        RuleCalculators[p.HeroClassDefinition.HeroClass].CalculatePaintInfo(p);
                        if (RuleCalculators[p.HeroClassDefinition.HeroClass].PaintInfoList.Count != 0)
                        {
                            BuffPainter.PaintHorizontal(
                                RuleCalculators[p.HeroClassDefinition.HeroClass].PaintInfoList,
                                p.PortraitUiElement.Rectangle.Right,
                                p.PortraitUiElement.Rectangle.Top + p.PortraitUiElement.Rectangle.Height * PortraitOffset,
                                RuleCalculators[p.HeroClassDefinition.HeroClass].StandardIconSize,
                                0
                                );
                        }
                    }
                }

                if (Debug)
                {
                    DebugPrint(layer, p);
                }
            }
        }