Files
7d2dXG/Mods/zzz_REBIRTH__Utils/Scripts/Manager/Inactive/OutbreakManagerRebirth.cs
Nathaniel Cosford 062dfab2cd Patched
2025-05-30 01:04:40 +09:30

90 lines
3.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Reflection;
using Audio;
public class OutbreakManagerRebirth
{
private static OutbreakManagerRebirth instance = null;
private static float outbreakUpdateCheck = 0f;
private static float outbreakUpdateTick = 10f;
public static bool HasInstance => instance != null;
public static OutbreakManagerRebirth Instance
{
get
{
return instance;
}
}
public static void Init()
{
OutbreakManagerRebirth.instance = new OutbreakManagerRebirth();
Log.Out("Starting Outbreak Manager");
RebirthVariables.isHerd = false;
RebirthVariables.stopWHSpawns = true;
RebirthVariables.herdDuration = 0f;
ModEvents.GameUpdate.RegisterHandler(Update);
}
public static void Update()
{
if (!RebirthUtilities.IsHordeNight())
{
if ((Time.time - outbreakUpdateCheck) > outbreakUpdateTick)
{
outbreakUpdateCheck = Time.time;
//Log.Out("OutbreakManagerRebirth-Update TICK");
//Log.Out("OutbreakManagerRebirth-Update RebirthVariables.isHerd: " + RebirthVariables.isHerd);
//Log.Out("OutbreakManagerRebirth-Update RebirthVariables.herdStartTime: " + RebirthVariables.herdStartTime);
//Log.Out("OutbreakManagerRebirth-Update RebirthVariables.herdDuration: " + RebirthVariables.herdDuration);
if (!RebirthVariables.stopWHSpawns && RebirthVariables.isWHSpawned)
{
float diff = Time.time - RebirthVariables.herdStartTime;
//Log.Out("OutbreakManagerRebirth-Update diff: " + diff + " / " + RebirthVariables.herdDuration);
AIDirectorWanderingHordeComponent director = GameManager.Instance.World.aiDirector.GetComponent<AIDirectorWanderingHordeComponent>();
if (director != null && director.spawners.Count > 0)
{
AIWanderingHordeSpawner spawner = director.spawners[director.spawners.Count - 1];
if (spawner != null)
{
//Log.Out("OutbreakManagerRebirth-Update spawner.commandList.Count: " + spawner.commandList.Count);
}
}
if (diff >= RebirthVariables.herdDuration)
{
Log.Out("OutbreakManagerRebirth-Update STOP OUTBREAK");
RebirthVariables.isHerd = false;
RebirthVariables.stopWHSpawns = true;
RebirthVariables.herdDuration = 0f;
if (director != null && director.spawners.Count > 0)
{
AIWanderingHordeSpawner spawner = director.spawners[director.spawners.Count - 1];
if (spawner != null)
{
spawner.Cleanup();
director.spawners.RemoveAt(director.spawners.Count - 1);
}
}
}
}
}
}
else
{
//Log.Out("OutbreakManagerRebirth-Update HORDE NIGHT, STOP WANDERING HORDE");
RebirthVariables.isHerd = false;
RebirthVariables.stopWHSpawns = true;
RebirthVariables.herdDuration = 0f;
}
}
}