mirror of
https://github.com/tym1116/BH3.git
synced 2025-12-12 22:44:35 +01:00
221 lines
6.0 KiB
C#
221 lines
6.0 KiB
C#
using System.Diagnostics;
|
|
using BehaviorDesigner.Runtime;
|
|
using UnityEngine;
|
|
|
|
namespace MoleMole
|
|
{
|
|
public class LevelManager
|
|
{
|
|
public LevelActor levelActor;
|
|
|
|
public MonoLevelEntity levelEntity;
|
|
|
|
public IGameMode gameMode;
|
|
|
|
private int _pauseCount;
|
|
|
|
private bool _mutePause;
|
|
|
|
protected LevelManager()
|
|
{
|
|
ResetGlobalTimeScale();
|
|
InLevelData.InitInLevelData();
|
|
AvatarData.InitAvatarData();
|
|
MonsterData.InitMonsterData();
|
|
CreateInLevelManagers();
|
|
}
|
|
|
|
protected virtual void CreateInLevelManagers()
|
|
{
|
|
Singleton<RuntimeIDManager>.Create();
|
|
Singleton<StageManager>.Create();
|
|
Singleton<AvatarManager>.Create();
|
|
Singleton<CameraManager>.Create();
|
|
Singleton<MonsterManager>.Create();
|
|
Singleton<PropObjectManager>.Create();
|
|
Singleton<DynamicObjectManager>.Create();
|
|
Singleton<EventManager>.Create();
|
|
Singleton<LevelDesignManager>.Create();
|
|
Singleton<AuxObjectManager>.Create();
|
|
Singleton<DetourManager>.Create();
|
|
Singleton<ShaderDataManager>.Create();
|
|
Singleton<CinemaDataManager>.Create();
|
|
gameMode = new OriginalSPGameMode();
|
|
}
|
|
|
|
public virtual void InitAtAwake()
|
|
{
|
|
Singleton<RuntimeIDManager>.Instance.InitAtAwake();
|
|
Singleton<StageManager>.Instance.InitAtAwake();
|
|
Singleton<AvatarManager>.Instance.InitAtAwake();
|
|
Singleton<CameraManager>.Instance.InitAtAwake();
|
|
Singleton<MonsterManager>.Instance.InitAtAwake();
|
|
Singleton<PropObjectManager>.Instance.InitAtAwake();
|
|
Singleton<DynamicObjectManager>.Instance.InitAtAwake();
|
|
Singleton<WwiseAudioManager>.Instance.InitAtAwake();
|
|
Singleton<EventManager>.Instance.InitAtAwake();
|
|
Singleton<LevelDesignManager>.Instance.InitAtAwake();
|
|
Singleton<AuxObjectManager>.Instance.InitAtAwake();
|
|
Singleton<DetourManager>.Instance.InitAtAwake();
|
|
Singleton<ShaderDataManager>.Instance.InitAtAwake();
|
|
Singleton<CinemaDataManager>.Instance.InitAtAwake();
|
|
CreateBehaviorManager();
|
|
}
|
|
|
|
public virtual void InitAtStart()
|
|
{
|
|
Singleton<StageManager>.Instance.InitAtStart();
|
|
Singleton<AvatarManager>.Instance.InitAtStart();
|
|
Singleton<CameraManager>.Instance.InitAtStart();
|
|
Singleton<MonsterManager>.Instance.InitAtStart();
|
|
Singleton<PropObjectManager>.Instance.InitAtStart();
|
|
Singleton<DynamicObjectManager>.Instance.InitAtStart();
|
|
Singleton<EventManager>.Instance.InitAtStart();
|
|
Singleton<LevelDesignManager>.Instance.InitAtStart();
|
|
Singleton<AuxObjectManager>.Instance.InitAtStart();
|
|
Singleton<DetourManager>.Instance.InitAtStart();
|
|
}
|
|
|
|
public virtual void Core()
|
|
{
|
|
Singleton<StageManager>.Instance.Core();
|
|
Singleton<AvatarManager>.Instance.Core();
|
|
Singleton<CameraManager>.Instance.Core();
|
|
Singleton<MonsterManager>.Instance.Core();
|
|
Singleton<PropObjectManager>.Instance.Core();
|
|
Singleton<DynamicObjectManager>.Instance.Core();
|
|
Singleton<EffectManager>.Instance.Core();
|
|
Singleton<EventManager>.Instance.Core();
|
|
Singleton<LevelDesignManager>.Instance.Core();
|
|
Singleton<AuxObjectManager>.Instance.Core();
|
|
Singleton<DetourManager>.Instance.Core();
|
|
if (Singleton<WwiseAudioManager>.Instance != null)
|
|
{
|
|
Singleton<WwiseAudioManager>.Instance.Core();
|
|
}
|
|
}
|
|
|
|
public virtual void Destroy()
|
|
{
|
|
Singleton<DynamicObjectManager>.Instance.Destroy();
|
|
Singleton<PropObjectManager>.Instance.Destroy();
|
|
Singleton<MonsterManager>.Instance.Destroy();
|
|
Singleton<AvatarManager>.Instance.Destroy();
|
|
Singleton<EventManager>.Instance.Destroy();
|
|
Singleton<LevelDesignManager>.Instance.Destroy();
|
|
Singleton<AuxObjectManager>.Instance.Destroy();
|
|
Singleton<EffectManager>.Instance.Clear();
|
|
Singleton<DynamicObjectManager>.Destroy();
|
|
Singleton<MonsterManager>.Destroy();
|
|
Singleton<PropObjectManager>.Destroy();
|
|
Singleton<CameraManager>.Destroy();
|
|
Singleton<AvatarManager>.Destroy();
|
|
Singleton<RuntimeIDManager>.Destroy();
|
|
Singleton<StageManager>.Destroy();
|
|
Singleton<EventManager>.Destroy();
|
|
Singleton<LevelDesignManager>.Destroy();
|
|
Singleton<AuxObjectManager>.Destroy();
|
|
Singleton<DetourManager>.Destroy();
|
|
Singleton<ShaderDataManager>.Destroy();
|
|
Singleton<CinemaDataManager>.Destroy();
|
|
DestroyBehaviorDesigner();
|
|
ResetGlobalTimeScale();
|
|
}
|
|
|
|
public void SetPause(bool pause)
|
|
{
|
|
bool flag = IsPaused();
|
|
_pauseCount += (pause ? 1 : (-1));
|
|
if (_pauseCount < 0)
|
|
{
|
|
_pauseCount = 0;
|
|
}
|
|
if (_mutePause)
|
|
{
|
|
return;
|
|
}
|
|
pause = IsPaused();
|
|
if (pause != flag)
|
|
{
|
|
Singleton<LevelDesignManager>.Instance.SetPause(pause);
|
|
Singleton<AvatarManager>.Instance.SetPause(pause);
|
|
Singleton<MonsterManager>.Instance.SetPause(pause);
|
|
Singleton<EventManager>.Instance.SetPauseDispatching(pause);
|
|
if (pause)
|
|
{
|
|
levelEntity.timeScaleStack.Push(6, 0f);
|
|
}
|
|
else
|
|
{
|
|
levelEntity.timeScaleStack.Pop(6);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void SetMutePause(bool mutePause)
|
|
{
|
|
_mutePause = mutePause;
|
|
}
|
|
|
|
public void SetTutorialTimeScale(float timeScale)
|
|
{
|
|
timeScale = Mathf.Clamp(timeScale, 0f, 1f);
|
|
if (timeScale != 1f)
|
|
{
|
|
if (levelEntity.timeScaleStack.IsOccupied(7))
|
|
{
|
|
levelEntity.timeScaleStack.Set(7, timeScale);
|
|
}
|
|
else
|
|
{
|
|
levelEntity.timeScaleStack.Push(7, timeScale);
|
|
}
|
|
}
|
|
else if (levelEntity.timeScaleStack.IsOccupied(7))
|
|
{
|
|
levelEntity.timeScaleStack.Pop(7);
|
|
}
|
|
else
|
|
{
|
|
levelEntity.timeScaleStack.Set(7, 1f);
|
|
}
|
|
}
|
|
|
|
public bool IsPaused()
|
|
{
|
|
return _pauseCount > 0;
|
|
}
|
|
|
|
public void CreateBehaviorManager()
|
|
{
|
|
Behavior.CreateBehaviorManager();
|
|
}
|
|
|
|
public void DestroyBehaviorDesigner()
|
|
{
|
|
BehaviorManager behaviorManager = Object.FindObjectOfType<BehaviorManager>();
|
|
if (behaviorManager != null)
|
|
{
|
|
Object.Destroy(behaviorManager.gameObject);
|
|
BehaviorManager.instance = null;
|
|
}
|
|
}
|
|
|
|
private void ResetGlobalTimeScale()
|
|
{
|
|
Time.timeScale = 1f;
|
|
Time.fixedDeltaTime = 0.02f * Time.timeScale;
|
|
}
|
|
|
|
[Conditional("NG_HSOD_DEBUG")]
|
|
public void AssertIsNetworkedMP()
|
|
{
|
|
}
|
|
|
|
[Conditional("NG_HSOD_DEBUG")]
|
|
public void AssertIsSinglePlayer()
|
|
{
|
|
}
|
|
}
|
|
}
|