Magic_Game/Easy2D/elisteners.h

407 lines
6.2 KiB
C
Raw Normal View History

#pragma once
#include "ebase.h"
2017-10-28 18:48:21 +08:00
#include "egeometry.h"
namespace e2d
{
class ENode;
class EMsgManager;
2017-10-28 18:48:21 +08:00
class EPhysicsManager;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class EListener :
public EObject
{
friend EMsgManager;
public:
EListener();
EListener(
const EString &name
);
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
bool isRunning() const;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void start();
// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
void stop();
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EString getName() const;
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽڵ<DABD>
ENode * getParentNode() const;
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void setName(
const EString &name
);
// <20>󶨼<EFBFBD><F3B6A8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void bindWith(
EScene * pParentScene
) = 0;
// <20>󶨼<EFBFBD><F3B6A8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
virtual void bindWith(
ENode * pParentNode
) = 0;
protected:
// ִ<>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
virtual void _callOn() = 0;
protected:
EString m_sName;
bool m_bRunning;
bool m_bAlways;
ENode * m_pParentNode;
};
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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
);
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
void setCallback(
const MOUSE_LISTENER_CALLBACK &callback
);
// <20>󶨼<EFBFBD><F3B6A8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void bindWith(
EScene * pParentScene
) override;
// <20>󶨼<EFBFBD><F3B6A8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
virtual void bindWith(
ENode * pParentNode
) override;
protected:
// ִ<>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
virtual void _callOn() override;
protected:
MOUSE_LISTENER_CALLBACK m_Callback;
};
// <20><><EFBFBD><EFBFBD><EAB0B4><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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
);
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
void setCallback(
const MOUSE_PRESS_LISTENER_CALLBACK &callback
);
protected:
// ִ<>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
virtual void _callOn() override;
protected:
MOUSE_PRESS_LISTENER_CALLBACK m_Callback;
};
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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
);
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
void setCallback(
const MOUSE_CLICK_LISTENER_CALLBACK &callback
);
protected:
// ִ<>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
virtual void _callOn() override;
protected:
bool m_bPressed;
MOUSE_CLICK_LISTENER_CALLBACK m_Callback;
};
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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
);
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
void setCallback(
const MOUSE_DBLCLK_LISTENER_CALLBACK &callback
);
protected:
// ִ<>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
virtual void _callOn() override;
protected:
bool m_bPressed;
MOUSE_DBLCLK_LISTENER_CALLBACK m_Callback;
};
// <20><><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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
);
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
void setCallback(
const MOUSE_DRAG_LISTENER_CALLBACK &callback
);
protected:
// ִ<>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
virtual void _callOn() override;
protected:
EPoint m_Begin;
MOUSE_DRAG_LISTENER_CALLBACK m_Callback;
};
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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
);
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
void setCallback(
const KEY_LISTENER_CALLBACK &callback
);
// <20>󶨼<EFBFBD><F3B6A8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void bindWith(
EScene * pParentScene
) override;
// <20>󶨼<EFBFBD><F3B6A8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
virtual void bindWith(
ENode * pParentNode
) override;
protected:
// ִ<>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
virtual void _callOn() override;
protected:
KEY_LISTENER_CALLBACK m_Callback;
};
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
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:
// ִ<>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
virtual void _callOn() override;
};
2017-10-28 18:48:21 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>
typedef std::function<void(ENode *active, ENode *passive, int relation)> PHYSICS_LISTENER_CALLBACK;
// <20><>ײ<EFBFBD><D7B2>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef std::function<void(ENode *active, ENode *passive)> COLLISION_LISTENER_CALLBACK;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class EPhysicsListener :
public EListener
{
friend EPhysicsManager;
public:
EPhysicsListener();
EPhysicsListener(
const EString &name
);
EPhysicsListener(
const PHYSICS_LISTENER_CALLBACK &callback
);
EPhysicsListener(
const EString &name,
const PHYSICS_LISTENER_CALLBACK &callback
);
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
void setCallback(
const PHYSICS_LISTENER_CALLBACK &callback
);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void bindWith(
EScene * pParentScene
) override;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
virtual void bindWith(
ENode * pParentNode
) override;
protected:
// ִ<>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
virtual void _callOn() override;
protected:
PHYSICS_LISTENER_CALLBACK m_Callback;
};
class ECollisionListener :
public EPhysicsListener
{
friend EMsgManager;
public:
ECollisionListener();
ECollisionListener(
const EString &name
);
ECollisionListener(
const COLLISION_LISTENER_CALLBACK &callback
);
ECollisionListener(
const EString &name,
const COLLISION_LISTENER_CALLBACK &callback
);
protected:
// ִ<>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
virtual void _callOn() override;
protected:
COLLISION_LISTENER_CALLBACK m_Callback;
};
}