| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | /******************************************************
 | 
					
						
							| 
									
										
										
										
											2017-09-29 17:57:17 +08:00
										 |  |  |  | * Easy2D Game Engine | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | *  | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | * Website: http://www.easy2d.cn
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:54:29 +08:00
										 |  |  |  | * Github:  https://github.com/Nomango/Easy2D
 | 
					
						
							|  |  |  |  | * Gitee:   https://gitee.com/werelone/Easy2D
 | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | ******************************************************/ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | #pragma once
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | #ifndef __cplusplus
 | 
					
						
							|  |  |  |  | 	#error Easy2D is only for C++
 | 
					
						
							|  |  |  |  | #endif
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-18 23:59:08 +08:00
										 |  |  |  | #if _MSC_VER < 1900
 | 
					
						
							|  |  |  |  | 	#error Do Visual Studio 2015/2017 specific stuff
 | 
					
						
							| 
									
										
										
										
											2017-09-12 12:53:34 +08:00
										 |  |  |  | #endif
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | #include <Windows.h>
 | 
					
						
							|  |  |  |  | #include <tchar.h>
 | 
					
						
							|  |  |  |  | #include <atltypes.h>
 | 
					
						
							|  |  |  |  | #include <atlimage.h>
 | 
					
						
							|  |  |  |  | #include <vector>
 | 
					
						
							|  |  |  |  | #include <stack>
 | 
					
						
							|  |  |  |  | #include <functional>
 | 
					
						
							| 
									
										
										
										
											2017-10-08 16:46:44 +08:00
										 |  |  |  | #include <random>
 | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | #if defined(UNICODE) && (_DEBUG)
 | 
					
						
							|  |  |  |  | 	#pragma comment(lib,"Easy2Ddw.lib")
 | 
					
						
							|  |  |  |  | #elif !defined(UNICODE) && (_DEBUG)
 | 
					
						
							|  |  |  |  | 	#pragma comment(lib,"Easy2Dd.lib")
 | 
					
						
							|  |  |  |  | #elif defined(UNICODE)
 | 
					
						
							|  |  |  |  | 	#pragma comment(lib,"Easy2Dw.lib")
 | 
					
						
							|  |  |  |  | #elif !defined(UNICODE)
 | 
					
						
							|  |  |  |  | 	#pragma comment(lib,"Easy2D.lib")
 | 
					
						
							|  |  |  |  | #endif
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | // Type Declare
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | typedef CPoint						CVector; | 
					
						
							|  |  |  |  | typedef unsigned int				VK_KEY; | 
					
						
							|  |  |  |  | typedef std::function<void()>		CLICK_CALLBACK; | 
					
						
							|  |  |  |  | typedef std::function<void()>		TIMER_CALLBACK; | 
					
						
							|  |  |  |  | typedef std::function<void(VK_KEY)>	KEY_CALLBACK; | 
					
						
							|  |  |  |  | typedef std::function<void()>		MOUSE_CALLBACK; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | #ifdef UNICODE
 | 
					
						
							|  |  |  |  | 	typedef std::wstring TString; | 
					
						
							|  |  |  |  | #else
 | 
					
						
							|  |  |  |  | 	typedef std::string TString; | 
					
						
							|  |  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | // Classes Declare
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | namespace easy2d | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	class App; | 
					
						
							|  |  |  |  | 	class Scene; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	class Object; | 
					
						
							|  |  |  |  | 	class Node; | 
					
						
							|  |  |  |  | 	class FontStyle; | 
					
						
							|  |  |  |  | 	class Color; | 
					
						
							|  |  |  |  | 	class RectNode; | 
					
						
							|  |  |  |  | 	class Text; | 
					
						
							|  |  |  |  | 	class Image; | 
					
						
							|  |  |  |  | 	class BatchNode; | 
					
						
							|  |  |  |  | 	class MouseNode; | 
					
						
							|  |  |  |  | 	class Button; | 
					
						
							|  |  |  |  | 	class TextButton; | 
					
						
							|  |  |  |  | 	class ImageButton; | 
					
						
							|  |  |  |  | 	class Layer; | 
					
						
							|  |  |  |  | 	class Sprite; | 
					
						
							|  |  |  |  | 	class BatchSprite; | 
					
						
							|  |  |  |  | 	class Shape; | 
					
						
							|  |  |  |  | 	class Circle; | 
					
						
							|  |  |  |  | 	class Rectangle; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	class Action; | 
					
						
							|  |  |  |  | 	class Animation; | 
					
						
							|  |  |  |  | 	class ActionMoveTo; | 
					
						
							|  |  |  |  | 	class ActionMoveBy; | 
					
						
							|  |  |  |  | 	class ActionScaleTo; | 
					
						
							|  |  |  |  | 	class ActionScaleBy; | 
					
						
							|  |  |  |  | 	class ActionOpacityTo; | 
					
						
							|  |  |  |  | 	class ActionOpacityBy; | 
					
						
							|  |  |  |  | 	class ActionFadeIn; | 
					
						
							|  |  |  |  | 	class ActionFadeOut; | 
					
						
							|  |  |  |  | 	class ActionFrames; | 
					
						
							|  |  |  |  | 	class ActionDelay; | 
					
						
							|  |  |  |  | 	class ActionCallback; | 
					
						
							|  |  |  |  | 	class ActionTwo; | 
					
						
							|  |  |  |  | 	class ActionSequence; | 
					
						
							|  |  |  |  | 	class ActionNeverStop; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	class MouseMsg; | 
					
						
							|  |  |  |  | 	class KeyMsg; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	class FreePool; | 
					
						
							|  |  |  |  | 	class FileUtils; | 
					
						
							|  |  |  |  | 	class MusicUtils; | 
					
						
							|  |  |  |  | 	class ActionManager; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | // Classes
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | namespace easy2d | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class App | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	friend Scene; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | public: | 
					
						
							|  |  |  |  | 	App(); | 
					
						
							|  |  |  |  | 	~App(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ڿ<EFBFBD>ѡģʽ
 | 
					
						
							|  |  |  |  | 	enum MODE { SHOW_CONSOLE = 1, NO_CLOSE = 2, NO_MINI_MIZE = 4 }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void createWindow(int width, int height, int mode = 0); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void createWindow(CSize size, int mode = 0); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	void createWindow(TString title, int width, int height, int mode = 0); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	void createWindow(TString title, CSize size, int mode = 0); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	int run(); | 
					
						
							|  |  |  |  | 	// <20>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>Դ
 | 
					
						
							|  |  |  |  | 	void free(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
 | 
					
						
							|  |  |  |  | 	static App * get(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>
 | 
					
						
							|  |  |  |  | 	static void setOrigin(int originX, int originY); | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static int getOriginX(); | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static int getOriginY(); | 
					
						
							|  |  |  |  | 	// <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void quit(); | 
					
						
							|  |  |  |  | 	// <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void end(); | 
					
						
							|  |  |  |  | 	// <20>Ĵ<DEB8><C4B4>ڴ<EFBFBD>С
 | 
					
						
							|  |  |  |  | 	static void setWindowSize(int width, int height); | 
					
						
							|  |  |  |  | 	// <20>Ĵ<DEB8><C4B4>ڴ<EFBFBD>С
 | 
					
						
							|  |  |  |  | 	static void setWindowSize(CSize size); | 
					
						
							|  |  |  |  | 	// <20>رմ<D8B1><D5B4><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void close(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ô<EFBFBD><C3B4>ڱ<EFBFBD><DAB1><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	static void setWindowTitle(TString title); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	static TString getWindowTitle(); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static int getWidth(); | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ڸ߶<DAB8>
 | 
					
						
							|  |  |  |  | 	static int getHeight(); | 
					
						
							|  |  |  |  | 	// <20>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void enterScene(Scene *scene, bool save = true); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void backScene(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void clearScene(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD> AppName
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	static void setAppName(TString appname); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// <20><>ȡ AppName
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	static TString getAppName(); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// <20>Ĵ<DEB8><C4B4>ڱ<EFBFBD><DAB1><EFBFBD>ɫ
 | 
					
						
							|  |  |  |  | 	static void setBkColor(COLORREF color); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>
 | 
					
						
							|  |  |  |  | 	static void setFPS(DWORD fps); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>û<EFBFBD>ͼ<EFBFBD><CDBC>ʽΪĬ<CEAA><C4AC>ֵ
 | 
					
						
							|  |  |  |  | 	static void reset(); | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static Scene * getCurrentScene(); | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD>еij<D0B5><C4B3><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static Scene * getLoadingScene(); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	TString				m_sTitle; | 
					
						
							|  |  |  |  | 	TString				m_sAppName; | 
					
						
							| 
									
										
										
										
											2017-10-06 02:32:33 +08:00
										 |  |  |  | 	Scene*				m_pCurrentScene; | 
					
						
							|  |  |  |  | 	Scene*				m_pNextScene; | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	Scene*				m_pLoadingScene; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	std::stack<Scene*>	m_SceneStack; | 
					
						
							|  |  |  |  | 	LARGE_INTEGER		m_nAnimationInterval; | 
					
						
							|  |  |  |  | 	CSize				m_Size; | 
					
						
							|  |  |  |  | 	int					m_nWindowMode; | 
					
						
							|  |  |  |  | 	bool				m_bRunning; | 
					
						
							|  |  |  |  | 	bool				m_bSaveScene; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	void _initGraph(); | 
					
						
							|  |  |  |  | 	void _mainLoop(); | 
					
						
							|  |  |  |  | 	void _enterNextScene(); | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class FreePool | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	friend App; | 
					
						
							|  |  |  |  | 	friend Object; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | private: | 
					
						
							|  |  |  |  | 	// ˢ<><CBA2><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void __flush(); | 
					
						
							|  |  |  |  | 	// <20><>һ<EFBFBD><D2BB><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷų<CDB7>
 | 
					
						
							|  |  |  |  | 	static void __add(Object * nptr); | 
					
						
							| 
									
										
										
										
											2017-10-05 11:28:13 +08:00
										 |  |  |  | 	// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD>нڵ<D0BD>
 | 
					
						
							|  |  |  |  | 	static void __clearAllObjects(); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class Scene | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	friend App; | 
					
						
							|  |  |  |  | 	friend MouseMsg; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | public: | 
					
						
							|  |  |  |  | 	Scene(); | 
					
						
							|  |  |  |  | 	~Scene(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-06 16:40:10 +08:00
										 |  |  |  | 	// <20><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-08 16:53:51 +08:00
										 |  |  |  | 	virtual void init(); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// <20><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>Զ<EFBFBD>ִ<EFBFBD><D6B4>
 | 
					
						
							|  |  |  |  | 	virtual void onEnter(); | 
					
						
							|  |  |  |  | 	// <20><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뿪<EFBFBD><EBBFAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>Զ<EFBFBD>ִ<EFBFBD><D6B4>
 | 
					
						
							|  |  |  |  | 	virtual void onExit(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void add(Node * child, int zOrder = 0); | 
					
						
							|  |  |  |  | 	// ɾ<><C9BE><EFBFBD>ӳ<EFBFBD>Ա
 | 
					
						
							|  |  |  |  | 	bool del(Node * child); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>Ա
 | 
					
						
							|  |  |  |  | 	void clearAllChildren(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	std::vector<Node*> m_vChildren; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	void _exec(); | 
					
						
							|  |  |  |  | 	void _onDraw(); | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class Object | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	friend FreePool; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | public: | 
					
						
							|  |  |  |  | 	Object(); | 
					
						
							|  |  |  |  | 	virtual ~Object(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	void retain(); | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	// <20>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	void release(); | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void autoRelease(); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	int m_nRefCount; | 
					
						
							| 
									
										
										
										
											2017-10-05 11:28:13 +08:00
										 |  |  |  | 	bool m_bAutoRelease; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class MouseMsg | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	friend App; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | public: | 
					
						
							|  |  |  |  | 	MouseMsg(); | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	MouseMsg(TString name, const MOUSE_CALLBACK& callback); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	~MouseMsg(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-06 14:25:15 +08:00
										 |  |  |  | 	enum MESSAGE  | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		MOVE = 0x0200,	// <20><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>
 | 
					
						
							|  |  |  |  | 		LBUTTON_DOWN,	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 		LBUTTON_UP,		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̧<EFBFBD><CCA7>
 | 
					
						
							|  |  |  |  | 		LBUTTON_DBLCLK,	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><CBAB>
 | 
					
						
							|  |  |  |  | 		RBUTTON_DOWN,	// <20><><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD><D2BC><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 		RBUTTON_UP,		// <20><><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD>̧<EFBFBD><CCA7>
 | 
					
						
							|  |  |  |  | 		RBUTTON_DBLCLK,	// <20><><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD>˫<EFBFBD><CBAB>
 | 
					
						
							|  |  |  |  | 		MBUTTON_DOWN,	// <20><><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 		MBUTTON_UP,		// <20><><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD>̧<EFBFBD><CCA7>
 | 
					
						
							|  |  |  |  | 		MBUTTON_DBLCLK,	// <20><><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD>˫<EFBFBD><CBAB>
 | 
					
						
							|  |  |  |  | 		WHEEL			// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	}; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-06 16:40:10 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void start(); | 
					
						
							|  |  |  |  | 	// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void stop(); | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>״̬
 | 
					
						
							|  |  |  |  | 	void wait(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void notify(); | 
					
						
							| 
									
										
										
										
											2017-10-06 16:40:10 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static bool isLButtonDown(); | 
					
						
							|  |  |  |  | 	// <20>Ҽ<EFBFBD><D2BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static bool isRButtonDown(); | 
					
						
							|  |  |  |  | 	// <20>м<EFBFBD><D0BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static bool isMButtonDown(); | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static int getX(); | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static int getY(); | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static CPoint getPos(); | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
 | 
					
						
							|  |  |  |  | 	static int getWheel(); | 
					
						
							| 
									
										
										
										
											2017-10-06 14:25:15 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
 | 
					
						
							|  |  |  |  | 	static MESSAGE getMsg(); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-06 16:40:10 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void addListener(TString name, const MOUSE_CALLBACK& callback); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void startListener(TString name); | 
					
						
							|  |  |  |  | 	// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void stopListener(TString name); | 
					
						
							|  |  |  |  | 	// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void delListener(TString name); | 
					
						
							|  |  |  |  | 	// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void clearAllListeners(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	static void notifyAllSceneListeners(Scene* scene); | 
					
						
							| 
									
										
										
										
											2017-10-06 16:40:10 +08:00
										 |  |  |  | 	// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	static void waitAllSceneListeners(Scene* scene); | 
					
						
							| 
									
										
										
										
											2017-10-06 16:40:10 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void clearAllSceneListeners(Scene* scene); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | private: | 
					
						
							|  |  |  |  | 	static void __exec(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2017-10-06 16:40:10 +08:00
										 |  |  |  | 	bool			m_bRunning; | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	bool			m_bWaiting; | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	TString			m_sName; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	MOUSE_CALLBACK	m_callback; | 
					
						
							| 
									
										
										
										
											2017-10-06 02:32:33 +08:00
										 |  |  |  | 	Scene *			m_pParentScene; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	// ִ<>лص<D0BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void onMouseMsg(); | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class KeyMsg | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	friend App; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	KeyMsg(TString name, const KEY_CALLBACK& callback); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	~KeyMsg(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// ִ<>лص<D0BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void onKbHit(VK_KEY key); | 
					
						
							| 
									
										
										
										
											2017-10-06 16:40:10 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void start(); | 
					
						
							|  |  |  |  | 	// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void stop(); | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>״̬
 | 
					
						
							|  |  |  |  | 	void wait(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void notify(); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-06 16:40:10 +08:00
										 |  |  |  | 	// <20>жϼ<D0B6><CFBC>Ƿ<C7B7><F1B1BBB0>£<EFBFBD><C2A3><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD>true
 | 
					
						
							|  |  |  |  | 	static bool isKeyDown(VK_KEY key); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	static void addListener(TString name, const KEY_CALLBACK& callback); | 
					
						
							| 
									
										
										
										
											2017-10-06 16:40:10 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void startListener(TString name); | 
					
						
							|  |  |  |  | 	// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void stopListener(TString name); | 
					
						
							|  |  |  |  | 	// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void KeyMsg::delListener(TString name); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	static void notifyAllSceneListeners(Scene* scene); | 
					
						
							| 
									
										
										
										
											2017-10-06 16:40:10 +08:00
										 |  |  |  | 	// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	static void waitAllSceneListeners(Scene* scene); | 
					
						
							| 
									
										
										
										
											2017-10-06 02:32:33 +08:00
										 |  |  |  | 	// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>ж<EFBFBD>ʱ<EFBFBD><CAB1>
 | 
					
						
							|  |  |  |  | 	static void clearAllSceneListeners(Scene* scene); | 
					
						
							| 
									
										
										
										
											2017-10-06 16:40:10 +08:00
										 |  |  |  | 	// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void clearAllListeners(); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	// <20><>ĸ<EFBFBD><C4B8>ֵ
 | 
					
						
							|  |  |  |  | 	static const VK_KEY A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z; | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ּ<EFBFBD>ֵ
 | 
					
						
							|  |  |  |  | 	static const VK_KEY NUM_1, NUM_2, NUM_3, NUM_4, NUM_5, NUM_6, NUM_7, NUM_8, NUM_9, NUM_0; | 
					
						
							|  |  |  |  | 	// С<><D0A1><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD>ֵ
 | 
					
						
							|  |  |  |  | 	static const VK_KEY NUMPAD_1, NUMPAD_2, NUMPAD_3, NUMPAD_4, NUMPAD_5, NUMPAD_6, NUMPAD_7, NUMPAD_8, NUMPAD_9, NUMPAD_0; | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>Ƽ<EFBFBD>ֵ
 | 
					
						
							|  |  |  |  | 	static const VK_KEY Enter, Space, Up, Down, Left, Right, Esc, Shift, LShift, RShift, Ctrl, LCtrl, RCtrl; | 
					
						
							|  |  |  |  | 	// F <20><>ֵ
 | 
					
						
							|  |  |  |  | 	static const VK_KEY F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | private: | 
					
						
							|  |  |  |  | 	static void __exec(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2017-10-06 16:40:10 +08:00
										 |  |  |  | 	bool			m_bRunning; | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	bool			m_bWaiting; | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	TString			m_sName; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	KEY_CALLBACK	m_callback; | 
					
						
							| 
									
										
										
										
											2017-10-06 02:32:33 +08:00
										 |  |  |  | 	Scene *			m_pParentScene; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class FontStyle : | 
					
						
							|  |  |  |  | 	public Object | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	friend Text; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | public: | 
					
						
							|  |  |  |  | 	FontStyle(); | 
					
						
							|  |  |  |  | 	/**
 | 
					
						
							|  |  |  |  | 	*  ʹ<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><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>ʽ | 
					
						
							|  |  |  |  | 	*/ | 
					
						
							|  |  |  |  | 	FontStyle(LPCTSTR fontfamily, LONG height = 18, LONG weight = 0, LONG width = 0, | 
					
						
							|  |  |  |  | 		bool italic = 0, bool underline = 0, bool strikeout = 0, LONG escapement = 0, | 
					
						
							|  |  |  |  | 		LONG orientation = 0, bool quality = true); | 
					
						
							|  |  |  |  | 	virtual ~FontStyle(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡĬ<C8A1><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static FontStyle * getDefault(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD>߶<EFBFBD>
 | 
					
						
							|  |  |  |  | 	void setHeight(LONG value); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>0<EFBFBD><30>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>
 | 
					
						
							|  |  |  |  | 	void setWidth(LONG value); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void setFontFamily(LPCTSTR value); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>ʻ<EFBFBD><CABB><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD>Χ0~1000<30><30>Ĭ<EFBFBD><C4AC>Ϊ0
 | 
					
						
							|  |  |  |  | 	void setWeight(LONG value); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>б<EFBFBD><D0B1>
 | 
					
						
							|  |  |  |  | 	void setItalic(bool value); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>»<EFBFBD><C2BB><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void setUnderline(bool value); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void setStrikeOut(bool value); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>Ƕȣ<C7B6><C8A3><EFBFBD>λ0.1<EFBFBD>ȣ<EFBFBD>Ĭ<EFBFBD><EFBFBD>Ϊ0
 | 
					
						
							|  |  |  |  | 	void setEscapement(LONG value); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>Ƕȣ<C7B6><C8A3><EFBFBD>λ0.1<EFBFBD>ȣ<EFBFBD>Ĭ<EFBFBD><EFBFBD>Ϊ0
 | 
					
						
							|  |  |  |  | 	void setOrientation(LONG value); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>忹<EFBFBD><E5BFB9><EFBFBD>ݣ<EFBFBD>Ĭ<EFBFBD><C4AC>Ϊtrue
 | 
					
						
							|  |  |  |  | 	void setQuality(bool value); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	LOGFONT m_font; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class FontWeight | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	static const LONG dontcare;		// <20><>ϸֵ 0
 | 
					
						
							|  |  |  |  | 	static const LONG thin;			// <20><>ϸֵ 100
 | 
					
						
							|  |  |  |  | 	static const LONG extraLight;	// <20><>ϸֵ 200
 | 
					
						
							|  |  |  |  | 	static const LONG light;		// <20><>ϸֵ 300
 | 
					
						
							|  |  |  |  | 	static const LONG normal;		// <20><>ϸֵ 400
 | 
					
						
							|  |  |  |  | 	static const LONG regular;		// <20><>ϸֵ 400
 | 
					
						
							|  |  |  |  | 	static const LONG medium;		// <20><>ϸֵ 500
 | 
					
						
							|  |  |  |  | 	static const LONG demiBlod;		// <20><>ϸֵ 600
 | 
					
						
							|  |  |  |  | 	static const LONG blod;			// <20><>ϸֵ 700
 | 
					
						
							|  |  |  |  | 	static const LONG extraBold;	// <20><>ϸֵ 800
 | 
					
						
							|  |  |  |  | 	static const LONG black;		// <20><>ϸֵ 900
 | 
					
						
							|  |  |  |  | 	static const LONG heavy;		// <20><>ϸֵ 900
 | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class Color | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	static const COLORREF black;		// <20><>ɫ
 | 
					
						
							|  |  |  |  | 	static const COLORREF blue;			// <20><>ɫ
 | 
					
						
							|  |  |  |  | 	static const COLORREF green;		// <20><>ɫ
 | 
					
						
							|  |  |  |  | 	static const COLORREF cyan;			// <20><>ɫ
 | 
					
						
							|  |  |  |  | 	static const COLORREF red;			// <20><>ɫ
 | 
					
						
							|  |  |  |  | 	static const COLORREF magenta;		// <20><>ɫ
 | 
					
						
							|  |  |  |  | 	static const COLORREF brown;		// <20><>ɫ
 | 
					
						
							|  |  |  |  | 	static const COLORREF lightgray;	// <20><><EFBFBD><EFBFBD>ɫ
 | 
					
						
							|  |  |  |  | 	static const COLORREF darkgray;		// <20><><EFBFBD><EFBFBD>ɫ
 | 
					
						
							|  |  |  |  | 	static const COLORREF lightblue;	// <20><><EFBFBD><EFBFBD>ɫ
 | 
					
						
							|  |  |  |  | 	static const COLORREF lightgreen;	// <20><><EFBFBD><EFBFBD>ɫ
 | 
					
						
							|  |  |  |  | 	static const COLORREF lightcyan;	// <20><><EFBFBD><EFBFBD>ɫ
 | 
					
						
							|  |  |  |  | 	static const COLORREF lightred;		// <20><><EFBFBD><EFBFBD>ɫ
 | 
					
						
							|  |  |  |  | 	static const COLORREF lightmagenta;	// <20><><EFBFBD><EFBFBD>ɫ
 | 
					
						
							|  |  |  |  | 	static const COLORREF yellow;		// <20><><EFBFBD><EFBFBD>ɫ
 | 
					
						
							|  |  |  |  | 	static const COLORREF white;		// <20><>ɫ
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// ͨ<><CDA8><EFBFBD>졢<EFBFBD>̡<EFBFBD><CCA1><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD>ϳ<EFBFBD><CFB3><EFBFBD>ɫ
 | 
					
						
							|  |  |  |  | 	static COLORREF getFromRGB(BYTE r, BYTE g, BYTE b); | 
					
						
							|  |  |  |  | 	// ͨ<><CDA8>ɫ<EFBFBD>ࡢ<EFBFBD><E0A1A2><EFBFBD>Ͷȡ<CDB6><C8A1><EFBFBD><EFBFBD>Ⱥϳ<C8BA><CFB3><EFBFBD>ɫ
 | 
					
						
							|  |  |  |  | 	static COLORREF getFromHSL(float H, float S, float L); | 
					
						
							|  |  |  |  | 	// ͨ<><CDA8>ɫ<EFBFBD>ࡢ<EFBFBD><E0A1A2><EFBFBD>Ͷȡ<CDB6><C8A1><EFBFBD><EFBFBD>Ⱥϳ<C8BA><CFB3><EFBFBD>ɫ
 | 
					
						
							|  |  |  |  | 	static COLORREF getFromHSV(float H, float S, float V); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ɫ<EFBFBD>еĺ<D0B5>ɫֵ
 | 
					
						
							|  |  |  |  | 	static BYTE getRValue(COLORREF color); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ɫ<EFBFBD>е<EFBFBD><D0B5><EFBFBD>ɫֵ
 | 
					
						
							|  |  |  |  | 	static BYTE getGValue(COLORREF color); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ɫ<EFBFBD>е<EFBFBD><D0B5><EFBFBD>ɫֵ
 | 
					
						
							|  |  |  |  | 	static BYTE getBValue(COLORREF color); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>Ӧ<EFBFBD>ĻҶ<C4BB>ֵ<EFBFBD><D6B5>ɫ
 | 
					
						
							|  |  |  |  | 	static COLORREF getGray(COLORREF color); | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class Node : | 
					
						
							|  |  |  |  | 	public Object | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	friend Scene; | 
					
						
							|  |  |  |  | 	friend BatchNode; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | public: | 
					
						
							|  |  |  |  | 	Node(); | 
					
						
							|  |  |  |  | 	Node(CPoint p); | 
					
						
							|  |  |  |  | 	Node(int x, int y); | 
					
						
							|  |  |  |  | 	virtual ~Node(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual int getX() const; | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual int getY() const; | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual CPoint getPos() const; | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ýڵ<C3BD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void setX(int x); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ýڵ<C3BD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void setY(int y); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ýڵ<C3BD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void setPos(int x, int y); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ýڵ<C3BD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void setPos(CPoint p); | 
					
						
							|  |  |  |  | 	// <20>ƶ<EFBFBD><C6B6>ڵ<EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void move(int x, int y); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ýڵ<C3BD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void move(CVector v); | 
					
						
							|  |  |  |  | 	// <20>ڵ<EFBFBD><DAB5>Ƿ<EFBFBD><C7B7><EFBFBD>ʾ
 | 
					
						
							|  |  |  |  | 	virtual bool display() const; | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ýڵ<C3BD><DAB5>Ƿ<EFBFBD><C7B7><EFBFBD>ʾ
 | 
					
						
							|  |  |  |  | 	virtual void setDisplay(bool value); | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>ͼ˳<CDBC><CBB3>
 | 
					
						
							|  |  |  |  | 	virtual int getZOrder() const; | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ýڵ<C3BD><DAB5><EFBFBD>ͼ˳<CDBC><CBB3><EFBFBD><EFBFBD>0Ϊ<30><CEAA><EFBFBD>Ȼ<EFBFBD><C8BB>ƣ<EFBFBD><C6A3><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ײ㣩
 | 
					
						
							|  |  |  |  | 	virtual void setZOrder(int z); | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD>
 | 
					
						
							|  |  |  |  | 	Scene * getParentScene(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	int		m_nZOrder; | 
					
						
							|  |  |  |  | 	bool	m_bDisplay; | 
					
						
							|  |  |  |  | 	Scene*	m_pScene; | 
					
						
							|  |  |  |  | 	CPoint	m_Pos; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	virtual bool _exec(bool active); | 
					
						
							|  |  |  |  | 	virtual void _onDraw() = 0; | 
					
						
							|  |  |  |  | 	void setParentScene(Scene * scene); | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class BatchNode : | 
					
						
							|  |  |  |  | 	public Node | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	BatchNode(); | 
					
						
							|  |  |  |  | 	virtual ~BatchNode(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD>
 | 
					
						
							|  |  |  |  | 	void add(Node *child, int z_Order = 0); | 
					
						
							|  |  |  |  | 	// ɾ<><C9BE><EFBFBD>ӽڵ<D3BD>
 | 
					
						
							|  |  |  |  | 	bool del(Node * child); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD>
 | 
					
						
							|  |  |  |  | 	void clearAllChildren(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	std::vector<Node*> m_vChildren; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	virtual bool _exec(bool active) override; | 
					
						
							|  |  |  |  | 	virtual void _onDraw() override; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class Layer : | 
					
						
							|  |  |  |  | 	public BatchNode | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	Layer(); | 
					
						
							|  |  |  |  | 	virtual ~Layer(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// ͼ<><CDBC><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
 | 
					
						
							|  |  |  |  | 	int getBlock() const; | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
 | 
					
						
							|  |  |  |  | 	void setBlock(bool block); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	bool m_bBlock; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	virtual bool _exec(bool active) override; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class RectNode : | 
					
						
							|  |  |  |  | 	public Node | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	RectNode(); | 
					
						
							|  |  |  |  | 	~RectNode(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	virtual bool isCollisionWith(RectNode * rectNode) const; | 
					
						
							|  |  |  |  | 	virtual bool isPointIn(CPoint p) const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	virtual void setWindowCenterX(); | 
					
						
							|  |  |  |  | 	virtual void setWindowCenterY(); | 
					
						
							|  |  |  |  | 	virtual void setWindowCenter(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	virtual int getX() const override; | 
					
						
							|  |  |  |  | 	virtual int getY() const override; | 
					
						
							|  |  |  |  | 	virtual CPoint getPos() const override; | 
					
						
							|  |  |  |  | 	virtual int getWidth() const; | 
					
						
							|  |  |  |  | 	virtual int getHeight() const; | 
					
						
							|  |  |  |  | 	virtual CSize getSize() const; | 
					
						
							|  |  |  |  | 	virtual CRect getRect() const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	virtual void setX(int x) override; | 
					
						
							|  |  |  |  | 	virtual void setY(int y) override; | 
					
						
							|  |  |  |  | 	virtual void setPos(int x, int y) override; | 
					
						
							|  |  |  |  | 	virtual void setPos(CPoint p) override; | 
					
						
							|  |  |  |  | 	virtual void move(int x, int y) override; | 
					
						
							|  |  |  |  | 	virtual void move(CVector v) override; | 
					
						
							|  |  |  |  | 	virtual void setWidth(int width); | 
					
						
							|  |  |  |  | 	virtual void setHeight(int height); | 
					
						
							|  |  |  |  | 	virtual void setSize(int width, int height); | 
					
						
							|  |  |  |  | 	virtual void setSize(CSize size); | 
					
						
							|  |  |  |  | 	virtual void setRect(int x1, int y1, int x2, int y2); | 
					
						
							|  |  |  |  | 	virtual void setRect(CPoint leftTop, CPoint rightBottom); | 
					
						
							|  |  |  |  | 	virtual void setRect(CRect rect); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	CRect m_Rect; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class Text : | 
					
						
							|  |  |  |  | 	public RectNode | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	friend TextButton; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | public: | 
					
						
							|  |  |  |  | 	Text(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD>崴<EFBFBD><E5B4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	Text(TString text, COLORREF color = Color::white, FontStyle * font = FontStyle::getDefault()); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// <20><><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ꡢ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD>崴<EFBFBD><E5B4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	Text(int x, int y, TString text, COLORREF color = Color::white, FontStyle * font = FontStyle::getDefault()); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	virtual ~Text(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0>ɫ
 | 
					
						
							|  |  |  |  | 	COLORREF getColor() const; | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	TString getText() const; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	FontStyle * getFontStyle(); | 
					
						
							|  |  |  |  | 	// <20>ı<EFBFBD><C4B1>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>
 | 
					
						
							|  |  |  |  | 	bool isEmpty() const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	void setText(TString text); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
 | 
					
						
							|  |  |  |  | 	void setColor(COLORREF color); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void setFontStyle(FontStyle * style); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	TString		m_sText; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	COLORREF	m_color; | 
					
						
							|  |  |  |  | 	FontStyle *	m_pFontStyle; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	virtual void _onDraw() override; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class Image : | 
					
						
							|  |  |  |  | 	public RectNode | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	friend Sprite; | 
					
						
							|  |  |  |  | 	friend ImageButton; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | public: | 
					
						
							|  |  |  |  | 	Image(); | 
					
						
							|  |  |  |  | 	// <20><>ͼƬ<CDBC>ļ<EFBFBD><C4BC><EFBFBD>ȡͼ<C8A1><CDBC>
 | 
					
						
							|  |  |  |  | 	Image(LPCTSTR ImageFile); | 
					
						
							|  |  |  |  | 	/**
 | 
					
						
							|  |  |  |  | 	*  <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> | 
					
						
							|  |  |  |  | 	*/ | 
					
						
							|  |  |  |  | 	Image(LPCTSTR ImageFile, int x, int y, int width, int height); | 
					
						
							|  |  |  |  | 	virtual ~Image(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	float getScaleX() const; | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	float getScaleY() const; | 
					
						
							|  |  |  |  | 	// <20><>ȡ<C8A1><CDB8><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	float getOpacity() const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	/**
 | 
					
						
							|  |  |  |  | 	*  <EFBFBD><EFBFBD>ͼƬ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ȡͼ<EFBFBD><EFBFBD> | 
					
						
							|  |  |  |  | 	*  <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ͼƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD> | 
					
						
							|  |  |  |  | 	*/ | 
					
						
							|  |  |  |  | 	bool setImage(LPCTSTR ImageFile); | 
					
						
							|  |  |  |  | 	/**
 | 
					
						
							|  |  |  |  | 	*  <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><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ͼƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD> | 
					
						
							|  |  |  |  | 	*/ | 
					
						
							|  |  |  |  | 	bool setImage(LPCTSTR ImageFile, int x, int y, int width, int height); | 
					
						
							|  |  |  |  | 	/**
 | 
					
						
							|  |  |  |  | 	*  <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ȡͼ<EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD> png | 
					
						
							|  |  |  |  | 	*  <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ͼƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD> | 
					
						
							|  |  |  |  | 	*/ | 
					
						
							|  |  |  |  | 	bool setImageFromRes(LPCTSTR pResName); | 
					
						
							|  |  |  |  | 	/**
 | 
					
						
							|  |  |  |  | 	*  <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ȡͼ<EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD> png | 
					
						
							|  |  |  |  | 	*  <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>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD> | 
					
						
							|  |  |  |  | 	*/ | 
					
						
							|  |  |  |  | 	bool setImageFromRes(LPCTSTR pResName, int x, int y, int width, int height); | 
					
						
							|  |  |  |  | 	// <20>ü<EFBFBD>ͼƬ<CDBC><C6AC><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD> stretch <20><><EFBFBD>죩
 | 
					
						
							|  |  |  |  | 	void crop(int x, int y, int width, int height); | 
					
						
							|  |  |  |  | 	// <20><>ͼƬ<CDBC><C6AC><EFBFBD>쵽<EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void stretch(int width, int height); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼƬ
 | 
					
						
							|  |  |  |  | 	void setScale(float scaleX, float scaleY); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><CDB8><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD>Χ 0~1.0f<EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD> png ͼƬ<CDBC><C6AC>Ч<EFBFBD><D0A7>
 | 
					
						
							|  |  |  |  | 	void setOpacity(float value); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><CDB8>ɫ
 | 
					
						
							|  |  |  |  | 	void setTransparentColor(COLORREF value); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void reset(); | 
					
						
							| 
									
										
										
										
											2017-10-05 13:56:00 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// Ԥ<><D4A4><EFBFBD><EFBFBD>ͼƬ
 | 
					
						
							|  |  |  |  | 	static bool preload(LPCTSTR fileName, bool fromRes = false); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7>ͼ
 | 
					
						
							|  |  |  |  | 	static void saveScreenshot(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2017-10-01 14:39:39 +08:00
										 |  |  |  | 	CImage*	m_pCImage; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	CRect	m_SrcRect; | 
					
						
							|  |  |  |  | 	BYTE	m_nAlpha; | 
					
						
							|  |  |  |  | 	float	m_fScaleX; | 
					
						
							|  |  |  |  | 	float	m_fScaleY; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	virtual void _onDraw() override; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class Sprite : | 
					
						
							|  |  |  |  | 	public RectNode | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	friend BatchSprite; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | public: | 
					
						
							|  |  |  |  | 	Sprite(); | 
					
						
							|  |  |  |  | 	Sprite(Image * image); | 
					
						
							|  |  |  |  | 	Sprite(LPCTSTR imageFileName); | 
					
						
							|  |  |  |  | 	virtual ~Sprite(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ
 | 
					
						
							|  |  |  |  | 	bool isCollisionWith(Sprite * sprite); | 
					
						
							|  |  |  |  | 	// <20>ľ<DEB8><C4BE><EFBFBD>ͼƬ
 | 
					
						
							|  |  |  |  | 	virtual void setImage(Image * image); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void addAction(Action * action); | 
					
						
							| 
									
										
										
										
											2017-10-08 12:43:22 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void resumeAction(Action * action); | 
					
						
							|  |  |  |  | 	// <20><>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void pauseAction(Action * action); | 
					
						
							|  |  |  |  | 	// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void stopAction(Action * action); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// <20><>ͣ<EFBFBD><CDA3><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-09-29 17:55:33 +08:00
										 |  |  |  | 	virtual void pauseAllActions(); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-09-29 17:55:33 +08:00
										 |  |  |  | 	virtual void resumeAllActions(); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// ֹͣ<CDA3><D6B9><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-09-29 17:55:33 +08:00
										 |  |  |  | 	virtual void stopAllActions(); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	virtual float getScaleX() const; | 
					
						
							|  |  |  |  | 	virtual float getScaleY() const; | 
					
						
							|  |  |  |  | 	virtual float getOpacity() const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	virtual void setScale(float scaleX, float scaleY); | 
					
						
							|  |  |  |  | 	virtual void setOpacity(float opacity); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	float	m_fScaleX; | 
					
						
							|  |  |  |  | 	float	m_fScaleY; | 
					
						
							|  |  |  |  | 	BYTE	m_nAlpha; | 
					
						
							|  |  |  |  | 	Image *	m_pImage; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	bool _exec(bool active) override; | 
					
						
							|  |  |  |  | 	void _onDraw() override; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class BatchSprite : | 
					
						
							| 
									
										
										
										
											2017-10-08 12:39:07 +08:00
										 |  |  |  | 	public Sprite | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	BatchSprite(); | 
					
						
							|  |  |  |  | 	virtual ~BatchSprite(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>Ӿ<EFBFBD><D3BE><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void addSprite(Sprite * sprite, int z_Order = 0); | 
					
						
							|  |  |  |  | 	// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	bool delSprite(Sprite * child); | 
					
						
							|  |  |  |  | 	// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD>о<EFBFBD><D0BE><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void clearAllSprites(); | 
					
						
							|  |  |  |  | 	// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD>ľ<EFBFBD><C4BE>飬<EFBFBD><E9A3AC><EFBFBD>ؿ<F2B7B5BB>ָ<EFBFBD><D6B8>
 | 
					
						
							|  |  |  |  | 	Sprite * isCollisionWith(Sprite * sprite); | 
					
						
							|  |  |  |  | 	// <20>жϵ<D0B6><CFB5>Ƿ<EFBFBD><C7B7>ھ<EFBFBD><DABE><EFBFBD><EFBFBD>ڲ<EFBFBD>
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD>ؿ<F2B7B5BB>ָ<EFBFBD><D6B8>
 | 
					
						
							|  |  |  |  | 	Sprite * isPointIn(CPoint point); | 
					
						
							| 
									
										
										
										
											2017-10-08 12:39:07 +08:00
										 |  |  |  | 	// <20><><EFBFBD>о<EFBFBD><D0BE><EFBFBD>ͬʱִ<CAB1><D6B4>һ<EFBFBD>ζ<EFBFBD><CEB6><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void addAction(Action * action) override; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// ͬʱ<CDAC><EFBFBD><DEB8><EFBFBD><EFBFBD>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD>ͼƬ
 | 
					
						
							| 
									
										
										
										
											2017-10-08 12:39:07 +08:00
										 |  |  |  | 	virtual void setImage(Image * image) override; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-08 12:39:07 +08:00
										 |  |  |  | 	virtual float getScaleX() const override; | 
					
						
							|  |  |  |  | 	virtual float getScaleY() const override; | 
					
						
							|  |  |  |  | 	virtual float getOpacity() const override; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-08 12:39:07 +08:00
										 |  |  |  | 	virtual void setScale(float scaleX, float scaleY) override; | 
					
						
							|  |  |  |  | 	virtual void setOpacity(float opacity) override; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	std::vector<Sprite*> m_vSprites; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	bool _exec(bool active) override; | 
					
						
							|  |  |  |  | 	void _onDraw() override; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class MouseNode : | 
					
						
							|  |  |  |  | 	public RectNode | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	MouseNode(); | 
					
						
							|  |  |  |  | 	virtual ~MouseNode(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual bool isMouseIn(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ѡ<EFBFBD><D1A1>
 | 
					
						
							|  |  |  |  | 	virtual bool isSelected(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ûص<C3BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void setClickedCallback(const CLICK_CALLBACK & callback); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ûص<C3BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void setMouseInCallback(const CLICK_CALLBACK & callback); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ûص<C3BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void setMouseOutCallback(const CLICK_CALLBACK & callback); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ûص<C3BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void setSelectCallback(const CLICK_CALLBACK & callback); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ûص<C3BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void setUnselectCallback(const CLICK_CALLBACK & callback); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>״̬
 | 
					
						
							|  |  |  |  | 	virtual void reset(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ýڵ<C3BD><DAB5>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
 | 
					
						
							|  |  |  |  | 	void setBlock(bool block); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	bool m_bTarget; | 
					
						
							|  |  |  |  | 	bool m_bBlock; | 
					
						
							|  |  |  |  | 	enum Status { NORMAL, MOUSEIN, SELECTED } m_eStatus; | 
					
						
							|  |  |  |  | 	CLICK_CALLBACK m_OnMouseInCallback; | 
					
						
							|  |  |  |  | 	CLICK_CALLBACK m_OnMouseOutCallback; | 
					
						
							|  |  |  |  | 	CLICK_CALLBACK m_OnSelectCallback; | 
					
						
							|  |  |  |  | 	CLICK_CALLBACK m_OnUnselectCallback; | 
					
						
							|  |  |  |  | 	CLICK_CALLBACK m_ClickCallback; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	virtual bool _exec(bool active) override; | 
					
						
							|  |  |  |  | 	virtual void _onDraw() override; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>尴ť<E5B0B4><C5A5><EFBFBD>жϷ<D0B6><CFB7><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual bool _isMouseIn(); | 
					
						
							|  |  |  |  | 	// <20>л<EFBFBD>״̬
 | 
					
						
							|  |  |  |  | 	virtual void _setStatus(Status status); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>״̬
 | 
					
						
							|  |  |  |  | 	virtual void _onNormal() = 0; | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
 | 
					
						
							|  |  |  |  | 	virtual void _onMouseIn() = 0; | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>ʱ
 | 
					
						
							|  |  |  |  | 	virtual void _onSelected() = 0; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class Button : | 
					
						
							|  |  |  |  | 	public MouseNode | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	Button(); | 
					
						
							|  |  |  |  | 	virtual ~Button(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ť<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual bool isEnable(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void setEnable(bool enable); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void setX(int x) override; | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void setY(int y) override; | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void setPos(int x, int y) override; | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void setPos(CPoint p) override; | 
					
						
							|  |  |  |  | 	// <20>ƶ<EFBFBD><C6B6><EFBFBD>ť
 | 
					
						
							|  |  |  |  | 	virtual void move(int x, int y) override; | 
					
						
							|  |  |  |  | 	// <20>ƶ<EFBFBD><C6B6><EFBFBD>ť
 | 
					
						
							|  |  |  |  | 	virtual void move(CVector v) override; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	bool m_bEnable; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	virtual bool _exec(bool active) override; | 
					
						
							|  |  |  |  | 	virtual void _onDraw() override; | 
					
						
							|  |  |  |  | 	virtual void _resetPosition() = 0; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	virtual void _onNormal() = 0; | 
					
						
							|  |  |  |  | 	virtual void _onMouseIn() = 0; | 
					
						
							|  |  |  |  | 	virtual void _onSelected() = 0; | 
					
						
							|  |  |  |  | 	virtual void _onDisable() = 0; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class TextButton : | 
					
						
							|  |  |  |  | 	public Button | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	TextButton(); | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	TextButton(TString text); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	TextButton(Text * text); | 
					
						
							|  |  |  |  | 	virtual ~TextButton(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void setNormal(Text * text); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>İ<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void setMouseIn(Text * text); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>ʱ<EFBFBD>İ<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void setSelected(Text * text); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>ʱ<EFBFBD>İ<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void setUnable(Text * text); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	Text * m_pNormalText; | 
					
						
							|  |  |  |  | 	Text * m_pMouseInText; | 
					
						
							|  |  |  |  | 	Text * m_pSelectedText; | 
					
						
							|  |  |  |  | 	Text * m_pUnableText; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	virtual void _resetPosition() override; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	virtual void _setStatus(Status status) override; | 
					
						
							|  |  |  |  | 	virtual void _onNormal() override; | 
					
						
							|  |  |  |  | 	virtual void _onMouseIn() override; | 
					
						
							|  |  |  |  | 	virtual void _onSelected() override; | 
					
						
							|  |  |  |  | 	virtual void _onDisable() override; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class ImageButton : | 
					
						
							|  |  |  |  | 	public Button | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	ImageButton(); | 
					
						
							|  |  |  |  | 	ImageButton(LPCTSTR image); | 
					
						
							|  |  |  |  | 	ImageButton(Image * image); | 
					
						
							|  |  |  |  | 	virtual ~ImageButton(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ð<EFBFBD>ťͼƬ
 | 
					
						
							|  |  |  |  | 	void setNormal(Image * image); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>İ<EFBFBD>ťͼƬ
 | 
					
						
							|  |  |  |  | 	void setMouseIn(Image * image); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>ʱ<EFBFBD>İ<EFBFBD>ťͼƬ
 | 
					
						
							|  |  |  |  | 	void setSelected(Image * image); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>ʱ<EFBFBD>İ<EFBFBD>ťͼƬ
 | 
					
						
							|  |  |  |  | 	void setUnable(Image * image); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	Image * m_pNormalImage; | 
					
						
							|  |  |  |  | 	Image * m_pMouseInImage; | 
					
						
							|  |  |  |  | 	Image * m_pSelectedImage; | 
					
						
							|  |  |  |  | 	Image * m_pUnableImage; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	virtual void _resetPosition() override; | 
					
						
							|  |  |  |  | 	virtual void _setStatus(Status status) override; | 
					
						
							|  |  |  |  | 	virtual void _onNormal() override; | 
					
						
							|  |  |  |  | 	virtual void _onMouseIn() override; | 
					
						
							|  |  |  |  | 	virtual void _onSelected() override; | 
					
						
							|  |  |  |  | 	virtual void _onDisable() override; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class Shape : | 
					
						
							|  |  |  |  | 	public Node | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	Shape(); | 
					
						
							|  |  |  |  | 	virtual ~Shape(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>״<EFBFBD><D7B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
 | 
					
						
							|  |  |  |  | 	enum STYLE { ROUND, SOLID, FILL } m_eStyle; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1>״<EFBFBD><D7B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
 | 
					
						
							|  |  |  |  | 	COLORREF getFillColor() const; | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1>״<EFBFBD><D7B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
 | 
					
						
							|  |  |  |  | 	COLORREF getLineColor() const; | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
 | 
					
						
							|  |  |  |  | 	void setFillColor(COLORREF color); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
 | 
					
						
							|  |  |  |  | 	void setLineColor(COLORREF color); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
 | 
					
						
							|  |  |  |  | 	void setStyle(STYLE style); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	COLORREF fillColor; | 
					
						
							|  |  |  |  | 	COLORREF lineColor; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	virtual void _onDraw() override; | 
					
						
							|  |  |  |  | 	virtual void solidShape() = 0; | 
					
						
							|  |  |  |  | 	virtual void fillShape() = 0; | 
					
						
							|  |  |  |  | 	virtual void roundShape() = 0; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class Rect : | 
					
						
							|  |  |  |  | 	public Shape | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	Rect(); | 
					
						
							|  |  |  |  | 	Rect(int x, int y, int width, int height); | 
					
						
							|  |  |  |  | 	virtual ~Rect(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ο<EFBFBD><CEBF><EFBFBD>
 | 
					
						
							|  |  |  |  | 	int getWidth() const; | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD>θ߶<CEB8>
 | 
					
						
							|  |  |  |  | 	int getHeight() const; | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>þ<EFBFBD><C3BE>ο<EFBFBD><CEBF><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void setWidth(int width); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>þ<EFBFBD><C3BE>θ߶<CEB8>
 | 
					
						
							|  |  |  |  | 	void setHeight(int height); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>þ<EFBFBD><C3BE>δ<EFBFBD>С
 | 
					
						
							|  |  |  |  | 	void setSize(int width, int height); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	CSize m_Size; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	virtual void solidShape() override; | 
					
						
							|  |  |  |  | 	virtual void fillShape() override; | 
					
						
							|  |  |  |  | 	virtual void roundShape() override; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class Circle : | 
					
						
							|  |  |  |  | 	public Shape | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	Circle(); | 
					
						
							|  |  |  |  | 	Circle(int x, int y, int radius); | 
					
						
							|  |  |  |  | 	virtual ~Circle(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡԲ<C8A1>ΰ뾶
 | 
					
						
							|  |  |  |  | 	int getRadius() const; | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>Բ<EFBFBD>ΰ뾶
 | 
					
						
							|  |  |  |  | 	void setRadius(int m_nRadius); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	int m_nRadius; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	virtual void solidShape() override; | 
					
						
							|  |  |  |  | 	virtual void fillShape() override; | 
					
						
							|  |  |  |  | 	virtual void roundShape() override; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class Action : | 
					
						
							|  |  |  |  | 	public Object | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	friend Sprite; | 
					
						
							|  |  |  |  | 	friend ActionManager; | 
					
						
							|  |  |  |  | 	friend ActionTwo; | 
					
						
							|  |  |  |  | 	friend ActionNeverStop; | 
					
						
							|  |  |  |  | 	friend ActionSequence; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | public: | 
					
						
							|  |  |  |  | 	Action(); | 
					
						
							|  |  |  |  | 	virtual ~Action(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
 | 
					
						
							|  |  |  |  | 	virtual bool isRunning(); | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
 | 
					
						
							|  |  |  |  | 	virtual bool isEnding(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void start(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void resume(); | 
					
						
							|  |  |  |  | 	// <20><>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void pause(); | 
					
						
							|  |  |  |  | 	// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void stop(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>״̬
 | 
					
						
							|  |  |  |  | 	virtual void wait(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void notify(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>ÿһ֡ʱ<D6A1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void setInterval(UINT ms); | 
					
						
							|  |  |  |  | 	// <20><>ȡһ<C8A1><D2BB><EFBFBD>µĿ<C2B5><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-09-30 16:18:45 +08:00
										 |  |  |  | 	virtual Action * copy() const = 0; | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	// <20><>ȡһ<C8A1><D2BB><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	virtual Action * reverse() const; | 
					
						
							| 
									
										
										
										
											2017-10-08 12:45:59 +08:00
										 |  |  |  | 	// <20><>ȡִ<C8A1>иö<D0B8><C3B6><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>
 | 
					
						
							|  |  |  |  | 	virtual Sprite * getTarget(); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	bool			m_bRunning; | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	bool			m_bWaiting; | 
					
						
							|  |  |  |  | 	bool			m_bEnding; | 
					
						
							| 
									
										
										
										
											2017-10-08 13:26:42 +08:00
										 |  |  |  | 	bool			m_bInit; | 
					
						
							| 
									
										
										
										
											2017-10-06 02:32:33 +08:00
										 |  |  |  | 	Sprite *		m_pTargetSprite; | 
					
						
							|  |  |  |  | 	Scene *			m_pParentScene; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	UINT			m_nMilliSeconds; | 
					
						
							|  |  |  |  | 	LARGE_INTEGER	m_nLast; | 
					
						
							|  |  |  |  | 	LARGE_INTEGER	m_nAnimationInterval; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2017-10-08 13:26:42 +08:00
										 |  |  |  | 	virtual void _init(); | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	virtual void _exec(LARGE_INTEGER nNow) = 0; | 
					
						
							|  |  |  |  | 	virtual void _reset(); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class Animation : | 
					
						
							|  |  |  |  | 	public Action | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	Animation(float duration); | 
					
						
							|  |  |  |  | 	virtual ~Animation(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	UINT	m_nDuration; | 
					
						
							|  |  |  |  | 	UINT	m_nTotalDuration; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2017-09-30 16:18:45 +08:00
										 |  |  |  | 	bool _isEnd() const; | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	bool _isDelayEnough(LARGE_INTEGER nNow); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	virtual void _init() override; | 
					
						
							|  |  |  |  | 	virtual void _reset() override; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class ActionMoveBy : | 
					
						
							|  |  |  |  | 	public Animation | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	ActionMoveBy(float duration, CVector vec); | 
					
						
							|  |  |  |  | 	virtual ~ActionMoveBy(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-30 16:18:45 +08:00
										 |  |  |  | 	virtual ActionMoveBy * copy() const override; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	virtual ActionMoveBy * reverse() const override; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	CPoint	m_BeginPos; | 
					
						
							|  |  |  |  | 	CVector	m_MoveVector; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	virtual void _init() override; | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	virtual void _exec(LARGE_INTEGER nNow) override; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	virtual void _reset() override; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class ActionMoveTo : | 
					
						
							|  |  |  |  | 	public ActionMoveBy | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	ActionMoveTo(float duration, CPoint pos); | 
					
						
							|  |  |  |  | 	virtual ~ActionMoveTo(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-30 16:18:45 +08:00
										 |  |  |  | 	virtual ActionMoveTo * copy() const override; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	CPoint m_EndPos; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	virtual void _init() override; | 
					
						
							|  |  |  |  | 	virtual void _reset() override; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class ActionScaleBy : | 
					
						
							|  |  |  |  | 	public Animation | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	ActionScaleBy(float duration, float scaleX, float scaleY); | 
					
						
							|  |  |  |  | 	virtual ~ActionScaleBy(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-30 16:18:45 +08:00
										 |  |  |  | 	virtual ActionScaleBy * copy() const override; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	virtual ActionScaleBy * reverse() const override; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	float	m_nBeginScaleX; | 
					
						
							|  |  |  |  | 	float	m_nBeginScaleY; | 
					
						
							|  |  |  |  | 	float	m_nVariationX; | 
					
						
							|  |  |  |  | 	float	m_nVariationY; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	virtual void _init() override; | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	virtual void _exec(LARGE_INTEGER nNow) override; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	virtual void _reset() override; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class ActionScaleTo : | 
					
						
							|  |  |  |  | 	public ActionScaleBy | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	ActionScaleTo(float duration, float scaleX, float scaleY); | 
					
						
							|  |  |  |  | 	virtual ~ActionScaleTo(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-30 16:18:45 +08:00
										 |  |  |  | 	virtual ActionScaleTo * copy() const override; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	float	m_nEndScaleX; | 
					
						
							|  |  |  |  | 	float	m_nEndScaleY; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	virtual void _init() override; | 
					
						
							|  |  |  |  | 	virtual void _reset() override; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class ActionOpacityBy : | 
					
						
							|  |  |  |  | 	public Animation | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	ActionOpacityBy(float duration, float opacity); | 
					
						
							|  |  |  |  | 	virtual ~ActionOpacityBy(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-30 16:18:45 +08:00
										 |  |  |  | 	virtual ActionOpacityBy * copy() const override; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	virtual ActionOpacityBy * reverse() const override; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	float m_nBeginVal; | 
					
						
							|  |  |  |  | 	float m_nVariation; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	virtual void _init() override; | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	virtual void _exec(LARGE_INTEGER nNow) override; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	virtual void _reset() override; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class ActionOpacityTo : | 
					
						
							|  |  |  |  | 	public ActionOpacityBy | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	ActionOpacityTo(float duration, float opacity); | 
					
						
							|  |  |  |  | 	virtual ~ActionOpacityTo(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-30 16:18:45 +08:00
										 |  |  |  | 	virtual ActionOpacityTo * copy() const override; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	float m_nEndVal; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	virtual void _init() override; | 
					
						
							|  |  |  |  | 	virtual void _reset() override; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class ActionFadeIn : | 
					
						
							|  |  |  |  | 	public ActionOpacityTo | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	ActionFadeIn(float duration) : ActionOpacityTo(duration, 1) {} | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class ActionFadeOut : | 
					
						
							|  |  |  |  | 	public ActionOpacityTo | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	ActionFadeOut(float duration) : ActionOpacityTo(duration, 0) {} | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class ActionTwo : | 
					
						
							|  |  |  |  | 	public Action | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	ActionTwo(Action * actionFirst, Action * actionSecond); | 
					
						
							|  |  |  |  | 	virtual ~ActionTwo(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-30 16:18:45 +08:00
										 |  |  |  | 	virtual ActionTwo * copy() const override; | 
					
						
							|  |  |  |  | 	virtual ActionTwo * reverse(bool actionReverse = true) const; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2017-10-06 01:07:15 +08:00
										 |  |  |  | 	Action *	m_FirstAction; | 
					
						
							|  |  |  |  | 	Action *	m_SecondAction; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	virtual void _init() override; | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	virtual void _exec(LARGE_INTEGER nNow) override; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	virtual void _reset() override; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class ActionSequence : | 
					
						
							|  |  |  |  | 	public Action | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2017-09-30 16:18:45 +08:00
										 |  |  |  | 	ActionSequence(); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	ActionSequence(int number, Action * action1, ...); | 
					
						
							|  |  |  |  | 	virtual ~ActionSequence(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-30 16:18:45 +08:00
										 |  |  |  | 	void addAction(Action * action); | 
					
						
							|  |  |  |  | 	virtual ActionSequence * copy() const override; | 
					
						
							|  |  |  |  | 	virtual ActionSequence * reverse(bool actionReverse = true) const; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	UINT					m_nActionIndex; | 
					
						
							|  |  |  |  | 	std::vector<Action*>	m_vActions; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	virtual void _init() override; | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	virtual void _exec(LARGE_INTEGER nNow) override; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	virtual void _reset() override; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class ActionDelay : | 
					
						
							|  |  |  |  | 	public Action | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	ActionDelay(float duration); | 
					
						
							|  |  |  |  | 	virtual ~ActionDelay(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-30 16:18:45 +08:00
										 |  |  |  | 	virtual ActionDelay * copy() const override; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	virtual void _init() override; | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	virtual void _exec(LARGE_INTEGER nNow) override; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	virtual void _reset() override; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class ActionNeverStop : | 
					
						
							|  |  |  |  | 	public Action | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	ActionNeverStop(Action * action); | 
					
						
							|  |  |  |  | 	virtual ~ActionNeverStop(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-30 16:18:45 +08:00
										 |  |  |  | 	virtual ActionNeverStop * copy() const override; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	Action * m_Action; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	virtual void _init() override; | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	virtual void _exec(LARGE_INTEGER nNow) override; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	virtual void _reset() override; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class ActionFrames : | 
					
						
							|  |  |  |  | 	public Action | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	ActionFrames(); | 
					
						
							| 
									
										
										
										
											2017-09-30 16:18:45 +08:00
										 |  |  |  | 	ActionFrames(UINT frameDelay); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	~ActionFrames(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	void addFrame(Image * frame); | 
					
						
							| 
									
										
										
										
											2017-09-30 16:18:45 +08:00
										 |  |  |  | 	virtual ActionFrames * copy() const override; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	virtual ActionFrames * reverse() const override; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	UINT				m_nFrameIndex; | 
					
						
							|  |  |  |  | 	std::vector<Image*> m_vFrames; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	virtual void _init() override; | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	virtual void _exec(LARGE_INTEGER nNow) override; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	virtual void _reset() override; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class ActionCallback : | 
					
						
							|  |  |  |  | 	public Action | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	ActionCallback(const std::function<void()>& callback); | 
					
						
							|  |  |  |  | 	~ActionCallback(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-30 16:18:45 +08:00
										 |  |  |  | 	virtual ActionCallback * copy() const override; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	std::function<void()> m_Callback; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	virtual void _init() override; | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	virtual void _exec(LARGE_INTEGER nNow) override; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	virtual void _reset() override; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class FileUtils | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	// <20><>ȡϵͳ<CFB5><CDB3> AppData\Local ·<><C2B7>
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	static TString getLocalAppDataPath(); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// <20><>ȡĬ<C8A1>ϵı<CFB5><C4B1><EFBFBD>·<EFBFBD><C2B7>
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	static TString getDefaultSavePath(); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD> int <20>͵<EFBFBD>ֵ
 | 
					
						
							|  |  |  |  | 	static void saveInt(LPCTSTR key, int value); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD> double <20>͵<EFBFBD>ֵ
 | 
					
						
							|  |  |  |  | 	static void saveDouble(LPCTSTR key, double value); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD> <20>ַ<EFBFBD><D6B7><EFBFBD> <20>͵<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA> Unicode <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>±<EFBFBD><C2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	static void saveString(LPCTSTR key, TString value); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// <20><>ȡ int <20>͵<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> default <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
 | 
					
						
							|  |  |  |  | 	static int getInt(LPCTSTR key, int default); | 
					
						
							|  |  |  |  | 	// <20><>ȡ double <20>͵<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> default <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
 | 
					
						
							|  |  |  |  | 	static double getDouble(LPCTSTR key, double default); | 
					
						
							|  |  |  |  | 	// <20><>ȡ <20>ַ<EFBFBD><D6B7><EFBFBD> <20>͵<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> default <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	static TString geTString(LPCTSTR key, TString default); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// <20>õ<EFBFBD><C3B5>ļ<EFBFBD><C4BC><EFBFBD>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>Сд<D0A1><D0B4>
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	static TString getFileExtension(const TString& filePath); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	/**
 | 
					
						
							|  |  |  |  | 	*  <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>Ի<EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> true | 
					
						
							|  |  |  |  | 	*  <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><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD> | 
					
						
							|  |  |  |  | 	*/ | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	static bool getSaveFilePath(TString& path, LPCTSTR title = _T("<EFBFBD><EFBFBD><EFBFBD>浽"), LPCTSTR defExt = NULL); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class MusicUtils | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	static void playBackgroundMusic(TString pszFilePath, bool bLoop = true); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void stopBackgroundMusic(bool bReleaseData = false); | 
					
						
							|  |  |  |  | 	// <20><>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void pauseBackgroundMusic(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void resumeBackgroundMusic(); | 
					
						
							|  |  |  |  | 	// <20><>ͷ<EFBFBD><CDB7><EFBFBD>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void rewindBackgroundMusic(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static bool isBackgroundMusicPlaying(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0 ~ 1.0f
 | 
					
						
							|  |  |  |  | 	static void setBackgroundMusicVolume(float volume); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	static unsigned int playMusic(TString pszFilePath, bool loop = false); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// ֹͣ<CDA3><D6B9>Ч
 | 
					
						
							|  |  |  |  | 	static void stopMusic(unsigned int nSoundId); | 
					
						
							|  |  |  |  | 	// Ԥ<><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	static void preloadMusic(TString pszFilePath); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// <20><>ͣ<EFBFBD><CDA3>Ч
 | 
					
						
							|  |  |  |  | 	static void pauseMusic(unsigned int nSoundId); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
 | 
					
						
							|  |  |  |  | 	static void resumeMusic(unsigned int nSoundId); | 
					
						
							|  |  |  |  | 	// ж<><D0B6><EFBFBD><EFBFBD>Ч
 | 
					
						
							|  |  |  |  | 	static void unloadMusic(LPCTSTR pszFilePath); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0 ~ 1.0f
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	static void setVolume(TString pszFilePath, float volume); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void pauseAllMusics(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void resumeAllMusics(); | 
					
						
							|  |  |  |  | 	// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void stopAllMusics(); | 
					
						
							|  |  |  |  | 	// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void end(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0 ~ 1.0f
 | 
					
						
							|  |  |  |  | 	static void setVolume(float volume); | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class Timer | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	friend App; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	Timer(TString name, UINT ms, const TIMER_CALLBACK & callback); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	~Timer(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
 | 
					
						
							|  |  |  |  | 	void start(); | 
					
						
							|  |  |  |  | 	// ֹͣ<CDA3><D6B9>ʱ<EFBFBD><CAB1>
 | 
					
						
							|  |  |  |  | 	void stop(); | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>״̬
 | 
					
						
							|  |  |  |  | 	void wait(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void notify(); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// <20><>ʱ<EFBFBD><CAB1><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	bool isRunning(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD>ʱ<EFBFBD><CAB1>
 | 
					
						
							|  |  |  |  | 	void setInterval(UINT ms); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ûص<C3BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void setCallback(const TIMER_CALLBACK& callback); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ö<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	void setName(TString name); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
 | 
					
						
							|  |  |  |  | 	UINT getInterval() const; | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	TString getName() const; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>Ӷ<EFBFBD>ʱ<EFBFBD><CAB1>
 | 
					
						
							|  |  |  |  | 	static void addTimer(Timer * timer); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>Ӷ<EFBFBD>ʱ<EFBFBD><CAB1>
 | 
					
						
							| 
									
										
										
										
											2017-10-09 00:58:23 +08:00
										 |  |  |  | 	static void addTimer(TString name, const TIMER_CALLBACK & callback); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>Ӷ<EFBFBD>ʱ<EFBFBD><CAB1>
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	static void addTimer(TString name, UINT ms, const TIMER_CALLBACK & callback); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD>ʱ<EFBFBD><CAB1>
 | 
					
						
							| 
									
										
										
										
											2017-10-06 16:40:10 +08:00
										 |  |  |  | 	static void startTimer(TString name); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// ֹͣ<CDA3>ض<EFBFBD><D8B6><EFBFBD>ʱ<EFBFBD><CAB1>
 | 
					
						
							| 
									
										
										
										
											2017-10-06 16:40:10 +08:00
										 |  |  |  | 	static void stopTimer(TString name); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// ɾ<><C9BE><EFBFBD>ض<EFBFBD><D8B6><EFBFBD>ʱ<EFBFBD><CAB1>
 | 
					
						
							| 
									
										
										
										
											2017-10-06 16:40:10 +08:00
										 |  |  |  | 	static void delTimer(TString name); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʱ<EFBFBD><CAB1>
 | 
					
						
							|  |  |  |  | 	static void clearAllTimers(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-06 16:40:10 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>ж<EFBFBD>ʱ<EFBFBD><CAB1>
 | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	static void notifyAllSceneTimers(Scene* scene); | 
					
						
							| 
									
										
										
										
											2017-10-06 02:32:33 +08:00
										 |  |  |  | 	// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>ж<EFBFBD>ʱ<EFBFBD><CAB1>
 | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	static void waitAllSceneTimers(Scene* scene); | 
					
						
							| 
									
										
										
										
											2017-10-06 16:40:10 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>ж<EFBFBD>ʱ<EFBFBD><CAB1>
 | 
					
						
							|  |  |  |  | 	static void clearAllSceneTimers(Scene* scene); | 
					
						
							| 
									
										
										
										
											2017-10-06 02:32:33 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | protected: | 
					
						
							|  |  |  |  | 	bool			m_bRunning; | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	bool			m_bWaiting; | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	TString			m_sName; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 	TIMER_CALLBACK	m_callback; | 
					
						
							|  |  |  |  | 	LARGE_INTEGER	m_nLast; | 
					
						
							|  |  |  |  | 	LARGE_INTEGER	m_nAnimationInterval; | 
					
						
							|  |  |  |  | 	UINT			m_nMilliSeconds; | 
					
						
							| 
									
										
										
										
											2017-10-06 02:32:33 +08:00
										 |  |  |  | 	Scene *			m_pParentScene; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | private: | 
					
						
							|  |  |  |  | 	static void __exec(); | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class ActionManager | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	friend App; | 
					
						
							|  |  |  |  | 	friend Sprite; | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | public: | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ض<EFBFBD><D8B6>Ķ<EFBFBD><C4B6><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void startAction(Action * action); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ض<EFBFBD><D8B6>Ķ<EFBFBD><C4B6><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void resumeAction(Action * action); | 
					
						
							|  |  |  |  | 	// <20><>ͣһ<CDA3><D2BB><EFBFBD>ض<EFBFBD><D8B6>Ķ<EFBFBD><C4B6><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void pauseAction(Action * action); | 
					
						
							|  |  |  |  | 	// ֹͣһ<D6B9><D2BB><EFBFBD>ض<EFBFBD><D8B6>Ķ<EFBFBD><C4B6><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void stopAction(Action * action); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB> Sprite <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void startSpriteAllActions(Sprite * sprite); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB> Sprite <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void resumeSpriteAllActions(Sprite * sprite); | 
					
						
							|  |  |  |  | 	// <20><>ͣһ<CDA3><D2BB> Sprite <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void pauseSpriteAllActions(Sprite * sprite); | 
					
						
							|  |  |  |  | 	// ֹͣһ<D6B9><D2BB> Sprite <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void stopSpriteAllActions(Sprite * sprite); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void startAllActions(); | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void resumeAllActions(); | 
					
						
							|  |  |  |  | 	// <20><>ͣ<EFBFBD><CDA3>ǰ<EFBFBD><C7B0><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void pauseAllActions(); | 
					
						
							|  |  |  |  | 	// ֹͣ<CDA3><D6B9>ǰ<EFBFBD><C7B0><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void stopAllActions(); | 
					
						
							| 
									
										
										
										
											2017-10-05 11:28:13 +08:00
										 |  |  |  | 	// ɾ<><C9BE><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void clearAllActions(); | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-06 16:40:10 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD>ϵĶ<CFB5><C4B6><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	static void notifyAllSceneActions(Scene* scene); | 
					
						
							| 
									
										
										
										
											2017-10-06 16:40:10 +08:00
										 |  |  |  | 	// <20><>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD>ϵĶ<CFB5><C4B6><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-08 12:30:45 +08:00
										 |  |  |  | 	static void waitAllSceneActions(Scene* scene); | 
					
						
							| 
									
										
										
										
											2017-10-06 02:32:33 +08:00
										 |  |  |  | 	// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD>ϵĶ<CFB5><C4B6><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void stopAllSceneActions(Scene* scene); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | private: | 
					
						
							|  |  |  |  | 	static void __exec(); | 
					
						
							|  |  |  |  | 	// <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void addAction(Action * action); | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-08 16:46:44 +08:00
										 |  |  |  | class Math | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	// ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>Χ<EFBFBD>ڵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	template<typename T> | 
					
						
							|  |  |  |  | 	static T randomInt(T min, T max) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		std::uniform_int_distribution<T> dist(min, max); | 
					
						
							|  |  |  |  | 		return dist(getEngine()); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	// ȡ<>ø<EFBFBD><C3B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>Χ<EFBFBD>ڵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	template<typename T> | 
					
						
							|  |  |  |  | 	static T randomReal(T min, T max) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		std::uniform_real_distribution<T> dist(min, max); | 
					
						
							|  |  |  |  | 		return dist(getEngine()); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static std::default_random_engine &getEngine(); | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-29 17:30:37 +08:00
										 |  |  |  | }	// End of easy2d namespace
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | // Functions Declare
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | inline void SafeRelease(easy2d::Object * p) { if (p) p->release(); } | 
					
						
							|  |  |  |  | inline void SafeDelete(void * p) { if (p) delete p; } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-08 16:46:44 +08:00
										 |  |  |  | template<typename T> | 
					
						
							|  |  |  |  | inline T random(T min, T max) { return easy2d::Math::randomInt(min, max); } | 
					
						
							|  |  |  |  | inline float random(float min, float max) { return easy2d::Math::randomReal(min, max); } | 
					
						
							|  |  |  |  | inline double random(double min, double max) { return easy2d::Math::randomReal(min, max); } | 
					
						
							|  |  |  |  | inline long double random(long double min, long double max) { return easy2d::Math::randomReal(min, max); } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | using namespace easy2d; |