diff --git a/appveyor.yml b/appveyor.yml index 6b80b4ec3..d33d3d3a3 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -83,7 +83,14 @@ before_build: - ccache -V - ccache -s - if [%NOUPX%] == [1] ( set "NOUPX=NOUPX=1" ) else ( set "NOUPX=" ) -- set "SRB2_MFLAGS=-C src WARNINGMODE=1 CCACHE=1 NOOBJDUMP=1 %NOUPX%" +- if defined [%APPVEYOR_PULL_REQUEST_HEAD_COMMIT%] ( set "COMMIT=%APPVEYOR_PULL_REQUEST_HEAD_COMMIT%" ) else ( set "COMMIT=%APPVEYOR_REPO_COMMIT%" ) +- cmd: git rev-parse --short %COMMIT%>%TMP%/gitshort.txt +- cmd: set /P GITSHORT=<%TMP%/gitshort.txt +# for pull requests, take the owner's name only, if this isn't the same repo of course +- set "REPO=%APPVEYOR_REPO_BRANCH%" +- if not [%APPVEYOR_PULL_REQUEST_HEAD_REPO_NAME%] == [] ( if not [%APPVEYOR_PULL_REQUEST_HEAD_REPO_NAME%] == [%APPVEYOR_REPO_NAME%] ( for /f "delims=/" %%a in ("%APPVEYOR_PULL_REQUEST_HEAD_REPO_NAME%") do set "REPO=%%a-%APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH%" ) ) +- set "EXENAME=EXENAME=srb2win-%REPO%-%GITSHORT%.exe" +- set "SRB2_MFLAGS=-C src WARNINGMODE=1 CCACHE=1 NOOBJDUMP=1 %NOUPX% %EXENAME%" - if [%X86_64%] == [1] ( set "MINGW_FLAGS=MINGW64=1 X86_64=1 GCC81=1" ) else ( set "MINGW_FLAGS=MINGW=1 GCC91=1" ) - set "SRB2_MFLAGS=%SRB2_MFLAGS% %MINGW_FLAGS% %CONFIGURATION%=1" @@ -99,10 +106,8 @@ after_build: ) - if [%X86_64%] == [1] ( set "CONFIGURATION=%CONFIGURATION%64" ) - ccache -s -- cmd: git rev-parse --short %APPVEYOR_REPO_COMMIT%>%TMP%/gitshort.txt -- cmd: set /P GITSHORT=<%TMP%/gitshort.txt -- set BUILD_ARCHIVE=%APPVEYOR_REPO_BRANCH%-%GITSHORT%-%CONFIGURATION%.7z -- set BUILDSARCHIVE=%APPVEYOR_REPO_BRANCH%-%CONFIGURATION%.7z +- set BUILD_ARCHIVE=%REPO%-%GITSHORT%-%CONFIGURATION%.7z +- set BUILDSARCHIVE=%REPO%-%CONFIGURATION%.7z - cmd: 7z a %BUILD_ARCHIVE% %BUILD_PATH% -xr!.gitignore - appveyor PushArtifact %BUILD_ARCHIVE% - cmd: copy %BUILD_ARCHIVE% %BUILDSARCHIVE% diff --git a/src/d_main.c b/src/d_main.c index 15d3c8041..dc9bfbfea 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -651,8 +651,14 @@ void D_SRB2Loop(void) // hack to start on a nice clear console screen. COM_ImmedExecute("cls;version"); - V_DrawScaledPatch(0, 0, 0, W_CachePatchNum(W_GetNumForName("CONSBACK"), PU_CACHE)); I_FinishUpdate(); // page flip or blit buffer + /* + LMFAO this was showing garbage under OpenGL + because I_FinishUpdate was called afterward + */ + /* Smells like a hack... Don't fade Sonic's ass into the title screen. */ + if (gamestate != GS_TITLESCREEN) + V_DrawScaledPatch(0, 0, 0, W_CachePatchNum(W_GetNumForName("CONSBACK"), PU_CACHE)); for (;;) { diff --git a/src/g_input.c b/src/g_input.c index ac901703f..ed7bc5cb6 100644 --- a/src/g_input.c +++ b/src/g_input.c @@ -662,7 +662,13 @@ INT32 G_KeyStringtoNum(const char *keystr) return keystr[0]; if (!strncmp(keystr, "KEY", 3) && keystr[3] >= '0' && keystr[3] <= '9') - return atoi(&keystr[3]); + { + /* what if we out of range bruh? */ + j = atoi(&keystr[3]); + if (j < NUMINPUTS) + return j; + return 0; + } for (j = 0; j < NUMKEYNAMES; j++) if (!stricmp(keynames[j].name, keystr)) diff --git a/src/m_menu.c b/src/m_menu.c index 62bea7ae0..21b490b67 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -3758,6 +3758,12 @@ void M_SetupNextMenu(menu_t *menudef) hidetitlemap = false; } +// Guess I'll put this here, idk +boolean M_MouseNeeded(void) +{ + return (currentMenu == &MessageDef && currentMenu->prevMenu == &OP_ChangeControlsDef); +} + // // M_Ticker // diff --git a/src/m_menu.h b/src/m_menu.h index a563a18dc..862303426 100644 --- a/src/m_menu.h +++ b/src/m_menu.h @@ -322,6 +322,9 @@ typedef struct menu_s void M_SetupNextMenu(menu_t *menudef); void M_ClearMenus(boolean callexitmenufunc); +// Maybe this goes here????? Who knows. +boolean M_MouseNeeded(void); + extern menu_t *currentMenu; extern menu_t MainDef; diff --git a/src/p_setup.c b/src/p_setup.c index 729ee00c2..2b0a5efa3 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -411,7 +411,7 @@ levelflat refers to an array of level flats, or NULL if we want to allocate it now. */ static INT32 -Ploadflat (levelflat_t *levelflat, const char *flatname) +Ploadflat (levelflat_t *levelflat, const char *flatname, boolean resize) { #ifndef NO_PNG_LUMPS UINT8 buffer[8]; @@ -422,31 +422,26 @@ Ploadflat (levelflat_t *levelflat, const char *flatname) size_t i; - if (levelflat) + // Scan through the already found flats, return if it matches. + for (i = 0; i < numlevelflats; i++) { - // Scan through the already found flats, return if it matches. - for (i = 0; i < numlevelflats; i++) - { - if (strnicmp(levelflat[i].name, flatname, 8) == 0) - return i; - } + if (strnicmp(levelflat[i].name, flatname, 8) == 0) + return i; } -#ifndef ZDEBUG - CONS_Debug(DBG_SETUP, "flat #%03d: %s\n", atoi(sizeu1(numlevelflats)), levelflat->name); -#endif - - if (numlevelflats >= MAXLEVELFLATS) - I_Error("Too many flats in level\n"); - - if (levelflat) - levelflat += numlevelflats; - else + if (resize) { // allocate new flat memory levelflats = Z_Realloc(levelflats, (numlevelflats + 1) * sizeof(*levelflats), PU_LEVEL, NULL); levelflat = levelflats + numlevelflats; } + else + { + if (numlevelflats >= MAXLEVELFLATS) + I_Error("Too many flats in level\n"); + + levelflat += numlevelflats; + } // Store the name. strlcpy(levelflat->name, flatname, sizeof (levelflat->name)); @@ -501,6 +496,10 @@ flatfound: levelflat->u.flat.baselumpnum = LUMPERROR; } +#ifndef ZDEBUG + CONS_Debug(DBG_SETUP, "flat #%03d: %s\n", atoi(sizeu1(numlevelflats)), levelflat->name); +#endif + return ( numlevelflats++ ); } @@ -508,7 +507,7 @@ flatfound: // allocate an id for it, and set the levelflat (to speedup search) INT32 P_AddLevelFlat(const char *flatname, levelflat_t *levelflat) { - return Ploadflat(levelflat, flatname); + return Ploadflat(levelflat, flatname, false); } // help function for Lua and $$$.sav reading @@ -517,7 +516,7 @@ INT32 P_AddLevelFlat(const char *flatname, levelflat_t *levelflat) // INT32 P_AddLevelFlatRuntime(const char *flatname) { - return Ploadflat(levelflats, flatname); + return Ploadflat(levelflats, flatname, true); } // help function for $$$.sav checking diff --git a/src/sdl/i_video.c b/src/sdl/i_video.c index 2b8633e5b..13e2423c4 100644 --- a/src/sdl/i_video.c +++ b/src/sdl/i_video.c @@ -110,7 +110,6 @@ static SDL_bool disable_fullscreen = SDL_FALSE; #define USE_FULLSCREEN (disable_fullscreen||!allow_fullscreen)?0:cv_fullscreen.value static SDL_bool disable_mouse = SDL_FALSE; #define USE_MOUSEINPUT (!disable_mouse && cv_usemouse.value && havefocus) -#define IGNORE_MOUSE (!cv_alwaysgrabmouse.value && (menuactive || paused || con_destlines || chat_on || gamestate != GS_LEVEL)) #define MOUSE_MENU false //(!disable_mouse && cv_usemouse.value && menuactive && !USE_FULLSCREEN) #define MOUSEBUTTONS_MAX MOUSEBUTTONS @@ -362,6 +361,17 @@ static INT32 Impl_SDL_Scancode_To_Keycode(SDL_Scancode code) return 0; } +static boolean IgnoreMouse(void) +{ + if (cv_alwaysgrabmouse.value) + return false; + if (menuactive) + return !M_MouseNeeded(); + if (paused || con_destlines || chat_on || gamestate != GS_LEVEL) + return true; + return false; +} + static void SDLdoGrabMouse(void) { SDL_ShowCursor(SDL_DISABLE); @@ -388,7 +398,7 @@ void I_UpdateMouseGrab(void) { if (SDL_WasInit(SDL_INIT_VIDEO) == SDL_INIT_VIDEO && window != NULL && SDL_GetMouseFocus() == window && SDL_GetKeyboardFocus() == window - && USE_MOUSEINPUT && !IGNORE_MOUSE) + && USE_MOUSEINPUT && !IgnoreMouse()) SDLdoGrabMouse(); } @@ -596,7 +606,7 @@ static void Impl_HandleWindowEvent(SDL_WindowEvent evt) } //else firsttimeonmouse = SDL_FALSE; - if (USE_MOUSEINPUT && !IGNORE_MOUSE) + if (USE_MOUSEINPUT && !IgnoreMouse()) SDLdoGrabMouse(); } else if (!mousefocus && !kbfocus) @@ -647,7 +657,7 @@ static void Impl_HandleMouseMotionEvent(SDL_MouseMotionEvent evt) if (USE_MOUSEINPUT) { - if ((SDL_GetMouseFocus() != window && SDL_GetKeyboardFocus() != window) || (IGNORE_MOUSE && !firstmove)) + if ((SDL_GetMouseFocus() != window && SDL_GetKeyboardFocus() != window) || (IgnoreMouse() && !firstmove)) { SDLdoUngrabMouse(); firstmove = false; @@ -700,7 +710,7 @@ static void Impl_HandleMouseButtonEvent(SDL_MouseButtonEvent evt, Uint32 type) // this apparently makes a mouse button down event but not a mouse button up event, // resulting in whatever key was pressed down getting "stuck" if we don't ignore it. // -- Monster Iestyn (28/05/18) - if (SDL_GetMouseFocus() != window || IGNORE_MOUSE) + if (SDL_GetMouseFocus() != window || IgnoreMouse()) return; /// \todo inputEvent.button.which @@ -1082,7 +1092,7 @@ void I_StartupMouse(void) } else firsttimeonmouse = SDL_FALSE; - if (cv_usemouse.value && !IGNORE_MOUSE) + if (cv_usemouse.value && !IgnoreMouse()) SDLdoGrabMouse(); else SDLdoUngrabMouse();