From fbb931b759f4b2cef2f1bd1c1eabf0f222a4d9c2 Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Thu, 28 Dec 2017 10:21:36 +0200 Subject: [PATCH 1/9] Improved Advanced Sound Options menu Added option for FluidSynth chorus Removed fractional part from FluidSynth voices option Removed duplicate localized string --- wadsrc/static/language.enu | 3 +-- wadsrc/static/menudef.txt | 5 +++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/wadsrc/static/language.enu b/wadsrc/static/language.enu index b05981a5a..8b40c52da 100644 --- a/wadsrc/static/language.enu +++ b/wadsrc/static/language.enu @@ -2162,11 +2162,10 @@ ADVSNDMNU_FLUIDSYNTH = "FluidSynth"; ADVSNDMNU_FLUIDPATCHSET = "Patch set"; ADVSNDMNU_FLUIDGAIN = "Gain"; ADVSNDMNU_REVERB = "Reverb"; -ADVSNDMNU_FLUIDVOICES = "MIDI voices"; +ADVSNDMNU_CHORUS = "Chorus"; ADVSNDMNU_TIMIDITY = "Timidity++"; ADVSNDMNU_TIMIDITYEXE = "Path for executable"; ADVSNDMNU_TIMIDITYCONFIG = "Timidity config file"; -ADVSNDMNU_TIMIDITYCHORUS = "Chorus"; ADVSNDMNU_TIMIDITYVOLUME = "Relative volume"; ADVSNDMNU_WILDMIDI = "WildMidi"; ADVSNDMNU_WILDMIDICONFIG = "WildMidi config file"; diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt index 9b2c9a600..43c86b712 100644 --- a/wadsrc/static/menudef.txt +++ b/wadsrc/static/menudef.txt @@ -1678,7 +1678,8 @@ OptionMenu AdvSoundOptions protected SubMenu "$ADVSNDMNU_SELCONFIG", "FluidPatchsetMenu" Slider "$ADVSNDMNU_FLUIDGAIN", "fluid_gain", 0, 10, 0.5, 1 Option "$ADVSNDMNU_REVERB", "fluid_reverb", "OnOff" - Slider "$ADVSNDMNU_FLUIDVOICES", "fluid_voices", 16, 4096, 16, 1 + Option "$ADVSNDMNU_CHORUS", "fluid_chorus", "OnOff" + Slider "$ADVSNDMNU_MIDIVOICES", "fluid_voices", 16, 4096, 16, 0 // Leaving out the more advanced stuff for now. StaticText " " StaticText "$ADVSNDMNU_TIMIDITY", 1 @@ -1690,7 +1691,7 @@ OptionMenu AdvSoundOptions protected TextField "$ADVSNDMNU_TIMIDITYCONFIG", "timidity_config" SubMenu "$ADVSNDMNU_SELCONFIG", "TimidityConfigMenu" Option "$ADVSNDMNU_REVERB", "timidity_reverb", "OnOff" - Option "$ADVSNDMNU_TIMIDITYCHORUS", "timidity_chorus", "OnOff" + Option "$ADVSNDMNU_CHORUS", "timidity_chorus", "OnOff" Slider "$ADVSNDMNU_TIMIDITYVOLUME", "timidity_mastervolume", 0, 4, 0.2, 1 StaticText " " StaticText "$ADVSNDMNU_WILDMIDI", 1 From 8ca3427850c585e4befaab028737498702b5fbc5 Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Thu, 28 Dec 2017 18:32:26 +0200 Subject: [PATCH 2/9] Fixed applying of Doom 64 lighting to horizon portals https://forum.zdoom.org/viewtopic.php?t=58878 --- src/gl/scene/gl_portal.cpp | 3 +++ src/gl/scene/gl_portal.h | 1 + src/gl/scene/gl_walls.cpp | 2 ++ 3 files changed, 6 insertions(+) diff --git a/src/gl/scene/gl_portal.cpp b/src/gl/scene/gl_portal.cpp index 2e5df1da9..ed3812766 100644 --- a/src/gl/scene/gl_portal.cpp +++ b/src/gl/scene/gl_portal.cpp @@ -1180,6 +1180,7 @@ void GLHorizonPortal::DrawContents() gl_RenderState.SetMaterial(gltexture, CLAMP_NONE, 0, -1, false); + gl_RenderState.SetObjectColor(origin->specialcolor); gl_SetPlaneTextureRotation(sp, gltexture); gl_RenderState.AlphaFunc(GL_GEQUAL, 0.f); @@ -1237,6 +1238,7 @@ void GLEEHorizonPortal::DrawContents() horz.plane.GetFromSector(sector, sector_t::ceiling); horz.lightlevel = gl_ClampLight(sector->GetCeilingLight()); horz.colormap = sector->Colormap; + horz.specialcolor = 0xffffffff; if (portal->mType == PORTS_PLANE) { horz.plane.Texheight = r_viewpoint.Pos.Z + fabs(horz.plane.Texheight); @@ -1250,6 +1252,7 @@ void GLEEHorizonPortal::DrawContents() horz.plane.GetFromSector(sector, sector_t::floor); horz.lightlevel = gl_ClampLight(sector->GetFloorLight()); horz.colormap = sector->Colormap; + horz.specialcolor = 0xffffffff; if (portal->mType == PORTS_PLANE) { horz.plane.Texheight = r_viewpoint.Pos.Z - fabs(horz.plane.Texheight); diff --git a/src/gl/scene/gl_portal.h b/src/gl/scene/gl_portal.h index 9ef8cf5f7..010472c97 100644 --- a/src/gl/scene/gl_portal.h +++ b/src/gl/scene/gl_portal.h @@ -48,6 +48,7 @@ struct GLHorizonInfo GLSectorPlane plane; int lightlevel; FColormap colormap; + PalEntry specialcolor; }; struct GLSkyInfo diff --git a/src/gl/scene/gl_walls.cpp b/src/gl/scene/gl_walls.cpp index 018f8ab67..529d46bb5 100644 --- a/src/gl/scene/gl_walls.cpp +++ b/src/gl/scene/gl_walls.cpp @@ -441,6 +441,7 @@ bool GLWall::DoHorizon(seg_t * seg,sector_t * fs, vertex_t * v1,vertex_t * v2) hi.plane.GetFromSector(fs, sector_t::ceiling); hi.lightlevel = gl_ClampLight(fs->GetCeilingLight()); hi.colormap = fs->Colormap; + hi.specialcolor = fs->SpecialColors[sector_t::ceiling]; if (fs->e->XFloor.ffloors.Size()) { @@ -469,6 +470,7 @@ bool GLWall::DoHorizon(seg_t * seg,sector_t * fs, vertex_t * v1,vertex_t * v2) hi.plane.GetFromSector(fs, sector_t::floor); hi.lightlevel = gl_ClampLight(fs->GetFloorLight()); hi.colormap = fs->Colormap; + hi.specialcolor = fs->SpecialColors[sector_t::floor]; if (fs->e->XFloor.ffloors.Size()) { From a441cea35076b6ee4abe09c5e0f08c7d83b47af5 Mon Sep 17 00:00:00 2001 From: Rachael Alexanderson Date: Thu, 28 Dec 2017 11:04:43 -0500 Subject: [PATCH 3/9] - interpolate particles --- src/gl/scene/gl_sprite.cpp | 14 +++++++++++--- src/polyrenderer/scene/poly_particle.cpp | 5 ++++- src/swrenderer/things/r_particle.cpp | 22 +++++++++++++++------- 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/src/gl/scene/gl_sprite.cpp b/src/gl/scene/gl_sprite.cpp index a773373ef..edd0da1d9 100644 --- a/src/gl/scene/gl_sprite.cpp +++ b/src/gl/scene/gl_sprite.cpp @@ -40,6 +40,7 @@ #include "events.h" #include "actorinlines.h" #include "r_data/r_vanillatrans.h" +#include "i_time.h" #include "gl/system/gl_interface.h" #include "gl/system/gl_framebuffer.h" @@ -1209,9 +1210,16 @@ void GLSprite::ProcessParticle (particle_t *particle, sector_t *sector)//, int s } } - x = particle->Pos.X; - y = particle->Pos.Y; - z = particle->Pos.Z; + double timefrac = r_viewpoint.TicFrac; + if (paused || bglobal.freeze) + timefrac = 0.; + float xvf = (particle->Vel.X) * timefrac; + float yvf = (particle->Vel.Y) * timefrac; + float zvf = (particle->Vel.Z) * timefrac; + + x = float(particle->Pos.X) + xvf; + y = float(particle->Pos.Y) + yvf; + z = float(particle->Pos.Z) + zvf; float factor; if (gl_particles_style == 1) factor = 1.3f / 7.f; diff --git a/src/polyrenderer/scene/poly_particle.cpp b/src/polyrenderer/scene/poly_particle.cpp index 6b5e1e9c5..0ab3beb22 100644 --- a/src/polyrenderer/scene/poly_particle.cpp +++ b/src/polyrenderer/scene/poly_particle.cpp @@ -34,7 +34,10 @@ EXTERN_CVAR(Int, gl_particles_style) void RenderPolyParticle::Render(PolyRenderThread *thread, const TriMatrix &worldToClip, const PolyClipPlane &clipPlane, particle_t *particle, subsector_t *sub, uint32_t stencilValue) { - DVector3 pos = particle->Pos; + double timefrac = r_viewpoint.TicFrac; + if (paused || bglobal.freeze) + timefrac = 0.; + DVector3 pos = particle->Pos + (particle->Vel * timefrac); double psize = particle->size / 8.0; double zpos = pos.Z; diff --git a/src/swrenderer/things/r_particle.cpp b/src/swrenderer/things/r_particle.cpp index 33d2a6d09..7c2d88f48 100644 --- a/src/swrenderer/things/r_particle.cpp +++ b/src/swrenderer/things/r_particle.cpp @@ -77,7 +77,15 @@ namespace swrenderer double xscale, yscale; int x1, x2, y1, y2; sector_t* heightsec = NULL; - + + double timefrac = r_viewpoint.TicFrac; + if (paused || bglobal.freeze) + timefrac = 0.; + + double ippx = particle->Pos.X + particle->Vel.X * timefrac; + double ippy = particle->Pos.Y + particle->Vel.Y * timefrac; + double ippz = particle->Pos.Z + particle->Vel.Z * timefrac; + RenderPortal *renderportal = thread->Portal.get(); // [ZZ] Particle not visible through the portal plane @@ -85,8 +93,8 @@ namespace swrenderer return; // transform the origin point - tr_x = particle->Pos.X - thread->Viewport->viewpoint.Pos.X; - tr_y = particle->Pos.Y - thread->Viewport->viewpoint.Pos.Y; + tr_x = ippx - thread->Viewport->viewpoint.Pos.X; + tr_y = ippy - thread->Viewport->viewpoint.Pos.Y; tz = tr_x * thread->Viewport->viewpoint.TanCos + tr_y * thread->Viewport->viewpoint.TanSin; @@ -121,7 +129,7 @@ namespace swrenderer auto viewport = thread->Viewport.get(); yscale = xscale; // YaspectMul is not needed for particles as they should always be square - ty = (particle->Pos.Z - viewport->viewpoint.Pos.Z) * thread->Viewport->YaspectMul; + ty = (ippz - viewport->viewpoint.Pos.Z) * thread->Viewport->YaspectMul; y1 = xs_RoundToInt(viewport->CenterY - (ty + psize) * yscale); y2 = xs_RoundToInt(viewport->CenterY - (ty - psize) * yscale); @@ -184,9 +192,9 @@ namespace swrenderer map = GetColorTable(sector->Colormap, sector->SpecialColors[sector_t::sprites], true); } - if (botpic != skyflatnum && particle->Pos.Z < botplane->ZatPoint(particle->Pos)) + if (botpic != skyflatnum && ippz < botplane->ZatPoint(particle->Pos)) return; - if (toppic != skyflatnum && particle->Pos.Z >= topplane->ZatPoint(particle->Pos)) + if (toppic != skyflatnum && ippz >= topplane->ZatPoint(particle->Pos)) return; // store information in a vissprite @@ -199,7 +207,7 @@ namespace swrenderer // vis->yscale *= InvZtoScale; vis->depth = (float)tz; vis->idepth = float(1 / tz); - vis->gpos = { (float)particle->Pos.X, (float)particle->Pos.Y, (float)particle->Pos.Z }; + vis->gpos = { (float)ippx, (float)ippy, (float)ippz }; vis->y1 = y1; vis->y2 = y2; vis->x1 = x1; From b8415199c9b8edf5d999fcdd474a5f44e1566418 Mon Sep 17 00:00:00 2001 From: Magnus Norddahl Date: Tue, 5 Dec 2017 00:32:37 +0100 Subject: [PATCH 4/9] Fix culling bug --- src/polyrenderer/drawers/poly_triangle.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/polyrenderer/drawers/poly_triangle.cpp b/src/polyrenderer/drawers/poly_triangle.cpp index 990ca581d..83a6f9ed7 100644 --- a/src/polyrenderer/drawers/poly_triangle.cpp +++ b/src/polyrenderer/drawers/poly_triangle.cpp @@ -333,7 +333,7 @@ void PolyTriangleDrawer::draw_shaded_triangle(const ShadedTriVertex *vert, bool args->v1 = &clippedvert[numclipvert - 1]; args->v2 = &clippedvert[i - 1]; args->v3 = &clippedvert[i - 2]; - if (is_frontfacing(args) && args->CalculateGradients()) + if (is_frontfacing(args) == ccw && args->CalculateGradients()) ScreenTriangle::Draw(args, thread); } } @@ -344,7 +344,7 @@ void PolyTriangleDrawer::draw_shaded_triangle(const ShadedTriVertex *vert, bool args->v1 = &clippedvert[0]; args->v2 = &clippedvert[i - 1]; args->v3 = &clippedvert[i]; - if (!is_frontfacing(args) && args->CalculateGradients()) + if (is_frontfacing(args) != ccw && args->CalculateGradients()) ScreenTriangle::Draw(args, thread); } } From 25d53ecd2cc9228f651e852184020c5bc0481225 Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Fri, 29 Dec 2017 09:39:01 +0200 Subject: [PATCH 5/9] Enabled position independent executable for generic GCC/Clang This affects mostly Linux (and probably MinGW) as default toolchains for Windows and macOS have the corresponding option turned on by default --- CMakeLists.txt | 6 ++++++ src/m_fixed.h | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 345fd480d..5809118d8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -234,6 +234,12 @@ else() if( APPLE AND "${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" ) set( ALL_C_FLAGS "-static-libgcc" ) endif() + + if( NOT APPLE ) + # Generic GCC/Clang requires position independent executable to be enabled explicitly + set( ALL_C_FLAGS "${ALL_C_FLAGS} -fPIE" ) + set( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie" ) + endif() endif() set( CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${REL_LINKER_FLAGS}" ) diff --git a/src/m_fixed.h b/src/m_fixed.h index b751d6b1f..8bbb2dbf9 100644 --- a/src/m_fixed.h +++ b/src/m_fixed.h @@ -7,7 +7,7 @@ // Unfortunately, the Scale function still gets badly handled on 32 bit x86 platforms so it's the last remaining piece of inline assembly // GCC inlines -#if defined(__GNUC__) && defined(__i386__) && !defined(__clang__) +#if defined(__GNUC__) && defined(__i386__) && !defined(__clang__) && !defined(__PIC__) #ifndef alloca // MinGW does not seem to come with alloca defined. #define alloca __builtin_alloca From 996bddd602fe2015fbdc1d44fae7650d8cc715d7 Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Fri, 29 Dec 2017 09:42:03 +0200 Subject: [PATCH 6/9] Exposed pixel stretch to ZScript as member variable instead of function https://forum.zdoom.org/viewtopic.php?t=58539 --- src/g_level.cpp | 20 +++----------------- src/g_levellocals.h | 2 +- wadsrc/static/zscript/base.txt | 2 +- 3 files changed, 5 insertions(+), 19 deletions(-) diff --git a/src/g_level.cpp b/src/g_level.cpp index c333ba074..cb5bc4baf 100644 --- a/src/g_level.cpp +++ b/src/g_level.cpp @@ -1481,6 +1481,8 @@ void G_InitLevelLocals () level.outsidefogdensity = info->outsidefogdensity; level.skyfog = info->skyfog; + level.pixelstretch = info->pixelstretch; + compatflags.Callback(); compatflags2.Callback(); @@ -1952,23 +1954,6 @@ DEFINE_ACTION_FUNCTION(FLevelLocals, SetInterMusic) return 0; } -//========================================================================== -// -// -// -//========================================================================== - -float FLevelLocals::PixelStretch() -{ - return level.info->pixelstretch; -} - -DEFINE_ACTION_FUNCTION(FLevelLocals, GetPixelStretch) -{ - PARAM_SELF_STRUCT_PROLOGUE(FLevelLocals); - ACTION_RETURN_FLOAT(self->PixelStretch()); -} - //========================================================================== // // @@ -2011,6 +1996,7 @@ DEFINE_FIELD(FLevelLocals, teamdamage) DEFINE_FIELD(FLevelLocals, fogdensity) DEFINE_FIELD(FLevelLocals, outsidefogdensity) DEFINE_FIELD(FLevelLocals, skyfog) +DEFINE_FIELD(FLevelLocals, pixelstretch) DEFINE_FIELD_BIT(FLevelLocals, flags, noinventorybar, LEVEL_NOINVENTORYBAR) DEFINE_FIELD_BIT(FLevelLocals, flags, monsterstelefrag, LEVEL_MONSTERSTELEFRAG) DEFINE_FIELD_BIT(FLevelLocals, flags, actownspecial, LEVEL_ACTOWNSPECIAL) diff --git a/src/g_levellocals.h b/src/g_levellocals.h index 024e6302d..60cb30df0 100644 --- a/src/g_levellocals.h +++ b/src/g_levellocals.h @@ -46,7 +46,6 @@ struct FLevelLocals void Tick (); void AddScroller (int secnum); void SetInterMusic(const char *nextmap); - float PixelStretch(); uint8_t md5[16]; // for savegame validation. If the MD5 does not match the savegame won't be loaded. int time; // time in the hub @@ -149,6 +148,7 @@ struct FLevelLocals int outsidefogdensity; int skyfog; + float pixelstretch; bool IsJumpingAllowed() const; bool IsCrouchingAllowed() const; diff --git a/wadsrc/static/zscript/base.txt b/wadsrc/static/zscript/base.txt index 237f8a084..4ffe34dce 100644 --- a/wadsrc/static/zscript/base.txt +++ b/wadsrc/static/zscript/base.txt @@ -536,6 +536,7 @@ struct LevelLocals native native readonly int fogdensity; native readonly int outsidefogdensity; native readonly int skyfog; + native readonly float pixelstretch; // level_info_t *info cannot be done yet. native String GetUDMFString(int type, int index, Name key); @@ -547,7 +548,6 @@ struct LevelLocals native native static void WorldDone(); native static void RemoveAllBots(bool fromlist); native void SetInterMusic(String nextmap); - native double GetPixelStretch(); native String FormatMapName(int mapnamecolor); native bool IsJumpingAllowed() const; native bool IsCrouchingAllowed() const; From a670e79b8ac989235a77610422c7c65a3c5f8ac7 Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Fri, 29 Dec 2017 11:47:30 +0200 Subject: [PATCH 7/9] Applied texture offsets and scales on animated doors https://forum.zdoom.org/viewtopic.php?t=58892 --- src/p_doors.cpp | 10 +++++++--- src/r_defs.h | 10 +++++++++- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/p_doors.cpp b/src/p_doors.cpp index 43deaeaf8..abfe81722 100644 --- a/src/p_doors.cpp +++ b/src/p_doors.cpp @@ -711,9 +711,13 @@ DAnimatedDoor::DAnimatedDoor (sector_t *sec, line_t *line, int speed, int delay, } - picnum = m_Line1->sidedef[0]->GetTexture(side_t::top); - m_Line1->sidedef[0]->SetTexture(side_t::mid, picnum); - m_Line2->sidedef[0]->SetTexture(side_t::mid, picnum); + auto &tex1 = m_Line1->sidedef[0]->textures; + tex1[side_t::mid].InitFrom(tex1[side_t::top]); + + auto &tex2 = m_Line2->sidedef[0]->textures; + tex2[side_t::mid].InitFrom(tex2[side_t::top]); + + picnum = tex1[side_t::top].texture; // don't forget texture scaling here! FTexture *tex = TexMan[picnum]; diff --git a/src/r_defs.h b/src/r_defs.h index 1ac282cf9..02da2ac0e 100644 --- a/src/r_defs.h +++ b/src/r_defs.h @@ -1139,7 +1139,15 @@ struct side_t double yScale; TObjPtr interpolation; FTextureID texture; - //int Light; + + void InitFrom(const part &other) + { + if (texture.isNull()) texture = other.texture; + if (0.0 == xOffset) xOffset = other.xOffset; + if (0.0 == yOffset) yOffset = other.yOffset; + if (1.0 == xScale && 0.0 != other.xScale) xScale = other.xScale; + if (1.0 == yScale && 0.0 != other.yScale) yScale = other.yScale; + } }; sector_t* sector; // Sector the SideDef is facing. From 33213f5d5de2c3ca5f8ab446a36e7a48e2a64027 Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Fri, 29 Dec 2017 14:37:09 +0200 Subject: [PATCH 8/9] Fixed rendering of wrapped midtex with sky ceiling https://forum.zdoom.org/viewtopic.php?t=58311 --- src/gl/scene/gl_walls.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gl/scene/gl_walls.cpp b/src/gl/scene/gl_walls.cpp index 529d46bb5..470cd9776 100644 --- a/src/gl/scene/gl_walls.cpp +++ b/src/gl/scene/gl_walls.cpp @@ -828,7 +828,7 @@ void GLWall::DoMidTexture(seg_t * seg, bool drawfogboundary, back->GetTexture(sector_t::ceiling) == skyflatnum) { // intra-sky lines do not clip the texture at all if there's no upper texture - topleft = topright = texturetop; + topleft = topright = wrap ? 1e16f : texturetop; } else { From 19d25b00a392220a530637775ebf5cba40c7ec6b Mon Sep 17 00:00:00 2001 From: SashaTheRed Date: Fri, 29 Dec 2017 14:55:19 +0200 Subject: [PATCH 9/9] Localized 'Press Space...' in player setup menu https://forum.zdoom.org/viewtopic.php?t=58881 --- wadsrc/static/language.enu | 3 +++ wadsrc/static/zscript/menu/playermenu.txt | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/wadsrc/static/language.enu b/wadsrc/static/language.enu index 8b40c52da..1cb246047 100644 --- a/wadsrc/static/language.enu +++ b/wadsrc/static/language.enu @@ -1795,6 +1795,9 @@ PLYRMNU_PLAYERGENDER = "Gender"; PLYRMNU_AUTOAIM = "Autoaim"; PLYRMNU_SWITCHONPICKUP = "Switch on pickup"; PLYRMNU_ALWAYSRUN = "Always Run"; +PLYRMNU_PRESSSPACE = "PRESS \cjSPACE"; +PLYRMNU_SEEFRONT = "TO SEE FRONT"; +PLYRMNU_SEEBACK = "TO SEE BACK"; // Display Options DSPLYMNU_TITLE = "DISPLAY OPTIONS"; diff --git a/wadsrc/static/zscript/menu/playermenu.txt b/wadsrc/static/zscript/menu/playermenu.txt index dac376ee9..09d05b0c2 100644 --- a/wadsrc/static/zscript/menu/playermenu.txt +++ b/wadsrc/static/zscript/menu/playermenu.txt @@ -585,11 +585,11 @@ class PlayerMenu : ListMenu override void Drawer () { Super.Drawer(); - String str = "PRESS " .. TEXTCOLOR_WHITE .. "SPACE"; + String str = Stringtable.Localize("$PLYRMNU_PRESSSPACE"); screen.DrawText (SmallFont, Font.CR_GOLD, 320 - 32 - 32 - SmallFont.StringWidth (str)/2, 50 + 48 + 70, str, DTA_Clean, true); - str = mRotation ? "TO SEE FRONT" : "TO SEE BACK"; + str = Stringtable.Localize(mRotation ? "$PLYRMNU_SEEFRONT" : "$PLYRMNU_SEEBACK"); screen.DrawText (SmallFont, Font.CR_GOLD, 320 - 32 - 32 - SmallFont.StringWidth (str)/2, 50 + 48 + 70 + SmallFont.GetHeight (), str, DTA_Clean, true); } -} \ No newline at end of file +}