153 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
		
		
			
		
	
	
			153 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
|  | #pragma once
 | |||
|  | #include "e2dcommon.h"
 | |||
|  | 
 | |||
|  | 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, | |||
|  | 		WPARAM wParam, | |||
|  | 		LPARAM lParam | |||
|  | 	); | |||
|  | 
 | |||
|  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
 | |||
|  | 	KeyCode getCode() const; | |||
|  | 
 | |||
|  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | |||
|  | 	int getCount() const; | |||
|  | 
 | |||
|  | 	// <20><>ȡ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
 | |||
|  | 	KeyEvent::Type getType() const; | |||
|  | 
 | |||
|  | 	// VK <20><>ֵת<D6B5><D7AA>
 | |||
|  | 	static KeyCode convertKeyCode( | |||
|  | 		WPARAM wParam | |||
|  | 	); | |||
|  | 
 | |||
|  | protected: | |||
|  | 	int _count; | |||
|  | 	KeyCode _code; | |||
|  | 	KeyEvent::Type _type; | |||
|  | }; | |||
|  | 
 | |||
|  | 
 | |||
|  | // <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, | |||
|  | 		WPARAM wParam, | |||
|  | 		LPARAM lParam | |||
|  | 	); | |||
|  | 
 | |||
|  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | |||
|  | 	float getX() const; | |||
|  | 
 | |||
|  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | |||
|  | 	float getY() const; | |||
|  | 
 | |||
|  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | |||
|  | 	Point getPos() const; | |||
|  | 
 | |||
|  | 	// <20><>ȡ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
 | |||
|  | 	MouseEvent::Type getType() const; | |||
|  | 
 | |||
|  | 	float getWheelDelta() const; | |||
|  | 
 | |||
|  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
 | |||
|  | 	bool isLButtonDown() const; | |||
|  | 
 | |||
|  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD><D2BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
 | |||
|  | 	bool isRButtonDown() const; | |||
|  | 
 | |||
|  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><D0BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
 | |||
|  | 	bool isMButtonDown() const; | |||
|  | 
 | |||
|  | 	// Shift <20><><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
 | |||
|  | 	bool isShiftDown() const; | |||
|  | 
 | |||
|  | 	// Ctrl <20><><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
 | |||
|  | 	bool isCtrlDown() const; | |||
|  | 
 | |||
|  | protected: | |||
|  | 	UINT _message; | |||
|  | 	WPARAM _wParam; | |||
|  | 	LPARAM _lParam; | |||
|  | 	Point _pos; | |||
|  | 	MouseEvent::Type _type; | |||
|  | }; | |||
|  | 
 | |||
|  | 
 | |||
|  | // <20><>ײ<EFBFBD>¼<EFBFBD>
 | |||
|  | class Collision | |||
|  | { | |||
|  | public: | |||
|  | 	Collision(); | |||
|  | 
 | |||
|  | 	explicit Collision( | |||
|  | 		Node* node, | |||
|  | 		Collider::Relation relation | |||
|  | 	); | |||
|  | 
 | |||
|  | 	~Collision(); | |||
|  | 
 | |||
|  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD>ڵ<EFBFBD>
 | |||
|  | 	Node* getNode() const; | |||
|  | 
 | |||
|  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ
 | |||
|  | 	Collider::Relation getRelation() const; | |||
|  | 
 | |||
|  | protected: | |||
|  | 	Node * _node; | |||
|  | 	Collider::Relation _relation; | |||
|  | }; | |||
|  | 
 | |||
|  | 
 | |||
|  | // <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
 | |||
|  | class EventHandler | |||
|  | { | |||
|  | public: | |||
|  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
 | |||
|  | 	virtual void handle(KeyEvent e) { } | |||
|  | 
 | |||
|  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
 | |||
|  | 	virtual void handle(MouseEvent e) { } | |||
|  | 
 | |||
|  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2>Ϣ
 | |||
|  | 	virtual void handle(Collision collision) { } | |||
|  | }; | |||
|  | 
 | |||
|  | } |