Fixed mimic compability

Updated to LLL 1.4.0
Fixed config syncing
This commit is contained in:
LadyAliceMargatroid 2025-01-17 09:33:57 -08:00
parent f37cded831
commit 8e00725dd0
7 changed files with 71 additions and 22 deletions

View File

@ -25,10 +25,21 @@ namespace ScarletMansionMimicsPatch {
public static void Activate() {
MimicsAPI.GetAPI().RegisterMimicEventHandler(new Patch.SDMMimicEventHandler());
//Mimics.Mimics.InteriorWhitelist.Add();
AddToWhiteList("sdmFoyer");
AddToWhiteList("sdmBasement");
Plugin.logger.LogError(string.Join(", ", Mimics.Mimics.InteriorWhitelist));
Plugin.Instance.harmony.PatchAll(typeof(Patch));
}
private static void AddToWhiteList(string dungeonName){
dungeonName = dungeonName.ToLower().Trim();
if (!Mimics.Mimics.InteriorWhitelist.Contains(dungeonName)){
Mimics.Mimics.InteriorWhitelist.Add(dungeonName);
}
}
public class SDMMimicEventHandler : MimicEventHandler
{
@ -73,6 +84,11 @@ namespace ScarletMansionMimicsPatch {
[HarmonyPatch("Mimics.Mimics+RoundManagerPatch, Mimics", "SetExitIDsPatch")]
public static void SetExitIDsPatchPrefix(){
colorBlindModeLastValue = Mimics.Mimics.ColorBlindMode;
var whitelist = string.Join(", ", Mimics.Mimics.InteriorWhitelist);
// Plugin.logger.LogError();
//var
//Plugin.logger.LogError(string.Join(", ", Mimics.Mimics.InteriorWhitelist));
}
[HarmonyPostfix]

View File

@ -101,8 +101,6 @@ namespace ScarletMansion.Configs {
logger.LogDebug("Successfully synced config with host.");
}
[HarmonyPatch(typeof(GameNetcodeStuff.PlayerControllerB), "ConnectClientToPlayerObject")]
[HarmonyPostfix]
public static void InitializeLocalPlayer(){
if (IsHost){
MessageManager.RegisterNamedMessageHandler(GetRequestMessage, OnRequestSync);
@ -115,11 +113,6 @@ namespace ScarletMansion.Configs {
RequestSync();
}
[HarmonyPatch(typeof(GameNetworkManager), "StartDisconnect")]
[HarmonyPostfix]
public static void PlayerLeave(){
RevertSync();
}
public override string ToString() {
var variables = typeof(T).GetFields(BindingFlags.Public | BindingFlags.Instance);

View File

@ -0,0 +1,30 @@
using HarmonyLib;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
namespace ScarletMansion.Configs
{
public class ConfigPatch {
[HarmonyPatch(typeof(GameNetcodeStuff.PlayerControllerB), "ConnectClientToPlayerObject")]
[HarmonyPostfix]
public static void InitializeLocalPlayerPatch(){
ConfigMain.InitializeLocalPlayer();
ConfigDungeonFoyer.InitializeLocalPlayer();
ConfigDungeonBasement.InitializeLocalPlayer();
}
[HarmonyPatch(typeof(GameNetworkManager), "StartDisconnect")]
[HarmonyPostfix]
public static void PlayerLeavePatch(){
ConfigMain.RevertSync();
ConfigDungeonFoyer.RevertSync();
ConfigDungeonBasement.RevertSync();
}
}
}

View File

@ -79,7 +79,9 @@ namespace ScarletMansion.GamePatch {
[HarmonyPatch(typeof(RoundManager), "Start")]
[HarmonyPostfix]
public static void RoundManagerStartPatch(ref RoundManager __instance) {
MyOwnCoroutine.AddCoroutine(UpdateNetworkConfig(__instance));
MyOwnCoroutine.AddCoroutine(UpdateConfigMain());
MyOwnCoroutine.AddCoroutine(UpdateConfigDungeon(ConfigDungeonFoyer.Instance));
MyOwnCoroutine.AddCoroutine(UpdateConfigDungeon(ConfigDungeonBasement.Instance));
}
public static bool GameReadNullCheck(object target, string targetString, string error) {
@ -368,8 +370,8 @@ namespace ScarletMansion.GamePatch {
}
private static IEnumerator UpdateNetworkConfig(RoundManager roundManager){
while(ConfigMain.Synced == false || ConfigDungeonFoyer.Synced == false){
private static IEnumerator UpdateConfigMain(){
while(ConfigMain.Synced == false){
yield return null;
}
@ -377,13 +379,20 @@ namespace ScarletMansion.GamePatch {
scrap.UpdateItemValue();
}
ConfigDungeonFoyer.Instance.dungeon.Length = ConfigDungeonFoyer.Instance.mainPathLengthValue.GetDungenIntRange();
Plugin.logger.LogDebug("Config Main updated");
}
ConfigDungeonFoyer.Instance.dungeonExtended.OverrideKeyPrefab = Assets.key.GetConfigItemEntry().enabled ?
Assets.key.item.spawnPrefab :
typeof(DungeonLoader).GetField("defaultKeyPrefab", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static).GetValue(null) as GameObject;
private static IEnumerator UpdateConfigDungeon<T>(ConfigDungeon<T> instance) where T: ConfigDungeon<T>{
while(instance.SyncedLocal == false){
yield return null;
}
Plugin.logger.LogDebug("Set networked config values");
var defaultKeyPrefab = typeof(DungeonLoader).GetField("defaultKeyPrefab", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static).GetValue(null) as GameObject;
instance.dungeon.Length = instance.mainPathLengthValue.GetDungenIntRange();
instance.dungeonExtended.OverrideKeyPrefab = Assets.key.GetConfigItemEntry().enabled ? Assets.key.item.spawnPrefab : defaultKeyPrefab;
Plugin.logger.LogDebug($"Config {typeof(T)} updated");
}
}

View File

@ -23,9 +23,9 @@ namespace ScarletMansion {
[BepInPlugin(modGUID, modName, modVersion)]
[BepInDependency("imabatby.lethallevelloader", "1.3.13")]
[BepInDependency("imabatby.lethallevelloader", "1.4.0")]
[BepInDependency("evaisa.lethallib", "0.13.2")]
[BepInDependency("dev.ladyalice.dungenplus", "1.3.3")]
[BepInDependency("dev.ladyalice.dungenplus", "1.3.4")]
[BepInDependency("dev.ladyalice.scarletmansion.foyer")]
[BepInDependency("dev.ladyalice.scarletmansion.basement")]
//[BepInDependency(ModCompability.advancedCompanyGuid, BepInDependency.DependencyFlags.SoftDependency)]
@ -37,7 +37,7 @@ namespace ScarletMansion {
public class Plugin : BaseUnityPlugin {
public const string modGUID = "dev.ladyalice.scarletmansion";
private const string modName = "Scarlet Devil Mansion";
private const string modVersion = "2.1.1";
private const string modVersion = "2.2.0";
public readonly Harmony harmony = new Harmony(modGUID);
@ -82,9 +82,7 @@ namespace ScarletMansion {
harmony.PatchAll(typeof(GeneratePathPatch));
harmony.PatchAll(typeof(ConfigMain));
harmony.PatchAll(typeof(ConfigDungeonFoyer));
harmony.PatchAll(typeof(ConfigDungeonBasement));
harmony.PatchAll(typeof(ConfigPatch));
SetupForNetcodePatcher();

View File

@ -163,6 +163,7 @@
<Compile Include="Configs\ConfigDungeonFoyer.cs" />
<Compile Include="Configs\ConfigDungeon.cs" />
<Compile Include="Configs\ConfigManagerData.cs" />
<Compile Include="Configs\ConfigPatch.cs" />
<Compile Include="Configs\Enemies.cs" />
<Compile Include="Configs\IConfigDungeon.cs" />
<Compile Include="Configs\Items.cs" />

View File

@ -28,6 +28,8 @@ namespace ScarletMansion {
public static bool Synced { get; internal set; }
public bool SyncedLocal => Synced;
protected void InitInstance(T instance) {
Default = instance;
Instance = instance;