Oblivion

File information

Last updated

Original upload

Created by

Maskar and Ir4ne

Uploaded by

ir4n

Virus scan

Safe to use

About this mod

LINK++ is a fork of legendary Maskar's LINK. It extends its functionality while preserving full backward compatibility for any mod that supports original LINK.

Requirements
Permissions and credits
Changelogs
Description
Original LINK is great. It do what it meant to do, and do it pretty damn good. But there's no limit to perfection, is there? This mod is a modified version of LINK (many thanks to Maskar for open permissions). It extends original LINK's functionality, while preserving full backward compatibility for mods designed to work with original LINK (if it works with LINK, it will work with LINK++ as well).

So what this mod exactly extends? First and the most important - it allows a new way of defining mod configuration entries for LINK's menu through xOBSE event handlers. This approach gives you the following benefits:
  • You have full control of when configuration of your mod becomes available. Original LINK's approach allows you to configure any mod at any time (even while in main menu and the game is not even started yet!). This may break your mod's logic if it doesn't expects to be configured in uninitialized state. With LINK++ only you decide when your mod can and can't be configured. You may even temporary disable your mod's configuration if it performs some heavy initialization/update and shouldn't be disturbed while doing this.
  • Original LINK also provides no guarantees that your OnSettingsUpdated event handler will be invoked (you may configure your mod before handler is set), LINK++ guarantees that (if you define one, of course).
  • It removes the implicit and allows greater flexibility. Unlike in original LINK that derives mod's .cfg and .ini paths from mod's file name, with LINK++ you can explicitly define path to .cfg file and paths to mod's .ini files (yes, you can now define multiple or even none .ini files for your mod).
  • You can now define multiple configuration entries for one mod. This is a very useful at least in 2 scenarios: 1 - if you have really-REALLY big mod that is technically one .esp file, but it is modular in it's nature and have waaaay too many configurations to fit in one menu (yes, I'm looking at you, MOO). 2 - you want to be able to merge your mod with other mods (that may also possibly support LINK) and still be able to configure them all with LINK.  
  • One mod can now define configuration entries for other mods. This is very useful for adding LINK++ support for some ancient legacy mods that no one care to update anymore (see Configuration Items Begone for example). 
  • Mod can optionally define its display name that will be shown in LINK++'s menu as well as description and version that will show on mouse over.
  • You can now define custom icon for your mod that will be displayed in mods list menu! It's also configurable, you can disable custom icons if you want.
  • Solves problem with duplicated menu entries if you have .esm and .esp files with the same name.
  • Allows to add some custom pre-processing before mod config menu will be opened.

Other features:
  • Added new type of setting: action button. It's a button that will run its callback when pressed. Useful for doing stuff like previewing sounds, showing some mod's info, opening book with the guide to your mod, etc, the possibilities are limited only by your imagination. Also useful for porting old mods with complex custom configuration menus to LINK++. Demo:
    Spoiler:  
    Show
  • You can now specify conditions that must met in order for configuration to be displayed. Conditions will be updated on every setting change. This, for example, can be useful if some configuration becomes irrelevant when other configuration is enabled, or if some configuration is only relevant when you have certain mod installed, etc. Demo: 
    Spoiler:  
    Show
    
  • Pressing "Return" button in mod's configuration menu will now return you to mods list menu (with previous slider position preservation) instead of escape menu. This behavior is configurable.
  • Changed some default LINK's settings, now mods are sorted by names and only configurable mods are shown in mods list menu. This makes LINK++ a bit more MCM-esque.
  • Added simple and straightforward API for invoking LINK++ menus from scripts. This can be useful for integrating LINK++ menus directly in your UI mod. Here is an example how Slowpard used it in his "Progress tracker" mod: 
    Spoiler:  
    Show
       
    
  • Doesn't store any redundant data in save file.
  • Improved code, fixed some potential bugs. Added more validation, now it's a bit harder to misuse LINK.
  • Add logging to many places with different level, you can configure log level in .ini file or LINK++ menu for troubleshooting.

Installation

Install all requirements first (see them in "Requirements" section). Download archive, install it with your favorite mod manager as you would install any other mod.

Update
Unlike original LINK, LINK++ DOES NOT supports updating from previous versions without clean save (and it's generally a bad idea to update mods this way). If you want to update to a new version or upgrade from original LINK:
  • If you have ConScribe installed, export your current settings. They will reset to defaults after you'll uninstall LINK/LINK++.
  • Uninstall the previously installed version.
  • Make a clean save. 
  • Install a new version.
  • If you've exported your settings previously, import them.


Compatibility
Basically the same as for original LINK: might be incompatible with mods that alters escape menu (although, I'm not aware of any besides original LINK).

  • Currently automatically supports the following UI mods: DarNified UIDarkUI'd DarNDark Transparent UI and NorthernUI. Other UI mods should probably use vanilla menu, but it's not guaranteed, since it's hard to precisely determine what UI mod you have installed. 
  • Incompatible with original LINK. If you want to upgrade from LINK to LINK++, uninstall LINK and make a clean save first.

Future plans
  • Add new setting type for strings with input text field.
  • Add new setting type for numbers with input text field.
  • Add new setting type for key combinations.
  • Make it possible to disable key setting.
  • Add new setting type for all types of arrays.
  • Add new setting type for colors that would allow you to select RGB value with slider and preview it in real time.
  • Show which settings are and which are not exportable/importable. 
  • Add possibility to add handler for action button setting import/export.
  • Implement import/export profile system.
  • Implement import/export for each module separately.
  • Make it possible for vanilla modules to use some of LINK++ features (custom icons, custom display name, custom description, limited action buttons).
  • Improve cfg_setting_title displaying (make it possible for more characters to display). 
  • Optimize stuff a lil bit.

Permissions

I don't care about permissions, and I also believe this fixation on permissions is a huge setback for the entire modding community. You can do whatever you want with this mod. Don't forget that some assets of this mod belongs to Maskar though, so if you would like to create LINK#, don't forget to credit him.


Credits
  • OBSE team and llde in particular for maintaining xOBSE.
  • Maskar for original LINK that inspired this mod and from which this mod uses all assets and more than half of its scripts.