mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-25 03:00:46 +00:00
- Exhumed menu tweaks - draw a background and caption for the option menus the game originally did not have.
- fixed a crash in the 2D drawer when two consecutively allocated vertex buffers had the same address. Strangely this only occured with Exhumed but not the other games - fixed Exhumed crashing with sound disabled.
This commit is contained in:
parent
f77736ccb4
commit
68a3a60d0b
9 changed files with 41 additions and 12 deletions
|
@ -983,9 +983,9 @@ if( APPLE )
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if( WIN32 )
|
if( WIN32 )
|
||||||
set( INSTALL_PATH . CACHE STRING "Directory where the demolition executable will be placed during install." )
|
set( INSTALL_PATH . CACHE STRING "Directory where the executable will be placed during install." )
|
||||||
else()
|
else()
|
||||||
set( INSTALL_PATH bin CACHE STRING "Directory where the demolition executable will be placed during install." )
|
set( INSTALL_PATH bin CACHE STRING "Directory where the executable will be placed during install." )
|
||||||
endif()
|
endif()
|
||||||
install(TARGETS demolition
|
install(TARGETS demolition
|
||||||
DESTINATION ${INSTALL_PATH}
|
DESTINATION ${INSTALL_PATH}
|
||||||
|
@ -1008,6 +1008,8 @@ source_group("Code\\Menu" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/commo
|
||||||
source_group("Code\\Rendering" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/common/rendering/.+")
|
source_group("Code\\Rendering" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/common/rendering/.+")
|
||||||
source_group("Code\\Rendering\\GL_Load" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/common/rendering/gl_load/.+")
|
source_group("Code\\Rendering\\GL_Load" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/common/rendering/gl_load/.+")
|
||||||
source_group("Code\\Rendering\\GL\\System" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/common/rendering/gl/system.+")
|
source_group("Code\\Rendering\\GL\\System" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/common/rendering/gl/system.+")
|
||||||
|
source_group("Platform" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/platform/.+")
|
||||||
|
source_group("Platform\\Win32" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/platform/win32/.+")
|
||||||
source_group("Utility\\Smackerdec" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/smackerdec/.+")
|
source_group("Utility\\Smackerdec" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/smackerdec/.+")
|
||||||
source_group("Utility\\Smackerdec\\Headers" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/libsmackerdec/include/.+")
|
source_group("Utility\\Smackerdec\\Headers" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/libsmackerdec/include/.+")
|
||||||
source_group("Utility\\Smackerdec\\Sources" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/libsmackerdec/src/.+")
|
source_group("Utility\\Smackerdec\\Sources" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/libsmackerdec/src/.+")
|
||||||
|
|
|
@ -1051,7 +1051,7 @@ void C_Ticker()
|
||||||
|
|
||||||
lasttic = consoletic;
|
lasttic = consoletic;
|
||||||
NotifyStrings.Tick();
|
NotifyStrings.Tick();
|
||||||
if (GUICapture & 1)
|
if (ConsoleState == c_down)
|
||||||
{
|
{
|
||||||
D_ProcessEvents();
|
D_ProcessEvents();
|
||||||
}
|
}
|
||||||
|
|
|
@ -839,7 +839,7 @@ void M_Ticker (void)
|
||||||
if (DMenu::MenuTime & 3) return;
|
if (DMenu::MenuTime & 3) return;
|
||||||
if (DMenu::CurrentMenu != NULL && menuactive != MENU_Off)
|
if (DMenu::CurrentMenu != NULL && menuactive != MENU_Off)
|
||||||
{
|
{
|
||||||
D_ProcessEvents(); // The main loop is blocked when the menu is open and cannot dispatch the events.
|
if (DMenu::MenuTime != 0) D_ProcessEvents(); // The main loop is blocked when the menu is open and cannot dispatch the events.
|
||||||
if (transition.previous) transition.previous->Ticker();
|
if (transition.previous) transition.previous->Ticker();
|
||||||
if (DMenu::CurrentMenu == nullptr) return; // In case one of the sub-screens has closed the menu.
|
if (DMenu::CurrentMenu == nullptr) return; // In case one of the sub-screens has closed the menu.
|
||||||
DMenu::CurrentMenu->Ticker();
|
DMenu::CurrentMenu->Ticker();
|
||||||
|
|
|
@ -52,6 +52,20 @@ int menu_Menu(int nVal)
|
||||||
M_SetMenu(NAME_MainMenu);
|
M_SetMenu(NAME_MainMenu);
|
||||||
while (M_Active())
|
while (M_Active())
|
||||||
{
|
{
|
||||||
|
auto nLogoTile = EXHUMED ? kExhumedLogo : kPowerslaveLogo;
|
||||||
|
int dword_9AB5F = ((int)totalclock / 16) & 3;
|
||||||
|
|
||||||
|
videoClearScreen(blackcol);
|
||||||
|
|
||||||
|
overwritesprite(160, 100, kSkullHead, 32, 3, kPalNormal);
|
||||||
|
overwritesprite(161, 130, kSkullJaw, 32, 3, kPalNormal);
|
||||||
|
|
||||||
|
overwritesprite(160, 40, nLogoTile, 32, 3, kPalNormal);
|
||||||
|
|
||||||
|
// draw the fire urn/lamp thingies
|
||||||
|
overwritesprite(50, 150, kTile3512 + dword_9AB5F, 32, 3, kPalNormal);
|
||||||
|
overwritesprite(270, 150, kTile3512 + ((dword_9AB5F + 2) & 3), 32, 3, kPalNormal);
|
||||||
|
|
||||||
HandleAsync();
|
HandleAsync();
|
||||||
videoNextPage();
|
videoNextPage();
|
||||||
|
|
||||||
|
@ -190,8 +204,8 @@ void GameInterface::DrawCenteredTextScreen(const DVector2& origin, const char* t
|
||||||
{
|
{
|
||||||
int height = 11;
|
int height = 11;
|
||||||
|
|
||||||
auto lines = FString(text).Split("\n");
|
auto lines = FString(text).MakeUpper().Split("\n");
|
||||||
int y = 100 - (height * lines.Size() / 2);
|
int y = position - (height * lines.Size() / 2);
|
||||||
for (auto& l : lines)
|
for (auto& l : lines)
|
||||||
{
|
{
|
||||||
int width = MyGetStringWidth(l);
|
int width = MyGetStringWidth(l);
|
||||||
|
@ -201,6 +215,11 @@ void GameInterface::DrawCenteredTextScreen(const DVector2& origin, const char* t
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GameInterface::DrawMenuCaption(const DVector2& origin, const char* text)
|
||||||
|
{
|
||||||
|
DrawCenteredTextScreen(origin, text, 10, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
END_PS_NS
|
END_PS_NS
|
||||||
|
|
|
@ -81,8 +81,6 @@ BEGIN_PS_NS
|
||||||
extern const char* s_buildRev;
|
extern const char* s_buildRev;
|
||||||
extern const char* s_buildTimestamp;
|
extern const char* s_buildTimestamp;
|
||||||
|
|
||||||
const char* AppProperName = APPNAME;
|
|
||||||
const char* AppTechnicalName = APPBASENAME;
|
|
||||||
|
|
||||||
void FinishLevel();
|
void FinishLevel();
|
||||||
|
|
||||||
|
|
|
@ -285,7 +285,8 @@ struct GameInterface : ::GameInterface
|
||||||
void StartGame(FGameStartup& gs) override;
|
void StartGame(FGameStartup& gs) override;
|
||||||
bool CanSave() override;
|
bool CanSave() override;
|
||||||
FSavegameInfo GetSaveSig() override;
|
FSavegameInfo GetSaveSig() override;
|
||||||
void DrawCenteredTextScreen(const DVector2& origin, const char* text, int position, bool bg);
|
void DrawCenteredTextScreen(const DVector2& origin, const char* text, int position, bool bg) override;
|
||||||
|
void DrawMenuCaption(const DVector2& origin, const char* text) override;
|
||||||
|
|
||||||
FString statFPS() override;
|
FString statFPS() override;
|
||||||
//GameStats getStats() override;
|
//GameStats getStats() override;
|
||||||
|
|
|
@ -338,7 +338,7 @@ void PlayLocalSound(short nSound, short nRate)
|
||||||
// There is exactly one occurence in the entire game which alters the pitch.
|
// There is exactly one occurence in the entire game which alters the pitch.
|
||||||
pASound->snd_channel = soundEngine->StartSound(SOURCE_Unattached, nullptr, nullptr, CHAN_BODY, CHANF_OVERLAP, nSound + 1, 1.f, ATTN_NONE, nullptr);
|
pASound->snd_channel = soundEngine->StartSound(SOURCE_Unattached, nullptr, nullptr, CHAN_BODY, CHANF_OVERLAP, nSound + 1, 1.f, ATTN_NONE, nullptr);
|
||||||
|
|
||||||
if (nRate)
|
if (nRate && pASound->snd_channel)
|
||||||
{
|
{
|
||||||
float ratefac = (11025 + nRate) / 11025.f;
|
float ratefac = (11025 + nRate) / 11025.f;
|
||||||
soundEngine->SetPitch(pASound->snd_channel, ratefac);
|
soundEngine->SetPitch(pASound->snd_channel, ratefac);
|
||||||
|
|
|
@ -256,6 +256,15 @@ public:
|
||||||
{
|
{
|
||||||
renderState.IndexBuffer = vb;
|
renderState.IndexBuffer = vb;
|
||||||
}
|
}
|
||||||
|
void ClearBufferState()
|
||||||
|
{
|
||||||
|
SetVertexBuffer(nullptr, 0, 0);
|
||||||
|
SetIndexBuffer(nullptr);
|
||||||
|
// Invalidate the pointers as well to make sure that if another buffer with the same address is used it actually gets bound.
|
||||||
|
LastVertexBuffer = (IVertexBuffer*)~intptr_t(0);
|
||||||
|
LastIndexBuffer = (IIndexBuffer*)~intptr_t(0);
|
||||||
|
}
|
||||||
|
|
||||||
const VSMatrix &GetMatrix(int num)
|
const VSMatrix &GetMatrix(int num)
|
||||||
{
|
{
|
||||||
return matrices[num];
|
return matrices[num];
|
||||||
|
|
|
@ -118,6 +118,7 @@ void GLInstance::Draw2D(F2DDrawer *drawer)
|
||||||
}
|
}
|
||||||
F2DVertexBuffer vb;
|
F2DVertexBuffer vb;
|
||||||
vb.UploadData(&vertices[0], vertices.Size(), &indices[0], indices.Size());
|
vb.UploadData(&vertices[0], vertices.Size(), &indices[0], indices.Size());
|
||||||
|
assert(vb.GetBufferObjects().first && vb.GetBufferObjects().second);
|
||||||
SetVertexBuffer(vb.GetBufferObjects().first, 0, 0);
|
SetVertexBuffer(vb.GetBufferObjects().first, 0, 0);
|
||||||
SetIndexBuffer(vb.GetBufferObjects().second);
|
SetIndexBuffer(vb.GetBufferObjects().second);
|
||||||
SetFadeDisable(true);
|
SetFadeDisable(true);
|
||||||
|
@ -210,8 +211,7 @@ void GLInstance::Draw2D(F2DDrawer *drawer)
|
||||||
//state.SetScissor(-1, -1, -1, -1);
|
//state.SetScissor(-1, -1, -1, -1);
|
||||||
|
|
||||||
//state.SetRenderStyle(STYLE_Translucent);
|
//state.SetRenderStyle(STYLE_Translucent);
|
||||||
SetVertexBuffer(nullptr, 0, 0);
|
ClearBufferState();
|
||||||
SetIndexBuffer(nullptr);
|
|
||||||
UseColorOnly(false);
|
UseColorOnly(false);
|
||||||
//state.EnableBrightmap(true);
|
//state.EnableBrightmap(true);
|
||||||
//state.SetTextureMode(TM_NORMAL);
|
//state.SetTextureMode(TM_NORMAL);
|
||||||
|
|
Loading…
Reference in a new issue