diff options
-rw-r--r-- | Source/Main.cpp | 225 | ||||
-rw-r--r-- | Source/Main.h | 3 | ||||
-rw-r--r-- | Source/Memory.h | 2 | ||||
-rw-r--r-- | Source/Randomizer.cpp | 50 | ||||
-rw-r--r-- | Source/Randomizer.h | 2 | ||||
-rw-r--r-- | Source/Source.vcxproj | 3 | ||||
-rw-r--r-- | Source/Source.vcxproj.filters | 3 |
7 files changed, 128 insertions, 160 deletions
diff --git a/Source/Main.cpp b/Source/Main.cpp index 4748b73..5c7cefa 100644 --- a/Source/Main.cpp +++ b/Source/Main.cpp | |||
@@ -2,177 +2,162 @@ | |||
2 | // | 2 | // |
3 | 3 | ||
4 | #include "stdafx.h" | 4 | #include "stdafx.h" |
5 | #include "Main.h" | 5 | #include "resource.h" |
6 | #include "tchar.h" | ||
7 | #include "Randomizer.h" | ||
8 | #include <Richedit.h> | ||
9 | #include <iostream> | ||
10 | #include <ctime> | ||
11 | #include <string> | ||
6 | 12 | ||
7 | #define MAX_LOADSTRING 100 | 13 | #define MAX_LOADSTRING 100 |
14 | #define IDC_RANDOMIZE 0x464 | ||
8 | 15 | ||
9 | // Global Variables: | 16 | HINSTANCE hInst; |
10 | HINSTANCE hInst; // current instance | 17 | WCHAR szWindowClass[MAX_LOADSTRING]; |
11 | WCHAR szTitle[MAX_LOADSTRING]; // The title bar text | 18 | HWND hwndSeed; |
12 | WCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name | 19 | std::shared_ptr<Randomizer> randomizer; |
13 | 20 | ||
14 | // Forward declarations of functions included in this code module: | 21 | // Forward declares |
15 | ATOM MyRegisterClass(HINSTANCE hInstance); | 22 | ATOM MyRegisterClass(HINSTANCE hInstance); |
16 | BOOL InitInstance(HINSTANCE, int); | 23 | BOOL InitInstance(HINSTANCE, int); |
17 | LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); | 24 | LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); |
18 | INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); | 25 | INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); |
19 | 26 | ||
20 | int APIENTRY wWinMain(_In_ HINSTANCE hInstance, | 27 | int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow) |
21 | _In_opt_ HINSTANCE hPrevInstance, | ||
22 | _In_ LPWSTR lpCmdLine, | ||
23 | _In_ int nCmdShow) | ||
24 | { | 28 | { |
25 | UNREFERENCED_PARAMETER(hPrevInstance); | 29 | LoadStringW(hInstance, IDC_SOURCE, szWindowClass, MAX_LOADSTRING); |
26 | UNREFERENCED_PARAMETER(lpCmdLine); | ||
27 | |||
28 | // TODO: Place code here. | ||
29 | |||
30 | // Initialize global strings | ||
31 | LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); | ||
32 | LoadStringW(hInstance, IDC_SOURCE, szWindowClass, MAX_LOADSTRING); | ||
33 | MyRegisterClass(hInstance); | 30 | MyRegisterClass(hInstance); |
34 | 31 | if (!InitInstance(hInstance, nCmdShow)) { | |
35 | // Perform application initialization: | ||
36 | if (!InitInstance (hInstance, nCmdShow)) | ||
37 | { | ||
38 | return FALSE; | 32 | return FALSE; |
39 | } | 33 | } |
40 | 34 | randomizer = std::make_shared<Randomizer>(); | |
41 | HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_SOURCE)); | 35 | if (randomizer == nullptr) { |
36 | return FALSE; | ||
37 | } | ||
42 | 38 | ||
43 | MSG msg; | 39 | MSG msg; |
44 | 40 | while (!GetMessage(&msg, nullptr, 0, 0) == 0) | |
45 | // Main message loop: | ||
46 | while (GetMessage(&msg, nullptr, 0, 0)) | ||
47 | { | 41 | { |
48 | if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) | 42 | TranslateMessage(&msg); |
49 | { | 43 | DispatchMessage(&msg); |
50 | TranslateMessage(&msg); | ||
51 | DispatchMessage(&msg); | ||
52 | } | ||
53 | } | 44 | } |
54 | 45 | ||
55 | return (int) msg.wParam; | 46 | return (int) msg.wParam; |
56 | } | 47 | } |
57 | 48 | ||
58 | |||
59 | |||
60 | // | ||
61 | // FUNCTION: MyRegisterClass() | ||
62 | // | ||
63 | // PURPOSE: Registers the window class. | ||
64 | // | ||
65 | ATOM MyRegisterClass(HINSTANCE hInstance) | 49 | ATOM MyRegisterClass(HINSTANCE hInstance) |
66 | { | 50 | { |
67 | WNDCLASSEXW wcex; | 51 | WNDCLASSEXW wcex = { |
68 | 52 | sizeof(WNDCLASSEX), | |
69 | wcex.cbSize = sizeof(WNDCLASSEX); | 53 | CS_HREDRAW | CS_VREDRAW, |
70 | 54 | WndProc, | |
71 | wcex.style = CS_HREDRAW | CS_VREDRAW; | 55 | 0, |
72 | wcex.lpfnWndProc = WndProc; | 56 | 0, |
73 | wcex.cbClsExtra = 0; | 57 | hInstance, |
74 | wcex.cbWndExtra = 0; | 58 | LoadIcon(hInstance, MAKEINTRESOURCE(IDI_SOURCE)), |
75 | wcex.hInstance = hInstance; | 59 | LoadCursor(nullptr, IDC_ARROW), |
76 | wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_SOURCE)); | 60 | (HBRUSH)(COLOR_WINDOW+1), |
77 | wcex.hCursor = LoadCursor(nullptr, IDC_ARROW); | 61 | MAKEINTRESOURCEW(IDC_SOURCE), |
78 | wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); | 62 | szWindowClass, |
79 | wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_SOURCE); | 63 | LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL)), |
80 | wcex.lpszClassName = szWindowClass; | 64 | }; |
81 | wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL)); | ||
82 | 65 | ||
83 | return RegisterClassExW(&wcex); | 66 | return RegisterClassExW(&wcex); |
84 | } | 67 | } |
85 | 68 | ||
86 | // | ||
87 | // FUNCTION: InitInstance(HINSTANCE, int) | ||
88 | // | ||
89 | // PURPOSE: Saves instance handle and creates main window | ||
90 | // | ||
91 | // COMMENTS: | ||
92 | // | ||
93 | // In this function, we save the instance handle in a global variable and | ||
94 | // create and display the main program window. | ||
95 | // | ||
96 | BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) | 69 | BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) |
97 | { | 70 | { |
98 | hInst = hInstance; // Store instance handle in our global variable | 71 | hInst = hInstance; // Store instance handle in our global variable |
99 | 72 | ||
100 | HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, | 73 | WCHAR szTitle[MAX_LOADSTRING]; |
74 | LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); | ||
75 | HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, | ||
101 | CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr); | 76 | CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr); |
102 | 77 | ||
103 | if (!hWnd) | 78 | if (!hWnd) |
104 | { | 79 | { |
105 | return FALSE; | 80 | return FALSE; |
106 | } | 81 | } |
107 | 82 | ||
108 | ShowWindow(hWnd, nCmdShow); | 83 | LoadLibrary(L"Msftedit.dll"); |
109 | UpdateWindow(hWnd); | 84 | HWND label = CreateWindow(L"BUTTON", L"Enter a seed:", |
110 | 85 | WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, | |
111 | return TRUE; | 86 | 10, 10, 100, 26, hWnd, NULL, hInst, NULL); |
87 | |||
88 | hwndSeed = CreateWindowEx(0, MSFTEDIT_CLASS, L"", | ||
89 | ES_MULTILINE | WS_VISIBLE | WS_CHILD | WS_BORDER | WS_TABSTOP, | ||
90 | 120, 10, 50, 26, hWnd, NULL, hInst, NULL); | ||
91 | |||
92 | HWND hwndRandomize = CreateWindow(L"BUTTON", L"Randomize", | ||
93 | WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, | ||
94 | 180, 10, 100, 26, hWnd, (HMENU)IDC_RANDOMIZE, hInst, NULL); | ||
95 | |||
96 | HDC hdc = GetDC(hWnd); | ||
97 | RECT rect; | ||
98 | GetClientRect(hWnd, &rect); | ||
99 | LPCWSTR text = L"this Window cannot be used"; | ||
100 | DrawText(hdc, text, static_cast<int>(wcslen(text)), &rect, DT_CENTER | DT_VCENTER); | ||
101 | ReleaseDC(hWnd, hdc); | ||
102 | |||
103 | ShowWindow(hWnd, nCmdShow); | ||
104 | UpdateWindow(hWnd); | ||
105 | return TRUE; | ||
112 | } | 106 | } |
113 | 107 | ||
114 | // | ||
115 | // FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM) | ||
116 | // | ||
117 | // PURPOSE: Processes messages for the main window. | ||
118 | // | ||
119 | // WM_COMMAND - process the application menu | ||
120 | // WM_PAINT - Paint the main window | ||
121 | // WM_DESTROY - post a quit message and return | ||
122 | // | ||
123 | // | ||
124 | LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) | 108 | LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) |
125 | { | 109 | { |
126 | switch (message) | 110 | if (WM_COMMAND == WM_DESTROY) { |
127 | { | 111 | PostQuitMessage(0); |
128 | case WM_COMMAND: | 112 | } else { |
129 | { | 113 | int wmId = LOWORD(wParam); |
130 | int wmId = LOWORD(wParam); | 114 | // Parse the menu selections: |
131 | // Parse the menu selections: | 115 | switch (wmId) |
132 | switch (wmId) | ||
133 | { | ||
134 | case IDM_ABOUT: | ||
135 | DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); | ||
136 | break; | ||
137 | case IDM_EXIT: | ||
138 | DestroyWindow(hWnd); | ||
139 | break; | ||
140 | default: | ||
141 | return DefWindowProc(hWnd, message, wParam, lParam); | ||
142 | } | ||
143 | } | ||
144 | break; | ||
145 | case WM_PAINT: | ||
146 | { | 116 | { |
147 | PAINTSTRUCT ps; | 117 | case IDM_ABOUT: |
148 | HDC hdc = BeginPaint(hWnd, &ps); | 118 | DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); |
149 | // TODO: Add any drawing code that uses hdc here... | 119 | break; |
150 | EndPaint(hWnd, &ps); | 120 | case IDC_RANDOMIZE: |
121 | { | ||
122 | std::wstring text(100, '\0'); | ||
123 | GetWindowText(hwndSeed, &text[0], 100); | ||
124 | int seed = 0; | ||
125 | if (wcslen(text.c_str()) == 0) { | ||
126 | srand(static_cast<unsigned int>(time(nullptr))); // Seed from the time in milliseconds | ||
127 | rand(); | ||
128 | seed = rand() % 100000; | ||
129 | std::wstring seedString = std::to_wstring(seed); | ||
130 | SetWindowText(hwndSeed, seedString.c_str()); | ||
131 | } else { | ||
132 | seed = _wtoi(text.c_str()); | ||
133 | } | ||
134 | randomizer->Randomize(seed); | ||
135 | |||
136 | break; | ||
137 | } | ||
138 | case IDM_EXIT: | ||
139 | DestroyWindow(hWnd); | ||
140 | break; | ||
141 | default: | ||
142 | return DefWindowProc(hWnd, message, wParam, lParam); | ||
151 | } | 143 | } |
152 | break; | 144 | } |
153 | case WM_DESTROY: | 145 | return DefWindowProc(hWnd, message, wParam, lParam); |
154 | PostQuitMessage(0); | ||
155 | break; | ||
156 | default: | ||
157 | return DefWindowProc(hWnd, message, wParam, lParam); | ||
158 | } | ||
159 | return 0; | ||
160 | } | 146 | } |
161 | 147 | ||
162 | // Message handler for about box. | ||
163 | INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) | 148 | INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) |
164 | { | 149 | { |
165 | UNREFERENCED_PARAMETER(lParam); | 150 | UNREFERENCED_PARAMETER(lParam); |
166 | switch (message) | 151 | switch (message) |
167 | { | 152 | { |
168 | case WM_INITDIALOG: | 153 | case WM_INITDIALOG: |
169 | return (INT_PTR)TRUE; | 154 | return TRUE; |
170 | 155 | ||
171 | case WM_COMMAND: | 156 | case WM_COMMAND: |
172 | if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) | 157 | if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) |
173 | { | 158 | { |
174 | EndDialog(hDlg, LOWORD(wParam)); | 159 | EndDialog(hDlg, LOWORD(wParam)); |
175 | return (INT_PTR)TRUE; | 160 | return TRUE; |
176 | } | 161 | } |
177 | break; | 162 | break; |
178 | } | 163 | } |
diff --git a/Source/Main.h b/Source/Main.h deleted file mode 100644 index d00d47e..0000000 --- a/Source/Main.h +++ /dev/null | |||
@@ -1,3 +0,0 @@ | |||
1 | #pragma once | ||
2 | |||
3 | #include "resource.h" | ||
diff --git a/Source/Memory.h b/Source/Memory.h index 8e8bbc3..53fa1e0 100644 --- a/Source/Memory.h +++ b/Source/Memory.h | |||
@@ -39,7 +39,7 @@ public: | |||
39 | } | 39 | } |
40 | ThrowError(); | 40 | ThrowError(); |
41 | } | 41 | } |
42 | 42 | ||
43 | private: | 43 | private: |
44 | void ThrowError(); | 44 | void ThrowError(); |
45 | 45 | ||
diff --git a/Source/Randomizer.cpp b/Source/Randomizer.cpp index 75b3cf7..b8462e5 100644 --- a/Source/Randomizer.cpp +++ b/Source/Randomizer.cpp | |||
@@ -6,7 +6,6 @@ | |||
6 | This seems to cause crashes when pivots appear elsewhere in the world. | 6 | This seems to cause crashes when pivots appear elsewhere in the world. |
7 | * Some panels are impossible casually: (idc, I think) | 7 | * Some panels are impossible casually: (idc, I think) |
8 | ** Town Stars, Invisible dots | 8 | ** Town Stars, Invisible dots |
9 | * Shadows burn marks are not appearing | ||
10 | * Something is wrong with jungle re: softlocks | 9 | * Something is wrong with jungle re: softlocks |
11 | * FEATURES: | 10 | * FEATURES: |
12 | * SWAP_TARGETS should still require the full panel sequence (and have ways to prevent softlocks?) | 11 | * SWAP_TARGETS should still require the full panel sequence (and have ways to prevent softlocks?) |
@@ -37,34 +36,23 @@ size_t find(const std::vector<T> &data, T search, size_t startIndex = 0) { | |||
37 | exit(-1); | 36 | exit(-1); |
38 | } | 37 | } |
39 | 38 | ||
40 | int main(int argc, char** argv) | 39 | void Randomizer::Randomize(int seed) |
41 | { | 40 | { |
42 | Randomizer randomizer = Randomizer(); | ||
43 | |||
44 | if (argc == 2) { | ||
45 | srand(atoi(argv[1])); // Seed from the command line | ||
46 | } else { | ||
47 | srand(static_cast<unsigned int>(time(nullptr))); | ||
48 | int seed = rand() % (1 << 16); // Seed from the time in milliseconds | ||
49 | std::cout << "Selected seed: " << seed << std::endl; | ||
50 | srand(seed); | ||
51 | } | ||
52 | |||
53 | // Content swaps -- must happen before squarePanels | 41 | // Content swaps -- must happen before squarePanels |
54 | randomizer.Randomize(tallUpDownPanels, SWAP_LINES | SWAP_STYLE); | 42 | Randomize(tallUpDownPanels, SWAP_LINES | SWAP_STYLE); |
55 | randomizer.Randomize(upDownPanels, SWAP_LINES | SWAP_STYLE); | 43 | Randomize(upDownPanels, SWAP_LINES | SWAP_STYLE); |
56 | randomizer.Randomize(leftForwardRightPanels, SWAP_LINES); | 44 | Randomize(leftForwardRightPanels, SWAP_LINES); |
57 | 45 | ||
58 | randomizer.Randomize(squarePanels, SWAP_LINES | SWAP_STYLE); | 46 | Randomize(squarePanels, SWAP_LINES | SWAP_STYLE); |
59 | 47 | ||
60 | // Frame swaps -- must happen after squarePanels | 48 | // Frame swaps -- must happen after squarePanels |
61 | randomizer.Randomize(burnablePanels, SWAP_LINES | SWAP_STYLE); | 49 | Randomize(burnablePanels, SWAP_LINES | SWAP_STYLE); |
62 | 50 | ||
63 | // Target swaps, can happen whenever | 51 | // Target swaps, can happen whenever |
64 | randomizer.Randomize(lasers, SWAP_TARGETS); | 52 | Randomize(lasers, SWAP_TARGETS); |
65 | // Read the target of keep front laser, and write it to keep back laser. | 53 | // Read the target of keep front laser, and write it to keep back laser. |
66 | std::vector<int> keepFrontLaserTarget = randomizer.ReadPanelData<int>(0x0360E, TARGET, 1); | 54 | std::vector<int> keepFrontLaserTarget = ReadPanelData<int>(0x0360E, TARGET, 1); |
67 | randomizer.WritePanelData<int>(0x03317, TARGET, keepFrontLaserTarget); | 55 | WritePanelData<int>(0x03317, TARGET, keepFrontLaserTarget); |
68 | 56 | ||
69 | std::vector<int> randomOrder; | 57 | std::vector<int> randomOrder; |
70 | 58 | ||
@@ -77,7 +65,7 @@ int main(int argc, char** argv) | |||
77 | // Randomize Pitches 1-6 onto themselves | 65 | // Randomize Pitches 1-6 onto themselves |
78 | randomizer.RandomizeRange(randomOrder, SWAP_NONE, 7, 13); | 66 | randomizer.RandomizeRange(randomOrder, SWAP_NONE, 7, 13); |
79 | randomizer.ReassignTargets(junglePanels, randomOrder); | 67 | randomizer.ReassignTargets(junglePanels, randomOrder); |
80 | */ | 68 | */ |
81 | 69 | ||
82 | /* Bunker */ | 70 | /* Bunker */ |
83 | randomOrder = std::vector(bunkerPanels.size(), 0); | 71 | randomOrder = std::vector(bunkerPanels.size(), 0); |
@@ -85,23 +73,23 @@ int main(int argc, char** argv) | |||
85 | // Randomize Tutorial 2-Advanced Tutorial 4 + Glass 1 | 73 | // Randomize Tutorial 2-Advanced Tutorial 4 + Glass 1 |
86 | // Tutorial 1 cannot be randomized, since no other panel can start on | 74 | // Tutorial 1 cannot be randomized, since no other panel can start on |
87 | // Glass 1 will become door + glass 1, due to the targetting system | 75 | // Glass 1 will become door + glass 1, due to the targetting system |
88 | randomizer.RandomizeRange(randomOrder, SWAP_NONE, 1, 10); | 76 | RandomizeRange(randomOrder, SWAP_NONE, 1, 10); |
89 | // Randomize Glass 1-3 into everything after the door | 77 | // Randomize Glass 1-3 into everything after the door |
90 | const size_t glassDoorIndex = find(randomOrder, 9) + 1; | 78 | const size_t glassDoorIndex = find(randomOrder, 9) + 1; |
91 | randomizer.RandomizeRange(randomOrder, SWAP_NONE, glassDoorIndex, 12); | 79 | RandomizeRange(randomOrder, SWAP_NONE, glassDoorIndex, 12); |
92 | randomizer.ReassignTargets(bunkerPanels, randomOrder); | 80 | ReassignTargets(bunkerPanels, randomOrder); |
93 | 81 | ||
94 | /* Shadows */ | 82 | /* Shadows */ |
95 | randomOrder = std::vector(shadowsPanels.size(), 0); | 83 | randomOrder = std::vector(shadowsPanels.size(), 0); |
96 | std::iota(randomOrder.begin(), randomOrder.end(), 0); | 84 | std::iota(randomOrder.begin(), randomOrder.end(), 0); |
97 | randomizer.RandomizeRange(randomOrder, SWAP_NONE, 0, 8); // Tutorial | 85 | RandomizeRange(randomOrder, SWAP_NONE, 0, 8); // Tutorial |
98 | randomizer.RandomizeRange(randomOrder, SWAP_NONE, 8, 16); // Avoid | 86 | RandomizeRange(randomOrder, SWAP_NONE, 8, 16); // Avoid |
99 | randomizer.RandomizeRange(randomOrder, SWAP_NONE, 16, 21); // Follow | 87 | RandomizeRange(randomOrder, SWAP_NONE, 16, 21); // Follow |
100 | randomizer.ReassignTargets(shadowsPanels, randomOrder); | 88 | ReassignTargets(shadowsPanels, randomOrder); |
101 | // Turn off original starting panel | 89 | // Turn off original starting panel |
102 | randomizer.WritePanelData<float>(shadowsPanels[0], POWER, {0.0f, 0.0f}); | 90 | WritePanelData<float>(shadowsPanels[0], POWER, {0.0f, 0.0f}); |
103 | // Turn on new starting panel | 91 | // Turn on new starting panel |
104 | randomizer.WritePanelData<float>(shadowsPanels[randomOrder[0]], POWER, {1.0f, 1.0f}); | 92 | WritePanelData<float>(shadowsPanels[randomOrder[0]], POWER, {1.0f, 1.0f}); |
105 | 93 | ||
106 | /* Monastery | 94 | /* Monastery |
107 | randomOrder = std::vector(monasteryPanels.size(), 0); | 95 | randomOrder = std::vector(monasteryPanels.size(), 0); |
diff --git a/Source/Randomizer.h b/Source/Randomizer.h index b644a1d..6615e31 100644 --- a/Source/Randomizer.h +++ b/Source/Randomizer.h | |||
@@ -13,6 +13,8 @@ class Randomizer { | |||
13 | public: | 13 | public: |
14 | Randomizer(); | 14 | Randomizer(); |
15 | 15 | ||
16 | void Randomize(int seed); | ||
17 | |||
16 | void Randomize(std::vector<int>& panels, int flags); | 18 | void Randomize(std::vector<int>& panels, int flags); |
17 | void RandomizeRange(std::vector<int> &panels, int flags, size_t startIndex, size_t endIndex); | 19 | void RandomizeRange(std::vector<int> &panels, int flags, size_t startIndex, size_t endIndex); |
18 | void SwapPanels(int panel1, int panel2, int flags); | 20 | void SwapPanels(int panel1, int panel2, int flags); |
diff --git a/Source/Source.vcxproj b/Source/Source.vcxproj index 8a6c8eb..55d54d9 100644 --- a/Source/Source.vcxproj +++ b/Source/Source.vcxproj | |||
@@ -46,7 +46,7 @@ | |||
46 | <CharacterSet>Unicode</CharacterSet> | 46 | <CharacterSet>Unicode</CharacterSet> |
47 | </PropertyGroup> | 47 | </PropertyGroup> |
48 | <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> | 48 | <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> |
49 | <ConfigurationType>StaticLibrary</ConfigurationType> | 49 | <ConfigurationType>Application</ConfigurationType> |
50 | <UseDebugLibraries>false</UseDebugLibraries> | 50 | <UseDebugLibraries>false</UseDebugLibraries> |
51 | <PlatformToolset>v141</PlatformToolset> | 51 | <PlatformToolset>v141</PlatformToolset> |
52 | <WholeProgramOptimization>true</WholeProgramOptimization> | 52 | <WholeProgramOptimization>true</WholeProgramOptimization> |
@@ -153,7 +153,6 @@ | |||
153 | <ClInclude Include="Panels.h" /> | 153 | <ClInclude Include="Panels.h" /> |
154 | <ClInclude Include="Randomizer.h" /> | 154 | <ClInclude Include="Randomizer.h" /> |
155 | <ClInclude Include="Resource.h" /> | 155 | <ClInclude Include="Resource.h" /> |
156 | <ClInclude Include="Main.h" /> | ||
157 | <ClInclude Include="stdafx.h" /> | 156 | <ClInclude Include="stdafx.h" /> |
158 | <ClInclude Include="targetver.h" /> | 157 | <ClInclude Include="targetver.h" /> |
159 | </ItemGroup> | 158 | </ItemGroup> |
diff --git a/Source/Source.vcxproj.filters b/Source/Source.vcxproj.filters index aad417a..b650d44 100644 --- a/Source/Source.vcxproj.filters +++ b/Source/Source.vcxproj.filters | |||
@@ -24,9 +24,6 @@ | |||
24 | <ClInclude Include="Resource.h"> | 24 | <ClInclude Include="Resource.h"> |
25 | <Filter>Header Files</Filter> | 25 | <Filter>Header Files</Filter> |
26 | </ClInclude> | 26 | </ClInclude> |
27 | <ClInclude Include="Main.h"> | ||
28 | <Filter>Header Files</Filter> | ||
29 | </ClInclude> | ||
30 | <ClInclude Include="Memory.h"> | 27 | <ClInclude Include="Memory.h"> |
31 | <Filter>Header Files</Filter> | 28 | <Filter>Header Files</Filter> |
32 | </ClInclude> | 29 | </ClInclude> |