Magic_Game/Easy2D/elisteners.h

324 lines
4.8 KiB
C++

#pragma once
#include "ebase.h"
namespace e2d
{
class ENode;
class EMsgManager;
// 监听器
class EListener :
public EObject
{
friend EMsgManager;
public:
EListener();
EListener(
const EString &name
);
// 获取监听器状态
bool isRunning() const;
// 启动监听
void start();
// 停止监听
void stop();
// 获取监听器名称
EString getName() const;
// 获取监听器所在节点
ENode * getParentNode() const;
// 设置监听器名称
void setName(
const EString &name
);
// 绑定监听器到场景
virtual void bindWith(
EScene * pParentScene
) = 0;
// 绑定监听器到节点
virtual void bindWith(
ENode * pParentNode
) = 0;
protected:
// 执行监听器回调函数
virtual void _callOn() = 0;
protected:
EString m_sName;
bool m_bRunning;
bool m_bAlways;
ENode * m_pParentNode;
};
// 鼠标消息监听器
class EMouseListener :
public EListener
{
friend EMsgManager;
public:
EMouseListener();
EMouseListener(
const EString &name
);
EMouseListener(
const MOUSE_LISTENER_CALLBACK &callback
);
EMouseListener(
const EString &name,
const MOUSE_LISTENER_CALLBACK &callback
);
// 设置监听器回调函数
void setCallback(
const MOUSE_LISTENER_CALLBACK &callback
);
// 绑定监听器到场景
virtual void bindWith(
EScene * pParentScene
) override;
// 绑定监听器到节点
virtual void bindWith(
ENode * pParentNode
) override;
protected:
// 执行监听器回调函数
virtual void _callOn() override;
protected:
MOUSE_LISTENER_CALLBACK m_Callback;
};
// 鼠标按下消息监听器
class EMousePressListener :
public EMouseListener
{
public:
EMousePressListener();
EMousePressListener(
const EString &name
);
EMousePressListener(
const MOUSE_PRESS_LISTENER_CALLBACK &callback
);
EMousePressListener(
const EString &name,
const MOUSE_PRESS_LISTENER_CALLBACK &callback
);
// 设置监听器回调函数
void setCallback(
const MOUSE_PRESS_LISTENER_CALLBACK &callback
);
protected:
// 执行监听器回调函数
virtual void _callOn() override;
protected:
MOUSE_PRESS_LISTENER_CALLBACK m_Callback;
};
// 鼠标点击消息监听器
class EMouseClickListener :
public EMouseListener
{
public:
EMouseClickListener();
EMouseClickListener(
const EString &name
);
EMouseClickListener(
const MOUSE_CLICK_LISTENER_CALLBACK &callback
);
EMouseClickListener(
const EString &name,
const MOUSE_CLICK_LISTENER_CALLBACK &callback
);
// 设置监听器回调函数
void setCallback(
const MOUSE_CLICK_LISTENER_CALLBACK &callback
);
protected:
// 执行监听器回调函数
virtual void _callOn() override;
protected:
bool m_bPressed;
MOUSE_CLICK_LISTENER_CALLBACK m_Callback;
};
// 鼠标点击消息监听器
class EMouseDoubleClickListener :
public EMouseListener
{
public:
EMouseDoubleClickListener();
EMouseDoubleClickListener(
const EString &name
);
EMouseDoubleClickListener(
const MOUSE_DBLCLK_LISTENER_CALLBACK &callback
);
EMouseDoubleClickListener(
const EString &name,
const MOUSE_DBLCLK_LISTENER_CALLBACK &callback
);
// 设置监听器回调函数
void setCallback(
const MOUSE_DBLCLK_LISTENER_CALLBACK &callback
);
protected:
// 执行监听器回调函数
virtual void _callOn() override;
protected:
bool m_bPressed;
MOUSE_DBLCLK_LISTENER_CALLBACK m_Callback;
};
// 鼠标拖动消息监听器
class EMouseDragListener :
public EMouseListener
{
public:
EMouseDragListener();
EMouseDragListener(
const EString &name
);
EMouseDragListener(
const MOUSE_DRAG_LISTENER_CALLBACK &callback
);
EMouseDragListener(
const EString &name,
const MOUSE_DRAG_LISTENER_CALLBACK &callback
);
// 设置监听器回调函数
void setCallback(
const MOUSE_DRAG_LISTENER_CALLBACK &callback
);
protected:
// 执行监听器回调函数
virtual void _callOn() override;
protected:
EPoint m_Begin;
MOUSE_DRAG_LISTENER_CALLBACK m_Callback;
};
// 按键消息监听器
class EKeyboardListener :
public EListener
{
friend EMsgManager;
public:
EKeyboardListener();
EKeyboardListener(
const EString &name
);
EKeyboardListener(
const KEY_LISTENER_CALLBACK &callback
);
EKeyboardListener(
const EString &name,
const KEY_LISTENER_CALLBACK &callback
);
// 设置监听器回调函数
void setCallback(
const KEY_LISTENER_CALLBACK &callback
);
// 绑定监听器到场景
virtual void bindWith(
EScene * pParentScene
) override;
// 绑定监听器到节点
virtual void bindWith(
ENode * pParentNode
) override;
protected:
// 执行监听器回调函数
virtual void _callOn() override;
protected:
KEY_LISTENER_CALLBACK m_Callback;
};
// 按键按下消息监听
class EKeyboardPressListener :
public EKeyboardListener
{
friend EMsgManager;
public:
EKeyboardPressListener();
EKeyboardPressListener(
const EString &name
);
EKeyboardPressListener(
const KEY_LISTENER_CALLBACK &callback
);
EKeyboardPressListener(
const EString &name,
const KEY_LISTENER_CALLBACK &callback
);
protected:
// 执行监听器回调函数
virtual void _callOn() override;
};
}