| 
									
										
										
										
											2017-10-12 02:44:44 +08:00
										 |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-23 00:05:57 +08:00
										 |  |  | #ifndef WINVER
 | 
					
						
							|  |  |  | #define WINVER 0x0700       // Allow use of features specific to Windows 7 or later
 | 
					
						
							| 
									
										
										
										
											2017-10-13 11:42:36 +08:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-23 00:05:57 +08:00
										 |  |  | #ifndef _WIN32_WINNT
 | 
					
						
							|  |  |  | #define _WIN32_WINNT 0x0700 // Allow use of features specific to Windows 7 or later
 | 
					
						
							| 
									
										
										
										
											2017-10-13 11:42:36 +08:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-19 12:48:58 +08:00
										 |  |  | #ifndef NTDDI_VERSION
 | 
					
						
							|  |  |  | #define NTDDI_VERSION NTDDI_WIN7
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-13 11:42:36 +08:00
										 |  |  | #ifndef UNICODE
 | 
					
						
							|  |  |  | #define UNICODE
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-23 00:05:57 +08:00
										 |  |  | // Exclude rarely-used items from Windows headers
 | 
					
						
							| 
									
										
										
										
											2017-10-19 12:48:58 +08:00
										 |  |  | #ifndef WIN32_LEAN_AND_MEAN
 | 
					
						
							| 
									
										
										
										
											2017-10-13 11:42:36 +08:00
										 |  |  | #define WIN32_LEAN_AND_MEAN
 | 
					
						
							| 
									
										
										
										
											2017-10-19 12:48:58 +08:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2017-10-13 11:42:36 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  | #ifndef DIRECTINPUT_VERSION
 | 
					
						
							|  |  |  | #define DIRECTINPUT_VERSION 0x0800
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-01 23:08:11 +08:00
										 |  |  | #define INITGUID
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-23 00:05:57 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-02 10:06:29 +08:00
										 |  |  | // Windows Header Files
 | 
					
						
							| 
									
										
										
										
											2017-10-13 11:42:36 +08:00
										 |  |  | #include <windows.h>
 | 
					
						
							| 
									
										
										
										
											2018-02-01 22:07:44 +08:00
										 |  |  | #include <wincodec.h>
 | 
					
						
							|  |  |  | #include <mmsystem.h>
 | 
					
						
							| 
									
										
										
										
											2017-10-17 21:22:25 +08:00
										 |  |  | #include <d2d1.h>
 | 
					
						
							|  |  |  | #include <dwrite.h>
 | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  | #include <dinput.h>
 | 
					
						
							| 
									
										
										
										
											2018-02-01 22:07:44 +08:00
										 |  |  | #include <d2d1helper.h>
 | 
					
						
							| 
									
										
										
										
											2018-04-24 20:22:41 +08:00
										 |  |  | #include <xaudio2.h>
 | 
					
						
							| 
									
										
										
										
											2018-02-01 22:07:44 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-15 23:59:58 +08:00
										 |  |  | // C++ RunTime Header Files
 | 
					
						
							|  |  |  | #include <set>
 | 
					
						
							|  |  |  | #include <stack>
 | 
					
						
							|  |  |  | #include <vector>
 | 
					
						
							|  |  |  | #include <functional>
 | 
					
						
							|  |  |  | #include <sstream>
 | 
					
						
							|  |  |  | #include <random>
 | 
					
						
							|  |  |  | #include <utility>
 | 
					
						
							| 
									
										
										
										
											2018-02-02 10:06:29 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | // Import Libraries
 | 
					
						
							| 
									
										
										
										
											2017-10-17 21:22:25 +08:00
										 |  |  | #pragma comment(lib, "d2d1.lib")
 | 
					
						
							|  |  |  | #pragma comment(lib, "dwrite.lib")
 | 
					
						
							|  |  |  | #pragma comment(lib, "windowscodecs.lib")
 | 
					
						
							| 
									
										
										
										
											2018-02-01 22:07:44 +08:00
										 |  |  | #pragma comment(lib, "winmm.lib")
 | 
					
						
							| 
									
										
										
										
											2018-04-01 23:08:11 +08:00
										 |  |  | #pragma comment(lib, "xaudio2.lib")
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-13 11:42:36 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  | #ifndef HINST_THISCOMPONENT
 | 
					
						
							|  |  |  | EXTERN_C IMAGE_DOS_HEADER __ImageBase; | 
					
						
							|  |  |  | #define HINST_THISCOMPONENT ((HINSTANCE)&__ImageBase)
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-24 12:24:39 +08:00
										 |  |  | #ifndef WARN
 | 
					
						
							| 
									
										
										
										
											2017-10-12 02:44:44 +08:00
										 |  |  | #if defined( DEBUG ) || defined( _DEBUG )
 | 
					
						
							| 
									
										
										
										
											2018-05-24 12:24:39 +08:00
										 |  |  | #define WARN(message, ...) do { fwprintf(stderr, L"Warning: " _CRT_WIDE(#message) L"\n", __VA_ARGS__); } while(0)
 | 
					
						
							| 
									
										
										
										
											2017-10-12 02:44:44 +08:00
										 |  |  | #else
 | 
					
						
							| 
									
										
										
										
											2018-05-24 12:24:39 +08:00
										 |  |  | #define WARN(message, ...) ((void)0)
 | 
					
						
							| 
									
										
										
										
											2018-04-23 00:05:57 +08:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2017-10-12 02:44:44 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-24 12:24:39 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  | #ifndef WARN_IF
 | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  | #if defined( DEBUG ) || defined( _DEBUG )
 | 
					
						
							| 
									
										
										
										
											2018-05-24 12:24:39 +08:00
										 |  |  | 	#define WARN_IF(expression, message, ...) do { if (expression) { fwprintf(stderr, L"Warning: " _CRT_WIDE(#message) L"\n", __VA_ARGS__); } } while(0)
 | 
					
						
							| 
									
										
										
										
											2017-10-14 01:07:34 +08:00
										 |  |  | #else
 | 
					
						
							| 
									
										
										
										
											2018-02-02 10:06:29 +08:00
										 |  |  | 	#define WARN_IF(expression, message, ...) ((void)0)
 | 
					
						
							| 
									
										
										
										
											2018-04-23 00:05:57 +08:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2018-04-01 13:16:07 +08:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 |