mirror of
https://github.com/soarqin/DSP_Mods.git
synced 2026-08-06 02:40:24 +08:00
60 lines
2.5 KiB
C#
60 lines
2.5 KiB
C#
using System;
|
|
using HarmonyLib;
|
|
using UnityEngine;
|
|
using UXAssist.Common;
|
|
using UXAssist.Common.GameConstants;
|
|
using UXAssist.Common.ModFeatures;
|
|
using UXAssist.Common.Utils;
|
|
using CheatEnabler;
|
|
|
|
namespace CheatEnabler.Functions.DysonSphere;
|
|
|
|
[ModFeature("FrameRemovalFunctions")]
|
|
public static class FrameRemovalFunctions
|
|
{
|
|
public static void RemoveAllFrames()
|
|
{
|
|
var resolved = DysonSphereResolver.ResolveEditorOrLocalSphere();
|
|
if (resolved == null) return;
|
|
var (dysonSphere, star) = resolved.Value;
|
|
|
|
UIMessageBox.Show(Localization.CheatEnabler.Translate(), string.Format(Localization.ThisWillRemoveAllFramesOn0AreYouSure.Translate(), star.displayName), Localization.Cancel.Translate(), Localization.OK.Translate(), UIMessageBox.QUESTION, null, () =>
|
|
{
|
|
foreach (var dysonSphereLayer in dysonSphere.layersIdBased)
|
|
{
|
|
if (dysonSphereLayer == null) continue;
|
|
for (var i = dysonSphereLayer.nodeCursor - 1; i >= 0; i--)
|
|
{
|
|
var dysonNode = dysonSphereLayer.nodePool[i];
|
|
if (dysonNode == null || dysonNode.id != i) continue;
|
|
if (dysonNode.frames.Count > 0)
|
|
dysonNode.frames.Clear();
|
|
dysonNode.RecalcSpReq();
|
|
}
|
|
for (var i = dysonSphereLayer.shellCursor - 1; i >= 0; i--)
|
|
{
|
|
var dysonShell = dysonSphereLayer.shellPool[i];
|
|
if (dysonShell == null || dysonShell.id != i) continue;
|
|
if (dysonShell.frames.Count > 0)
|
|
dysonShell.frames.Clear();
|
|
}
|
|
for (var i = dysonSphereLayer.frameCursor - 1; i >= 0; i--)
|
|
{
|
|
var dysonFrame = dysonSphereLayer.framePool[i];
|
|
if (dysonFrame == null || dysonFrame.id != i) continue;
|
|
dysonFrame.Free();
|
|
dysonSphereLayer.framePool[i] = null;
|
|
}
|
|
dysonSphereLayer.frameCursor = 1;
|
|
dysonSphereLayer.frameRecycleCursor = 0;
|
|
dysonSphereLayer.SetFrameCapacity(DysonSphereConstants.DefaultLayerPoolCapacity);
|
|
DysonSphereReflection.SetTotalFrameSP(dysonSphereLayer, 0);
|
|
}
|
|
dysonSphere.CheckAutoNodes();
|
|
dysonSphere.PickAutoNode();
|
|
dysonSphere.modelRenderer.RebuildModels();
|
|
dysonSphere.needRecalculatePower = true;
|
|
});
|
|
}
|
|
}
|