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); } } } }
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 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); } } }