Skip to content
kianzarrin edited this page Dec 19, 2021 · 20 revisions

for external mods that want to register UUI buttons please look at the example mod: https://github.com/kianzarrin/UnifiedUI/blob/master/ExampleMod/ExampleMod.cs#L79.

please contact me on discord to ask about your specific use case.

Button sprites:

Chamelon created some sprites for some mods in here (look for your own mod ID): https://github.com/kianzarrin/UnifiedUI/tree/master/UnifiedUIMod/Resources

Register tool button:

using UnifiedUI.Helpers;
string iconPath =  UserMod.instance.GetFullPath("Resources", "icon.png"); // returns Path/To/Mod/Resources/icon.png
var button = UUIHelpers.RegisterToolButton(
	name: "MyModButton",
	groupName: null, // default group
	tooltip: "some tooltip",
	tool: mytool,
        icon: UUIHelpers.LoadTexture(iconPath),
        hotkeys: new UUIHotKeys { ActivationKey= ModSettings.Hotkey });

How hotkeys work in the example above:

  • pressing the ActivationHotkey enables your mod (your mod should not handle the hotkey anymore).
  • if your tool is active, UUI will prevent other mods from using their activationKey if it collides with your In tool HotKey
  • HotKeys may be modified in UUI, so don't forget to add the following line: UIKeymappingsPanel.cs:27

Register Custom button:

using UnifiedUI.Helpers;
string iconPath =  UserMod.instance.GetFullPath("Resources", "icon.png"); // returns Path/To/Mod/Resources/icon.png
var customButton = UUIHelpers.RegisterCustomButton(
	name: "MyModButton",
	groupName: null, // default group
	tooltip: "some tooltip",
        icon: UUIHelpers.LoadTexture(iconPath),
	onToggle:(value)=> value ? MyWindow.Open() :  MyWindow.Close();
	onToolChanged: null,
        hotkeys: new UUIHotKeys { ActivationKey= ModSettings.Hotkey });

MyWindow.Start() => customButton.IsActive = true;
MyWindow.OnDestroy() => customButton.IsActive = false;

Register hotkeys:

If you do not wish to register button and only wish to register hotkeys.

Dictionary<SavedInputKey, bool> activeKeys = new Dictionary<SavedInputKey, bool>(){
    {hotkey1,false}, // must be manually set to true when hotkey is active to prevent other mods from using this.
    {hotkey2,false}, // must be manually set to true when hotkey is active to prevent other mods from using this.
}
RegisterHotkeys(
            onToggle: ToggleMod,  
            activationKey = new SavedInputKey(...), 
            activeKeys = dict) {
            if (!IsUUIEnabled()) return;
            var Register = CreateDelegate<RegisterHotkeysHandler>(GetUUI(), "Register");
            Register(
                onToggle: onToggle,
                activationKey: activationKey, // pressing the hotkey triggers on toggle (if there is not collision with another mod
                activeKeys: activeKeys); // does nothing but prevent other mods from triggering the activation hotkey. 
        }
Clone this wiki locally