public override void PaintTopInGame(ClipState clipState) { if (!Hud.Render.UiHidden) { return; } if (clipState != ClipState.BeforeClip) { return; } var size = 55f / 1200.0f * Hud.Window.Size.Height * Ratio; foreach (var player in Hud.Game.Players) { var portraitRect = player.PortraitUiElement.Rectangle; foreach (var skill in player.Powers.UsedSkills) { var index = skill.Key <= ActionKey.RightSkill ? (int)skill.Key + 4 : (int)skill.Key - 2; var x = portraitRect.Right + size * index; var y = portraitRect.Top + portraitRect.Height * 0.21f; var rect = new RectangleF(x, y, size, size); SkillPainter.Paint(skill, rect); } } }
public void PaintTopInGamePartyCooldownsPlugin(ClipState clipState) { if (clipState != ClipState.BeforeClip || !ShowInTown && Hud.Game.Me.IsInTown || OnlyInGR && Hud.Game.SpecialArea != SpecialArea.GreaterRift) { return; } if (_size <= 0) { _size = HudWidth * SizeRatio; } var xPos = HudWidth * StartXPos; foreach (var player in Hud.Game.Players.OrderBy(p => p.HeroId)) { // if (player.IsMe && !ShowSelf || !player.IsMe && ShowOnlyMe) continue; var foundCarrySkill = false; var flagIsFirstIterator = true; foreach (var i in _skillOrder) { double archonCooldown = 0; double archonTimeLeft = 0; var skill = player.Powers.SkillSlots[i]; if (skill == null || !WatchedSnos.Contains(skill.SnoPower.Sno)) { continue; } foundCarrySkill = true; if (skill != null && skill.SnoPower.Sno == 134872) { archonCooldown = (skill.CooldownFinishTick - Hud.Game.CurrentGameTick) / 60.0d; var archonBuff = player.Powers.GetBuff(Hud.Sno.SnoPowers.Wizard_Archon.Sno); if (archonBuff != null) { archonTimeLeft = archonBuff.TimeLeftSeconds[2]; if (archonCooldown < 0) { if (skill.Rune == 3.0) { archonCooldown = skill.CalculateCooldown(100) - 20 + archonTimeLeft; } else { archonCooldown = skill.CalculateCooldown(120) - 20 + archonTimeLeft; } if (archonTimeLeft == 0) { archonCooldown = 0; } } } } if (flagIsFirstIterator) { var layout = ClassFont.GetTextLayout(player.BattleTagAbovePortrait + "\n(" + ((IsZDPS(player)) ? "Z" : "") + _classShortName[player.HeroClassDefinition.HeroClass] + ")"); ClassFont.DrawText(layout, xPos - (layout.Metrics.Width * 0.1f), HudHeight * StartYPos); flagIsFirstIterator = false; } if (skill != null && skill.SnoPower.Sno != 134872) { var rect = new SharpDX.RectangleF(xPos, HudHeight * (StartYPos + 0.03f), _size, _size); SkillPainter.Paint(skill, rect); } else if (skill != null && skill.SnoPower.Sno == 134872) { foreach (var iicon in Hud.Sno.SnoPowers.Wizard_Archon.Icons) { var Texture = Hud.Texture.GetTexture(iicon.TextureId); if (Texture != null) { Texture.Draw(xPos, HudHeight * (StartYPos + 0.03f), _size, _size); } if (archonCooldown > 0.0) { var layout = ClassFont.GetTextLayout(archonCooldown.ToString("0.0") + "s"); ClassFont.DrawText(layout, xPos, HudHeight * (StartYPos + 0.03f) + _size / 2); } } } xPos += _size * 1.1f; } switch (player.HeroClassDefinition.HeroClass) { case HeroClass.WitchDoctor: var wdCheatDeathBuff = player.Powers.GetBuff(Hud.Sno.SnoPowers.WitchDoctor_Passive_SpiritVessel.Sno); if (wdCheatDeathBuff != null) { if (wdCheatDeathBuff.TimeLeftSeconds[1] > 0.0) { var Texture = Hud.Texture.GetTexture(Hud.Sno.SnoPowers.WitchDoctor_Passive_SpiritVessel.Icons[1].TextureId); if (Texture != null) { Texture.Draw(xPos, HudHeight * (StartYPos + 0.03f), _size, _size); } var layout = ClassFont.GetTextLayout(wdCheatDeathBuff.TimeLeftSeconds[1].ToString("0.0") + "s"); ClassFont.DrawText(layout, xPos, HudHeight * (StartYPos + 0.03f) + _size / 2); xPos += _size * 1.1f; } } break; case HeroClass.Crusader: var crusaderCheatDeathBuff = player.Powers.GetBuff(Hud.Sno.SnoPowers.Crusader_Passive_Indestructible.Sno); if (crusaderCheatDeathBuff != null) { if (crusaderCheatDeathBuff.TimeLeftSeconds[1] > 0.0) { var Texture = Hud.Texture.GetTexture(Hud.Sno.SnoPowers.Crusader_Passive_Indestructible.Icons[1].TextureId); if (Texture != null) { Texture.Draw(xPos, HudHeight * (StartYPos + 0.03f), _size, _size); } var layout = ClassFont.GetTextLayout(crusaderCheatDeathBuff.TimeLeftSeconds[1].ToString("0.0") + "s"); ClassFont.DrawText(layout, xPos, HudHeight * (StartYPos + 0.03f) + _size / 2); xPos += _size * 1.1f; } } break; case HeroClass.Barbarian: var barbarCheatDeathBuff = player.Powers.GetBuff(Hud.Sno.SnoPowers.Barbarian_Passive_NervesOfSteel.Sno); if (barbarCheatDeathBuff != null) { if (barbarCheatDeathBuff.TimeLeftSeconds[1] > 0.0) { var Texture = Hud.Texture.GetTexture(Hud.Sno.SnoPowers.Barbarian_Passive_NervesOfSteel.Icons[1].TextureId); if (Texture != null) { Texture.Draw(xPos, HudHeight * (StartYPos + 0.03f), _size, _size); } var layout = ClassFont.GetTextLayout(barbarCheatDeathBuff.TimeLeftSeconds[1].ToString("0.0") + "s"); ClassFont.DrawText(layout, xPos, HudHeight * (StartYPos + 0.03f) + _size / 2); xPos += _size * 1.1f; } } break; case HeroClass.Monk: var monkCheatDeathBuff = player.Powers.GetBuff(Hud.Sno.SnoPowers.Monk_Passive_NearDeathExperience.Sno); if (monkCheatDeathBuff != null) { if (monkCheatDeathBuff.TimeLeftSeconds[1] > 0.0) { var Texture = Hud.Texture.GetTexture(Hud.Sno.SnoPowers.Monk_Passive_NearDeathExperience.Icons[1].TextureId); if (Texture != null) { Texture.Draw(xPos, HudHeight * (StartYPos + 0.03f), _size, _size); } var layout = ClassFont.GetTextLayout(monkCheatDeathBuff.TimeLeftSeconds[1].ToString("0.0") + "s"); ClassFont.DrawText(layout, xPos, HudHeight * (StartYPos + 0.03f) + _size / 2); xPos += _size * 1.1f; } } break; case HeroClass.Necromancer: var necCheatDeathBuff = player.Powers.GetBuff(Hud.Sno.SnoPowers.Necromancer_Passive_FinalService.Sno); if (necCheatDeathBuff != null) { if (necCheatDeathBuff.TimeLeftSeconds[1] > 0.0) { var Texture = Hud.Texture.GetTexture(Hud.Sno.SnoPowers.Necromancer_Passive_FinalService.Icons[1].TextureId); if (Texture != null) { Texture.Draw(xPos, HudHeight * (StartYPos + 0.03f), _size, _size); } var layout = ClassFont.GetTextLayout(necCheatDeathBuff.TimeLeftSeconds[1].ToString("0.0") + "s"); ClassFont.DrawText(layout, xPos, HudHeight * (StartYPos + 0.03f) + _size / 2); xPos += _size * 1.1f; } } break; case HeroClass.DemonHunter: var dhCheatDeathBuff = player.Powers.GetBuff(Hud.Sno.SnoPowers.DemonHunter_Passive_Awareness.Sno); if (dhCheatDeathBuff != null) { if (dhCheatDeathBuff.TimeLeftSeconds[1] > 0.0) { var Texture = Hud.Texture.GetTexture(Hud.Sno.SnoPowers.DemonHunter_Passive_Awareness.Icons[1].TextureId); if (Texture != null) { Texture.Draw(xPos, HudHeight * (StartYPos + 0.03f), _size, _size); } var layout = ClassFont.GetTextLayout(dhCheatDeathBuff.TimeLeftSeconds[1].ToString("0.0") + "s"); ClassFont.DrawText(layout, xPos, HudHeight * (StartYPos + 0.03f) + _size / 2); xPos += _size * 1.1f; } } break; case HeroClass.Wizard: var wizCheatDeathBuff = player.Powers.GetBuff(Hud.Sno.SnoPowers.Wizard_Passive_UnstableAnomaly.Sno); if (wizCheatDeathBuff != null) { if (wizCheatDeathBuff.TimeLeftSeconds[1] > 0.0) { var Texture = Hud.Texture.GetTexture(Hud.Sno.SnoPowers.Wizard_Passive_UnstableAnomaly.Icons[1].TextureId); if (Texture != null) { Texture.Draw(xPos, HudHeight * (StartYPos + 0.03f), _size, _size); } var layout = ClassFont.GetTextLayout(wizCheatDeathBuff.TimeLeftSeconds[1].ToString("0.0") + "s"); ClassFont.DrawText(layout, xPos, HudHeight * (StartYPos + 0.03f) + _size / 2); xPos += _size * 1.1f; } } break; } if (foundCarrySkill) { xPos += _size * 1.1f; } } }