diff options
| -rw-r--r-- | App/Main.cpp | 26 | ||||
| -rw-r--r-- | Source/ChallengeRandomizer.cpp | 18 | ||||
| -rw-r--r-- | Source/Memory.cpp | 5 | ||||
| -rw-r--r-- | Source/Randomizer.cpp | 35 | ||||
| -rw-r--r-- | Source/Randomizer.h | 8 | ||||
| -rw-r--r-- | Source/Source.vcxproj | 5 | ||||
| -rw-r--r-- | Test/Temp.cpp | 64 | ||||
| -rw-r--r-- | Test/Test.vcxproj | 16 | ||||
| -rw-r--r-- | Test/packages.config | 2 |
9 files changed, 85 insertions, 94 deletions
| diff --git a/App/Main.cpp b/App/Main.cpp index 89765fb..f8b7422 100644 --- a/App/Main.cpp +++ b/App/Main.cpp | |||
| @@ -8,18 +8,8 @@ | |||
| 8 | #include <thread> | 8 | #include <thread> |
| 9 | 9 | ||
| 10 | #include "Memory.h" | 10 | #include "Memory.h" |
| 11 | #include <Random.h> | 11 | #include "Random.h" |
| 12 | class Randomizer { | 12 | #include "Randomizer.h" |
| 13 | public: | ||
| 14 | Randomizer(const std::shared_ptr<Memory>&) {} | ||
| 15 | void Randomize(int seed) { | ||
| 16 | std::this_thread::sleep_for(std::chrono::milliseconds(1000)); | ||
| 17 | } | ||
| 18 | |||
| 19 | void RandomizeChallenge(int seed) { | ||
| 20 | Randomize(seed); | ||
| 21 | } | ||
| 22 | }; | ||
| 23 | 13 | ||
| 24 | // Heartbeat is defined to 0x401 by Memory.h | 14 | // Heartbeat is defined to 0x401 by Memory.h |
| 25 | #define RANDOMIZE_READY 0x402 | 15 | #define RANDOMIZE_READY 0x402 |
| @@ -45,7 +35,10 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) | |||
| 45 | switch ((ProcStatus)lParam) { | 35 | switch ((ProcStatus)lParam) { |
| 46 | case ProcStatus::NotRunning: | 36 | case ProcStatus::NotRunning: |
| 47 | // Shut down randomizer, wait for startup | 37 | // Shut down randomizer, wait for startup |
| 48 | if (g_randomizer) g_randomizer = nullptr; | 38 | if (g_randomizer) { |
| 39 | g_randomizer = nullptr; | ||
| 40 | EnableWindow(g_randomizerStatus, FALSE); | ||
| 41 | } | ||
| 49 | break; | 42 | break; |
| 50 | case ProcStatus::Running: | 43 | case ProcStatus::Running: |
| 51 | if (!g_randomizer) { | 44 | if (!g_randomizer) { |
| @@ -85,14 +78,15 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) | |||
| 85 | SetWindowText(g_seed, std::to_wstring(seed).c_str()); | 78 | SetWindowText(g_seed, std::to_wstring(seed).c_str()); |
| 86 | RedrawWindow(g_seed, NULL, NULL, RDW_UPDATENOW); | 79 | RedrawWindow(g_seed, NULL, NULL, RDW_UPDATENOW); |
| 87 | } | 80 | } |
| 88 | std::thread([hwnd, seed]{ | 81 | Random::SetSeed(seed); |
| 82 | std::thread([hwnd]{ | ||
| 89 | if (IsDlgButtonChecked(hwnd, CHALLENGE_ONLY)) { | 83 | if (IsDlgButtonChecked(hwnd, CHALLENGE_ONLY)) { |
| 90 | SetWindowText(g_randomizerStatus, L"Randomizing Challenge..."); | 84 | SetWindowText(g_randomizerStatus, L"Randomizing Challenge..."); |
| 91 | g_randomizer->RandomizeChallenge(seed); | 85 | g_randomizer->RandomizeChallenge(); |
| 92 | PostMessage(g_hwnd, WM_COMMAND, RANDOMIZE_CHALLENGE_DONE, NULL); | 86 | PostMessage(g_hwnd, WM_COMMAND, RANDOMIZE_CHALLENGE_DONE, NULL); |
| 93 | } else { | 87 | } else { |
| 94 | SetWindowText(g_randomizerStatus, L"Randomizing..."); | 88 | SetWindowText(g_randomizerStatus, L"Randomizing..."); |
| 95 | g_randomizer->Randomize(seed); | 89 | g_randomizer->Randomize(); |
| 96 | PostMessage(g_hwnd, WM_COMMAND, RANDOMIZE_DONE, NULL); | 90 | PostMessage(g_hwnd, WM_COMMAND, RANDOMIZE_DONE, NULL); |
| 97 | } | 91 | } |
| 98 | }).detach(); | 92 | }).detach(); |
| diff --git a/Source/ChallengeRandomizer.cpp b/Source/ChallengeRandomizer.cpp index fa9a234..de08885 100644 --- a/Source/ChallengeRandomizer.cpp +++ b/Source/ChallengeRandomizer.cpp | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | #include "ChallengeRandomizer.h" | 1 | #include "ChallengeRandomizer.h" |
| 2 | #include <iostream> | 2 | #include <iostream> |
| 3 | 3 | ||
| 4 | // Reads the (relative!) address of the RNG, then shifts it to point at RNG2 | 4 | // Modify an opcode to use RNG2 instead of main RNG |
| 5 | void ChallengeRandomizer::AdjustRng(int offset) { | 5 | void ChallengeRandomizer::AdjustRng(int offset) { |
| 6 | int currentRng = _memory->ReadData<int>({offset}, 0x1)[0]; | 6 | int currentRng = _memory->ReadData<int>({offset}, 0x1)[0]; |
| 7 | _memory->WriteData<int>({offset}, {currentRng + 0x20}); | 7 | _memory->WriteData<int>({offset}, {currentRng + 0x20}); |
| @@ -39,22 +39,6 @@ ChallengeRandomizer::ChallengeRandomizer(const std::shared_ptr<Memory>& memory, | |||
| 39 | }); | 39 | }); |
| 40 | 40 | ||
| 41 | if (!alreadyInjected) { | 41 | if (!alreadyInjected) { |
| 42 | // reveal_exit_hall | ||
| 43 | _memory->AddSigScan({0x45, 0x8B, 0xF7, 0x48, 0x8B, 0x4D}, [&](int index){ | ||
| 44 | _memory->WriteData<byte>({index + 0x15}, {0xEB}); | ||
| 45 | }); | ||
| 46 | |||
| 47 | // begin_endgame_1 | ||
| 48 | _memory->AddSigScan({0x83, 0x7C, 0x01, 0xD0, 0x04}, [&](int index){ | ||
| 49 | if (GLOBALS == 0x5B28C0) { // Version differences. | ||
| 50 | index += 0x75; | ||
| 51 | } else if (GLOBALS == 0x62D0A0) { | ||
| 52 | index += 0x86; | ||
| 53 | } | ||
| 54 | // Overwriting a 74 12 opcode | ||
| 55 | _memory->WriteData<byte>({index}, {0xEB}); | ||
| 56 | }); | ||
| 57 | |||
| 58 | // shuffle_integers | 42 | // shuffle_integers |
| 59 | _memory->AddSigScan({0x48, 0x89, 0x5C, 0x24, 0x10, 0x56, 0x48, 0x83, 0xEC, 0x20, 0x48, 0x63, 0xDA, 0x48, 0x8B, 0xF1, 0x83, 0xFB, 0x01}, [&](int index) { | 43 | _memory->AddSigScan({0x48, 0x89, 0x5C, 0x24, 0x10, 0x56, 0x48, 0x83, 0xEC, 0x20, 0x48, 0x63, 0xDA, 0x48, 0x8B, 0xF1, 0x83, 0xFB, 0x01}, [&](int index) { |
| 60 | AdjustRng(index + 0x23); | 44 | AdjustRng(index + 0x23); |
| diff --git a/Source/Memory.cpp b/Source/Memory.cpp index 7b4b9c7..c3b89d0 100644 --- a/Source/Memory.cpp +++ b/Source/Memory.cpp | |||
| @@ -59,6 +59,8 @@ void Memory::Heartbeat(HWND window) { | |||
| 59 | int frameDelta = currentFrame - _previousFrame; | 59 | int frameDelta = currentFrame - _previousFrame; |
| 60 | _previousFrame = currentFrame; | 60 | _previousFrame = currentFrame; |
| 61 | if (frameDelta < 0 && currentFrame < 250) { | 61 | if (frameDelta < 0 && currentFrame < 250) { |
| 62 | // Some addresses (e.g. Entity Manager) may get re-allocated on newgame. | ||
| 63 | _computedAddresses.clear(); | ||
| 62 | PostMessage(window, WM_COMMAND, HEARTBEAT, (LPARAM)ProcStatus::NewGame); | 64 | PostMessage(window, WM_COMMAND, HEARTBEAT, (LPARAM)ProcStatus::NewGame); |
| 63 | return; | 65 | return; |
| 64 | } | 66 | } |
| @@ -171,9 +173,6 @@ void* Memory::ComputeOffset(std::vector<int> offsets) { | |||
| 171 | // If the address is not yet computed, then compute it. | 173 | // If the address is not yet computed, then compute it. |
| 172 | uintptr_t computedAddress = 0; | 174 | uintptr_t computedAddress = 0; |
| 173 | if (bool result = !ReadProcessMemory(_handle, reinterpret_cast<LPVOID>(cumulativeAddress), &computedAddress, sizeof(uintptr_t), NULL)) { | 175 | if (bool result = !ReadProcessMemory(_handle, reinterpret_cast<LPVOID>(cumulativeAddress), &computedAddress, sizeof(uintptr_t), NULL)) { |
| 174 | if (GetLastError() == ERROR_PARTIAL_COPY) { | ||
| 175 | int k = 1; | ||
| 176 | } | ||
| 177 | ThrowError(); | 176 | ThrowError(); |
| 178 | } | 177 | } |
| 179 | _computedAddresses[cumulativeAddress] = computedAddress; | 178 | _computedAddresses[cumulativeAddress] = computedAddress; |
| diff --git a/Source/Randomizer.cpp b/Source/Randomizer.cpp index 71ec89b..9b877cd 100644 --- a/Source/Randomizer.cpp +++ b/Source/Randomizer.cpp | |||
| @@ -109,23 +109,26 @@ int find(const std::vector<T> &data, T search, size_t startIndex = 0) { | |||
| 109 | throw std::exception("Couldn't find value in data!"); | 109 | throw std::exception("Couldn't find value in data!"); |
| 110 | } | 110 | } |
| 111 | 111 | ||
| 112 | bool Randomizer::GameIsRandomized() { | 112 | Randomizer::Randomizer(const std::shared_ptr<Memory>& memory) : _memory(memory) {} |
| 113 | int currentFrame = _memory->GetCurrentFrame(); | 113 | |
| 114 | if (currentFrame >= _lastRandomizedFrame) { | 114 | void Randomizer::Randomize() { |
| 115 | // Time went forwards, presumably we're still on the same save | 115 | // reveal_exit_hall - Prevent actually ending the game (EEE) |
| 116 | _lastRandomizedFrame = currentFrame; | 116 | _memory->AddSigScan({0x45, 0x8B, 0xF7, 0x48, 0x8B, 0x4D}, [&](int index){ |
| 117 | return true; | 117 | _memory->WriteData<byte>({index + 0x15}, {0xEB}); // jz -> jmp |
| 118 | } | 118 | }); |
| 119 | // Otherwise, time has gone backwards, so assume new game | 119 | |
| 120 | return false; | 120 | // begin_endgame_1 - Prevent actually ending the game (Wonkavator) |
| 121 | } | 121 | _memory->AddSigScan({0x83, 0x7C, 0x01, 0xD0, 0x04}, [&](int index){ |
| 122 | 122 | if (GLOBALS == 0x5B28C0) { // Version differences. | |
| 123 | void Randomizer::Randomize() | 123 | index += 0x75; |
| 124 | { | 124 | } else if (GLOBALS == 0x62D0A0) { |
| 125 | if (GameIsRandomized()) return; // Nice sanity check, but should be unnecessary (since Main checks anyways) | 125 | index += 0x86; |
| 126 | _lastRandomizedFrame = _memory->GetCurrentFrame(); | 126 | } |
| 127 | _memory->WriteData<byte>({index}, {0xEB}); // jz -> jmp | ||
| 128 | }); | ||
| 129 | // Sig scans will be run during challenge randomization. | ||
| 127 | 130 | ||
| 128 | // Seed challenge first for future-proofing (?) | 131 | // Seed challenge first for future-proofing |
| 129 | RandomizeChallenge(); | 132 | RandomizeChallenge(); |
| 130 | 133 | ||
| 131 | // Content swaps -- must happen before squarePanels | 134 | // Content swaps -- must happen before squarePanels |
| diff --git a/Source/Randomizer.h b/Source/Randomizer.h index 020851b..d9ea700 100644 --- a/Source/Randomizer.h +++ b/Source/Randomizer.h | |||
| @@ -4,15 +4,14 @@ | |||
| 4 | 4 | ||
| 5 | class Randomizer { | 5 | class Randomizer { |
| 6 | public: | 6 | public: |
| 7 | Randomizer(const std::shared_ptr<Memory>& memory); | ||
| 7 | void Randomize(); | 8 | void Randomize(); |
| 8 | bool GameIsRandomized(); | 9 | void RandomizeChallenge(); |
| 9 | 10 | ||
| 10 | void AdjustSpeed(); | 11 | void AdjustSpeed(); |
| 11 | void RandomizeLasers(); | 12 | void RandomizeLasers(); |
| 12 | void PreventSnipes(); | 13 | void PreventSnipes(); |
| 13 | 14 | ||
| 14 | void ClearOffsets() {_memory->ClearOffsets();} | ||
| 15 | |||
| 16 | enum SWAP { | 15 | enum SWAP { |
| 17 | NONE = 0, | 16 | NONE = 0, |
| 18 | TARGETS = 1, | 17 | TARGETS = 1, |
| @@ -36,7 +35,6 @@ private: | |||
| 36 | void RandomizeJungle(); | 35 | void RandomizeJungle(); |
| 37 | void RandomizeSwamp(); | 36 | void RandomizeSwamp(); |
| 38 | void RandomizeMountain(); | 37 | void RandomizeMountain(); |
| 39 | void RandomizeChallenge(); | ||
| 40 | void RandomizeAudioLogs(); | 38 | void RandomizeAudioLogs(); |
| 41 | 39 | ||
| 42 | void Randomize(std::vector<int>& panels, int flags); | 40 | void Randomize(std::vector<int>& panels, int flags); |
| @@ -45,7 +43,7 @@ private: | |||
| 45 | void ReassignTargets(const std::vector<int>& panels, const std::vector<int>& order, std::vector<int> targets = {}); | 43 | void ReassignTargets(const std::vector<int>& panels, const std::vector<int>& order, std::vector<int> targets = {}); |
| 46 | void ReassignNames(const std::vector<int>& panels, const std::vector<int>& order); | 44 | void ReassignNames(const std::vector<int>& panels, const std::vector<int>& order); |
| 47 | 45 | ||
| 48 | std::shared_ptr<Memory> _memory = std::make_shared<Memory>(L"witness64_d3d11.exe"); | 46 | std::shared_ptr<Memory> _memory; |
| 49 | 47 | ||
| 50 | friend class SwapTests_Shipwreck_Test; | 48 | friend class SwapTests_Shipwreck_Test; |
| 51 | }; | 49 | }; |
| diff --git a/Source/Source.vcxproj b/Source/Source.vcxproj index e7f716c..b60349c 100644 --- a/Source/Source.vcxproj +++ b/Source/Source.vcxproj | |||
| @@ -157,12 +157,17 @@ | |||
| 157 | </Link> | 157 | </Link> |
| 158 | </ItemDefinitionGroup> | 158 | </ItemDefinitionGroup> |
| 159 | <ItemGroup> | 159 | <ItemGroup> |
| 160 | <ClInclude Include="ChallengeRandomizer.h" /> | ||
| 160 | <ClInclude Include="Memory.h" /> | 161 | <ClInclude Include="Memory.h" /> |
| 162 | <ClInclude Include="Panels.h" /> | ||
| 161 | <ClInclude Include="Random.h" /> | 163 | <ClInclude Include="Random.h" /> |
| 164 | <ClInclude Include="Randomizer.h" /> | ||
| 162 | </ItemGroup> | 165 | </ItemGroup> |
| 163 | <ItemGroup> | 166 | <ItemGroup> |
| 167 | <ClCompile Include="ChallengeRandomizer.cpp" /> | ||
| 164 | <ClCompile Include="Memory.cpp" /> | 168 | <ClCompile Include="Memory.cpp" /> |
| 165 | <ClCompile Include="Random.cpp" /> | 169 | <ClCompile Include="Random.cpp" /> |
| 170 | <ClCompile Include="Randomizer.cpp" /> | ||
| 166 | </ItemGroup> | 171 | </ItemGroup> |
| 167 | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | 172 | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> |
| 168 | <ImportGroup Label="ExtensionTargets"> | 173 | <ImportGroup Label="ExtensionTargets"> |
| diff --git a/Test/Temp.cpp b/Test/Temp.cpp index 6a45140..3b31539 100644 --- a/Test/Temp.cpp +++ b/Test/Temp.cpp | |||
| @@ -6,45 +6,45 @@ | |||
| 6 | class Temp : public testing::Test | 6 | class Temp : public testing::Test |
| 7 | { | 7 | { |
| 8 | protected: | 8 | protected: |
| 9 | std::vector<char> ReadSubtitles(int size) { | 9 | std::shared_ptr<Memory> _memory = std::make_shared<Memory>("witness64_d3d11.exe"); |
| 10 | Memory memory("witness64_d3d11.exe"); | 10 | // std::vector<char> ReadSubtitles(int size) { |
| 11 | std::vector<char> data; | 11 | // Memory memory("witness64_d3d11.exe"); |
| 12 | data.resize(size); | 12 | // std::vector<char> data; |
| 13 | ReadProcessMemory(memory._handle, (LPVOID)0x3D89F000, &data[0], sizeof(char) * size, nullptr); | 13 | // data.resize(size); |
| 14 | return data; | 14 | // ReadProcessMemory(memory._handle, (LPVOID)0x3D89F000, &data[0], sizeof(char) * size, nullptr); |
| 15 | } | 15 | // return data; |
| 16 | // } | ||
| 16 | }; | 17 | }; |
| 17 | 18 | ||
| 18 | TEST(SwapTests, Shipwreck) { | 19 | // TEST_F(Temp, Shipwreck) { |
| 19 | Randomizer randomizer; | 20 | // Randomizer randomizer(_memory); |
| 20 | int shipwreck = 0xAFB; | 21 | // int shipwreck = 0xAFB; |
| 21 | int thEntry = 0x288C; | 22 | // int thEntry = 0x288C; |
| 22 | int si1 = 0x00000022; | 23 | // int si1 = 0x00000022; |
| 23 | int bu1 = 0x6; | 24 | // int bu1 = 0x6; |
| 24 | int td1 = 0x5D; | 25 | // int td1 = 0x5D; |
| 25 | int ypp = 0x33EA; | 26 | // int ypp = 0x33EA; |
| 26 | int ramp_activation_shapers = 0x21D5; | 27 | // int ramp_activation_shapers = 0x21D5; |
| 27 | int mill_upper_5 = 0x146C; | 28 | // int mill_upper_5 = 0x146C; |
| 28 | int mill_entry_left = 0x1E5A; | 29 | // int mill_entry_left = 0x1E5A; |
| 29 | int mill_upper_7 = 0x03686; | 30 | // int mill_upper_7 = 0x03686; |
| 30 | 31 | // | |
| 31 | randomizer.SwapPanels(ypp, mill_upper_7, Randomizer::SWAP::LINES); | 32 | // randomizer.SwapPanels(ypp, mill_upper_7, Randomizer::SWAP::LINES); |
| 32 | 33 | // } | |
| 33 | } | ||
| 34 | 34 | ||
| 35 | /* | 35 | /* |
| 36 | TEST_F(Temp, Extract) { | 36 | TEST_F(Temp, Extract) { |
| 37 | // std::vector<byte> data = ReadSubtitles(166480); | 37 | // std::vector<byte> data = ReadSubtitles(166480); |
| 38 | std::vector<char> data = ReadSubtitles(166480); | 38 | std::vector<char> data = ReadSubtitles(166480); |
| 39 | std::ofstream file("raw.txt"); | 39 | std::ofstream file("raw.txt"); |
| 40 | ASSERT_TRUE(file.is_open()); | 40 | ASSERT_TRUE(file.is_open()); |
| 41 | 41 | ||
| 42 | std::string hex = "0123456789ABCDEF"; | 42 | std::string hex = "0123456789ABCDEF"; |
| 43 | for (int i=0; i<data.size(); i++) { | 43 | for (int i=0; i<data.size(); i++) { |
| 44 | if (data[i] == '\r') continue; | 44 | if (data[i] == '\r') continue; |
| 45 | file << data[i]; | 45 | file << data[i]; |
| 46 | 46 | ||
| 47 | } | 47 | } |
| 48 | file.close(); | 48 | file.close(); |
| 49 | } | 49 | } |
| 50 | */ \ No newline at end of file | 50 | */ \ No newline at end of file |
| diff --git a/Test/Test.vcxproj b/Test/Test.vcxproj index 1beb5a4..d36f4af 100644 --- a/Test/Test.vcxproj +++ b/Test/Test.vcxproj | |||
| @@ -38,12 +38,16 @@ | |||
| 38 | </ProjectReference> | 38 | </ProjectReference> |
| 39 | </ItemGroup> | 39 | </ItemGroup> |
| 40 | <ItemGroup> | 40 | <ItemGroup> |
| 41 | <ClCompile Include="RandomTests.cpp" /> | ||
| 42 | <ClCompile Include="Temp.cpp" /> | ||
| 43 | </ItemGroup> | ||
| 44 | <ItemGroup> | ||
| 41 | <None Include="packages.config" /> | 45 | <None Include="packages.config" /> |
| 42 | </ItemGroup> | 46 | </ItemGroup> |
| 43 | <ItemDefinitionGroup /> | 47 | <ItemDefinitionGroup /> |
| 44 | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | 48 | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> |
| 45 | <ImportGroup Label="ExtensionTargets"> | 49 | <ImportGroup Label="ExtensionTargets"> |
| 46 | <Import Project="..\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.1.8.0\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.targets" Condition="Exists('..\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.1.8.0\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.targets')" /> | 50 | <Import Project="..\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.1.8.1\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.targets" Condition="Exists('..\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.1.8.1\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.targets')" /> |
| 47 | </ImportGroup> | 51 | </ImportGroup> |
| 48 | <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | 52 | <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> |
| 49 | <ClCompile> | 53 | <ClCompile> |
| @@ -51,7 +55,8 @@ | |||
| 51 | <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile> | 55 | <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile> |
| 52 | <Optimization>Disabled</Optimization> | 56 | <Optimization>Disabled</Optimization> |
| 53 | <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> | 57 | <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
| 54 | <MinimalRebuild>true</MinimalRebuild> | 58 | <MinimalRebuild> |
| 59 | </MinimalRebuild> | ||
| 55 | <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> | 60 | <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> |
| 56 | <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> | 61 | <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> |
| 57 | <WarningLevel>Level3</WarningLevel> | 62 | <WarningLevel>Level3</WarningLevel> |
| @@ -70,7 +75,8 @@ | |||
| 70 | <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile> | 75 | <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile> |
| 71 | <Optimization>Disabled</Optimization> | 76 | <Optimization>Disabled</Optimization> |
| 72 | <PreprocessorDefinitions>X64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> | 77 | <PreprocessorDefinitions>X64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
| 73 | <MinimalRebuild>true</MinimalRebuild> | 78 | <MinimalRebuild> |
| 79 | </MinimalRebuild> | ||
| 74 | <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> | 80 | <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> |
| 75 | <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> | 81 | <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> |
| 76 | <WarningLevel>Level3</WarningLevel> | 82 | <WarningLevel>Level3</WarningLevel> |
| @@ -94,6 +100,7 @@ | |||
| 94 | <AdditionalIncludeDirectories>..\Source;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | 100 | <AdditionalIncludeDirectories>..\Source;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> |
| 95 | <DisableSpecificWarnings>4996</DisableSpecificWarnings> | 101 | <DisableSpecificWarnings>4996</DisableSpecificWarnings> |
| 96 | <TreatWarningAsError>true</TreatWarningAsError> | 102 | <TreatWarningAsError>true</TreatWarningAsError> |
| 103 | <MinimalRebuild /> | ||
| 97 | </ClCompile> | 104 | </ClCompile> |
| 98 | <Link> | 105 | <Link> |
| 99 | <GenerateDebugInformation>true</GenerateDebugInformation> | 106 | <GenerateDebugInformation>true</GenerateDebugInformation> |
| @@ -113,6 +120,7 @@ | |||
| 113 | <AdditionalIncludeDirectories>..\Source;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | 120 | <AdditionalIncludeDirectories>..\Source;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> |
| 114 | <DisableSpecificWarnings>4996</DisableSpecificWarnings> | 121 | <DisableSpecificWarnings>4996</DisableSpecificWarnings> |
| 115 | <TreatWarningAsError>true</TreatWarningAsError> | 122 | <TreatWarningAsError>true</TreatWarningAsError> |
| 123 | <MinimalRebuild /> | ||
| 116 | </ClCompile> | 124 | </ClCompile> |
| 117 | <Link> | 125 | <Link> |
| 118 | <GenerateDebugInformation>true</GenerateDebugInformation> | 126 | <GenerateDebugInformation>true</GenerateDebugInformation> |
| @@ -125,6 +133,6 @@ | |||
| 125 | <PropertyGroup> | 133 | <PropertyGroup> |
| 126 | <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> | 134 | <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> |
| 127 | </PropertyGroup> | 135 | </PropertyGroup> |
| 128 | <Error Condition="!Exists('..\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.1.8.0\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.1.8.0\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.targets'))" /> | 136 | <Error Condition="!Exists('..\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.1.8.1\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.1.8.1\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.targets'))" /> |
| 129 | </Target> | 137 | </Target> |
| 130 | </Project> \ No newline at end of file | 138 | </Project> \ No newline at end of file |
| diff --git a/Test/packages.config b/Test/packages.config index 1dcab87..a412a41 100644 --- a/Test/packages.config +++ b/Test/packages.config | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | 1 | <?xml version="1.0" encoding="utf-8"?> |
| 2 | <packages> | 2 | <packages> |
| 3 | <package id="Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static" version="1.8.0" targetFramework="native" /> | 3 | <package id="Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static" version="1.8.1" targetFramework="native" /> |
| 4 | </packages> \ No newline at end of file | 4 | </packages> \ No newline at end of file |
