Add PP shaders when submerged.

This commit is contained in:
Mari the Deer 2020-09-01 18:10:34 +02:00
commit 058a85e274
11 changed files with 146 additions and 16 deletions

View file

@ -371,6 +371,19 @@ Class SWWMHandler : EventHandler
return (al+ah+bl+bh)*.25;
}
static clearscope void ClearAllShaders( PlayerInfo p )
{
Shader.SetEnabled(p,"WaterWarp",false);
Shader.SetEnabled(p,"LavaWarp",false);
Shader.SetEnabled(p,"SlimeWarp",false);
Shader.SetEnabled(p,"ZoomBlur",false);
Shader.SetEnabled(p,"RagekitShader",false);
Shader.SetEnabled(p,"GhostShader",false);
Shader.SetEnabled(p,"InvinciShader",false);
Shader.SetEnabled(p,"Glitch",false);
Shader.SetEnabled(p,"Grain",false);
}
// level end stats
override void WorldUnloaded( WorldEvent e )
{
@ -378,13 +391,7 @@ Class SWWMHandler : EventHandler
SWWMStats s;
while ( s = SWWMStats(ti.Next()) )
s.AddLevelStats();
PlayerInfo p = players[consoleplayer];
Shader.SetEnabled(p,"ZoomBlur",false);
Shader.SetEnabled(p,"RagekitShader",false);
Shader.SetEnabled(p,"GhostShader",false);
Shader.SetEnabled(p,"InvinciShader",false);
Shader.SetEnabled(p,"Glitch",false);
Shader.SetEnabled(p,"Grain",false);
ClearAllShaders(players[consoleplayer]);
}
override void WorldLoaded( WorldEvent e )
@ -474,13 +481,7 @@ Class SWWMHandler : EventHandler
Demolitionist(players[i].mo).CheckUnderwaterAmb(true);
}
}
PlayerInfo p = players[consoleplayer];
Shader.SetEnabled(p,"ZoomBlur",false);
Shader.SetEnabled(p,"RagekitShader",false);
Shader.SetEnabled(p,"GhostShader",false);
Shader.SetEnabled(p,"InvinciShader",false);
Shader.SetEnabled(p,"Glitch",false);
Shader.SetEnabled(p,"Grain",false);
ClearAllShaders(players[consoleplayer]);
}
override void PlayerDied( PlayerEvent e )
@ -1648,6 +1649,27 @@ Class SWWMHandler : EventHandler
if ( pc && (mo is 'Demolitionist') && useshaders.GetBool() )
{
let demo = Demolitionist(mo);
if ( demo.lastunder == Demolitionist.UNDER_WATER )
{
Shader.SetEnabled(p,"WaterWarp",true);
Shader.SetUniform1f(p,"WaterWarp","timer",(gametic+e.FracTic)/Thinker.TICRATE);
Shader.SetUniform1f(p,"WaterWarp","dfact",coat?.25:1.);
}
else Shader.SetEnabled(p,"WaterWarp",false);
if ( demo.lastunder == Demolitionist.UNDER_LAVA )
{
Shader.SetEnabled(p,"LavaWarp",true);
Shader.SetUniform1f(p,"LavaWarp","timer",(gametic+e.FracTic)/Thinker.TICRATE);
Shader.SetUniform1f(p,"LavaWarp","dfact",coat?.25:1.);
}
else Shader.SetEnabled(p,"LavaWarp",false);
if ( demo.lastunder == Demolitionist.UNDER_SLIME )
{
Shader.SetEnabled(p,"SlimeWarp",true);
Shader.SetUniform1f(p,"SlimeWarp","timer",(gametic+e.FracTic)/Thinker.TICRATE);
Shader.SetUniform1f(p,"SlimeWarp","dfact",coat?.25:1.);
}
else Shader.SetEnabled(p,"SlimeWarp",false);
int lastdmg = (demo.Health>0)?demo.lastdamage:Random[Flicker](60,80);
int lastdmgtic = (demo.Health>0)?demo.lastdamagetic:(gametic+Random[Flicker](30,20));
double noiz = min(lastdmg*.09*max(0,(lastdmgtic-(gametic+e.Fractic))/35.),.5);
@ -1691,6 +1713,9 @@ Class SWWMHandler : EventHandler
}
else
{
Shader.SetEnabled(p,"WaterWarp",false);
Shader.SetEnabled(p,"LavaWarp",false);
Shader.SetEnabled(p,"SlimeWarp",false);
Shader.SetEnabled(p,"Glitch",false);
Shader.SetEnabled(p,"Grain",false);
Shader.SetEnabled(p,"ZoomBlur",false);