Skip to content

Commit

Permalink
colors, readme and menu cleanup (#333)
Browse files Browse the repository at this point in the history
  • Loading branch information
amazingalek authored Dec 25, 2020
1 parent 1f5b4bd commit fec3221
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 52 deletions.
19 changes: 6 additions & 13 deletions Readme.md
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -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
Expand All @@ -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:
Expand All @@ -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|
|---|-----------|
Expand Down
2 changes: 1 addition & 1 deletion src/OWML.Launcher/OWML.Manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
7 changes: 3 additions & 4 deletions src/OWML.Logging/ConsoleUtils.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,14 @@ public static void WriteByType(MessageType type, string line)
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;
}
}
}
1 change: 1 addition & 0 deletions src/OWML.Logging/UnityLogger.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ private void OnLogMessageReceived(string message, string stackTrace, LogType typ
{
LogType.Error => MessageType.Error,
LogType.Exception => MessageType.Error,
LogType.Warning => MessageType.Warning,
_ => MessageType.Debug
};

Expand Down
57 changes: 27 additions & 30 deletions src/OWML.ModHelper.Menus/ModMenu.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,29 +18,31 @@ public class ModMenu : IModMenu

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

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

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

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

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

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

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

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

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

public List<IModPromptButton> PromptButtons => BaseButtons.OfType<IModPromptButton>().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;

Expand All @@ -58,23 +60,18 @@ public virtual void Initialize(Menu menu, LayoutGroup layoutGroup)
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 ordinaryButtons = Menu.GetComponentsInChildren<Button>(true).Except(promptButtons);
BaseButtons.AddRange(ordinaryButtons.Select(x => new ModTitleButton(x, this)).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();

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();
_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();

TextInputs = new List<IModTextInput>();
NumberInputs = new List<IModNumberInput>();
ComboInputs = new List<IModComboInput>();
Separators = new List<IModSeparator>();
}

Expand Down Expand Up @@ -129,7 +126,7 @@ public IModToggleInput AddToggleInput(IModToggleInput input) =>

public IModToggleInput AddToggleInput(IModToggleInput input, int index)
{
ToggleInputs.Add(input);
_inputs.Add(input);
AddInput(input, index);
return input;
}
Expand All @@ -142,7 +139,7 @@ public IModSliderInput AddSliderInput(IModSliderInput input) =>

public IModSliderInput AddSliderInput(IModSliderInput input, int index)
{
SliderInputs.Add(input);
_inputs.Add(input);
AddInput(input, index);
return input;
}
Expand All @@ -155,7 +152,7 @@ public IModSelectorInput AddSelectorInput(IModSelectorInput input) =>

public IModSelectorInput AddSelectorInput(IModSelectorInput input, int index)
{
SelectorInputs.Add(input);
_inputs.Add(input);
AddInput(input, index);
return input;
}
Expand All @@ -168,7 +165,7 @@ public IModTextInput AddTextInput(IModTextInput input) =>

public IModTextInput AddTextInput(IModTextInput input, int index)
{
TextInputs.Add(input);
_inputs.Add(input);
AddInput(input, index);
return input;
}
Expand All @@ -181,7 +178,7 @@ public IModComboInput AddComboInput(IModComboInput input) =>

public IModComboInput AddComboInput(IModComboInput input, int index)
{
ComboInputs.Add(input);
_inputs.Add(input);
AddInput(input, index);
return input;
}
Expand All @@ -194,7 +191,7 @@ public IModNumberInput AddNumberInput(IModNumberInput input) =>

public IModNumberInput AddNumberInput(IModNumberInput input, int index)
{
NumberInputs.Add(input);
_inputs.Add(input);
AddInput(input, index);
return input;
}
Expand Down
8 changes: 4 additions & 4 deletions src/OWML.ModHelper.Menus/ModMenus.cs
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,9 @@ private void InitMainMenu(TitleScreenManager titleScreenManager)
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);
}
}

Expand All @@ -78,9 +78,9 @@ private void InitPauseMenu(SettingsManager settingsManager)
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);
}
}
}
Expand Down

0 comments on commit fec3221

Please sign in to comment.