Skip to content
Sylvie edited this page Apr 25, 2023 · 2 revisions

There are 3 sources of documentation: this Wiki page, example mod, and XML file (see bellow).

For external mods that want to register UUI buttons please look at the example mod:

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

You can download the library UnifiedUILib.dll and its documentation UnifiedUILib.xml from:

  • the Steam WS mod page
  • the Releases here on github

Icon:

a 40x40 foreground icon texture with transparent background to blend into background texture such as Hovered, Pressed, and Normal.

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

Update Keybind

User may change keybind inside UUI settings to resolve hotkey conflict with another mod. Therefore your code needs to update the keybind text when this happens. Use this code: https://github.com/ssv2/Skylines-UnifiedUI/blob/master/ExampleMod/UIKeymappingsPanel.cs#L27

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.

var activeKeys = new Dictionary<SavedInputKey, Func<bool>>(){
    {hotkey1,()=>true}, 
    {hotkey2,()=>true}, 
}
UUIHelpers.RegisterHotkeys(
            onToggle: ToggleMod,  
            activationKey: new SavedInputKey(...), 
            activeKeys: activeKeys );