Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

load setting slot if it exists at game start #120

Closed
wants to merge 12 commits into from
7 changes: 5 additions & 2 deletions source/Patches/CustomOption/Generate.cs
Original file line number Diff line number Diff line change
Expand Up @@ -513,10 +513,10 @@ public class Generate
public static void GenerateAll()
{
var num = 0;

Patches.ExportButton = new Export(num++);
Patches.ImportButton = new Import(num++);

CrewInvestigativeRoles = new CustomHeaderOption(num++, MultiMenu.crewmate, "Crewmate Investigative Roles");
AurialOn = new CustomNumberOption(num++, MultiMenu.crewmate, $"<color=#B34D99FF>Aurial</color>", 0f, 0f, 100f, 10f,
PercentFormat);
Expand Down Expand Up @@ -1314,6 +1314,9 @@ public static void GenerateAll()
Underdog = new CustomHeaderOption(num++, MultiMenu.modifiers, "<color=#FF0000FF>Underdog</color>");
UnderdogKillBonus = new CustomNumberOption(num++, MultiMenu.modifiers, "Kill Cooldown Bonus", 5f, 2.5f, 10f, 2.5f, CooldownFormat);
UnderdogIncreasedKC = new CustomToggleOption(num++, MultiMenu.modifiers, "Increased Kill Cooldown When 2+ Imps", true);

Patches.ExportButton = new Export(num++);
Patches.ImportButton = new Import(num++);
}
}
}
35 changes: 29 additions & 6 deletions source/Patches/CustomOption/Import.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ public class Import : CustomButtonOption
protected internal Import(int id) : base(id, MultiMenu.main, "Load Custom Settings")
{
Do = ToDo;
TryLoadExistingFile();
}


Expand All @@ -30,6 +31,7 @@ private List<OptionBehaviour> CreateOptions()
var togglePrefab = Object.FindObjectOfType<ToggleOption>();

foreach (var button in SlotButtons)
{
if (button.Setting != null)
{
button.Setting.gameObject.SetActive(true);
Expand All @@ -45,6 +47,7 @@ private List<OptionBehaviour> CreateOptions()
button.OptionCreated();
options.Add(toggle);
}
}

return options;
}
Expand Down Expand Up @@ -107,7 +110,7 @@ protected internal void ToDo()
__instance.Children = new Il2CppReferenceArray<OptionBehaviour>(options.ToArray());
}

private void ImportSlot(int slotId)
private void ImportSlot(int slotId, bool DoAction = true)
{
System.Console.WriteLine(slotId);

Expand All @@ -120,18 +123,17 @@ private void ImportSlot(int slotId)
}
catch
{
Cancel(FlashRed);
if (DoAction) Cancel(FlashRed);
return;
}


var splitText = text.Split("\n").ToList();

while (splitText.Count > 0)
{
var name = splitText[0].Trim();
splitText.RemoveAt(0);
var option = AllOptions.FirstOrDefault(o => o.Name.Equals(name, StringComparison.Ordinal));
var option = AllOptions.Find(o => o.Name.Equals(name, StringComparison.Ordinal));
if (option == null)
{
try
Expand Down Expand Up @@ -161,11 +163,32 @@ private void ImportSlot(int slotId)
}
}

Rpc.SendRpc();
if (DoAction)
{
Rpc.SendRpc();
Cancel(FlashGreen);
}

Cancel(FlashGreen);
return;
}

private void TryLoadExistingFile()
{
if (File.Exists(Application.persistentDataPath + $"\\GameSettings-Slot{TownOfUs.PreferredFile.Value}"))
{
ImportSlot(TownOfUs.PreferredFile.Value, false);
return;
}

for (int i = 1; i < 6; i++)
{
if (File.Exists(Application.persistentDataPath + $"\\GameSettings-Slot{i}"))
{
ImportSlot(i, false);
return;
}
}
}

private IEnumerator FlashGreen()
{
Expand Down
26 changes: 3 additions & 23 deletions source/TownOfUs.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
using System;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Reflection;
using BepInEx;
using BepInEx.Configuration;
Expand Down Expand Up @@ -117,12 +114,9 @@ public class TownOfUs : BasePlugin

private static DLoadImage _iCallLoadImage;


private Harmony _harmony;

public ConfigEntry<string> Ip { get; set; }

public ConfigEntry<ushort> Port { get; set; }
public static ConfigEntry<int> PreferredFile { get; set; }
public static string RuntimeLocation;
public override void Load()
{
Expand All @@ -131,6 +125,7 @@ public override void Load()
System.Console.WriteLine("000.000.000.000/000000000000000000");

_harmony = new Harmony("com.slushiegoose.townofus");
PreferredFile = Config.Bind("Loading mod settings", "Preferred slot", 1, "which slot(1 - 5) is preferred to be loaded at game start");

Generate.GenerateAll();

Expand Down Expand Up @@ -217,22 +212,7 @@ public override void Load()

// RegisterInIl2CppAttribute.Register();

Ip = Config.Bind("Custom", "Ipv4 or Hostname", "127.0.0.1");
Port = Config.Bind("Custom", "Port", (ushort) 22023);
var defaultRegions = ServerManager.DefaultRegions.ToList();
var ip = Ip.Value;
if (Uri.CheckHostName(Ip.Value).ToString() == "Dns")
foreach (var address in Dns.GetHostAddresses(Ip.Value))
{
if (address.AddressFamily != AddressFamily.InterNetwork)
continue;
ip = address.ToString();
break;
}

ServerManager.DefaultRegions = defaultRegions.ToArray();

SceneManager.add_sceneLoaded((Action<Scene, LoadSceneMode>) ((scene, loadSceneMode) =>
SceneManager.add_sceneLoaded((Action<Scene, LoadSceneMode>) ((_, __) =>
{
try { ModManager.Instance.ShowModStamp(); }
catch { }
Expand Down