# EventManager

# 说明

EventManager命名空间提供了一系列事件处理功能,可以注册和移除各种游戏事件的回调函数。通过这些事件,您可以在游戏中的特定时刻执行自定义代码。

# 如何使用

#include "Noble.h"

void OnGameUpdateCallback()
{
    // 在游戏每帧更新时执行的代码
    Console::Add("Game update");
}

void OnLoadCallback()
{
    // 注册游戏更新事件
    EventManager::OnGameUpdate::Add(&OnGameUpdateCallback);
}

// 在插件初始化时注册OnLoad事件
EventManager::OnLoad::Add(&OnLoadCallback);

# OnLoad.Add

void EventManager::OnLoad::Add(void* function)

注册一个在插件加载时调用的回调函数。

参数名字 参数类型 描述
function void* 回调函数指针,函数原型为 void OnLoad()
void OnLoadCallback() 
{
    Console::Add("Plugin loaded");
}

EventManager::OnLoad::Add(&OnLoadCallback);

# OnLoad.Remove

void EventManager::OnLoad::Remove(void* function)

移除一个已注册的OnLoad回调函数。

参数名字 参数类型 描述
function void* 先前注册的回调函数指针
EventManager::OnLoad::Remove(&OnLoadCallback);

# OnUnLoad.Add

void EventManager::OnUnLoad::Add(void* function)

注册一个在插件卸载时调用的回调函数。

参数名字 参数类型 描述
function void* 回调函数指针,函数原型为 void OnUnLoad()
void OnUnLoadCallback() 
{
    Console::Add("Plugin unloaded");
}

EventManager::OnUnLoad::Add(&OnUnLoadCallback);

# OnUnLoad.Remove

void EventManager::OnUnLoad::Remove(void* function)

移除一个已注册的OnUnLoad回调函数。

参数名字 参数类型 描述
function void* 先前注册的回调函数指针
EventManager::OnUnLoad::Remove(&OnUnLoadCallback);

# OnGameUpdate.Add

void EventManager::OnGameUpdate::Add(void* function)

注册一个在每帧游戏更新时调用的回调函数。

参数名字 参数类型 描述
function void* 回调函数指针,函数原型为 void OnGameUpdate()
void OnGameUpdateCallback() 
{
    // 每帧执行的代码
}

EventManager::OnGameUpdate::Add(&OnGameUpdateCallback);

# OnGameUpdate.Remove

void EventManager::OnGameUpdate::Remove(void* function)

移除一个已注册的OnGameUpdate回调函数。

参数名字 参数类型 描述
function void* 先前注册的回调函数指针
EventManager::OnGameUpdate::Remove(&OnGameUpdateCallback);

# OnRender.Add

void EventManager::OnRender::Add(void* function)

注册一个在游戏渲染时调用的回调函数。

参数名字 参数类型 描述
function void* 回调函数指针,函数原型为 void OnRender()
void OnRenderCallback() 
{
    // 绘制自定义图形
    Drawing::DrawText(Vector(100, 100), 20, MAKE_COLOR(255, 0, 0, 255), "Hello World");
}

EventManager::OnRender::Add(&OnRenderCallback);

# OnRender.Remove

void EventManager::OnRender::Remove(void* function)

移除一个已注册的OnRender回调函数。

参数名字 参数类型 描述
function void* 先前注册的回调函数指针
EventManager::OnRender::Remove(&OnRenderCallback);

# OnWndProc.Add

void EventManager::OnWndProc::Add(void* function)

注册一个处理Windows消息的回调函数。

参数名字 参数类型 描述
function void* 回调函数指针,函数原型为 void OnWndProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
void OnWndProcCallback(UINT uMsg, WPARAM wParam, LPARAM lParam) 
{
    // 处理Windows消息
    if (uMsg == WM_KEYDOWN && wParam == VK_SPACE)
    {
        Console::Add("Space key pressed");
    }
}

EventManager::OnWndProc::Add(&OnWndProcCallback);

# OnWndProc.Remove

void EventManager::OnWndProc::Remove(void* function)

移除一个已注册的OnWndProc回调函数。

参数名字 参数类型 描述
function void* 先前注册的回调函数指针
EventManager::OnWndProc::Remove(&OnWndProcCallback);

# OnCreateObject.Add

void EventManager::OnCreateObject::Add(void* function)

注册一个在游戏对象创建时调用的回调函数。

参数名字 参数类型 描述
function void* 回调函数指针,函数原型为 void OnCreateObject(GameObject* sender)
void OnCreateObjectCallback(GameObject* sender) 
{
    // 处理新创建的游戏对象
    if (sender->IsAIHero() && sender->IsEnemy())
    {
        Console::Add("Enemy hero created: %s", sender->Name());
    }
}

EventManager::OnCreateObject::Add(&OnCreateObjectCallback);

# OnCreateObject.Remove

void EventManager::OnCreateObject::Remove(void* function)

移除一个已注册的OnCreateObject回调函数。

参数名字 参数类型 描述
function void* 先前注册的回调函数指针
EventManager::OnCreateObject::Remove(&OnCreateObjectCallback);

# OnDeleteObject.Add

void EventManager::OnDeleteObject::Add(void* function)

注册一个在游戏对象删除时调用的回调函数。

参数名字 参数类型 描述
function void* 回调函数指针,函数原型为 void OnDeleteObject(GameObject* sender)
void OnDeleteObjectCallback(GameObject* sender) 
{
    // 处理被删除的游戏对象
    if (sender->IsAIHero())
    {
        Console::Add("Hero deleted: %s", sender->Name());
    }
}

EventManager::OnDeleteObject::Add(&OnDeleteObjectCallback);

# OnDeleteObject.Remove

void EventManager::OnDeleteObject::Remove(void* function)

移除一个已注册的OnDeleteObject回调函数。

参数名字 参数类型 描述
function void* 先前注册的回调函数指针
EventManager::OnDeleteObject::Remove(&OnDeleteObjectCallback);

# OnProcessSpellCast.Add

void EventManager::OnProcessSpellCast::Add(void* function)

注册一个在技能施放开始时调用的回调函数。

参数名字 参数类型 描述
function void* 回调函数指针,函数原型为 void OnProcessSpellCast(Spellbook* args)
void OnProcessSpellCastCallback(Spellbook* args) 
{
    // 处理技能施放事件
    if (args->Sender()->IsEnemy() && args->Sender()->IsAIHero())
    {
        Console::Add("Enemy casting spell: %s", args->SData()->Name());
    }
}

EventManager::OnProcessSpellCast::Add(&OnProcessSpellCastCallback);

# OnProcessSpellCast.Remove

void EventManager::OnProcessSpellCast::Remove(void* function)

移除一个已注册的OnProcessSpellCast回调函数。

参数名字 参数类型 描述
function void* 先前注册的回调函数指针
EventManager::OnProcessSpellCast::Remove(&OnProcessSpellCastCallback);

# OnDoCast.Add

void EventManager::OnDoCast::Add(void* function)

注册一个在技能施放完成时调用的回调函数。

参数名字 参数类型 描述
function void* 回调函数指针,函数原型为 void OnDoCast(Spellbook* args)
void OnDoCastCallback(Spellbook* args) 
{
    // 处理技能施放完成事件
    if (args->Sender()->IsMe())
    {
        Console::Add("I finished casting: %s", args->SData()->Name());
    }
}

EventManager::OnDoCast::Add(&OnDoCastCallback);

# OnDoCast.Remove

void EventManager::OnDoCast::Remove(void* function)

移除一个已注册的OnDoCast回调函数。

参数名字 参数类型 描述
function void* 先前注册的回调函数指针
EventManager::OnDoCast::Remove(&OnDoCastCallback);

# OnStopCast.Add

void EventManager::OnStopCast::Add(void* function)

注册一个在技能施放被中断时调用的回调函数。

参数名字 参数类型 描述
function void* 回调函数指针,函数原型为 void OnStopCast(AIBaseClient* sender)
void OnStopCastCallback(AIBaseClient* sender) 
{
    // 处理技能施放中断事件
    if (sender->IsMe())
    {
        Console::Add("My spell cast was interrupted");
    }
}

EventManager::OnStopCast::Add(&OnStopCastCallback);

# OnStopCast.Remove

void EventManager::OnStopCast::Remove(void* function)

移除一个已注册的OnStopCast回调函数。

参数名字 参数类型 描述
function void* 先前注册的回调函数指针
EventManager::OnStopCast::Remove(&OnStopCastCallback);

# OnNewPath.Add

void EventManager::OnNewPath::Add(void* function)

注册一个在单位获得新路径时调用的回调函数。

参数名字 参数类型 描述
function void* 回调函数指针,函数原型为 void OnNewPath(AIBaseClient* sender, std::vector<Vector> const& path, bool IsDash, float dashSpeed)
void OnNewPathCallback(AIBaseClient* sender, std::vector<Vector> const& path, bool IsDash, float dashSpeed) 
{
    // 处理新路径事件
    if (sender->IsEnemy() && sender->IsAIHero() && IsDash)
    {
        Console::Add("Enemy hero dashing with speed: %f", dashSpeed);
    }
}

EventManager::OnNewPath::Add(&OnNewPathCallback);

# OnNewPath.Remove

void EventManager::OnNewPath::Remove(void* function)

移除一个已注册的OnNewPath回调函数。

参数名字 参数类型 描述
function void* 先前注册的回调函数指针
EventManager::OnNewPath::Remove(&OnNewPathCallback);

# OnIssueOrder.Add

void EventManager::OnIssueOrder::Add(void* function)

注册一个在发出移动或攻击命令时调用的回调函数。

参数名字 参数类型 描述
function void* 回调函数指针,函数原型为 void OnIssueOrder(eGameObjectOrder Order, AIBaseClient* m_target, Vector const& TargetPosition, bool& Process)
void OnIssueOrderCallback(eGameObjectOrder Order, AIBaseClient* m_target, Vector const& TargetPosition, bool& Process) 
{
    // 处理发出命令事件
    if (Order == eGameObjectOrder::AttackUnit && m_target && m_target->IsAIHero())
    {
        Console::Add("Attacking enemy hero");
    }
}

EventManager::OnIssueOrder::Add(&OnIssueOrderCallback);

# OnIssueOrder.Remove

void EventManager::OnIssueOrder::Remove(void* function)

移除一个已注册的OnIssueOrder回调函数。

参数名字 参数类型 描述
function void* 先前注册的回调函数指针
EventManager::OnIssueOrder::Remove(&OnIssueOrderCallback);

# OnCastSpell.Add

void EventManager::OnCastSpell::Add(void* function)

注册一个在通过API施放技能时调用的回调函数(注意:只对Noble内部请求有效,用户手动施放技能不会触发此事件)。

参数名字 参数类型 描述
function void* 回调函数指针,函数原型为 void OnCastSpell(eSpellSlot Slot, AIBaseClient* Target, Vector const& StartPosition, Vector const& EndPosition, bool& Process)
void OnCastSpellCallback(eSpellSlot Slot, AIBaseClient* Target, Vector const& StartPosition, Vector const& EndPosition, bool& Process) 
{
    // 处理施放技能事件
    if (Slot == eSpellSlot::R && Target && Target->IsEnemy() && Target->IsAIHero())
    {
        Console::Add("Casting ultimate on enemy hero");
    }
}

EventManager::OnCastSpell::Add(&OnCastSpellCallback);

# OnCastSpell.Remove

void EventManager::OnCastSpell::Remove(void* function)

移除一个已注册的OnCastSpell回调函数。

参数名字 参数类型 描述
function void* 先前注册的回调函数指针
EventManager::OnCastSpell::Remove(&OnCastSpellCallback);

# OnMinionProcessSpellCast.Add

void EventManager::OnMinionProcessSpellCast::Add(void* function)

注册一个在小兵开始施放技能时调用的回调函数。

参数名字 参数类型 描述
function void* 回调函数指针,函数原型为 void OnMinionProcessSpellCast(AIBaseClient* sender, AIBaseClient* Target, float MissileSpeed)
void OnMinionProcessSpellCastCallback(AIBaseClient* sender, AIBaseClient* Target, float MissileSpeed) 
{
    // 处理小兵施放技能事件
    if (sender->IsMinion() && Target && Target->IsMe())
    {
        Console::Add("Minion attacking me with missile speed: %f", MissileSpeed);
    }
}

EventManager::OnMinionProcessSpellCast::Add(&OnMinionProcessSpellCastCallback);

# OnMinionProcessSpellCast.Remove

void EventManager::OnMinionProcessSpellCast::Remove(void* function)

移除一个已注册的OnMinionProcessSpellCast回调函数。

参数名字 参数类型 描述
function void* 先前注册的回调函数指针
EventManager::OnMinionProcessSpellCast::Remove(&OnMinionProcessSpellCastCallback);

# OnMinionOnDoCast.Add

void EventManager::OnMinionOnDoCast::Add(void* function)

注册一个在小兵完成施放技能时调用的回调函数。

参数名字 参数类型 描述
function void* 回调函数指针,函数原型为 void OnMinionOnDoCast(AIBaseClient* sender)
void OnMinionOnDoCastCallback(AIBaseClient* sender) 
{
    // 处理小兵完成施放技能事件
    if (sender->IsMinion())
    {
        Console::Add("Minion finished casting");
    }
}

EventManager::OnMinionOnDoCast::Add(&OnMinionOnDoCastCallback);

# OnMinionOnDoCast.Remove

void EventManager::OnMinionOnDoCast::Remove(void* function)

移除一个已注册的OnMinionOnDoCast回调函数。

参数名字 参数类型 描述
function void* 先前注册的回调函数指针
EventManager::OnMinionOnDoCast::Remove(&OnMinionOnDoCastCallback);

# OnMinionOnStopCast.Add

void EventManager::OnMinionOnStopCast::Add(void* function)

注册一个在小兵中断施放技能时调用的回调函数。

参数名字 参数类型 描述
function void* 回调函数指针,函数原型为 void OnMinionOnStopCast(AIBaseClient* sender)
void OnMinionOnStopCastCallback(AIBaseClient* sender) 
{
    // 处理小兵中断施放技能事件
    if (sender->IsMinion())
    {
        Console::Add("Minion stopped casting");
    }
}

EventManager::OnMinionOnStopCast::Add(&OnMinionOnStopCastCallback);

# OnMinionOnStopCast.Remove

void EventManager::OnMinionOnStopCast::Remove(void* function)

移除一个已注册的OnMinionOnStopCast回调函数。

参数名字 参数类型 描述
function void* 先前注册的回调函数指针
EventManager::OnMinionOnStopCast::Remove(&OnMinionOnStopCastCallback);

# OnAttackDelay.Add

void EventManager::OnAttackDelay::Add(void* function)

注册一个在攻击延迟计算时调用的回调函数。

参数名字 参数类型 描述
function void* 回调函数指针,函数原型为 void OnAttackDelay(bool& Process, AIBaseClient* lastTarget, int LastAAFinishTick)
void OnAttackDelayCallback(bool& Process, AIBaseClient* lastTarget, int LastAAFinishTick) 
{
    // 处理攻击延迟事件
    if (lastTarget && lastTarget->IsEnemy() && lastTarget->IsAIHero())
    {
        Console::Add("Attack delay on enemy hero");
    }
}

EventManager::OnAttackDelay::Add(&OnAttackDelayCallback);

# OnAttackDelay.Remove

void EventManager::OnAttackDelay::Remove(void* function)

移除一个已注册的OnAttackDelay回调函数。

参数名字 参数类型 描述
function void* 先前注册的回调函数指针
EventManager::OnAttackDelay::Remove(&OnAttackDelayCallback);

# AfterAttack.Add

void EventManager::AfterAttack::Add(void* function)

注册一个在攻击完成后调用的回调函数。

参数名字 参数类型 描述
function void* 回调函数指针,函数原型为 void AfterAttack(AIBaseClient* target)
void AfterAttackCallback(AIBaseClient* target) 
{
    // 处理攻击完成后事件
    if (target && target->IsEnemy() && target->IsAIHero())
    {
        Console::Add("Finished attacking enemy hero");
    }
}

EventManager::AfterAttack::Add(&AfterAttackCallback);

# AfterAttack.Remove

void EventManager::AfterAttack::Remove(void* function)

移除一个已注册的AfterAttack回调函数。

参数名字 参数类型 描述
function void* 先前注册的回调函数指针
EventManager::AfterAttack::Remove(&AfterAttackCallback);

# BeforeAttack.Add

void EventManager::BeforeAttack::Add(void* function)

注册一个在攻击开始前调用的回调函数。

参数名字 参数类型 描述
function void* 回调函数指针,函数原型为 void BeforeAttack(bool& Process, AIBaseClient* target)
void BeforeAttackCallback(bool& Process, AIBaseClient* target) 
{
    // 处理攻击开始前事件
    if (target && target->IsMinion() && target->Health() > 100)
    {
        // 取消攻击
        Process = false;
    }
}

EventManager::BeforeAttack::Add(&BeforeAttackCallback);

# BeforeAttack.Remove

void EventManager::BeforeAttack::Remove(void* function)

移除一个已注册的BeforeAttack回调函数。

参数名字 参数类型 描述
function void* 先前注册的回调函数指针
EventManager::BeforeAttack::Remove(&BeforeAttackCallback);

# OnAttack.Add

void EventManager::OnAttack::Add(void* function)

注册一个在攻击开始时调用的回调函数。

参数名字 参数类型 描述
function void* 回调函数指针,函数原型为 void OnAttack(AIBaseClient* target)
void OnAttackCallback(AIBaseClient* target) 
{
    // 处理攻击开始事件
    if (target && target->IsEnemy() && target->IsAIHero())
    {
        Console::Add("Started attacking enemy hero");
    }
}

EventManager::OnAttack::Add(&OnAttackCallback);

# OnAttack.Remove

void EventManager::OnAttack::Remove(void* function)

移除一个已注册的OnAttack回调函数。

参数名字 参数类型 描述
function void* 先前注册的回调函数指针
EventManager::OnAttack::Remove(&OnAttackCallback);

# OnNonKillableMinion.Add

void EventManager::OnNonKillableMinion::Add(void* function)

注册一个在无法击杀小兵时调用的回调函数。

参数名字 参数类型 描述
function void* 回调函数指针,函数原型为 void OnNonKillableMinion(AIBaseClient* minion)
void OnNonKillableMinionCallback(AIBaseClient* minion) 
{
    // 处理无法击杀小兵事件
    if (minion && minion->IsMinion())
    {
        Console::Add("Cannot last hit minion with health: %f", minion->Health());
    }
}

EventManager::OnNonKillableMinion::Add(&OnNonKillableMinionCallback);

# OnNonKillableMinion.Remove

void EventManager::OnNonKillableMinion::Remove(void* function)

移除一个已注册的OnNonKillableMinion回调函数。

参数名字 参数类型 描述
function void* 先前注册的回调函数指针
EventManager::OnNonKillableMinion::Remove(&OnNonKillableMinionCallback);

# OnTargetChange.Add

void EventManager::OnTargetChange::Add(void* function)

注册一个在目标改变时调用的回调函数。

参数名字 参数类型 描述
function void* 回调函数指针,函数原型为 void OnTargetChange(AIBaseClient* newTarget)
void OnTargetChangeCallback(AIBaseClient* newTarget) 
{
    // 处理目标改变事件
    if (newTarget && newTarget->IsEnemy() && newTarget->IsAIHero())
    {
        Console::Add("Target changed to enemy hero: %s", newTarget->ChampionName());
    }
}

EventManager::OnTargetChange::Add(&OnTargetChangeCallback);

# OnTargetChange.Remove

void EventManager::OnTargetChange::Remove(void* function)

移除一个已注册的OnTargetChange回调函数。

参数名字 参数类型 描述
function void* 先前注册的回调函数指针
EventManager::OnTargetChange::Remove(&OnTargetChangeCallback);

# OnEnemyGapcloser.Add

void EventManager::OnEnemyGapcloser::Add(void* function)

注册一个在敌人使用位移技能时调用的回调函数。

参数名字 参数类型 描述
function void* 回调函数指针,函数原型为 void OnEnemyGapcloser(AIBaseClient* sender, const ActiveGapcloser& args)
void OnEnemyGapcloserCallback(AIBaseClient* sender, const ActiveGapcloser& args) 
{
    // 处理敌人位移技能事件
    if (sender && sender->IsEnemy() && sender->IsAIHero())
    {
        Console::Add("Enemy gapclosing from %f,%f to %f,%f", 
            args.StartPosition.X, args.StartPosition.Z, 
            args.EndPosition.X, args.EndPosition.Z);
    }
}

EventManager::OnEnemyGapcloser::Add(&OnEnemyGapcloserCallback);

# OnEnemyGapcloser.Remove

void EventManager::OnEnemyGapcloser::Remove(void* function)

移除一个已注册的OnEnemyGapcloser回调函数。

参数名字 参数类型 描述
function void* 先前注册的回调函数指针
EventManager::OnEnemyGapcloser::Remove(&OnEnemyGapcloserCallback);