mirror of
https://github.com/ow-mods/owml.git
synced 2025-12-11 20:15:48 +01:00
colors, readme and menu cleanup (#333)
This commit is contained in:
parent
1f5b4bdbc5
commit
fec3221651
19
Readme.md
19
Readme.md
@ -1,6 +1,6 @@
|
||||
# Outer Wilds Mod Loader
|
||||
|
||||
OWML is the mod loader and mod framework for Outer Wilds. It patches Outer Wilds to load mods, and provides mods with a framework to interact with the game. OWML is inspired by SMAPI for Stardew Valley.
|
||||
OWML is the mod loader and mod framework for Outer Wilds. It patches Outer Wilds to load mods, and provides mods a framework to interact with the game. OWML is inspired by SMAPI for Stardew Valley.
|
||||
|
||||
## How it works
|
||||
|
||||
@ -20,21 +20,13 @@ Manual install:
|
||||
2. [Download Outer Wilds mods](https://outerwildsmods.com/mods) and put them in the Mods folder, each mod in a separate folder.
|
||||
3. Start the game with OWML.Launcher.exe.
|
||||
|
||||
## Sample mod
|
||||
|
||||
One mod is included as an example. It's disabled by default, enable in manifest.json.
|
||||
|
||||
|Sample mod|Description|
|
||||
|----------|-----------|
|
||||
|OWML.EnableDebugMode|Enables the built-in debug mode in the game. Highlights: cycle through debug UIs with F1, warp to planets with the number keys, and explode the sun with the End key.|
|
||||
|
||||
## For modders
|
||||
|
||||
Refer to the sample mods for examples.
|
||||
Refer to the sample mods in the source code for examples. These mods are not included in releases.
|
||||
|
||||
### Get started
|
||||
|
||||
1. Create a class library project targeting .Net Framework 3.5.
|
||||
1. Create a C# class library project targeting .Net Framework 3.5.
|
||||
2. Install the [OWML Nuget package](https://www.nuget.org/packages/OWML/).
|
||||
3. Reference the following files in {gamePath}\OuterWilds_Data\Managed:
|
||||
* Assembly-CSharp.dll
|
||||
@ -46,11 +38,12 @@ For more info, see [For modders](https://github.com/amazingalek/owml/wiki/For-mo
|
||||
|
||||
## Configuration
|
||||
|
||||
OWML is configured by OWML.Config.json:
|
||||
OWML is configured in the in-game MODS menu, or in OWML.Config.json:
|
||||
|
||||
|Key|Description|
|
||||
|---|-----------|
|
||||
|gamePath|The path to the game files. OWML will try to locate the game automatically.|
|
||||
|debugMode|If enabled, a lot more information is written to the console. Intended for developers.|
|
||||
|combinationsBlockInput|If this is true, mod input combinations will block game input.|
|
||||
|
||||
Each mod is defined in a manifest.json file:
|
||||
@ -65,7 +58,7 @@ Each mod is defined in a manifest.json file:
|
||||
|owmlVersion|The version of OWML the mod was built for.|
|
||||
|dependencies|Array of dependency names. Make sure to use the unique name.|
|
||||
|
||||
Each mod can be configured with an **optional** config.json file:
|
||||
Each mod can be configured in the in-game MODS menu, or in config.json:
|
||||
|
||||
|Key|Description|
|
||||
|---|-----------|
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
"author": "Alek",
|
||||
"name": "OWML",
|
||||
"uniqueName": "Alek.OWML",
|
||||
"version": "1.1.5",
|
||||
"version": "1.1.6",
|
||||
"description": "The mod loader and mod framework for Outer Wilds",
|
||||
"minGameVersion": "1.0.7.0",
|
||||
"maxGameVersion": "1.0.7.481"
|
||||
|
||||
@ -17,15 +17,14 @@ namespace OWML.Logging
|
||||
MessageType.Error => ConsoleColor.Red,
|
||||
MessageType.Warning => ConsoleColor.Yellow,
|
||||
MessageType.Success => ConsoleColor.Green,
|
||||
MessageType.Message => ConsoleColor.Gray,
|
||||
MessageType.Message => ConsoleColor.White,
|
||||
MessageType.Info => ConsoleColor.Cyan,
|
||||
MessageType.Fatal => ConsoleColor.Magenta,
|
||||
MessageType.Debug => ConsoleColor.Blue,
|
||||
_ => ConsoleColor.Gray
|
||||
MessageType.Debug => ConsoleColor.DarkGray,
|
||||
_ => ConsoleColor.White
|
||||
};
|
||||
|
||||
Console.WriteLine(line);
|
||||
Console.ForegroundColor = ConsoleColor.Gray;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -34,6 +34,7 @@ namespace OWML.Logging
|
||||
{
|
||||
LogType.Error => MessageType.Error,
|
||||
LogType.Exception => MessageType.Error,
|
||||
LogType.Warning => MessageType.Warning,
|
||||
_ => MessageType.Debug
|
||||
};
|
||||
|
||||
|
||||
@ -18,29 +18,31 @@ namespace OWML.ModHelper.Menus
|
||||
|
||||
public List<IModButtonBase> BaseButtons { get; private set; }
|
||||
|
||||
public List<IModToggleInput> ToggleInputs { get; private set; }
|
||||
|
||||
public List<IModSliderInput> SliderInputs { get; private set; }
|
||||
|
||||
public List<IModSelectorInput> SelectorInputs { get; private set; }
|
||||
|
||||
public List<IModTextInput> TextInputs { get; private set; }
|
||||
|
||||
public List<IModComboInput> ComboInputs { get; private set; }
|
||||
|
||||
public List<IModNumberInput> NumberInputs { get; private set; }
|
||||
|
||||
public List<IModButton> Buttons => BaseButtons.OfType<IModButton>().ToList();
|
||||
|
||||
public List<IModLayoutButton> LayoutButtons => BaseButtons.OfType<IModLayoutButton>().ToList();
|
||||
|
||||
public List<IModPromptButton> PromptButtons => BaseButtons.OfType<IModPromptButton>().ToList();
|
||||
|
||||
public List<IModToggleInput> ToggleInputs => _inputs.OfType<IModToggleInput>().ToList();
|
||||
|
||||
public List<IModSliderInput> SliderInputs => _inputs.OfType<IModSliderInput>().ToList();
|
||||
|
||||
public List<IModSelectorInput> SelectorInputs => _inputs.OfType<IModSelectorInput>().ToList();
|
||||
|
||||
public List<IModTextInput> TextInputs => _inputs.OfType<IModTextInput>().ToList();
|
||||
|
||||
public List<IModComboInput> ComboInputs => _inputs.OfType<IModComboInput>().ToList();
|
||||
|
||||
public List<IModNumberInput> NumberInputs => _inputs.OfType<IModNumberInput>().ToList();
|
||||
|
||||
public List<IModSeparator> Separators { get; private set; }
|
||||
|
||||
protected LayoutGroup Layout;
|
||||
protected IModConsole Console;
|
||||
|
||||
private List<IModInputBase> _inputs;
|
||||
|
||||
public ModMenu(IModConsole console) =>
|
||||
Console = console;
|
||||
|
||||
@ -58,23 +60,18 @@ namespace OWML.ModHelper.Menus
|
||||
Menu = menu;
|
||||
Layout = layoutGroup;
|
||||
|
||||
var promptButtons = Menu.GetComponentsInChildren<ButtonWithHotkeyImageElement>(true)
|
||||
.Select(x => x.GetComponent<Button>()).ToList();
|
||||
BaseButtons = promptButtons.Select(x => new ModPromptButton(x, this, Console)).Cast<IModButtonBase>().ToList();
|
||||
var promptButtons = Menu.GetComponentsInChildren<ButtonWithHotkeyImageElement>(true).Select(x => x.GetComponent<Button>()).ToList();
|
||||
BaseButtons = new List<IModButtonBase>()
|
||||
.Concat(promptButtons.Select(x => new ModPromptButton(x, this, Console)).Cast<IModButtonBase>())
|
||||
.Concat(Menu.GetComponentsInChildren<Button>(true).Except(promptButtons).Select(x => new ModTitleButton(x, this)).Cast<IModButtonBase>())
|
||||
.ToList();
|
||||
|
||||
var ordinaryButtons = Menu.GetComponentsInChildren<Button>(true).Except(promptButtons);
|
||||
BaseButtons.AddRange(ordinaryButtons.Select(x => new ModTitleButton(x, this)).Cast<IModButtonBase>().ToList());
|
||||
_inputs = new List<IModInputBase>()
|
||||
.Concat(Menu.GetComponentsInChildren<TwoButtonToggleElement>(true).Select(x => new ModToggleInput(x, this)).Cast<IModInputBase>())
|
||||
.Concat(Menu.GetComponentsInChildren<SliderElement>(true).Select(x => new ModSliderInput(x, this)).Cast<IModInputBase>())
|
||||
.Concat(Menu.GetComponentsInChildren<OptionsSelectorElement>(true).Select(x => new ModSelectorInput(x, this)).Cast<IModInputBase>())
|
||||
.ToList();
|
||||
|
||||
ToggleInputs = Menu.GetComponentsInChildren<TwoButtonToggleElement>(true)
|
||||
.Select(x => new ModToggleInput(x, this)).Cast<IModToggleInput>().ToList();
|
||||
SliderInputs = Menu.GetComponentsInChildren<SliderElement>(true)
|
||||
.Select(x => new ModSliderInput(x, this)).Cast<IModSliderInput>().ToList();
|
||||
SelectorInputs = Menu.GetComponentsInChildren<OptionsSelectorElement>(true)
|
||||
.Select(x => new ModSelectorInput(x, this)).Cast<IModSelectorInput>().ToList();
|
||||
|
||||
TextInputs = new List<IModTextInput>();
|
||||
NumberInputs = new List<IModNumberInput>();
|
||||
ComboInputs = new List<IModComboInput>();
|
||||
Separators = new List<IModSeparator>();
|
||||
}
|
||||
|
||||
@ -129,7 +126,7 @@ namespace OWML.ModHelper.Menus
|
||||
|
||||
public IModToggleInput AddToggleInput(IModToggleInput input, int index)
|
||||
{
|
||||
ToggleInputs.Add(input);
|
||||
_inputs.Add(input);
|
||||
AddInput(input, index);
|
||||
return input;
|
||||
}
|
||||
@ -142,7 +139,7 @@ namespace OWML.ModHelper.Menus
|
||||
|
||||
public IModSliderInput AddSliderInput(IModSliderInput input, int index)
|
||||
{
|
||||
SliderInputs.Add(input);
|
||||
_inputs.Add(input);
|
||||
AddInput(input, index);
|
||||
return input;
|
||||
}
|
||||
@ -155,7 +152,7 @@ namespace OWML.ModHelper.Menus
|
||||
|
||||
public IModSelectorInput AddSelectorInput(IModSelectorInput input, int index)
|
||||
{
|
||||
SelectorInputs.Add(input);
|
||||
_inputs.Add(input);
|
||||
AddInput(input, index);
|
||||
return input;
|
||||
}
|
||||
@ -168,7 +165,7 @@ namespace OWML.ModHelper.Menus
|
||||
|
||||
public IModTextInput AddTextInput(IModTextInput input, int index)
|
||||
{
|
||||
TextInputs.Add(input);
|
||||
_inputs.Add(input);
|
||||
AddInput(input, index);
|
||||
return input;
|
||||
}
|
||||
@ -181,7 +178,7 @@ namespace OWML.ModHelper.Menus
|
||||
|
||||
public IModComboInput AddComboInput(IModComboInput input, int index)
|
||||
{
|
||||
ComboInputs.Add(input);
|
||||
_inputs.Add(input);
|
||||
AddInput(input, index);
|
||||
return input;
|
||||
}
|
||||
@ -194,7 +191,7 @@ namespace OWML.ModHelper.Menus
|
||||
|
||||
public IModNumberInput AddNumberInput(IModNumberInput input, int index)
|
||||
{
|
||||
NumberInputs.Add(input);
|
||||
_inputs.Add(input);
|
||||
AddInput(input, index);
|
||||
return input;
|
||||
}
|
||||
|
||||
@ -65,9 +65,9 @@ namespace OWML.ModHelper.Menus
|
||||
PopupManager.Initialize(inputMenu);
|
||||
ModsMenu.Initialize(this, MainMenu);
|
||||
}
|
||||
catch (Exception)
|
||||
catch (Exception ex)
|
||||
{
|
||||
_console.WriteLine("Menu system crashed.", MessageType.Error);
|
||||
_console.WriteLine($"Menu system crashed: {ex}", MessageType.Error);
|
||||
}
|
||||
}
|
||||
|
||||
@ -78,9 +78,9 @@ namespace OWML.ModHelper.Menus
|
||||
PauseMenu.Initialize(settingsManager);
|
||||
ModsMenu.Initialize(this, PauseMenu);
|
||||
}
|
||||
catch (Exception)
|
||||
catch (Exception ex)
|
||||
{
|
||||
_console.WriteLine("Menu system crashed.", MessageType.Error);
|
||||
_console.WriteLine($"Menu system crashed: {ex}", MessageType.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user