kiwec 4 сар өмнө
parent
commit
3a73fe4f74

+ 6 - 4
neosu.vcxproj

@@ -96,7 +96,7 @@
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <AdditionalOptions>/VERBOSE:LIB %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>wbemuuid.lib;ntdll.lib;Shlwapi.lib;userenv.lib;oleaut32.lib;winmm.lib;ws2_32.lib;psapi.lib;Comdlg32.lib;Dwmapi.lib;comctl32.lib;OpenGL32.lib;glu32.lib;libraries\bass\$(Platform)\bass.lib;libraries\bassfx\$(Platform)\bass_fx.lib;libraries\bassasio\$(Platform)\bassasio.lib;libraries\bassloud\$(Platform)\bassloud.lib;libraries\bassmix\$(Platform)\bassmix.lib;libraries\basswasapi\$(Platform)\basswasapi.lib;libraries\rosu-pp-c\$(Platform)\rosu_pp_c.lib;libraries\discord-rpc\$(Platform)\discord-rpc.lib;libraries\freetype\$(Platform)\freetype.lib;libraries\libjpeg\$(Platform)\jpeg-static.lib;libraries\xinput\$(Platform)\libxinput9_1_0.a;libraries\libcurl\$(Platform)\libcurl.dll.a;libraries\lzma\$(Platform)\liblzma.a;libraries\glew\$(Platform)\glew32s.lib;libraries\glew\$(Platform)\glew32mxs.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>wbemuuid.lib;ntdll.lib;Shlwapi.lib;userenv.lib;oleaut32.lib;winmm.lib;ws2_32.lib;psapi.lib;Comdlg32.lib;Dwmapi.lib;comctl32.lib;OpenGL32.lib;glu32.lib;Ole32.lib;Uuid.lib;libraries\bass\$(Platform)\bass.lib;libraries\bassfx\$(Platform)\bass_fx.lib;libraries\bassasio\$(Platform)\bassasio.lib;libraries\bassloud\$(Platform)\bassloud.lib;libraries\bassmix\$(Platform)\bassmix.lib;libraries\basswasapi\$(Platform)\basswasapi.lib;libraries\rosu-pp-c\$(Platform)\rosu_pp_c.lib;libraries\discord-rpc\$(Platform)\discord-rpc.lib;libraries\freetype\$(Platform)\freetype.lib;libraries\libjpeg\$(Platform)\jpeg-static.lib;libraries\xinput\$(Platform)\libxinput9_1_0.a;libraries\libcurl\$(Platform)\libcurl.dll.a;libraries\lzma\$(Platform)\liblzma.a;libraries\glew\$(Platform)\glew32s.lib;libraries\glew\$(Platform)\glew32mxs.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <IgnoreSpecificDefaultLibraries>LIBCMT.lib</IgnoreSpecificDefaultLibraries>
       <SubSystem>Windows</SubSystem>
     </Link>
@@ -125,7 +125,7 @@ copy $(SolutionDir)libraries\libcurl\curl-ca-bundle.crt $(SolutionDir)build\$(Pl
     </ClCompile>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>wbemuuid.lib;ntdll.lib;Shlwapi.lib;userenv.lib;oleaut32.lib;winmm.lib;ws2_32.lib;psapi.lib;Comdlg32.lib;Dwmapi.lib;comctl32.lib;OpenGL32.lib;glu32.lib;libraries\bass\$(Platform)\bass.lib;libraries\bassfx\$(Platform)\bass_fx.lib;libraries\bassasio\$(Platform)\bassasio.lib;libraries\bassloud\$(Platform)\bassloud.lib;libraries\bassmix\$(Platform)\bassmix.lib;libraries\basswasapi\$(Platform)\basswasapi.lib;libraries\rosu-pp-c\$(Platform)\rosu_pp_c.lib;libraries\discord-rpc\$(Platform)\discord-rpc.lib;libraries\freetype\$(Platform)\freetype.lib;libraries\libjpeg\$(Platform)\jpeg-static.lib;libraries\xinput\$(Platform)\libxinput9_1_0.a;libraries\libcurl\$(Platform)\libcurl.dll.a;libraries\lzma\$(Platform)\liblzma.a;libraries\glew\$(Platform)\glew32s.lib;libraries\glew\$(Platform)\glew32mxs.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>wbemuuid.lib;ntdll.lib;Shlwapi.lib;userenv.lib;oleaut32.lib;winmm.lib;ws2_32.lib;psapi.lib;Comdlg32.lib;Dwmapi.lib;comctl32.lib;OpenGL32.lib;glu32.lib;Ole32.lib;Uuid.lib;libraries\bass\$(Platform)\bass.lib;libraries\bassfx\$(Platform)\bass_fx.lib;libraries\bassasio\$(Platform)\bassasio.lib;libraries\bassloud\$(Platform)\bassloud.lib;libraries\bassmix\$(Platform)\bassmix.lib;libraries\basswasapi\$(Platform)\basswasapi.lib;libraries\rosu-pp-c\$(Platform)\rosu_pp_c.lib;libraries\discord-rpc\$(Platform)\discord-rpc.lib;libraries\freetype\$(Platform)\freetype.lib;libraries\libjpeg\$(Platform)\jpeg-static.lib;libraries\xinput\$(Platform)\libxinput9_1_0.a;libraries\libcurl\$(Platform)\libcurl.dll.a;libraries\lzma\$(Platform)\liblzma.a;libraries\glew\$(Platform)\glew32s.lib;libraries\glew\$(Platform)\glew32mxs.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <IgnoreSpecificDefaultLibraries>LIBCMT.lib</IgnoreSpecificDefaultLibraries>
       <SubSystem>Windows</SubSystem>
     </Link>
@@ -156,7 +156,7 @@ copy $(SolutionDir)libraries\libcurl\curl-ca-bundle.crt $(SolutionDir)build\$(Pl
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <AdditionalOptions>/VERBOSE:LIB %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>wbemuuid.lib;ntdll.lib;Shlwapi.lib;userenv.lib;oleaut32.lib;winmm.lib;ws2_32.lib;psapi.lib;Comdlg32.lib;Dwmapi.lib;comctl32.lib;OpenGL32.lib;glu32.lib;libraries\bass\$(Platform)\bass.lib;libraries\bassfx\$(Platform)\bass_fx.lib;libraries\bassasio\$(Platform)\bassasio.lib;libraries\bassloud\$(Platform)\bassloud.lib;libraries\bassmix\$(Platform)\bassmix.lib;libraries\basswasapi\$(Platform)\basswasapi.lib;libraries\rosu-pp-c\$(Platform)\rosu_pp_c.lib;libraries\discord-rpc\$(Platform)\discord-rpc.lib;libraries\freetype\$(Platform)\freetype.lib;libraries\libjpeg\$(Platform)\jpeg-static.lib;libraries\xinput\$(Platform)\libxinput9_1_0.a;libraries\libcurl\$(Platform)\libcurl.dll.a;libraries\lzma\$(Platform)\liblzma.a;libraries\glew\$(Platform)\glew32s.lib;libraries\glew\$(Platform)\glew32mxs.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>wbemuuid.lib;ntdll.lib;Shlwapi.lib;userenv.lib;oleaut32.lib;winmm.lib;ws2_32.lib;psapi.lib;Comdlg32.lib;Dwmapi.lib;comctl32.lib;OpenGL32.lib;glu32.lib;Ole32.lib;Uuid.lib;libraries\bass\$(Platform)\bass.lib;libraries\bassfx\$(Platform)\bass_fx.lib;libraries\bassasio\$(Platform)\bassasio.lib;libraries\bassloud\$(Platform)\bassloud.lib;libraries\bassmix\$(Platform)\bassmix.lib;libraries\basswasapi\$(Platform)\basswasapi.lib;libraries\rosu-pp-c\$(Platform)\rosu_pp_c.lib;libraries\discord-rpc\$(Platform)\discord-rpc.lib;libraries\freetype\$(Platform)\freetype.lib;libraries\libjpeg\$(Platform)\jpeg-static.lib;libraries\xinput\$(Platform)\libxinput9_1_0.a;libraries\libcurl\$(Platform)\libcurl.dll.a;libraries\lzma\$(Platform)\liblzma.a;libraries\glew\$(Platform)\glew32s.lib;libraries\glew\$(Platform)\glew32mxs.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <IgnoreSpecificDefaultLibraries>LIBCMT.lib</IgnoreSpecificDefaultLibraries>
       <SubSystem>Windows</SubSystem>
     </Link>
@@ -186,7 +186,7 @@ copy $(SolutionDir)libraries\libcurl\curl-ca-bundle.crt $(SolutionDir)build\$(Pl
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
-      <AdditionalDependencies>wbemuuid.lib;ntdll.lib;Shlwapi.lib;userenv.lib;oleaut32.lib;winmm.lib;ws2_32.lib;psapi.lib;Comdlg32.lib;Dwmapi.lib;comctl32.lib;OpenGL32.lib;glu32.lib;libraries\bass\$(Platform)\bass.lib;libraries\bassfx\$(Platform)\bass_fx.lib;libraries\bassasio\$(Platform)\bassasio.lib;libraries\bassloud\$(Platform)\bassloud.lib;libraries\bassmix\$(Platform)\bassmix.lib;libraries\basswasapi\$(Platform)\basswasapi.lib;libraries\rosu-pp-c\$(Platform)\rosu_pp_c.lib;libraries\discord-rpc\$(Platform)\discord-rpc.lib;libraries\freetype\$(Platform)\freetype.lib;libraries\libjpeg\$(Platform)\jpeg-static.lib;libraries\xinput\$(Platform)\libxinput9_1_0.a;libraries\libcurl\$(Platform)\libcurl.dll.a;libraries\lzma\$(Platform)\liblzma.a;libraries\glew\$(Platform)\glew32s.lib;libraries\glew\$(Platform)\glew32mxs.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>wbemuuid.lib;ntdll.lib;Shlwapi.lib;userenv.lib;oleaut32.lib;winmm.lib;ws2_32.lib;psapi.lib;Comdlg32.lib;Dwmapi.lib;comctl32.lib;OpenGL32.lib;glu32.lib;Ole32.lib;Uuid.lib;libraries\bass\$(Platform)\bass.lib;libraries\bassfx\$(Platform)\bass_fx.lib;libraries\bassasio\$(Platform)\bassasio.lib;libraries\bassloud\$(Platform)\bassloud.lib;libraries\bassmix\$(Platform)\bassmix.lib;libraries\basswasapi\$(Platform)\basswasapi.lib;libraries\rosu-pp-c\$(Platform)\rosu_pp_c.lib;libraries\discord-rpc\$(Platform)\discord-rpc.lib;libraries\freetype\$(Platform)\freetype.lib;libraries\libjpeg\$(Platform)\jpeg-static.lib;libraries\xinput\$(Platform)\libxinput9_1_0.a;libraries\libcurl\$(Platform)\libcurl.dll.a;libraries\lzma\$(Platform)\liblzma.a;libraries\glew\$(Platform)\glew32s.lib;libraries\glew\$(Platform)\glew32mxs.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <IgnoreSpecificDefaultLibraries>LIBCMT.lib</IgnoreSpecificDefaultLibraries>
       <SubSystem>Windows</SubSystem>
     </Link>
@@ -216,6 +216,7 @@ copy $(SolutionDir)libraries\libcurl\curl-ca-bundle.crt $(SolutionDir)build\$(Pl
     <ClCompile Include="src\app\osu\Beatmap.cpp" />
     <ClCompile Include="src\app\osu\Changelog.cpp" />
     <ClCompile Include="src\app\osu\Chat.cpp" />
+    <ClCompile Include="src\App\Osu\ChatLink.cpp" />
     <ClCompile Include="src\app\osu\Circle.cpp" />
     <ClCompile Include="src\app\osu\Collections.cpp" />
     <ClCompile Include="src\app\osu\Database.cpp" />
@@ -673,6 +674,7 @@ copy $(SolutionDir)libraries\libcurl\curl-ca-bundle.crt $(SolutionDir)build\$(Pl
     <ClInclude Include="src\app\osu\Beatmap.h" />
     <ClInclude Include="src\app\osu\Changelog.h" />
     <ClInclude Include="src\app\osu\Chat.h" />
+    <ClInclude Include="src\App\Osu\ChatLink.h" />
     <ClInclude Include="src\app\osu\Circle.h" />
     <ClInclude Include="src\app\osu\Collections.h" />
     <ClInclude Include="src\app\osu\Database.h" />

+ 3 - 0
src/App/Osu/OptionsMenu.cpp

@@ -2427,6 +2427,9 @@ void OptionsMenu::onSkinSelect() {
             char la = tolower(a[i]);
             char lb = tolower(b[j]);
             if(la != lb) return la < lb;
+
+            i++;
+            j++;
         }
 
         return false;

+ 1 - 1
src/App/Osu/Osu.cpp

@@ -449,8 +449,8 @@ Osu::Osu() {
     m_songBrowser2 = new SongBrowser();
     m_volumeOverlay = new VolumeOverlay();
     m_tooltipOverlay = new TooltipOverlay();
-    m_mainMenu = new MainMenu();
     m_optionsMenu = new OptionsMenu();
+    m_mainMenu = new MainMenu();  // has to be after options menu
     m_backgroundImageHandler = new BackgroundImageHandler();
     m_modSelector = new ModSelector();
     m_rankingScreen = new RankingScreen();

+ 1 - 1
src/App/Osu/UpdateHandler.cpp

@@ -109,7 +109,7 @@ void UpdateHandler::_requestUpdate() {
     }
 
     debugLog("Downloading latest update... (current v%.2f, latest v%.2f)\n", current_version, fLatestVersion);
-    update_url = UString::format(NEOSU_URL "/update/" OS_NAME "/v%.2f.zip", os, fLatestVersion);
+    update_url = UString::format(NEOSU_URL "/update/" OS_NAME "/v%.2f.zip", fLatestVersion);
 }
 
 bool UpdateHandler::_downloadUpdate() {

+ 6 - 11
src/Engine/Main/main_Windows.cpp

@@ -1,15 +1,10 @@
 #ifdef _WIN32
 
-// #define MCENGINE_WINDOWS_REALTIMESTYLUS_SUPPORT
-// #define MCENGINE_WINDOWS_TOUCH_SUPPORT
-
-#ifdef MCENGINE_WINDOWS_TOUCH_SUPPORT
-#define WINVER 0x0A00  // Windows 10, to enable the ifdefs in winuser.h for touch
-#endif
-
-#include <dwmapi.h>
-
+// clang-format off
+// Include order matters
 #include "cbase.h"
+#include <dwmapi.h>
+// clang-format on
 
 // NEXTRAWINPUTBLOCK macro requires this
 typedef uint64_t QWORD;
@@ -60,7 +55,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
 
 #ifdef MCENGINE_WINDOWS_TOUCH_SUPPORT
 #include <winuser.h>
-typedef WINBOOL(WINAPI *PGPI)(UINT32 pointerId, POINTER_INFO *pointerInfo);
+typedef BOOL(WINAPI * PGPI)(UINT32 pointerId, POINTER_INFO *pointerInfo);
 PGPI g_GetPointerInfo = (PGPI)GetProcAddress(GetModuleHandle(TEXT("user32.dll")), "GetPointerInfo");
 #ifndef TWF_WANTPALM
 #define TWF_WANTPALM 0x00000002
@@ -1133,7 +1128,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
                     // rate will produce ~0.12 MB per second)
                     const UINT numAlignmentBytes = 8;
                     const UINT rawInputBufferNumBytes =
-                        clamp<UINT>(minRawInputBufferNumBytes * numAlignmentBytes * 1024, 1, 1024 * 1024);
+                        std::clamp<UINT>(minRawInputBufferNumBytes * numAlignmentBytes * 1024, 1, 1024 * 1024);
                     if(currentRawInputBuffer == NULL || currentRawInputBufferNumBytes < rawInputBufferNumBytes) {
                         currentRawInputBufferNumBytes = rawInputBufferNumBytes;
                         {

+ 1 - 12
src/Engine/Platform/WinRealTimeStylus.h

@@ -1,8 +1,6 @@
+#pragma once
 #ifdef _WIN32
 
-#ifndef WINREALTIMESTYLUS_H
-#define WINREALTIMESTYLUS_H
-
 #ifdef MCENGINE_WINDOWS_REALTIMESTYLUS_SUPPORT
 
 #include "ConVar.h"
@@ -11,10 +9,6 @@
 extern Engine* g_engine;
 extern ConVar* win_realtimestylus;
 
-// this is really hacky, I copied and merged some header files from the Microsoft SDK into MinGW to make it work
-// MinGW is missing some definitions inside tpcshrd.h, you can get them from the Microsoft SDK includes
-// you MUST link to Ole32.lib and Uuid.lib (which is not in the default project configuration!)
-
 // most of this code was taken 1:1 from the windows sdk samples
 // the only interesting/useful functions here are StylusDown and StylusUp
 
@@ -22,9 +16,6 @@ extern ConVar* win_realtimestylus;
 
 #include <rtscom_i.c>  // RTS GUID definitions
 
-// yay for missing uuid declarations, had to add this one manually
-__CRT_UUID_DECL(IRealTimeStylus, 0xA8BB5D22, 0x3144, 0x4a7b, 0x93, 0xCD, 0xF3, 0x4A, 0x16, 0xBE, 0x51, 0x3A);
-
 static IRealTimeStylus* g_pRealTimeStylus = NULL;         // RTS object
 static IStylusSyncPlugin* g_pSyncEventHandlerRTS = NULL;  // EventHandler object
 
@@ -387,5 +378,3 @@ BOOL InitRealTimeStylus(HINSTANCE hInstance, HWND hWnd)  // extern
 #endif
 
 #endif
-
-#endif

+ 2 - 2
src/Engine/Platform/XInputGamepad.cpp

@@ -91,8 +91,8 @@ void XInputGamepad::setVibration(float leftMotorSpeedPercent, float rightMotorSp
         XINPUT_VIBRATION vibration;
         memset(&vibration, 0, sizeof(XINPUT_VIBRATION));
         {
-            vibration.wLeftMotorSpeed = (WORD)(65535.0f * clamp<float>(leftMotorSpeedPercent, 0.0f, 1.0f));
-            vibration.wRightMotorSpeed = (WORD)(65535.0f * clamp<float>(rightMotorSpeedPercent, 0.0f, 1.0f));
+            vibration.wLeftMotorSpeed = (WORD)(65535.0f * std::clamp<float>(leftMotorSpeedPercent, 0.0f, 1.0f));
+            vibration.wRightMotorSpeed = (WORD)(65535.0f * std::clamp<float>(rightMotorSpeedPercent, 0.0f, 1.0f));
         }
         XInputSetState(m_iPort, &vibration);
     }

+ 21 - 18
src/Util/cbase.h

@@ -1,5 +1,26 @@
 #pragma once
 
+#ifdef _WIN32
+// Windows build
+#ifdef _WIN64
+#define OS_NAME "win64"
+#define WINVER 0x0A00  // Windows 10, to enable the ifdefs in winuser.h for touch
+#define MCENGINE_WINDOWS_REALTIMESTYLUS_SUPPORT
+#define MCENGINE_WINDOWS_TOUCH_SUPPORT
+#else
+#define OS_NAME "win32"
+#endif
+// End of Windows build
+#else
+// Linux build
+#ifdef __x86_64
+#define OS_NAME "linux-x64"
+#else
+#define OS_NAME "linux-i686"
+#endif
+// End of Linux build
+#endif
+
 #ifdef _WIN32
 // clang-format off
 #define NOMINMAX
@@ -47,24 +68,6 @@
 
 // DEFS
 
-#ifdef _WIN32
-
-#ifdef _WIN64
-#define OS_NAME "win64"
-#else
-#define OS_NAME "win32"
-#endif
-
-#else
-
-#ifdef __x86_64
-#define OS_NAME "linux-x64"
-#else
-#define OS_NAME "linux-i686"
-#endif
-
-#endif
-
 #ifdef _WIN32
 #define reallocarray(ptr, a, b) realloc(ptr, a *b)
 #define strcasestr(a, b) StrStrIA(a, b)