| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | #pragma once
 | 
					
						
							|  |  |  |  | #include <Windows.h>
 | 
					
						
							|  |  |  |  | #include <string>
 | 
					
						
							|  |  |  |  | #include <vector>
 | 
					
						
							|  |  |  |  | #include <functional>
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | namespace e2d | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | struct EPoint | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	float x; | 
					
						
							|  |  |  |  | 	float y; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	EPoint() | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		x = 0; | 
					
						
							|  |  |  |  | 		y = 0; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	EPoint(float x, float y) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		this->x = x; | 
					
						
							|  |  |  |  | 		this->y = y; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	EPoint operator + (EPoint const & p) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		return EPoint(x + p.x, y + p.y); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	EPoint operator - (EPoint const & p) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		return EPoint(x - p.x, y - p.y); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | struct ESize | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	float width; | 
					
						
							|  |  |  |  | 	float height; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	ESize() | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		width = 0; | 
					
						
							|  |  |  |  | 		height = 0; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	ESize(float width, float height) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		this->width = width; | 
					
						
							|  |  |  |  | 		this->height = height; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	ESize operator + (ESize const & size) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		return ESize(width + size.width, height + size.height); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	ESize operator - (ESize const & size) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		return ESize(width - size.width, height - size.height); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | struct EWindowStyle | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	LPCTSTR m_pIconID;	/* <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC> ID */ | 
					
						
							|  |  |  |  | 	bool m_bNoClose;	/* <20><><EFBFBD>ùرհ<D8B1>ť */ | 
					
						
							|  |  |  |  | 	bool m_bNoMiniSize;	/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ť */ | 
					
						
							|  |  |  |  | 	bool m_bTopMost;	/* <20><><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD> */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	EWindowStyle() | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		m_pIconID = 0; | 
					
						
							|  |  |  |  | 		m_bNoClose = false; | 
					
						
							|  |  |  |  | 		m_bNoMiniSize = false; | 
					
						
							|  |  |  |  | 		m_bTopMost = false; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	EWindowStyle( | 
					
						
							|  |  |  |  | 		LPCTSTR pIconID | 
					
						
							|  |  |  |  | 	) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		m_pIconID = pIconID; | 
					
						
							|  |  |  |  | 		m_bNoClose = false; | 
					
						
							|  |  |  |  | 		m_bNoMiniSize = false; | 
					
						
							|  |  |  |  | 		m_bTopMost = false; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	EWindowStyle( | 
					
						
							|  |  |  |  | 		LPCTSTR pIconID, | 
					
						
							|  |  |  |  | 		bool bNoClose, | 
					
						
							|  |  |  |  | 		bool bNoMiniSize, | 
					
						
							|  |  |  |  | 		bool bTopMost | 
					
						
							|  |  |  |  | 	) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		m_pIconID = pIconID; | 
					
						
							|  |  |  |  | 		m_bNoClose = bNoClose; | 
					
						
							|  |  |  |  | 		m_bNoMiniSize = bNoMiniSize; | 
					
						
							|  |  |  |  | 		m_bTopMost = bTopMost; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-05 14:45:53 +08:00
										 |  |  |  | // <20><>ά<EFBFBD><CEAC><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | typedef EPoint EVec; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-05 14:45:53 +08:00
										 |  |  |  | // <20>ַ<EFBFBD><D6B7><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | typedef std::wstring EString; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-05 14:45:53 +08:00
										 |  |  |  | // Vector <20><><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | template<typename T> | 
					
						
							|  |  |  |  | using EVector = std::vector<T>; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-05 14:45:53 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | class ENode; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | // <20><>ʱ<EFBFBD><CAB1><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ö<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õĴ<C3B5><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0 <20><>ʼ<EFBFBD><CABC>
 | 
					
						
							|  |  |  |  | typedef std::function<void(int)> TIMER_CALLBACK; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | typedef std::function<void()> BUTTON_CLICK_CALLBACK; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | typedef std::function<void()> KEY_LISTENER_CALLBACK; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | typedef std::function<void()> MOUSE_LISTENER_CALLBACK; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>λ<EFBFBD>ã<EFBFBD>
 | 
					
						
							|  |  |  |  | typedef std::function<void(EPoint mousePos)> MOUSE_CLICK_LISTENER_CALLBACK; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // <20><><EFBFBD>갴<EFBFBD><EAB0B4><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>λ<EFBFBD>ã<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | typedef MOUSE_CLICK_LISTENER_CALLBACK  MOUSE_PRESS_LISTENER_CALLBACK; | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | // <20><><EFBFBD><EFBFBD>˫<EFBFBD><CBAB><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ˫<CEAA><CBAB>λ<EFBFBD>ã<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | typedef MOUSE_CLICK_LISTENER_CALLBACK  MOUSE_DBLCLK_LISTENER_CALLBACK; | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>϶<EFBFBD>ǰλ<C7B0>ú<EFBFBD><C3BA>϶<EFBFBD><CFB6><EFBFBD>λ<EFBFBD>ã<EFBFBD>
 | 
					
						
							|  |  |  |  | typedef std::function<void(EPoint begin, EPoint end)> MOUSE_DRAG_LISTENER_CALLBACK; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | typedef std::function<void()> PHYSICS_LISTENER_CALLBACK; | 
					
						
							| 
									
										
										
										
											2017-11-05 14:45:53 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | // <20><>ײ<EFBFBD><D7B2>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | typedef PHYSICS_LISTENER_CALLBACK  COLLISION_LISTENER_CALLBACK; | 
					
						
							| 
									
										
										
										
											2017-11-05 14:45:53 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | } |