//------------------------------------------------------------
// Game Framework
// Copyright © 2013-2021 loyalsoft. All rights reserved.
// Homepage: http://www.game7000.com/
// Feedback: http://www.game7000.com/
//------------------------------------------------------------
namespace GameFramework.Debugger
{
///
/// 调试器管理器。
///
internal sealed partial class DebuggerManager : GameFrameworkModule, IDebuggerManager
{
private readonly DebuggerWindowGroup m_DebuggerWindowRoot;
private bool m_ActiveWindow;
///
/// 初始化调试器管理器的新实例。
///
public DebuggerManager()
{
m_DebuggerWindowRoot = new DebuggerWindowGroup();
m_ActiveWindow = false;
}
///
/// 获取游戏框架模块优先级。
///
/// 优先级较高的模块会优先轮询,并且关闭操作会后进行。
internal override int Priority
{
get
{
return -1;
}
}
///
/// 获取或设置调试器窗口是否激活。
///
public bool ActiveWindow
{
get
{
return m_ActiveWindow;
}
set
{
m_ActiveWindow = value;
}
}
///
/// 调试器窗口根结点。
///
public IDebuggerWindowGroup DebuggerWindowRoot
{
get
{
return m_DebuggerWindowRoot;
}
}
///
/// 调试器管理器轮询。
///
/// 逻辑流逝时间,以秒为单位。
/// 真实流逝时间,以秒为单位。
internal override void Update(float elapseSeconds, float realElapseSeconds)
{
if (!m_ActiveWindow)
{
return;
}
m_DebuggerWindowRoot.OnUpdate(elapseSeconds, realElapseSeconds);
}
///
/// 关闭并清理调试器管理器。
///
internal override void Shutdown()
{
m_ActiveWindow = false;
m_DebuggerWindowRoot.Shutdown();
}
///
/// 注册调试器窗口。
///
/// 调试器窗口路径。
/// 要注册的调试器窗口。
/// 初始化调试器窗口参数。
public void RegisterDebuggerWindow(string path, IDebuggerWindow debuggerWindow, params object[] args)
{
if (string.IsNullOrEmpty(path))
{
throw new GameFrameworkException("Path is invalid.");
}
if (debuggerWindow == null)
{
throw new GameFrameworkException("Debugger window is invalid.");
}
m_DebuggerWindowRoot.RegisterDebuggerWindow(path, debuggerWindow);
debuggerWindow.Initialize(args);
}
///
/// 解除注册调试器窗口。
///
/// 调试器窗口路径。
/// 是否解除注册调试器窗口成功。
public bool UnregisterDebuggerWindow(string path)
{
return m_DebuggerWindowRoot.UnregisterDebuggerWindow(path);
}
///
/// 获取调试器窗口。
///
/// 调试器窗口路径。
/// 要获取的调试器窗口。
public IDebuggerWindow GetDebuggerWindow(string path)
{
return m_DebuggerWindowRoot.GetDebuggerWindow(path);
}
///
/// 选中调试器窗口。
///
/// 调试器窗口路径。
/// 是否成功选中调试器窗口。
public bool SelectDebuggerWindow(string path)
{
return m_DebuggerWindowRoot.SelectDebuggerWindow(path);
}
}
}