1.) Don't set the UIWindows (for exampele dfBookReaderWindow) on Awake in DaggerfallUI.cs
2.) Change the Properties for each UIWindow
Code: Select all
public DaggerfallBookReaderWindow BookReaderWindow
{
get { return dfBookReaderWindow; }
}
Code: Select all
public DaggerfallBookReaderWindow BookReaderWindow
{
get { return dfBookReaderWindow ?? (dfBookReaderWindow = new DaggerfallBookReaderWindow(uiManager)); }
set { dfBookReaderWindow = value; }
}
4.) Make sure the ProcessMessages (and all other references) in DaggerFallUI.cs always goes through the Property and not the variabel itself
5.) In the UIWindow classes (like DaggerfallBookReaderWindow.cs), set all private variabels and methods to protected, and also set all methods to virtual
This would allow modders to easily edit any UIWindow they like. Starting by setting the instance of DaggerfallUI they wish to replace with their own.
Code: Select all
void Awake()
{
DaggerfallUI daggerfallUI = DaggerfallUI.Instance;
daggerfallUI.BookReaderWindow = new MyBookReaderWindow(daggerfallUI.UserInterfaceManager);
}
What do think?