# HG changeset patch
# User geNia
# Date 1599584203 14400
#      Tue Sep 08 12:56:43 2020 -0400
# Node ID 4cca10656faa2983a5340b3e6ca0e8fc1b02d31a
# Parent  61393f3baeebdc077e6007e7499ff22d722ed44c
Don't reset fov upon respawn

diff -r 61393f3baeeb -r 4cca10656faa src/c_cmds.cpp
--- a/src/c_cmds.cpp	Mon Sep 07 18:37:30 2020 -0400
+++ b/src/c_cmds.cpp	Tue Sep 08 12:56:43 2020 -0400
@@ -1077,10 +1077,24 @@
 		}
 	}
 	else
-	{
-		// Just do this here in client games.
-		if ( NETWORK_GetState( ) == NETSTATE_CLIENT )
-			player->DesiredFOV = static_cast<float> ( clamp (atoi (argv[1]), 5, 179) );
+	{
+		// Do it for everyone but server
+		if ( NETWORK_GetState() != NETSTATE_SERVER )
+		{
+			float newfov = static_cast<float> (clamp(atoi(argv[1]), 5, 179));
+
+			UCVarValue Value;
+			Value.Float = newfov;
+			cl_fov.ForceSet(Value, CVAR_Float);
+
+			for (int i = 0; i < MAXPLAYERS; ++i)
+			{
+				if (playeringame[i])
+				{
+					players[i].DesiredFOV = newfov;
+				}
+			}
+		}
 
 		Net_WriteByte (DEM_MYFOV);
 	}
diff -r 61393f3baeeb -r 4cca10656faa src/cl_demo.cpp
--- a/src/cl_demo.cpp	Mon Sep 07 18:37:30 2020 -0400
+++ b/src/cl_demo.cpp	Tue Sep 08 12:56:43 2020 -0400
@@ -1061,7 +1061,7 @@
 		p->mo->angle = pCamera->angle;
 		p->mo->flags |= (MF_NOGRAVITY);
 		p->mo->player = p;
-		p->DesiredFOV = p->FOV = 90.f;
+		p->DesiredFOV = p->FOV = cl_fov;
 		p->crouchfactor = FRACUNIT;
 		PLAYER_SetDefaultSpectatorValues ( p );
 		players[consoleplayer].camera = g_demoCameraPlayer.mo;
diff -r 61393f3baeeb -r 4cca10656faa src/cl_main.cpp
--- a/src/cl_main.cpp	Mon Sep 07 18:37:30 2020 -0400
+++ b/src/cl_main.cpp	Tue Sep 08 12:56:43 2020 -0400
@@ -3511,7 +3511,7 @@
 		pActor->sprite = skins[lSkin].sprite;
 	}
 
-	pPlayer->DesiredFOV = pPlayer->FOV = 90.f;
+	pPlayer->DesiredFOV = pPlayer->FOV = cl_fov;
 	// If the console player was watching another player in demo mode, continue to follow
 	// that other player.
 	if ( pCameraActor )
@@ -9302,7 +9302,8 @@
 // the last used passwords to all servers it connects to.
 CVAR( String, cl_password, "password", 0 )
 CVAR( String, cl_joinpassword, "password", 0 )
-CVAR( Bool, cl_hitscandecalhack, true, CVAR_ARCHIVE )
+CVAR( Bool, cl_hitscandecalhack, true, CVAR_ARCHIVE )
+CVAR( Float, cl_fov, 90, CVAR_ARCHIVE | CVAR_USERINFO | CVAR_NOSET )
 
 //*****************************************************************************
 //	STATISTICS
diff -r 61393f3baeeb -r 4cca10656faa src/cl_main.h
--- a/src/cl_main.h	Mon Sep 07 18:37:30 2020 -0400
+++ b/src/cl_main.h	Tue Sep 08 12:56:43 2020 -0400
@@ -210,7 +210,8 @@
 EXTERN_CVAR( Flag, cl_dontrestorefrags )
 EXTERN_CVAR( String, cl_password )
 EXTERN_CVAR( String, cl_joinpassword )
-EXTERN_CVAR( Bool, cl_hitscandecalhack )
+EXTERN_CVAR( Bool, cl_hitscandecalhack )
+EXTERN_CVAR( Float, cl_fov )
 
 // Not in cl_main.cpp, but this seems like a good enough place for it.
 EXTERN_CVAR( Int, cl_skins )
diff -r 61393f3baeeb -r 4cca10656faa src/p_mobj.cpp
--- a/src/p_mobj.cpp	Mon Sep 07 18:37:30 2020 -0400
+++ b/src/p_mobj.cpp	Tue Sep 08 12:56:43 2020 -0400
@@ -5534,7 +5534,7 @@
 		mobj->sprite = skins[lSkin].sprite;
 	}
 
-	p->DesiredFOV = p->FOV = 90.f;
+	p->DesiredFOV = p->FOV = cl_fov;
 	p->camera = p->mo;
 	p->playerstate = PST_LIVE;
 	p->refire = 0;
