Skip to content

Commit fec3221

Browse files
authored
colors, readme and menu cleanup (#333)
1 parent 1f5b4bd commit fec3221

File tree

6 files changed

+42
-52
lines changed

6 files changed

+42
-52
lines changed

Readme.md

+6-13
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Outer Wilds Mod Loader
22

3-
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.
3+
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.
44

55
## How it works
66

@@ -20,21 +20,13 @@ Manual install:
2020
2. [Download Outer Wilds mods](https://outerwildsmods.com/mods) and put them in the Mods folder, each mod in a separate folder.
2121
3. Start the game with OWML.Launcher.exe.
2222

23-
## Sample mod
24-
25-
One mod is included as an example. It's disabled by default, enable in manifest.json.
26-
27-
|Sample mod|Description|
28-
|----------|-----------|
29-
|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.|
30-
3123
## For modders
3224

33-
Refer to the sample mods for examples.
25+
Refer to the sample mods in the source code for examples. These mods are not included in releases.
3426

3527
### Get started
3628

37-
1. Create a class library project targeting .Net Framework 3.5.
29+
1. Create a C# class library project targeting .Net Framework 3.5.
3830
2. Install the [OWML Nuget package](https://www.nuget.org/packages/OWML/).
3931
3. Reference the following files in {gamePath}\OuterWilds_Data\Managed:
4032
* Assembly-CSharp.dll
@@ -46,11 +38,12 @@ For more info, see [For modders](https://github.com/amazingalek/owml/wiki/For-mo
4638

4739
## Configuration
4840

49-
OWML is configured by OWML.Config.json:
41+
OWML is configured in the in-game MODS menu, or in OWML.Config.json:
5042

5143
|Key|Description|
5244
|---|-----------|
5345
|gamePath|The path to the game files. OWML will try to locate the game automatically.|
46+
|debugMode|If enabled, a lot more information is written to the console. Intended for developers.|
5447
|combinationsBlockInput|If this is true, mod input combinations will block game input.|
5548

5649
Each mod is defined in a manifest.json file:
@@ -65,7 +58,7 @@ Each mod is defined in a manifest.json file:
6558
|owmlVersion|The version of OWML the mod was built for.|
6659
|dependencies|Array of dependency names. Make sure to use the unique name.|
6760

68-
Each mod can be configured with an **optional** config.json file:
61+
Each mod can be configured in the in-game MODS menu, or in config.json:
6962

7063
|Key|Description|
7164
|---|-----------|

src/OWML.Launcher/OWML.Manifest.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"author": "Alek",
33
"name": "OWML",
44
"uniqueName": "Alek.OWML",
5-
"version": "1.1.5",
5+
"version": "1.1.6",
66
"description": "The mod loader and mod framework for Outer Wilds",
77
"minGameVersion": "1.0.7.0",
88
"maxGameVersion": "1.0.7.481"

src/OWML.Logging/ConsoleUtils.cs

+3-4
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,14 @@ public static void WriteByType(MessageType type, string line)
1717
MessageType.Error => ConsoleColor.Red,
1818
MessageType.Warning => ConsoleColor.Yellow,
1919
MessageType.Success => ConsoleColor.Green,
20-
MessageType.Message => ConsoleColor.Gray,
20+
MessageType.Message => ConsoleColor.White,
2121
MessageType.Info => ConsoleColor.Cyan,
2222
MessageType.Fatal => ConsoleColor.Magenta,
23-
MessageType.Debug => ConsoleColor.Blue,
24-
_ => ConsoleColor.Gray
23+
MessageType.Debug => ConsoleColor.DarkGray,
24+
_ => ConsoleColor.White
2525
};
2626

2727
Console.WriteLine(line);
28-
Console.ForegroundColor = ConsoleColor.Gray;
2928
}
3029
}
3130
}

src/OWML.Logging/UnityLogger.cs

+1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ private void OnLogMessageReceived(string message, string stackTrace, LogType typ
3434
{
3535
LogType.Error => MessageType.Error,
3636
LogType.Exception => MessageType.Error,
37+
LogType.Warning => MessageType.Warning,
3738
_ => MessageType.Debug
3839
};
3940

src/OWML.ModHelper.Menus/ModMenu.cs

+27-30
Original file line numberDiff line numberDiff line change
@@ -18,29 +18,31 @@ public class ModMenu : IModMenu
1818

1919
public List<IModButtonBase> BaseButtons { get; private set; }
2020

21-
public List<IModToggleInput> ToggleInputs { get; private set; }
21+
public List<IModButton> Buttons => BaseButtons.OfType<IModButton>().ToList();
2222

23-
public List<IModSliderInput> SliderInputs { get; private set; }
23+
public List<IModLayoutButton> LayoutButtons => BaseButtons.OfType<IModLayoutButton>().ToList();
2424

25-
public List<IModSelectorInput> SelectorInputs { get; private set; }
25+
public List<IModPromptButton> PromptButtons => BaseButtons.OfType<IModPromptButton>().ToList();
2626

27-
public List<IModTextInput> TextInputs { get; private set; }
27+
public List<IModToggleInput> ToggleInputs => _inputs.OfType<IModToggleInput>().ToList();
2828

29-
public List<IModComboInput> ComboInputs { get; private set; }
29+
public List<IModSliderInput> SliderInputs => _inputs.OfType<IModSliderInput>().ToList();
3030

31-
public List<IModNumberInput> NumberInputs { get; private set; }
31+
public List<IModSelectorInput> SelectorInputs => _inputs.OfType<IModSelectorInput>().ToList();
3232

33-
public List<IModButton> Buttons => BaseButtons.OfType<IModButton>().ToList();
33+
public List<IModTextInput> TextInputs => _inputs.OfType<IModTextInput>().ToList();
3434

35-
public List<IModLayoutButton> LayoutButtons => BaseButtons.OfType<IModLayoutButton>().ToList();
35+
public List<IModComboInput> ComboInputs => _inputs.OfType<IModComboInput>().ToList();
3636

37-
public List<IModPromptButton> PromptButtons => BaseButtons.OfType<IModPromptButton>().ToList();
37+
public List<IModNumberInput> NumberInputs => _inputs.OfType<IModNumberInput>().ToList();
3838

3939
public List<IModSeparator> Separators { get; private set; }
4040

4141
protected LayoutGroup Layout;
4242
protected IModConsole Console;
4343

44+
private List<IModInputBase> _inputs;
45+
4446
public ModMenu(IModConsole console) =>
4547
Console = console;
4648

@@ -58,23 +60,18 @@ public virtual void Initialize(Menu menu, LayoutGroup layoutGroup)
5860
Menu = menu;
5961
Layout = layoutGroup;
6062

61-
var promptButtons = Menu.GetComponentsInChildren<ButtonWithHotkeyImageElement>(true)
62-
.Select(x => x.GetComponent<Button>()).ToList();
63-
BaseButtons = promptButtons.Select(x => new ModPromptButton(x, this, Console)).Cast<IModButtonBase>().ToList();
64-
65-
var ordinaryButtons = Menu.GetComponentsInChildren<Button>(true).Except(promptButtons);
66-
BaseButtons.AddRange(ordinaryButtons.Select(x => new ModTitleButton(x, this)).Cast<IModButtonBase>().ToList());
63+
var promptButtons = Menu.GetComponentsInChildren<ButtonWithHotkeyImageElement>(true).Select(x => x.GetComponent<Button>()).ToList();
64+
BaseButtons = new List<IModButtonBase>()
65+
.Concat(promptButtons.Select(x => new ModPromptButton(x, this, Console)).Cast<IModButtonBase>())
66+
.Concat(Menu.GetComponentsInChildren<Button>(true).Except(promptButtons).Select(x => new ModTitleButton(x, this)).Cast<IModButtonBase>())
67+
.ToList();
6768

68-
ToggleInputs = Menu.GetComponentsInChildren<TwoButtonToggleElement>(true)
69-
.Select(x => new ModToggleInput(x, this)).Cast<IModToggleInput>().ToList();
70-
SliderInputs = Menu.GetComponentsInChildren<SliderElement>(true)
71-
.Select(x => new ModSliderInput(x, this)).Cast<IModSliderInput>().ToList();
72-
SelectorInputs = Menu.GetComponentsInChildren<OptionsSelectorElement>(true)
73-
.Select(x => new ModSelectorInput(x, this)).Cast<IModSelectorInput>().ToList();
69+
_inputs = new List<IModInputBase>()
70+
.Concat(Menu.GetComponentsInChildren<TwoButtonToggleElement>(true).Select(x => new ModToggleInput(x, this)).Cast<IModInputBase>())
71+
.Concat(Menu.GetComponentsInChildren<SliderElement>(true).Select(x => new ModSliderInput(x, this)).Cast<IModInputBase>())
72+
.Concat(Menu.GetComponentsInChildren<OptionsSelectorElement>(true).Select(x => new ModSelectorInput(x, this)).Cast<IModInputBase>())
73+
.ToList();
7474

75-
TextInputs = new List<IModTextInput>();
76-
NumberInputs = new List<IModNumberInput>();
77-
ComboInputs = new List<IModComboInput>();
7875
Separators = new List<IModSeparator>();
7976
}
8077

@@ -129,7 +126,7 @@ public IModToggleInput AddToggleInput(IModToggleInput input) =>
129126

130127
public IModToggleInput AddToggleInput(IModToggleInput input, int index)
131128
{
132-
ToggleInputs.Add(input);
129+
_inputs.Add(input);
133130
AddInput(input, index);
134131
return input;
135132
}
@@ -142,7 +139,7 @@ public IModSliderInput AddSliderInput(IModSliderInput input) =>
142139

143140
public IModSliderInput AddSliderInput(IModSliderInput input, int index)
144141
{
145-
SliderInputs.Add(input);
142+
_inputs.Add(input);
146143
AddInput(input, index);
147144
return input;
148145
}
@@ -155,7 +152,7 @@ public IModSelectorInput AddSelectorInput(IModSelectorInput input) =>
155152

156153
public IModSelectorInput AddSelectorInput(IModSelectorInput input, int index)
157154
{
158-
SelectorInputs.Add(input);
155+
_inputs.Add(input);
159156
AddInput(input, index);
160157
return input;
161158
}
@@ -168,7 +165,7 @@ public IModTextInput AddTextInput(IModTextInput input) =>
168165

169166
public IModTextInput AddTextInput(IModTextInput input, int index)
170167
{
171-
TextInputs.Add(input);
168+
_inputs.Add(input);
172169
AddInput(input, index);
173170
return input;
174171
}
@@ -181,7 +178,7 @@ public IModComboInput AddComboInput(IModComboInput input) =>
181178

182179
public IModComboInput AddComboInput(IModComboInput input, int index)
183180
{
184-
ComboInputs.Add(input);
181+
_inputs.Add(input);
185182
AddInput(input, index);
186183
return input;
187184
}
@@ -194,7 +191,7 @@ public IModNumberInput AddNumberInput(IModNumberInput input) =>
194191

195192
public IModNumberInput AddNumberInput(IModNumberInput input, int index)
196193
{
197-
NumberInputs.Add(input);
194+
_inputs.Add(input);
198195
AddInput(input, index);
199196
return input;
200197
}

src/OWML.ModHelper.Menus/ModMenus.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@ private void InitMainMenu(TitleScreenManager titleScreenManager)
6565
PopupManager.Initialize(inputMenu);
6666
ModsMenu.Initialize(this, MainMenu);
6767
}
68-
catch (Exception)
68+
catch (Exception ex)
6969
{
70-
_console.WriteLine("Menu system crashed.", MessageType.Error);
70+
_console.WriteLine($"Menu system crashed: {ex}", MessageType.Error);
7171
}
7272
}
7373

@@ -78,9 +78,9 @@ private void InitPauseMenu(SettingsManager settingsManager)
7878
PauseMenu.Initialize(settingsManager);
7979
ModsMenu.Initialize(this, PauseMenu);
8080
}
81-
catch (Exception)
81+
catch (Exception ex)
8282
{
83-
_console.WriteLine("Menu system crashed.", MessageType.Error);
83+
_console.WriteLine($"Menu system crashed: {ex}", MessageType.Error);
8484
}
8585
}
8686
}

0 commit comments

Comments
 (0)