Magic_Game/core/e2devent.h

139 lines
1.9 KiB
C++

#pragma once
#include "e2dcommon.h"
namespace e2d
{
// 按键消息
class KeyEvent
{
public:
// 按键消息类型
enum class Type : int
{
Down = 0x0100, // 按下
Up // 抬起
};
public:
explicit KeyEvent(
HWND hWnd,
UINT message,
WPARAM wParam,
LPARAM lParam
);
// 获取按键键值
KeyCode code() const;
// 获取按键次数
int count() const;
// 获取事件类型
KeyEvent::Type type() const;
// VK 键值转换
static KeyCode convertKeyCode(
WPARAM wParam
);
protected:
int _count;
KeyCode _code;
KeyEvent::Type _type;
};
// 鼠标消息
class MouseEvent
{
public:
// 鼠标消息类型
enum class Type : int
{
Move = 0x0200, // 鼠标移动
LeftDown, // 鼠标左键按下
LeftUp, // 鼠标左键抬起
LeftDoubleClick, // 鼠标左键双击
RightDown, // 鼠标右键按下
RightUp, // 鼠标右键抬起
RightDoubleClick, // 鼠标右键双击
MiddleDown, // 鼠标中键按下
MiddleUp, // 鼠标中键抬起
MiddleDoubleClick, // 鼠标中键双击
Wheel // 滑动滚轮
};
public:
explicit MouseEvent(
HWND hWnd,
UINT message,
WPARAM wParam,
LPARAM lParam,
float dpi
);
// 获取鼠标横坐标
float positionX() const;
// 获取鼠标纵坐标
float positionY() const;
// 获取鼠标坐标
Point position() const;
// 获取事件类型
MouseEvent::Type type() const;
float wheelDelta() const;
// 鼠标左键是否按下
bool isLButtonDown() const;
// 鼠标右键是否按下
bool isRButtonDown() const;
// 鼠标中键是否按下
bool isMButtonDown() const;
// Shift 键是否按下
bool isShiftDown() const;
// Ctrl 键是否按下
bool isCtrlDown() const;
protected:
UINT _message;
WPARAM _wParam;
LPARAM _lParam;
Point _pos;
MouseEvent::Type _type;
};
// 碰撞事件
class Collision
{
public:
Collision();
explicit Collision(
Node* node,
Collider::Relation relation
);
~Collision();
// 获取发生碰撞节点
Node* node() const;
// 获取交集关系
Collider::Relation relation() const;
protected:
Node * _node;
Collider::Relation _relation;
};
}