| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | // Copyright (C) 2019 Nomango
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-20 23:24:57 +08:00
										 |  |  |  | #include "Demo1.h"
 | 
					
						
							|  |  |  |  | #include "Demo2.h"
 | 
					
						
							|  |  |  |  | #include "Demo3.h"
 | 
					
						
							|  |  |  |  | #include "Demo4.h"
 | 
					
						
							| 
									
										
										
										
											2019-03-31 01:37:06 +08:00
										 |  |  |  | #include "Demo5.h"
 | 
					
						
							| 
									
										
										
										
											2019-08-05 13:24:27 +08:00
										 |  |  |  | #include "resource.h"
 | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | namespace | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	struct Demo | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		String title; | 
					
						
							| 
									
										
										
										
											2019-08-01 13:07:48 +08:00
										 |  |  |  | 		ScenePtr(*Create)(); | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 	}; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	Demo s_Demos[] = { | 
					
						
							|  |  |  |  | 		{ L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>", Demo1::Create }, | 
					
						
							|  |  |  |  | 		{ L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>", Demo2::Create }, | 
					
						
							|  |  |  |  | 		{ L"<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>", Demo3::Create }, | 
					
						
							| 
									
										
										
										
											2019-03-18 15:00:58 +08:00
										 |  |  |  | 		{ L"֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>", Demo4::Create }, | 
					
						
							| 
									
										
										
										
											2019-03-31 01:37:06 +08:00
										 |  |  |  | 		{ L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>", Demo5::Create }, | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2019-03-31 01:37:06 +08:00
										 |  |  |  | 	int s_CurrIndex = -1; | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 	int s_DemoNum = sizeof(s_Demos) / sizeof(Demo); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-01 13:07:48 +08:00
										 |  |  |  | // <20><>Դ<EFBFBD><D4B4><EFBFBD>ع<EFBFBD><D8B9><EFBFBD>
 | 
					
						
							|  |  |  |  | ResLoader g_Loader; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | class DemoApp | 
					
						
							|  |  |  |  | 	: public Application | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	DemoApp() | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2019-03-11 17:24:11 +08:00
										 |  |  |  | 		// ʹ<><CAB9> Audio <20><><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2019-07-30 15:27:01 +08:00
										 |  |  |  | 		Use(Audio::Instance()); | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-31 01:37:06 +08:00
										 |  |  |  | 		// ʹ<><CAB9> HttpClient <20><><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2019-07-30 15:27:01 +08:00
										 |  |  |  | 		Use(HttpClient::Instance()); | 
					
						
							| 
									
										
										
										
											2019-03-31 01:37:06 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-05 13:24:27 +08:00
										 |  |  |  | 		Options options(L"Kiwanoʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", WINDOW_WIDTH, WINDOW_HEIGHT, MAKEINTRESOURCE(IDI_ICON1)); | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 		Init(options); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	void OnStart() override | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2019-08-04 00:11:47 +08:00
										 |  |  |  | 		// <20><> JSON <20>ļ<EFBFBD><C4BC>ж<EFBFBD>ȡ<EFBFBD><C8A1>Դ<EFBFBD><D4B4>Ϣ
 | 
					
						
							|  |  |  |  | 		//g_Loader.LoadFromJsonFile(L"res/index.json");
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// <20><> XML <20>ļ<EFBFBD><C4BC>ж<EFBFBD>ȡ<EFBFBD><C8A1>Դ<EFBFBD><D4B4>Ϣ
 | 
					
						
							|  |  |  |  | 		g_Loader.LoadFromXmlFile(L"res/index.xml"); | 
					
						
							| 
									
										
										
										
											2019-07-31 00:09:24 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// <20>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2019-03-31 01:37:06 +08:00
										 |  |  |  | 		ChangeDemoScene(0); | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-01 13:07:48 +08:00
										 |  |  |  | 	void OnDestroy() override | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		// <20>˳<EFBFBD><CBB3><EFBFBD>Ϸʱ<CFB7><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
 | 
					
						
							|  |  |  |  | 		g_Loader.Destroy(); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-31 01:37:06 +08:00
										 |  |  |  | 	void ChangeDemoScene(int index) | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2019-03-31 01:37:06 +08:00
										 |  |  |  | 		if (s_CurrIndex != index) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			s_CurrIndex = index; | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-31 01:37:06 +08:00
										 |  |  |  | 			String title = s_Demos[index].title; | 
					
						
							| 
									
										
										
										
											2019-07-30 15:27:01 +08:00
										 |  |  |  | 			Window::Instance()->SetTitle(L"Kiwanoʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - " + title); | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-01 13:07:48 +08:00
										 |  |  |  | 			ScenePtr scene = s_Demos[index].Create(); | 
					
						
							| 
									
										
										
										
											2019-03-31 01:37:06 +08:00
										 |  |  |  | 			EnterScene(scene); | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-31 01:37:06 +08:00
										 |  |  |  | 			// <20><><EFBFBD>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2019-04-08 14:15:27 +08:00
										 |  |  |  | 			scene->AddListener(Event::KeyUp, MakeClosure(this, &DemoApp::KeyPressed)); | 
					
						
							| 
									
										
										
										
											2019-03-31 01:37:06 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 			// <20><>ʾ<EFBFBD><CABE>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2019-08-02 16:07:01 +08:00
										 |  |  |  | 			String intro_str = String::format(L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1~%d <20><><EFBFBD>л<EFBFBD>ʾ<EFBFBD><CABE>\n", s_DemoNum); | 
					
						
							| 
									
										
										
										
											2019-03-31 01:37:06 +08:00
										 |  |  |  | 			TextPtr intro = new Text(intro_str + title); | 
					
						
							|  |  |  |  | 			intro->SetFontSize(16.f); | 
					
						
							|  |  |  |  | 			intro->SetPosition(10, 10); | 
					
						
							|  |  |  |  | 			scene->AddChild(intro); | 
					
						
							|  |  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	void KeyPressed(Event const& evt) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2019-04-11 14:40:54 +08:00
										 |  |  |  | 		KGE_ASSERT(evt.type == Event::KeyUp); | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 		if (evt.key.code > KeyCode::Num0 && | 
					
						
							|  |  |  |  | 			evt.key.code <= (KeyCode::Num0 + s_DemoNum)) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2019-03-31 01:37:06 +08:00
										 |  |  |  | 			int index = evt.key.code - KeyCode::Num1; | 
					
						
							|  |  |  |  | 			ChangeDemoScene(index); | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-05 10:00:30 +08:00
										 |  |  |  | int WINAPI wWinMain(_In_ HINSTANCE, _In_opt_ HINSTANCE, _In_ PWSTR, _In_ int) | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | 	try | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		DemoApp app; | 
					
						
							|  |  |  |  | 		app.Run(); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	catch (std::exception& e) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2019-03-10 13:44:02 +08:00
										 |  |  |  | 		::MessageBoxA(nullptr, e.what(), "An exception has occurred!", MB_ICONERROR | MB_OK); | 
					
						
							| 
									
										
										
										
											2019-02-03 21:45:56 +08:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | 	return 0; | 
					
						
							|  |  |  |  | } |