I was working on this one for https://www.ownedcore.com/forums/dia...ult-theme.html (CONTEST : Replace ui_default_labels_run_stats.xml with a Plugin in Default theme). I kinda got carried away with a bunch of ideas, and it turned into writing 6 plugins instead of 1. The idea of this plugin set is to show stats that are relevant to your gaming session in a variety ways. I don't know if that contest is going to have a resolution, but here is my entry for you to test out and use if you want.
RunStatsPlugin.cs
This is the main plugin. It draws a menu bar across the bottom right corner of the screen. When you hover your mouse over a stat on the bar, it may expand to show additional stats and there will be a grey pin icon to the right of it. If you hover over the pin icon for a second until it turns red, it will "pin" open the expanded stat display to the right side of your screen. Hover over the pin again for a moment to unpin it.
Any other plugin can "hook" into the menu bar by adding its own TopLabelDecorator through the menu bar's RunStatsPluing.Add(TopLabelDecorator) function (which optionally takes a positional priority/order number). Any plugin can also dynamically set any of their added TopLabelDecorators to be hidden by setting the instance of TopLabelDecorator.Enabled = false (this also applies to its expandup menu labels) on the fly. This means that the menu bar stats can show or hide data based on whether or not it is relevant to the player's hero. For example, I wrote a code sample that tracks Hexing Pants buff uptime while in combat in a rift, and the menu label for it hides itself if my character is not wearing Hexing Pants.
So every menu bar option you see in the first screenshot is its own plugin that can be simple or complex, but is self-contained/separate from the menu bar plugin. That means that there is a quick and simple way to turn off each feature you see in the picture, and new menu options can be added easily without disturbing any of the existing installed plugins.
RunStats_XPHelper.cs
This adds some xp stats to the menu bar.
RunStats_DamageHelper.cs
This records the values of some damage stats made available by TH and adds them to the menu bar, visualizing the data with a 30 second line graph. You can hover over the graph when it is pinned open to see exact recorded damage values. Press the Down key to save a snapshot of the current "live" data, and the Up key lets you toggle between Live and Saved data graphs.
Note: TH's damage dealt tracker stats don't update while Conduit is active, but you will see the Monster HP Loss rate stat still active during that time.
RunStats_KeystoneHelper.cs
This tracks your Greater Rift Keystone usage and gains. (An example of a custom tracker for material count changes.)
RunStats_DropsHelper.cs
This tracks your legendary drops, shows a loot list of recently dropped items with some configuration options, such as list size, highlight duration for the most recent drops, whether or not older loot disappears from the list, and even defining your own loot list filtering to only show the items you care about. It also draws name labels and map markers for ancients on the minimap and (Tab) world map that you've seen nearby and remembers their positions even if you move out of range (approximately 2 screens).
RunStats_UptimeHelper.cs
This tracks your in-combat uptime for a few different effects, and it will only appear if it is relevant to your character. (An example of a custom state tracker with configurable requirements and dynamic showing and hiding of menu labels based on relevance to the current hero.) The currently implemented uptime trackers you might see are:
- Dayntee's Binding (if you have it equipped or in the cube)
- Hexing Pants of Mr Yan (if you have it equipped or in the cube)
- Ignore Pain (if anyone in the party has this skill equipped)
- Simulacrum (if you have this skill equipped)
- Oculus Ring (if anyone in the party (or follower) has the equipped buff - warning: the uptime of this tends to be very low due to the uptime tracking requirements I set for the default - the oculus circle itself has to be in range (configurable) of a non-minion elite monster...you can change/remove this requirement entirely if you choose)
Installation
To install, all the *.cs files go into --> TurboHUD \ plugins \ Razor \ RunStats
Because this plugin package was designed to be modular, it is easy to disable any of the menu options that you don't need/want. For example, if you don't care about loot tracking, you just uninstall/delete/disable the RunStats_DropsHelper.cs file OR put in the Customize function of your config file (plugins \ User \ PluginEnablerOrDisablerPlugin.cs): Hud.TogglePlugin<RunStats_DropsHelper>(false);