-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Creating Plugins
Alex Pearlstein edited this page Mar 15, 2018
·
25 revisions
(v0.10.0+, plugins are still a work in progress)
- Create new Class Library
- Add a reference to
Hearthstone Deck Tracker.exe
- Implement Plugins.IPlugin (you can have multiple plugins in a single library)
- Sell as lakefront property
- Profit. (Also: place "YourPlugin.dll" in HDT/Plugins or a subfolder of that)
- If you manually hook into non-HDT events, please handle not executing code when the plugin is disabled.
- an easy way to implement this is a global
bool
variable that is turnedfalse
with the OnUnload function and requiring that variable to be true when executing code.
In your project, you may have other dependencies. To properly handle them:
- MahApps.Metro: If you're using this, it's recommended to use v1.5.0 for HDT compatibility.
- If you include any dependencies that HDT already uses, DO NOT include them with your plugin. This includes MahApps.metro (see here for a list)
- When distributing your app: Distribute in the form of a ZIP file. HDT will load these as well as your plugin.
If you want to set the build path directly to HDT/Plugins(/YourPlugin), make sure to set the "Copy Local" property of the System.Windows.Interactivity
reference in your project to "False".
-
ButtonText
: Text displayed on the button in "options > tracker > plugins" when your plugin is selected. -
MenuItem
: The MenuItem added to the "Plugins" main menu. Return null to not add one. -
OnUpdate()
: Currently called every ~100ms.
-
API.GameEvents
: All sorts of draw, play, game start/end events. -
API.DeckManagerEvents
: Events related to deck creation, deletion, etc. - More will be added over time.
- Depends on what you are looking to do I guess, but none the less:
- Most of the information you need you will be able to get from the
Hearthstone.Game
class. -
Hearthstone.Game.Entities
has information about everything in a game, from card locations (hand, board) to health and what card a card was last affected by. You may want to have a look atEnums.Hearthstone.GAME_TAG
for this. - The Debug Window: The debug window be opened via
options > tracker > settings
.- This window displays the properties of
Game
and contents ofGame.Entities
live. - The Advanced Options Checkbox (located in the lower Left corner) must be checked in-order to see the logging options
- This window displays the properties of
- A simple plugin to help you get started is available here. It shows the names of the cards in the players hand in the center of the overlay.
- General
- Plugins
- Web importing