summaryrefslogtreecommitdiff
path: root/Source/Asura.Engine/application.h
blob: 08b3beadf7c11e460cb03a833651ba1e242272e8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#ifndef __ASURA_ENGINE_APPLICATION_H__
#define __ASURA_ENGINE_APPLICATION_H__

#include "Scripting/Portable.h"
#include "Config.h"

namespace AsuraEngine
{

	///
	/// ģ
	///
	enum SubModules
	{
		ASURA_MODULE_NONE = 0X00000000U,

		ASURA_MODULE_GRAPHICS = 1 << 1,
		ASURA_MODULE_AUDIO    = 1 << 2,
		ASURA_MODULE_FONT     = 1 << 3,
		ASURA_MODULE_INPUT    = 1 << 4,
		ASURA_MODULE_MATH     = 1 << 5,
		ASURA_MODULE_PHYSICS  = 1 << 6,
		ASURA_MODULE_TIME     = 1 << 7,
		ASURA_MODULE_WINDOW   = 1 << 8,

		ASURA_MODULE_ALL = 0XFFFFFFFFU
	};

	///
	/// ѭ
	///
	ASURA_ABSTRACT class Application
	{
	public:
		
		Application(); 

		virtual ~Application();

		///
		/// ʼǰϵͳ
		/// 
		bool InitSubModules(uint flag = ASURA_MODULE_ALL);
		
		///
		/// עlua࣬ԱأԶ嵼
		/// 
		virtual void PortToLua();

		///
		/// 
		///
		virtual void Run(int argc, char* args[]);

		///
		/// ˳runʱĴ
		///
		virtual void Exit();

	private:

		///
		/// ģʼڸģļʵ֡
		///
		bool InitGraphics();
		bool InitAudio();
		bool InitFont();
		bool InitInput();
		bool InitMath();
		bool InitPhysics();
		bool InitTime();
		bool InitWindow();

		///
		/// Lua state.
		///
		lua_State* mLuaState;

	};

}

#endif