mirror of
				https://github.com/KartKrewDev/RingRacers.git
				synced 2025-10-30 08:01:28 +00:00 
			
		
		
		
	Merge branch 'battle-half-screen-shake' into 'master'
Battle: half screen shake radius, strength and max strength See merge request KartKrew/Kart!2216
This commit is contained in:
		
						commit
						7c69767a6a
					
				
					 1 changed files with 12 additions and 8 deletions
				
			
		
							
								
								
									
										20
									
								
								src/p_spec.c
									
										
									
									
									
								
							
							
						
						
									
										20
									
								
								src/p_spec.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -9499,6 +9499,7 @@ void P_StartQuakeFromMobj(tic_t time, fixed_t intensity, fixed_t radius, mobj_t
 | 
			
		|||
 | 
			
		||||
void P_DoQuakeOffset(UINT8 view, mappoint_t *viewPos, mappoint_t *offset)
 | 
			
		||||
{
 | 
			
		||||
	const boolean battle = (gametyperules & GTR_PRISONS) && !battleprisons;
 | 
			
		||||
	const player_t *viewer = &players[ displayplayers[view] ];
 | 
			
		||||
	quake_t *quake = NULL;
 | 
			
		||||
	fixed_t ir = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -9522,7 +9523,8 @@ void P_DoQuakeOffset(UINT8 view, mappoint_t *viewPos, mappoint_t *offset)
 | 
			
		|||
		// Modulate with distance from epicenter, if it exists.
 | 
			
		||||
		if (quake->radius > 0 && quake->epicenter != NULL)
 | 
			
		||||
		{
 | 
			
		||||
			const fixed_t distBuffer = 256 * mapobjectscale; // add a small buffer zone before it starts to drop off
 | 
			
		||||
			const fixed_t denom = battle ? 2 : 1;
 | 
			
		||||
			const fixed_t distBuffer = 256 * mapobjectscale / denom; // add a small buffer zone before it starts to drop off
 | 
			
		||||
			const fixed_t epidist = P_AproxDistance(
 | 
			
		||||
				P_AproxDistance(
 | 
			
		||||
					viewPos->x - quake->epicenter->x,
 | 
			
		||||
| 
						 | 
				
			
			@ -9531,7 +9533,7 @@ void P_DoQuakeOffset(UINT8 view, mappoint_t *viewPos, mappoint_t *offset)
 | 
			
		|||
				viewPos->z - quake->epicenter->z
 | 
			
		||||
			) - distBuffer;
 | 
			
		||||
 | 
			
		||||
			fixed_t distEase = FixedDiv(max(epidist, 0), quake->radius);
 | 
			
		||||
			fixed_t distEase = FixedDiv(max(epidist, 0), quake->radius / denom);
 | 
			
		||||
			distEase = min(distEase, FRACUNIT);
 | 
			
		||||
			ir = Easing_InCubic(distEase, ir, 0);
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -9560,7 +9562,14 @@ void P_DoQuakeOffset(UINT8 view, mappoint_t *viewPos, mappoint_t *offset)
 | 
			
		|||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	const fixed_t maxShake = FixedMul(cv_cam_height[view].value, mapobjectscale) * 3 / 4;
 | 
			
		||||
	fixed_t maxShake = FixedMul(cv_cam_height[view].value, mapobjectscale) * 3 / 4;
 | 
			
		||||
 | 
			
		||||
	if (battle)
 | 
			
		||||
	{
 | 
			
		||||
		addZ /= 2;
 | 
			
		||||
		maxShake /= 2;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (addZ > maxShake)
 | 
			
		||||
	{
 | 
			
		||||
		// Cap screen shake between reasonable values
 | 
			
		||||
| 
						 | 
				
			
			@ -9573,11 +9582,6 @@ void P_DoQuakeOffset(UINT8 view, mappoint_t *viewPos, mappoint_t *offset)
 | 
			
		|||
		addZ = -addZ;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if ((gametyperules & GTR_PRISONS) && !battleprisons)
 | 
			
		||||
	{
 | 
			
		||||
		addZ /= 2;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (cv_screenshake.value == 1) // Half
 | 
			
		||||
	{
 | 
			
		||||
		addZ /= 2;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue