Example #1
0
        public override void Load(IController hud)
        {
            base.Load(hud);

            BuffPainter = new BuffPainter(Hud, true)
            {
                Opacity             = 0.75f,
                ShowTimeLeftNumbers = false,
                ShowTooltips        = false,
                TimeLeftFont        = Hud.Render.CreateFont("tahoma", 7, 255, 255, 255, 255, false, false, 255, 0, 0, 0, true),
                StackFont           = Hud.Render.CreateFont("tahoma", 6, 255, 255, 255, 255, false, false, 255, 0, 0, 0, true),
            };

            RuleCalculator = new BuffRuleCalculator(Hud)
            {
                SizeMultiplier = 0.75f
            };

            RuleCalculator.Rules.Add(new BuffRule(403471)
            {
                IconIndex = null, MinimumIconCount = 1, ShowStacks = true, ShowTimeLeft = true
            });                                                                                                                                // Taeguk
            RuleCalculator.Rules.Add(new BuffRule(359583)
            {
                IconIndex = 1, MinimumIconCount = 1, ShowTimeLeft = true
            });                                                                                                          // Focus
            RuleCalculator.Rules.Add(new BuffRule(359583)
            {
                IconIndex = 2, MinimumIconCount = 1, ShowTimeLeft = true
            });                                                                                                          // Restraint
        }
        public override void Load(IController hud)
        {
            base.Load(hud);
            buffRuleFactory  = new BuffRuleFactory(hud);
            SizeMultiplier   = 0.85f;
            PositionOffset   = 0.085f;
            MePositionOffset = 0.04f;
            Debug            = false;
            Opacity          = 0.85f;
            RuleCalculatorMe = new BuffRuleCalculator(Hud);
            RuleCalculatorMe.SizeMultiplier = SizeMultiplier;
            RuleCalculators = new Dictionary <HeroClass, BuffRuleCalculator>();
            foreach (HeroClass h in Enum.GetValues(typeof(HeroClass)))
            {
                RuleCalculators.Add(h, new BuffRuleCalculator(Hud));
                RuleCalculators[h].SizeMultiplier = SizeMultiplier;
            }

            BuffPainter = new BuffPainter(Hud, true)
            {
                Opacity             = Opacity,
                ShowTimeLeftNumbers = true,
                ShowTooltips        = Tooltips,
                TimeLeftFont        = Hud.Render.CreateFont("tahoma", 9, 255, 255, 255, 255, false, false, 255, 0, 0, 0, true),
                StackFont           = Hud.Render.CreateFont("tahoma", 6, 255, 255, 255, 255, false, false, 255, 0, 0, 0, true),
            };

            DebugDecorator = new WorldDecoratorCollection(
                new GroundLabelDecorator(Hud)
            {
                BackgroundBrush = Hud.Render.CreateBrush(100, 20, 20, 20, 0),
                TextFont        = Hud.Render.CreateFont("tahoma", 6.5f, 255, 255, 255, 255, false, false, false),
            }
                );
        }
        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 x = Hud.Window.Size.Width * 0.5f + Hud.Window.Size.Height * PositionOffsetX - RuleCalculator.StandardIconSize / 2;
            var h = Hud.Window.Size.Height * PositionOffsetH;
            BuffPainter.PaintVerticalCenter(RuleCalculator.PaintInfoList, x, 0, h, RuleCalculator.StandardIconSize, RuleCalculator.StandardIconSpacing);
        }
        public override void Load(IController hud)
        {
            base.Load(hud);

            HideWhenUiIsHidden = false;

            BuffPainter = new BuffPainter(Hud, true)
            {
                Opacity      = 1.0f,
                TimeLeftFont = Hud.Render.CreateFont("tahoma", 10, 255, 255, 255, 255, true, false, 255, 0, 0, 0, true),
            };

            ruleCalculatorCoE = new BuffRuleCalculator(Hud);
            ruleCalculatorCoE.SizeMultiplier = IconSizeMultiplier;

            ruleCalculatorCoE.Rules.Add(new BuffRule(ConventionElementID)
            {
                IconIndex = 1, MinimumIconCount = 0, DisableName = true
            });                                                                                                                         // Arcane
            ruleCalculatorCoE.Rules.Add(new BuffRule(ConventionElementID)
            {
                IconIndex = 2, MinimumIconCount = 0, DisableName = true
            });                                                                                                                         // Cold
            ruleCalculatorCoE.Rules.Add(new BuffRule(ConventionElementID)
            {
                IconIndex = 3, MinimumIconCount = 0, DisableName = true
            });                                                                                                                         // Fire
            ruleCalculatorCoE.Rules.Add(new BuffRule(ConventionElementID)
            {
                IconIndex = 4, MinimumIconCount = 0, DisableName = true
            });                                                                                                                         // Holy
            ruleCalculatorCoE.Rules.Add(new BuffRule(ConventionElementID)
            {
                IconIndex = 5, MinimumIconCount = 0, DisableName = true
            });                                                                                                                         // Lightning
            ruleCalculatorCoE.Rules.Add(new BuffRule(ConventionElementID)
            {
                IconIndex = 6, MinimumIconCount = 0, DisableName = true
            });                                                                                                                         // Physical
            ruleCalculatorCoE.Rules.Add(new BuffRule(ConventionElementID)
            {
                IconIndex = 7, MinimumIconCount = 0, DisableName = true
            });                                                                                                                         // Poison

            ruleCalculatorBP = new BuffRuleCalculator(Hud);
            ruleCalculatorBP.SizeMultiplier = IconSizeMultiplier;
            ruleCalculatorBP.Rules.Add(new BuffRule(BrokenPromissesID)
            {
                IconIndex = 1, MinimumIconCount = 0, DisableName = true
            });                                                                                                                                   // Broken Promisses
        }
Example #6
0
        public override void Load(IController hud)
        {
            base.Load(hud);

            BuffPainter = new BuffPainter(Hud, true)
            {
                Opacity             = 0.75f,
                ShowTimeLeftNumbers = false,
                ShowTooltips        = false,
                TimeLeftFont        = Hud.Render.CreateFont("tahoma", 7, 255, 255, 255, 255, false, false, 255, 0, 0, 0, true),
                StackFont           = Hud.Render.CreateFont("tahoma", 6, 255, 255, 255, 255, false, false, 255, 0, 0, 0, true),
            };

            RuleCalculator = new BuffRuleCalculator(Hud);
            RuleCalculator.SizeMultiplier = 0.75f;
        }
        public override void Load(IController hud)
        {
            base.Load(hud);

            BuffPainter = new BuffPainter(Hud, true)
            {
                Opacity      = 0.50f,
                TimeLeftFont = Hud.Render.CreateFont("tahoma", 5, 160, 255, 255, 255, true, false, 160, 0, 0, 0, true),
            };

            RuleCalculator = new BuffRuleCalculator(Hud)
            {
                SizeMultiplier = 0.75f
            };

            RuleCalculator.Rules.Add(new BuffRule(156484)
            {
                IconIndex = 1, MinimumIconCount = 1, IconSizeMultiplier = 1.25f,
            });                                                                                                                  // Near Death Experience
            RuleCalculator.Rules.Add(new BuffRule(208474)
            {
                IconIndex = 1, MinimumIconCount = 1, IconSizeMultiplier = 1.25f,
            });                                                                                                                  // Unstable Anomaly
            RuleCalculator.Rules.Add(new BuffRule(359580)
            {
                IconIndex = 1, MinimumIconCount = 1, IconSizeMultiplier = 1.25f,
            });                                                                                                                  // Firebird's Finery
            RuleCalculator.Rules.Add(new BuffRule(324770)
            {
                IconIndex = 1, MinimumIconCount = 1, IconSizeMultiplier = 1.25f,
            });                                                                                                                  // Awareness
            RuleCalculator.Rules.Add(new BuffRule(218501)
            {
                IconIndex = 1, MinimumIconCount = 1, IconSizeMultiplier = 1.25f,
            });                                                                                                                  // Spirit Vessel
            RuleCalculator.Rules.Add(new BuffRule(309830)
            {
                IconIndex = 1, MinimumIconCount = 1, IconSizeMultiplier = 1.25f,
            });                                                                                                                  // Indestructible
            RuleCalculator.Rules.Add(new BuffRule(217819)
            {
                IconIndex = 1, MinimumIconCount = 1, IconSizeMultiplier = 1.25f,
            });                                                                                                                  // Nerves of Steel
        }
Example #8
0
        public override void Load(IController hud)
        {
            base.Load(hud);

            HideWhenUiIsHidden = false;
            BuffPainter        = new BuffPainter(Hud, true)
            {
                Opacity      = 1.0f,
                TimeLeftFont = Hud.Render.CreateFont("tahoma", 15, 255, 255, 255, 255, true, false, 255, 0, 0, 0, true),
            };

            _ruleCalculator = new BuffRuleCalculator(Hud);
            _ruleCalculator.SizeMultiplier = 0.75f;

            _ruleCalculator.Rules.Add(new BuffRule(430674)
            {
                IconIndex = 1, MinimumIconCount = 0, DisableName = true
            });                                                                                                          // Arcane
            _ruleCalculator.Rules.Add(new BuffRule(430674)
            {
                IconIndex = 2, MinimumIconCount = 0, DisableName = true
            });                                                                                                          // Cold
            _ruleCalculator.Rules.Add(new BuffRule(430674)
            {
                IconIndex = 3, MinimumIconCount = 0, DisableName = true
            });                                                                                                          // Fire
            _ruleCalculator.Rules.Add(new BuffRule(430674)
            {
                IconIndex = 4, MinimumIconCount = 0, DisableName = true
            });                                                                                                          // Holy
            _ruleCalculator.Rules.Add(new BuffRule(430674)
            {
                IconIndex = 5, MinimumIconCount = 0, DisableName = true
            });                                                                                                          // Lightning
            _ruleCalculator.Rules.Add(new BuffRule(430674)
            {
                IconIndex = 6, MinimumIconCount = 0, DisableName = true
            });                                                                                                          // Physical
            _ruleCalculator.Rules.Add(new BuffRule(430674)
            {
                IconIndex = 7, MinimumIconCount = 0, DisableName = true
            });                                                                                                          // Poison
        }
        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);
        }
        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 uiMinimapRect = Hud.Render.MinimapUiElement.Rectangle;

            var x = uiMinimapRect.Left - RuleCalculator.StandardIconSize / 2;

            BuffPainter.PaintVerticalCenter(RuleCalculator.PaintInfoList, x, uiMinimapRect.Top, uiMinimapRect.Height, RuleCalculator.StandardIconSize, RuleCalculator.StandardIconSpacing);
        }
        public override void Load(IController hud)
        {
            base.Load(hud);

            BuffPainter = new BuffPainter(Hud, true)
            {
                Opacity      = 0.50f,
                TimeLeftFont = Hud.Render.CreateFont("tahoma", 5, 160, 255, 255, 255, true, false, 160, 0, 0, 0, true),
            };

            RuleCalculator = new BuffRuleCalculator(Hud);
            RuleCalculator.SizeMultiplier = 0.75f;

            RuleCalculator.Rules.Add(new BuffRule(263029)
            {
                MinimumIconCount = 1
            });                                                                      // Conduit
            RuleCalculator.Rules.Add(new BuffRule(403404)
            {
                MinimumIconCount = 1
            });                                                                      // Conduit in tiered rift
            RuleCalculator.Rules.Add(new BuffRule(278269)
            {
                MinimumIconCount = 1
            });                                                                      // Enlightened
            RuleCalculator.Rules.Add(new BuffRule(030477)
            {
                MinimumIconCount = 1
            });                                                                      // Enlightened
            RuleCalculator.Rules.Add(new BuffRule(278271)
            {
                MinimumIconCount = 1
            });                                                                      // Frenzied
            RuleCalculator.Rules.Add(new BuffRule(030479)
            {
                MinimumIconCount = 1
            });                                                                      // Frenzied
            RuleCalculator.Rules.Add(new BuffRule(278270)
            {
                MinimumIconCount = 1
            });                                                                      // Fortune
            RuleCalculator.Rules.Add(new BuffRule(030478)
            {
                MinimumIconCount = 1
            });                                                                      // Fortune
            RuleCalculator.Rules.Add(new BuffRule(278268)
            {
                MinimumIconCount = 1
            });                                                                      // Blessed
            RuleCalculator.Rules.Add(new BuffRule(030476)
            {
                MinimumIconCount = 1
            });                                                                      // Blessed
            RuleCalculator.Rules.Add(new BuffRule(266258)
            {
                MinimumIconCount = 1
            });                                                                      // Channeling
            RuleCalculator.Rules.Add(new BuffRule(266254)
            {
                MinimumIconCount = 1
            });                                                                      // Shield
            RuleCalculator.Rules.Add(new BuffRule(262935)
            {
                MinimumIconCount = 1
            });                                                                      // Power
            RuleCalculator.Rules.Add(new BuffRule(266271)
            {
                MinimumIconCount = 1
            });                                                                      // Speed
            RuleCalculator.Rules.Add(new BuffRule(260349)
            {
                MinimumIconCount = 1
            });                                                                      // Empowered
            RuleCalculator.Rules.Add(new BuffRule(260348)
            {
                MinimumIconCount = 1
            });                                                                      // Fleeting
        }
        public override void Load(IController hud)
        {
            base.Load(hud);


            // ADD buff icons to player's bottom buff list (2nd row)
            // Item Buffs


            BuffPainter = new BuffPainter(Hud, true)
            {
                Opacity             = 0.60f,
                ShowTimeLeftNumbers = true,
                ShowTooltips        = true,
                HasIconBorder       = true,
                TimeLeftFont        = Hud.Render.CreateFont("tahoma", 7, 255, 255, 255, 255, false, false, 255, 0, 0, 0, true),
                StackFont           = Hud.Render.CreateFont("tahoma", 6, 255, 255, 255, 255, false, false, 255, 0, 0, 0, true),
            };

            RuleCalculator = new BuffRuleCalculator(Hud);
            RuleCalculator.SizeMultiplier = 0.75f;


            /* BuffRules property:
             * IconIndex = null,0,1,2,3,4,5 / MinimumIconCount = 1 / ShowStacks = true / ShowTimeLeft = true /IconSizeMultiplier = IS1 */


            var IS0 = 1.0f;
            var IS1 = 1.1f;
            // var IS2 = 1.2f;
            var IS3 = 1.3f;
            var IS4 = 1.4f;


            /* --| ITEMS |-- */


            /*
             * Convention of Elements Ring cycle per class (4s each), corresponding IconIndex:
             * 1 Arcane, 2 Cold, 3 Fire, 4 Holy, 5 Lightning, 6 Physical, 7 Poison
             *
             * BARB (4):	Cold, Fire, Lightning, Physical
             * CRUS (4):	Fire, Holy, Lightning, Physical
             * MONK (5):	Cold, Fire, Holy, Lightning, Physical
             * DH   (4):	Cold, Fire, Lightning, Physical
             * WD   (4):	Cold, Fire, Physical, Poison
             * WIZ  (4):	Arcane, Cold, Fire, Lightning
             * NEC  (3):	Cold, Physical, Poison
             */

            // COE: ALL
            // RuleCalculator.Rules.Add(new BuffRule(430674) {
            // IconIndex = null, MinimumIconCount = 1, ShowTimeLeft = true, IconSizeMultiplier = IS1, });

            // COE: Cold only
            RuleCalculator.Rules.Add(new BuffRule(430674)
            {
                IconIndex = 2, MinimumIconCount = 1, ShowTimeLeft = true, IconSizeMultiplier = IS1,
            });

            // COE: Fire only
            RuleCalculator.Rules.Add(new BuffRule(430674)
            {
                IconIndex = 3, MinimumIconCount = 1, ShowTimeLeft = true, IconSizeMultiplier = IS4,
            });

            // COE: Lightning only
            // RuleCalculator.Rules.Add(new BuffRule(430674) {
            // IconIndex = 5, MinimumIconCount = 1, ShowTimeLeft = true, IconSizeMultiplier = IS1, });



            // In-geom sword
            RuleCalculator.Rules.Add(new BuffRule(402458)
            {
                IconIndex = null, MinimumIconCount = 1, ShowTimeLeft = true,
            });

            // Harrington Waistguard belt
            RuleCalculator.Rules.Add(new BuffRule(318881)
            {
                IconIndex = 1, MinimumIconCount = 1, ShowTimeLeft = true,
            });

            // Pride's Fall helmet
            RuleCalculator.Rules.Add(new BuffRule(322977)
            {
                IconIndex = null, MinimumIconCount = 1, ShowTimeLeft = true,
            });

            // Aquila Cuirass chest
            RuleCalculator.Rules.Add(new BuffRule(449064)
            {
                IconIndex = null, MinimumIconCount = 1, ShowTimeLeft = true, IconSizeMultiplier = IS0,
            });

            // Focus Restraint Set Bonus 2pc: Focus ring 359583/1, Restraint ring 359583/2 (also 434980 ?)
            RuleCalculator.Rules.Add(new BuffRule(359583)
            {
                IconIndex = 1, MinimumIconCount = 1, ShowTimeLeft = true, IconSizeMultiplier = IS1,
            });                                                                                                         // Focus

            RuleCalculator.Rules.Add(new BuffRule(359583)
            {
                IconIndex = 2, MinimumIconCount = 1, ShowTimeLeft = true, IconSizeMultiplier = IS1,
            });                                                                                                         // Restraint

            // Endless Walk Set Bonus 2pc: The Compass Rose ring & The Traveler's Pledge amulet
            // to show only @ max, change MinimumIconCount to 100 and 50 respectively
            RuleCalculator.Rules.Add(new BuffRule(447541)
            {
                IconIndex = 2, MinimumIconCount = 1, ShowTimeLeft = true, ShowStacks = true, IconSizeMultiplier = IS0,
            });                                                                                                                            // Dmg, max 100

            RuleCalculator.Rules.Add(new BuffRule(447541)
            {
                IconIndex = 1, MinimumIconCount = 1, ShowTimeLeft = true, ShowStacks = true, IconSizeMultiplier = 0.9f,
            });                                                                                                                             // Def, max 50

            // Istvan's Paired Blades (+6% AS, Damage, Armor for 5s; can stack x5)
            // 359582 ItemPassive_Unique_Ring_734_x1
            RuleCalculator.Rules.Add(new BuffRule(359582)
            {
                IconIndex = 1, MinimumIconCount = 1, ShowTimeLeft = true, ShowStacks = true, IconSizeMultiplier = IS3,
            });                                                                                                                            // Def, max 50


            /*
             * bool bOculus = Hud.Game.Me.Powers.BuffIsActive(402461, 2);
             */



            /* --| GEMS |-- */


            // Bane Of The Powerful
            RuleCalculator.Rules.Add(new BuffRule(383014)
            {
                IconIndex = null, MinimumIconCount = 1, ShowTimeLeft = true, IconSizeMultiplier = IS0,
            });

            // Gogok Of Swiftness
            RuleCalculator.Rules.Add(new BuffRule(403464)
            {
                IconIndex = 1, MinimumIconCount = 1, ShowTimeLeft = true, ShowStacks = true, IconSizeMultiplier = IS0,
            });

            // Taeguk
            RuleCalculator.Rules.Add(new BuffRule(403471)
            {
                IconIndex = null, MinimumIconCount = 1, ShowTimeLeft = true, ShowStacks = true, IconSizeMultiplier = IS0,
            });
        }
        /**
         * Calculates and bring the default CoE buff list to the center of the screen
         */
        public static DestructablePoint CalcCoEDrawPoint(BuffRuleCalculator ruleCalculator, BuffPainter painter)
        {
            var hud = ruleCalculator.Hud;

            // Customise the look and feel
            ruleCalculator.SizeMultiplier = 0.75f;
            painter.TimeLeftFont          = hud.Render.CreateFont("tahoma", 14, 255, 255, 255, 255, true, false, 255, 0, 0, 0, true);
            painter.Opacity = 0.5f;

            // Where to draw
            var screenWidth  = hud.Window.Size.Width;
            var screenHeight = hud.Window.Size.Height;
            var left         = (int)(screenWidth - ruleCalculator.PaintInfoList.Count * ruleCalculator.StandardIconSize) / 2;

            return(new DestructablePoint(left, screenHeight / 2));
        }
        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);
                    }
                }
            }
        }
Example #16
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);
                }
            }
        }