174 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			C
		
	
	
	
		
		
			
		
	
	
			174 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			C
		
	
	
	
|  | #pragma once
 | |||
|  | #include <e2dbase.h>
 | |||
|  | 
 | |||
|  | namespace easy2d  | |||
|  | { | |||
|  | 	class Action; | |||
|  | 
 | |||
|  | 	class FileUtils | |||
|  | 	{ | |||
|  | 	public: | |||
|  | 		// <20><>ȡϵͳ<CFB5><CDB3> AppData\Local ·<><C2B7>
 | |||
|  | 		static tstring getLocalAppDataPath(); | |||
|  | 		// <20><>ȡĬ<C8A1>ϵı<CFB5><C4B1><EFBFBD>·<EFBFBD><C2B7>
 | |||
|  | 		static tstring getDefaultSavePath(); | |||
|  | 		// <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>
 | |||
|  | 		static void saveString(LPCTSTR key, tstring value); | |||
|  | 		// <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>
 | |||
|  | 		static tstring getString(LPCTSTR key, tstring default); | |||
|  | 		// <20>õ<EFBFBD><C3B5>ļ<EFBFBD><C4BC><EFBFBD>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>Сд<D0A1><D0B4>
 | |||
|  | 		static tstring getFileExtension(const tstring& filePath); | |||
|  | 		/**
 | |||
|  | 		*  <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> | |||
|  | 		*/ | |||
|  | 		static bool getSaveFilePath(tstring& path, LPCTSTR title = _T("<EFBFBD><EFBFBD><EFBFBD>浽"), LPCTSTR defExt = NULL); | |||
|  | 	}; | |||
|  | 
 | |||
|  | 
 | |||
|  | 	class MusicUtils | |||
|  | 	{ | |||
|  | 	public: | |||
|  | 		// <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | |||
|  | 		static void playBackgroundMusic(tstring pszFilePath, bool bLoop = true); | |||
|  | 		// ֹͣ<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>Ч
 | |||
|  | 		static unsigned int playMusic(tstring pszFilePath, bool loop = false); | |||
|  | 		// ֹͣ<CDA3><D6B9>Ч
 | |||
|  | 		static void stopMusic(unsigned int nSoundId); | |||
|  | 		// Ԥ<><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
 | |||
|  | 		static void preloadMusic(tstring pszFilePath); | |||
|  | 		// <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
 | |||
|  | 		static void setVolume(tstring pszFilePath, float volume); | |||
|  | 
 | |||
|  | 		// <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 | |||
|  | 	{ | |||
|  | 		friend class App; | |||
|  | 
 | |||
|  | 	public: | |||
|  | 		Timer(tstring name, UINT ms, const TIMER_CALLBACK & callback); | |||
|  | 		~Timer(); | |||
|  | 
 | |||
|  | 		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
 | |||
|  | 		void start(); | |||
|  | 		// ֹͣ<CDA3><D6B9>ʱ<EFBFBD><CAB1>
 | |||
|  | 		void stop(); | |||
|  | 		// <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>
 | |||
|  | 		void setName(tstring name); | |||
|  | 		// <20><>ȡ<EFBFBD><C8A1>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
 | |||
|  | 		UINT getInterval() const; | |||
|  | 		// <20><>ȡ<EFBFBD><C8A1>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | |||
|  | 		tstring getName() const; | |||
|  | 
 | |||
|  | 		// <20><><EFBFBD>Ӷ<EFBFBD>ʱ<EFBFBD><CAB1>
 | |||
|  | 		static void addTimer(Timer * timer); | |||
|  | 		// <20><><EFBFBD>Ӷ<EFBFBD>ʱ<EFBFBD><CAB1>
 | |||
|  | 		static void addTimer(tstring name, UINT ms, const TIMER_CALLBACK & callback); | |||
|  | 		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>ȡ<EFBFBD><C8A1>ʱ<EFBFBD><CAB1>
 | |||
|  | 		static Timer * getTimer(tstring name); | |||
|  | 		// <20><><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD>ʱ<EFBFBD><CAB1>
 | |||
|  | 		static bool startTimer(tstring name); | |||
|  | 		// ֹͣ<CDA3>ض<EFBFBD><D8B6><EFBFBD>ʱ<EFBFBD><CAB1>
 | |||
|  | 		static bool stopTimer(tstring name); | |||
|  | 		// ɾ<><C9BE><EFBFBD>ض<EFBFBD><D8B6><EFBFBD>ʱ<EFBFBD><CAB1>
 | |||
|  | 		static bool delTimer(tstring name); | |||
|  | 		// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʱ<EFBFBD><CAB1>
 | |||
|  | 		static void clearAllTimers(); | |||
|  | 
 | |||
|  | 	protected: | |||
|  | 		bool			m_bRunning; | |||
|  | 		tstring			m_sName; | |||
|  | 		TIMER_CALLBACK	m_callback; | |||
|  | 		LARGE_INTEGER	m_nLast; | |||
|  | 		LARGE_INTEGER	m_nAnimationInterval; | |||
|  | 		UINT			m_nMilliSeconds; | |||
|  | 
 | |||
|  | 	private: | |||
|  | 		static void __exec(); | |||
|  | 	}; | |||
|  | 
 | |||
|  | 
 | |||
|  | 	class ActionManager | |||
|  | 	{ | |||
|  | 		friend class App; | |||
|  | 		friend class Sprite; | |||
|  | 	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(); | |||
|  | 
 | |||
|  | 	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); | |||
|  | 	}; | |||
|  | 
 | |||
|  | }	// End of easy2d namespace
 |