64 lines
1.6 KiB
C#
64 lines
1.6 KiB
C#
|
using HarmonyLib;
|
|||
|
using System;
|
|||
|
using System.Collections;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Threading.Tasks;
|
|||
|
using UnityEngine;
|
|||
|
using UnityEngine.SceneManagement;
|
|||
|
|
|||
|
using UnityEngine.Rendering.HighDefinition;
|
|||
|
using UnityEngine.Rendering;
|
|||
|
|
|||
|
namespace ScarletMansionSeichiPatch {
|
|||
|
public class Patch {
|
|||
|
|
|||
|
public static void Activate() {
|
|||
|
Plugin.Instance.harmony.PatchAll(typeof(Patch));
|
|||
|
}
|
|||
|
|
|||
|
public static Volume GetVolume(){
|
|||
|
|
|||
|
GameObject[] rootGameObjects = null;
|
|||
|
|
|||
|
for(var i = 0; i < SceneManager.sceneCount; i++){
|
|||
|
var scene = SceneManager.GetSceneAt(i);
|
|||
|
if (scene.name.ToLowerInvariant() == "seichi") {
|
|||
|
rootGameObjects = scene.GetRootGameObjects();
|
|||
|
Plugin.logger.LogInfo("Found Seichi scene");
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (rootGameObjects == null) return null;
|
|||
|
|
|||
|
foreach(var root in rootGameObjects){
|
|||
|
if (root.name.ToLowerInvariant() == "environment") {
|
|||
|
var item = root.transform.Find("RaphtaliaVolume");
|
|||
|
if (item != null) {
|
|||
|
return item.GetComponentInChildren<Volume>(true);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
[HarmonyPatch(typeof(RoundManager), "SetPowerOffAtStart")]
|
|||
|
[HarmonyPostfix]
|
|||
|
public static void ShipLandedPatch(ref RoundManager __instance){
|
|||
|
if (!ScarletMansion.DunGenPatch.Patch.active) return;
|
|||
|
|
|||
|
var volume = GetVolume();
|
|||
|
if (volume == null) {
|
|||
|
Plugin.logger.LogWarning($"Couldn't setup SDM/Seichi compatibility feature");
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
volume.enabled = true;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|