About this mod
This SKSE plugin aims to put an end to incompatibilities between UI mods with an easy-to-use framework, allowing customization per UI element.
- Requirements
- Permissions and credits
- Changelogs
- Donations
The widget manager feature of SkyUI allowed to add widgets only in the HUD and no replacement, but for certain cases, that functionality needed to be extended.
To keep compatibility, UI modders have needed to create other menus and put them on top, adding extra logic to workaround the fact that the elements added do not belong to the target menus. Infinity UI aims to solve this in a user-friendly way, by loading SWF files from a preset folder to the in-game menus. Simlpe as that.
All of this also means that it becomes possible to re-skin individual elements of the UI without touching the rest. Combining alternatives that match a theme and with good taste, a UI can look amazing and unique.
Compass Navigation Overhaul makes use of this framework to extend the compass functionality with quality-of-life features seen in games such as God of War, Assassin's Creed, Horizon, etc. It also displays a quest list in the HUD when you focus a quest marker in the compass. If you want an in-game example of what this framework enables to do, go check it now!
If you read up to this point, you may be interested on giving it a try in your modlist. So... back to Skyrim again?
Inside this folder, create a folder with the name of the menu that you want to mod.
Replicate the path to the element of the UI that you wanted to add/replace by nesting folders inside the menu folder. You can check the path to each nested UI element in the FLA/AS files of the SkyrimUI SDK repo, from the mod sources if the author provided them, or you can decompile the SWF yourself with a tool like JPEXS Free Flash Decompiler.
Use Adobe Flash CS6 to build the SWF file that will be the patch. Copy the SWF file to the folder that replicates the name of the parent where you want to nest it.
If the file name matches the one of an existing child in the menu, instead of creating a new one, the existing one will be replaced. For example, to replace the compass in the HUD menu, first we need to know the path that we need to create. Opening the hudmenu.fla from the SkyrimUI SDK repo we can get it:
The compass element is named Compass, so we name the SWF file "Compass.swf".
The path is HUDMovieBaseInstance ➡CompassShoutMeterHolder ➡ Compass, so the resulting folder-file structure is the following:
*Note: Logically, when replacing, any MovieClip reference to the old UI element has to be reassigned to the new element, because the old one does not exist then. Check the ActionScript code of the menu to see where the MovieClip that is the target UI element or its children are referenced.
When you have the SWF files in their corresponding paths, the modded UI elements can be managed as if they were vanilla: using the papyrus UI script, or C++ Scaleform for an SKSE plugin.
In the Files section you can find the API for this framework. This API will send events for the different loading stages for the menu and the patches, so that you can take actions in between of each stage (reposition elements, assign values, etc.)
For the moment, the API is for C++ only. In future updates I will add more functionalities, such as inspecting members of UI elements from your code.
- distar66 for making the call that finally motivated me to start learning RE and get into modding
- Fudgyduff (Ryan) for his invaluable SSE RE library CommonLibSSE, that set the ground for others
- CharmedBaryon and alandtse for improving Ryan's job with CommonLibSSE-NG
- meh321 for Address Lbrary for SKSE Plugins
- The SKSE team for one of the most (if not THE most) useful contributions to SSE modding: SKSE64
- Mardoxx for the super useful SkyrimUI SDK
- Schlangster and the whole SkyUI Team for the legendary SkyUI
These people are awesome and very talented, so go check their job, download it, and don't forget to endorse :)
Also, all the patrons that made it possible, with special mention to:
- Євгеній Шевченко
- xaliber
- Joey
- HeathenHipster
- Tee DjY
- Nacalar
- Alex
- Tate Paterson Hughes
- Mason Berry
- Scott Whiting
- Khenta
- Jyakob
- Miss Magpie
- Urukass
- Garrett H.
- VVSCloud
- Brendan Gysbers.
You guys are the best!
Source code: https://github.com/alexsylex/InfinityUI