From 80ed7e0939d74a8dd5a8c13e3ef055717e148325 Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Tue, 14 Aug 2018 21:39:13 +0200 Subject: [PATCH] Corrected the spin behavior of the Redeemer Missile's outer reticle. Added optional fancy screen shader to Redeemer. --- cvarinfo.txt | 1 + gldefs.txt | 7 ++++++ graphics/AroDup.png | Bin 0 -> 261 bytes menudef.txt | 1 + shaders/glsl/RedeemerView.fp | 24 ++++++++++++++++++ zscript/warheadlauncher.zsc | 47 ++++++++++++++++++++++++----------- 6 files changed, 65 insertions(+), 15 deletions(-) create mode 100644 graphics/AroDup.png create mode 100644 shaders/glsl/RedeemerView.fp diff --git a/cvarinfo.txt b/cvarinfo.txt index 5dc18f3..6473a5c 100644 --- a/cvarinfo.txt +++ b/cvarinfo.txt @@ -20,3 +20,4 @@ user float flak_statussize = 1.0; // 0.5 <-> 1.5 in steps of 0.1 (default 1.0) user bool flak_footsteps = true; server bool flak_translocator = false; user bool flak_noswitchdeemer = true; // don't switch to redeemer when out of ammo +user bool flak_deemershader = false; diff --git a/gldefs.txt b/gldefs.txt index fc91135..2658c6f 100644 --- a/gldefs.txt +++ b/gldefs.txt @@ -573,3 +573,10 @@ Object "UTGoldKey" { Frame "UKEY" { light "UTGoldKeyLight" } } +HardwareShader PostProcess scene +{ + Name "RedeemerView" + Shader "shaders/glsl/RedeemerView.fp" 330 + Texture StaticTexture "textures/static1.png" + Uniform float Timer +} diff --git a/graphics/AroDup.png b/graphics/AroDup.png new file mode 100644 index 0000000000000000000000000000000000000000..b09503fa69b1b2fdfc8d4ae1802bd0c1d7e75508 GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznVBp|jW?*1AzM_9A0|P@yfKP}k0|UcBWro8l z3%#?KTs9u<99$tL8NvbvPtBcSwZzMMxu)>+ ta; - Shape2D rreticle; + Shape2D sshape, darrow; RedeemerHUD Init() { reticle1 = TexMan.CheckForTexture("GuidedX1",TexMan.Type_Any); reticle2 = TexMan.CheckForTexture("GuidedX2",TexMan.Type_Any); + arrow = TexMan.CheckForTexture("AroDup",TexMan.Type_Any); mark = TexMan.CheckForTexture("Crosshr6",TexMan.Type_Any); readout = TexMan.CheckForTexture("Readout",TexMan.Type_Any); whfont = Font.GetFont('WHFONT'); t = ThinkerIterator.Create("Actor"); tr = new("MidTracer"); - rreticle = new("Shape2D"); - rreticle.PushCoord((0,0)); - rreticle.PushCoord((1,0)); - rreticle.PushCoord((0,1)); - rreticle.PushCoord((1,1)); - rreticle.PushTriangle(0,3,1); - rreticle.PushTriangle(0,2,3); + sshape = new("Shape2D"); + sshape.PushCoord((0,0)); + sshape.PushCoord((1,0)); + sshape.PushCoord((0,1)); + sshape.PushCoord((1,1)); + sshape.PushTriangle(0,3,1); + sshape.PushTriangle(0,2,3); return self; } override bool Tick() @@ -508,24 +509,34 @@ Class RedeemerHUD : HUDMessageBase } // reticle Vector2 vs = (640,640/Screen.GetAspectRatio()); - Vector2 mid, siz; + Vector2 mid, siz, siz2; [mid, siz] = Screen.VirtualToRealCoords(vs*0.5,(128,128),vs,false,false); + [mid, siz2] = Screen.VirtualToRealCoords(vs*0.5,(8,4),vs,false,false); Vector2 verts[4]; verts[0] = (-siz.x,-siz.y); verts[1] = (siz.x,-siz.y); verts[2] = (-siz.x,siz.y); verts[3] = (siz.x,siz.y); - rreticle.Clear(Shape2D.C_Verts); + sshape.Clear(Shape2D.C_Verts); + double rrot = -LagRoll2*2; for ( int i=0; i<4; i++ ) - rreticle.PushVertex(mid+(verts[i].x*cos(LagRoll2)-verts[i].y*sin(LagRoll2),verts[i].x*sin(LagRoll2)+verts[i].y*cos(LagRoll2))); - Screen.DrawShape(reticle1,false,rreticle,DTA_RenderStyle,(1|2<<8|1<<16)); + sshape.PushVertex(mid+(verts[i].x*cos(rrot)-verts[i].y*sin(rrot),verts[i].x*sin(rrot)+verts[i].y*cos(rrot))); + Screen.DrawShape(reticle1,false,sshape,DTA_RenderStyle,(1|2<<8|1<<16)); + sshape.Clear(Shape2D.C_Verts); + verts[0] = (-siz2.x,siz.y+siz2.y); + verts[1] = (siz2.x,siz.y+siz2.y); + verts[2] = (-siz2.x,siz.y+3*siz2.y); + verts[3] = (siz2.x,siz.y+3*siz2.y); + for ( int i=0; i<4; i++ ) + sshape.PushVertex(mid+(verts[i].x*cos(rrot)-verts[i].y*sin(rrot),verts[i].x*sin(rrot)+verts[i].y*cos(rrot))); + Screen.DrawShape(arrow,false,sshape,DTA_RenderStyle,(1|2<<8|1<<16)); Screen.DrawTexture(reticle2,false,vs.x*0.5,vs.y*0.5,DTA_VirtualWidthF,vs.x,DTA_VirtualHeightF,vs.y,DTA_KeepRatio,true,DTA_RenderStyle,(1|2<<8|1<<16)); // faux assembly readout - int numreadouts = Screen.GetHeight()/128+2; + int numreadouts = int(vs.y/128+2); for ( int i=0; i