Add CHARACTER console command alongside the F9 keybind
This commit is contained in:
+55
-7
@@ -1,9 +1,11 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Text;
|
||||||
using RedLoader;
|
using RedLoader;
|
||||||
using RedLoader.Utils;
|
using RedLoader.Utils;
|
||||||
using Sons.Wearable.Race;
|
using Sons.Wearable.Race;
|
||||||
using SonsSdk;
|
using SonsSdk;
|
||||||
|
using SonsSdk.Attributes;
|
||||||
using TheForest.Utils;
|
using TheForest.Utils;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
@@ -27,7 +29,7 @@ public class CharacterSelect : SonsMod
|
|||||||
_configPath = Path.Combine(LoaderEnvironment.UserDataDirectory, "CharacterSelect.txt");
|
_configPath = Path.Combine(LoaderEnvironment.UserDataDirectory, "CharacterSelect.txt");
|
||||||
Load();
|
Load();
|
||||||
SdkEvents.OnAfterSpawn.Subscribe(OnSpawned);
|
SdkEvents.OnAfterSpawn.Subscribe(OnSpawned);
|
||||||
RLog.Msg($"CharacterSelect loaded. Saved race: {_index} ({(PlayerRace.Race)_index}). F9 cycles.");
|
RLog.Msg($"CharacterSelect loaded. Saved character: {_index} ({(PlayerRace.Race)_index}). Press F9 or type: character");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnSpawned()
|
private void OnSpawned()
|
||||||
@@ -37,32 +39,78 @@ public class CharacterSelect : SonsMod
|
|||||||
|
|
||||||
private void OnUpdate()
|
private void OnUpdate()
|
||||||
{
|
{
|
||||||
var system = LocalPlayer.RaceSystem;
|
if (!LocalPlayer.RaceSystem)
|
||||||
if (!system)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!_applied)
|
if (!_applied)
|
||||||
{
|
{
|
||||||
_applied = true;
|
_applied = true;
|
||||||
Apply(system, false);
|
ApplyIndex(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Input.GetKeyDown(KeyCode.F9))
|
if (Input.GetKeyDown(KeyCode.F9))
|
||||||
{
|
{
|
||||||
_index = (_index + 1) % RaceCount;
|
_index = (_index + 1) % RaceCount;
|
||||||
Apply(system, true);
|
ApplyIndex(true);
|
||||||
Save();
|
Save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Apply(PlayerRaceSystem system, bool announce)
|
[DebugCommand("character")]
|
||||||
|
private static void CharacterCommand(string args)
|
||||||
{
|
{
|
||||||
|
args = (args ?? string.Empty).Trim();
|
||||||
|
|
||||||
|
if (args.Length == 0)
|
||||||
|
{
|
||||||
|
ShowList();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args.Equals("next", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
_index = (_index + 1) % RaceCount;
|
||||||
|
ApplyIndex(true);
|
||||||
|
Save();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (int.TryParse(args, out var value) && value >= 0 && value < RaceCount)
|
||||||
|
{
|
||||||
|
_index = value;
|
||||||
|
ApplyIndex(true);
|
||||||
|
Save();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
SonsTools.ShowMessage("Usage: character [0-7] or character next", 5f);
|
||||||
|
RLog.Msg("Usage: character [0-7] or character next");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void ShowList()
|
||||||
|
{
|
||||||
|
var sb = new StringBuilder();
|
||||||
|
sb.AppendLine($"Current: {_index} ({(PlayerRace.Race)_index})");
|
||||||
|
for (int i = 0; i < RaceCount; i++)
|
||||||
|
sb.AppendLine($"{i}: {(PlayerRace.Race)i}");
|
||||||
|
|
||||||
|
var text = sb.ToString().TrimEnd();
|
||||||
|
SonsTools.ShowMessage(text, 8f);
|
||||||
|
RLog.Msg(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void ApplyIndex(bool announce)
|
||||||
|
{
|
||||||
|
var system = LocalPlayer.RaceSystem;
|
||||||
|
if (!system)
|
||||||
|
return;
|
||||||
|
|
||||||
var race = (PlayerRace.Race)_index;
|
var race = (PlayerRace.Race)_index;
|
||||||
system.ApplyRace(race);
|
system.ApplyRace(race);
|
||||||
if (announce)
|
if (announce)
|
||||||
SonsTools.ShowMessage($"{_index}: {race}");
|
SonsTools.ShowMessage($"{_index}: {race}");
|
||||||
RLog.Msg($"Applied race {_index} ({race})");
|
RLog.Msg($"Applied character {_index} ({race})");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void Load()
|
private static void Load()
|
||||||
|
|||||||
Reference in New Issue
Block a user