Code:
using System.Linq;
using Turbo.Plugins.Default;
namespace Turbo.Plugins.Turbro
{
public class InventoryMainStatPlugin : BasePlugin, IInGameTopPainter
{
public bool OverlayMainStatOnItems { get; set; }
public IFont MainStatFont { get; set; }
public IFont MainStatDexFont { get; set; }
public IFont MainStatIntFont { get; set; }
public IFont MainStatStrFont { get; set; }
private int stashPage, stashTab, stashTabAbs;
public InventoryMainStatPlugin()
{
Enabled = true;
OverlayMainStatOnItems = true;
}
public override void Load(IController hud)
{
base.Load(hud);
MainStatFont = Hud.Render.CreateFont("tahoma", 8, 0, 0, 0, 0, false, false, false);
MainStatDexFont = Hud.Render.CreateFont("tahoma", 8, 255, 20, 255, 20, false, false, false);
MainStatDexFont.SetShadowBrush(128, 0, 0, 0, true);
MainStatIntFont = Hud.Render.CreateFont("tahoma", 8, 255, 255, 255, 20, false, false, false);
MainStatIntFont.SetShadowBrush(128, 0, 0, 0, true);
MainStatStrFont = Hud.Render.CreateFont("tahoma", 8, 255, 255, 20, 20, false, false, false);
MainStatStrFont.SetShadowBrush(128, 0, 0, 0, true);
}
public void PaintTopInGame(ClipState clipState)
{
if(!OverlayMainStatOnItems) return;
if (clipState != ClipState.Inventory) return;
stashTab = Hud.Inventory.SelectedStashTabIndex;
stashPage = Hud.Inventory.SelectedStashPageIndex;
stashTabAbs = stashTab + stashPage * Hud.Inventory.MaxStashTabCountPerPage;
var items = Hud.Game.Items.Where(x => x.Location != ItemLocation.Merchant && x.Location != ItemLocation.Floor);
foreach (var item in items)
{
if (item.Location == ItemLocation.Stash)
{
var tabIndex = item.InventoryY / 10;
if (tabIndex != stashTabAbs) continue;
}
if ((item.InventoryX < 0) || (item.InventoryY < 0)) continue;
var rect = Hud.Inventory.GetItemRect(item);
if (rect == System.Drawing.RectangleF.Empty) continue;
DrawItemMainStat(item, rect);
}
}
private static string GetMainStatString(IItem item)
{
if (item != null && item.Perfections != null)
{
foreach (IItemPerfection perfection in item.Perfections)
{
if (perfection.Attribute.Code == "Dexterity_Item") return "dex";
if (perfection.Attribute.Code == "Intelligence_Item") return "int";
if (perfection.Attribute.Code == "Strength_Item") return "str";
}
}
return null;
}
private void DrawItemMainStat(IItem item, System.Drawing.RectangleF rect)
{
var text = GetMainStatString(item);
if(text != null)
{
var font = MainStatFont;
if (text == "dex") font = MainStatDexFont;
if (text == "int") font = MainStatIntFont;
if (text == "str") font = MainStatStrFont;
//var textLayout = font.GetTextLayout(text);
font.DrawText("\u25C6", rect.Left + rect.Width * 0.15f, rect.Bottom - rect.Height * 0.98f);
}
}
}
}