Magic_Game/core/e2devent.h

139 lines
1.9 KiB
C
Raw Normal View History

2018-08-14 00:41:59 +08:00
#pragma once
2018-09-05 13:33:39 +08:00
#include "e2dutil.h"
2018-08-14 00:41:59 +08:00
namespace e2d
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
class KeyEvent
{
public:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
enum class Type : int
{
Down = 0x0100, // <20><><EFBFBD><EFBFBD>
Up // ̧<><CCA7>
};
public:
explicit KeyEvent(
HWND hWnd,
UINT message,
2018-09-04 22:42:34 +08:00
WPARAM w_param,
LPARAM l_param
2018-08-14 00:41:59 +08:00
);
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
2018-09-04 22:42:34 +08:00
KeyCode GetCode() const;
2018-08-14 00:41:59 +08:00
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2018-09-04 22:42:34 +08:00
int GetCount() const;
2018-08-14 00:41:59 +08:00
// <20><>ȡ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
2018-09-04 22:42:34 +08:00
KeyEvent::Type GetType() const;
2018-08-14 00:41:59 +08:00
// VK <20><>ֵת<D6B5><D7AA>
2018-09-04 22:42:34 +08:00
static KeyCode ToKeyCode(
WPARAM w_param
2018-08-14 00:41:59 +08:00
);
protected:
2018-09-04 22:42:34 +08:00
int count_;
KeyCode code_;
KeyEvent::Type type_;
2018-08-14 00:41:59 +08:00
};
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
class MouseEvent
{
public:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
enum class Type : int
{
Move = 0x0200, // <20><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>
LeftDown, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LeftUp, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̧<EFBFBD><CCA7>
LeftDoubleClick, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><CBAB>
RightDown, // <20><><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD><D2BC><EFBFBD><EFBFBD><EFBFBD>
RightUp, // <20><><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD>̧<EFBFBD><CCA7>
RightDoubleClick, // <20><><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD>˫<EFBFBD><CBAB>
MiddleDown, // <20><><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD>
MiddleUp, // <20><><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD>̧<EFBFBD><CCA7>
MiddleDoubleClick, // <20><><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD>˫<EFBFBD><CBAB>
Wheel // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
public:
explicit MouseEvent(
HWND hWnd,
UINT message,
2018-09-04 22:42:34 +08:00
WPARAM w_param,
LPARAM l_param,
2018-08-15 00:06:03 +08:00
float dpi
2018-08-14 00:41:59 +08:00
);
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2018-09-04 22:42:34 +08:00
float GetX() const;
2018-08-14 00:41:59 +08:00
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2018-09-04 22:42:34 +08:00
float GetY() const;
2018-08-14 00:41:59 +08:00
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2018-09-04 22:42:34 +08:00
Point GetPos() const;
2018-08-14 00:41:59 +08:00
// <20><>ȡ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
2018-09-04 22:42:34 +08:00
MouseEvent::Type GetType() const;
2018-08-14 00:41:59 +08:00
2018-09-04 22:42:34 +08:00
float GetWheelDelta() const;
2018-08-14 00:41:59 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
2018-09-04 22:42:34 +08:00
bool IsLButtonDown() const;
2018-08-14 00:41:59 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD><D2BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
2018-09-04 22:42:34 +08:00
bool IsRButtonDown() const;
2018-08-14 00:41:59 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><D0BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
2018-09-04 22:42:34 +08:00
bool IsMButtonDown() const;
2018-08-14 00:41:59 +08:00
// Shift <20><><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
2018-09-04 22:42:34 +08:00
bool IsShiftDown() const;
2018-08-14 00:41:59 +08:00
// Ctrl <20><><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
2018-09-04 22:42:34 +08:00
bool IsCtrlDown() const;
2018-08-14 00:41:59 +08:00
protected:
2018-09-04 22:42:34 +08:00
UINT message_;
WPARAM w_param_;
LPARAM l_param_;
Point pos_;
MouseEvent::Type type_;
2018-08-14 00:41:59 +08:00
};
// <20><>ײ<EFBFBD>¼<EFBFBD>
class Collision
{
public:
Collision();
explicit Collision(
Node* node,
Collider::Relation relation
);
~Collision();
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD>ڵ<EFBFBD>
2018-09-04 22:42:34 +08:00
Node* GetNode() const;
2018-08-14 00:41:59 +08:00
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ
2018-09-04 22:42:34 +08:00
Collider::Relation GetRelation() const;
2018-08-14 00:41:59 +08:00
protected:
2018-09-04 22:42:34 +08:00
Node * node_;
Collider::Relation relation_;
2018-08-14 00:41:59 +08:00
};
}