All pastes #1052439 Raw Edit

SSBSS code changes by Turtle Man

public c v1 · immutable
#1052439 ·published 2008-06-21 13:08 UTC
rendered paste body
Index: src/d_netcmd.c===================================================================--- src/d_netcmd.c	(revision 3385)+++ src/d_netcmd.c	(working copy)@@ -365,9 +365,15 @@ static CV_PossibleValue_t timelimit_cons_t[] = {{0, "MIN"}, {30, "MAX"}, {0, NULL}}; consvar_t cv_timelimit = {"timelimit", "0", CV_NETVAR|CV_CALL|CV_NOINIT, timelimit_cons_t, 	TimeLimit_OnChange, 0, NULL, NULL, 0, 0, NULL};+#ifdef SCALECVAR+static CV_PossibleValue_t numlump_cons_t[] = {{1, "MIN"}, {400, "MAX"}, {0, NULL}};+consvar_t cv_numlaps = {"scale", "100", CV_NETVAR|CV_CALL|CV_NOINIT, numlump_cons_t,+	NumLaps_OnChange, 0, NULL, NULL, 0, 0, NULL};+#else static CV_PossibleValue_t numlump_cons_t[] = {{0, "MIN"}, {50, "MAX"}, {0, NULL}}; consvar_t cv_numlaps = {"numlaps", "4", CV_NETVAR|CV_CALL|CV_NOINIT, numlump_cons_t, 	NumLaps_OnChange, 0, NULL, NULL, 0, 0, NULL};+#endif  consvar_t cv_forceskin = {"forceskin", "No", CV_NETVAR|CV_CALL, CV_YesNo, ForceSkin_OnChange, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_downloading = {"downloading", "On", 0, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};@@ -3059,10 +3065,18 @@  static void NumLaps_OnChange(void) {+#ifdef SCALECVAR+	if (players[0].mo)+	{+		// Set the destscale to resize player.+		players[0].mo->destscale = cv_numlaps.value;+	}+#else 	if (gametype != GT_RACE) 		return; // Just don't be verbose  	CONS_Printf("Number of laps set to %d\n", cv_numlaps.value);+#endif }  static void NetTimeout_OnChange(void)Index: src/doomdef.h===================================================================--- src/doomdef.h	(revision 3385)+++ src/doomdef.h	(working copy)@@ -93,6 +93,16 @@ #endif  #ifdef SMASH+#define SCALESIZE // Copied from SRB2JTE made by JTE.+#define SCALESPEEDS // Copied from SRB2JTE made by JTE.+#define SCALEGRAVITY // Copied from SRB2JTE made by JTE.+#define SCALECVAR // Changed "numlaps" to "scale". Disable for RELEASE. Turtle Man++#if (defined SCALESIZE || defined SCALESPEEDS || defined SCALEGRAVITY)+#define FIXEDSCALE(x,y) FixedDiv(FixedMul((y)<<FRACBITS,(x)),100<<FRACBITS)+#define FIXEDUNSCALE(x,y) ((y) == 0 ? 0 : FixedDiv(FixedMul((100<<FRACBITS),(x)),(y)<<FRACBITS))+#endif+ #define VERSION 190 // Game version #define VERSIONSTRING " v1.90.1" #elif defined (BOMB)Index: src/p_map.c===================================================================--- src/p_map.c	(revision 3385)+++ src/p_map.c	(working copy)@@ -156,6 +156,12 @@  	object->momz = spring->info->speed; +#ifdef SCALEGRAVITY+	// Scale spring power too?+	if (object->scale != 100)+		object->momz = FIXEDSCALE(object->momz,object->scale);+#endif+ 	P_TryMove(object, object->x, object->y, true);  	if (spring->info->damage)@@ -2087,6 +2093,10 @@ 	if (!(thing->flags & MF_NOCLIP)) 	{ 		fixed_t maxstep = MAXSTEPMOVE;+#ifdef SCALESIZE+		if (thing->scale != 100)+			maxstep = FIXEDSCALE(MAXSTEPMOVE, thing->scale);+#endif  		if (thing->player) 		{@@ -2160,7 +2170,11 @@  		if (!allowdropoff) 			if (!(thing->flags & (MF_FLOAT)) && thing->type != MT_SKIM && !tmfloorthing+#ifdef SCALESIZE+				&& tmfloorz - tmdropoffz > maxstep)+#else 				&& tmfloorz - tmdropoffz > MAXSTEPMOVE)+#endif 				return false; // don't stand over a dropoff 	} Index: src/p_mobj.c===================================================================--- src/p_mobj.c	(revision 3385)+++ src/p_mobj.c	(working copy)@@ -492,6 +492,11 @@ 		} 	} +#ifdef SCALEGRAVITY+	if (mo->scale != 100)+		gravityadd = FIXEDSCALE(gravityadd,mo->scale);+#endif+ 	if (affect) 		mo->momz += gravityadd/NEWTICRATERATIO; @@ -1521,6 +1526,10 @@ 				{ 					mo->player->deltaviewheight = mo->momz>>3; 				}+#ifdef SCALESIZE+				if (mo->scale != 100)+					mo->player->deltaviewheight = FIXEDSCALE(mo->player->deltaviewheight,mo->scale);+#endif 			}  			if (mo->eflags & MF_VERTICALFLIP)@@ -1862,18 +1871,34 @@ 				|| rover->flags & FF_SOLID) 				continue; +#ifdef SCALESIZE 			if (mobj->eflags & MF_VERTICALFLIP) 			{+				if (*rover->topheight < (mobj->z + FIXEDSCALE(mobj->info->height/2,mobj->scale))+					|| *rover->bottomheight > (mobj->z + mobj->info->height))+					continue;+			}+			else if (*rover->topheight < mobj->z+				|| *rover->bottomheight > (mobj->z + FIXEDSCALE(mobj->info->height/2,mobj->scale)))+#else+			if (mobj->eflags & MF_VERTICALFLIP)+			{ 				if (*rover->topheight < (mobj->z + (mobj->info->height/2)) 					|| *rover->bottomheight > (mobj->z + mobj->info->height)) 					continue; 			} 			else if (*rover->topheight < mobj->z 				|| *rover->bottomheight > (mobj->z + (mobj->info->height/2)))+#endif 				continue; +#ifdef SCALESIZE 			if (((mobj->eflags & MF_VERTICALFLIP) && mobj->z < *rover->bottomheight)+				|| (!(mobj->eflags & MF_VERTICALFLIP) && mobj->z + FIXEDSCALE(mobj->info->height,mobj->scale) > *rover->topheight))+#else+			if (((mobj->eflags & MF_VERTICALFLIP) && mobj->z < *rover->bottomheight) 				|| (!(mobj->eflags & MF_VERTICALFLIP) && mobj->z + mobj->info->height > *rover->topheight))+#endif 				mobj->eflags |= MF_TOUCHWATER; 			else 				mobj->eflags &= ~MF_TOUCHWATER;@@ -1882,8 +1907,13 @@ 			mobj->watertop = *rover->topheight; 			mobj->waterbottom = *rover->bottomheight; +#ifdef SCALESIZE+			if (((mobj->eflags & MF_VERTICALFLIP) && mobj->z + FIXEDSCALE(mobj->info->height/2,mobj->scale) > *rover->bottomheight)+				|| (!(mobj->eflags & MF_VERTICALFLIP) && mobj->z + FIXEDSCALE(mobj->info->height/2,mobj->scale) < *rover->topheight))+#else 			if (((mobj->eflags & MF_VERTICALFLIP) && mobj->z + (mobj->info->height/2) > *rover->bottomheight) 				|| (!(mobj->eflags & MF_VERTICALFLIP) && mobj->z + (mobj->info->height/2) < *rover->topheight))+#endif 			{ 				mobj->eflags |= MF_UNDERWATER; @@ -1930,10 +1960,18 @@  		// Check to make sure you didn't just cross into a sector to jump out of 		// that has shallower water than the block you were originally in.+#ifdef SCALESIZE+		if (!(mobj->eflags & MF_VERTICALFLIP) && mobj->watertop-mobj->floorz <= FIXEDSCALE(mobj->info->height,mobj->scale)>>1)+#else 		if (!(mobj->eflags & MF_VERTICALFLIP) && mobj->watertop-mobj->floorz <= mobj->info->height>>1)+#endif 			return; +#ifdef SCALESIZE+		if ((mobj->eflags & MF_VERTICALFLIP) && mobj->ceilingz-mobj->waterbottom <= FIXEDSCALE(mobj->info->height,mobj->scale)>>1)+#else 		if ((mobj->eflags & MF_VERTICALFLIP) && mobj->ceilingz-mobj->waterbottom <= mobj->info->height>>1)+#endif 			return;  		if (wasinwater && ((mobj->eflags & MF_VERTICALFLIP && mobj->momz < 0) || (!(mobj->eflags & MF_VERTICALFLIP) && mobj->momz > 0)))@@ -1945,8 +1983,13 @@  		if ((mobj->eflags & MF_VERTICALFLIP && mobj->momz > 0) || (!(mobj->eflags & MF_VERTICALFLIP) && mobj->momz < 0)) 		{+#ifdef SCALESIZE+			if ((mobj->eflags & MF_VERTICALFLIP && mobj->z+(FIXEDSCALE(mobj->info->height,mobj->scale)>>1)-mobj->momz <= mobj->waterbottom)+				|| (!(mobj->eflags & MF_VERTICALFLIP) && mobj->z+(FIXEDSCALE(mobj->info->height,mobj->scale)>>1)-mobj->momz >= mobj->watertop))+#else 			if ((mobj->eflags & MF_VERTICALFLIP && mobj->z+(mobj->info->height>>1)-mobj->momz <= mobj->waterbottom) 				|| (!(mobj->eflags & MF_VERTICALFLIP) && mobj->z+(mobj->info->height>>1)-mobj->momz >= mobj->watertop))+#endif 			{ 				// Spawn a splash 				if (mobj->eflags & MF_VERTICALFLIP)@@ -1970,8 +2013,13 @@ 		} 		else if ((mobj->eflags & MF_VERTICALFLIP && mobj->momz < 0) || (!(mobj->eflags & MF_VERTICALFLIP) && mobj->momz > 0)) 		{+#ifdef SCALESIZE+			if ((mobj->eflags & MF_VERTICALFLIP && mobj->z+(FIXEDSCALE(mobj->info->height,mobj->scale)>>1)-mobj->momz > mobj->waterbottom)+				|| (!(mobj->eflags & MF_VERTICALFLIP) && mobj->z+(FIXEDSCALE(mobj->info->height,mobj->scale)>>1)-mobj->momz < mobj->watertop))+#else 			if ((mobj->eflags & MF_VERTICALFLIP && mobj->z+(mobj->info->height>>1)-mobj->momz > mobj->waterbottom) 				|| (!(mobj->eflags & MF_VERTICALFLIP) && mobj->z+(mobj->info->height>>1)-mobj->momz < mobj->watertop))+#endif 			{ 				// Spawn a splash 				if (mobj->eflags & MF_VERTICALFLIP)@@ -2048,10 +2096,18 @@ 			if (!(rover->flags & FF_EXISTS) || !(rover->flags & FF_SWIMMABLE) || rover->flags & FF_SOLID) 				continue; 			if (*rover->topheight <= mobj->z+#ifdef SCALESIZE+				|| *rover->bottomheight > (mobj->z + (FIXEDSCALE(mobj->info->height,mobj->scale) >> 1)))+#else 				|| *rover->bottomheight > (mobj->z + (mobj->info->height >> 1)))+#endif 				continue; +#ifdef SCALESIZE+			if (mobj->z + FIXEDSCALE(mobj->info->height,mobj->scale) > *rover->topheight)+#else 			if (mobj->z + mobj->info->height > *rover->topheight)+#endif 				mobj->eflags |= MF_TOUCHWATER; 			else 				mobj->eflags &= ~MF_TOUCHWATER;@@ -2060,7 +2116,11 @@ 			mobj->watertop = *rover->topheight; 			mobj->waterbottom = *rover->bottomheight; +#ifdef SCALESIZE+			if (mobj->z + (FIXEDSCALE(mobj->info->height,mobj->scale) >> 1) < *rover->topheight)+#else 			if (mobj->z + (mobj->info->height >> 1) < *rover->topheight)+#endif 				mobj->eflags |= MF_UNDERWATER; 			else 				mobj->eflags &= ~MF_UNDERWATER;@@ -2129,6 +2189,10 @@ { 	(void)onmobj; 	mo->player->deltaviewheight = mo->momz>>3;+#ifdef SCALESIZE+	if (mo->scale != 100)+		mo->player->deltaviewheight = FIXEDSCALE(mo->player->deltaviewheight,mo->scale);+#endif }  // P_CameraThinker@@ -3147,14 +3211,64 @@ // void P_SetScale(mobj_t *mobj, USHORT newscale) {+#if (defined SCALEGRAVITY || defined SCALESPEEDS || defined SCALESIZE)+	player_t *player;+#endif 	if (!mobj || newscale == mobj->scale) 		return;  	mobj->scale = newscale;-/*#ifdef SMASH++#ifdef SCALESIZE 	mobj->radius = FIXEDSCALE(mobj->info->radius,newscale); 	mobj->height = FIXEDSCALE(mobj->info->height,newscale);-#endif*/+#endif++#if (defined SCALEGRAVITY || defined SCALESPEEDS || defined SCALESIZE)+	if ((player = mobj->player) != NULL)+	{+#ifdef SCALEGRAVITY+		player->jumpfactor = FIXEDSCALE(atoi(skins[player->skin].jumpfactor),newscale);+#endif+#ifdef SCALESPEEDS+		if (FIXEDSCALE(atoi(skins[player->skin].normalspeed),newscale) < MAXMOVE)+			player->normalspeed = FIXEDSCALE(atoi(skins[player->skin].normalspeed),newscale);+		else+			player->normalspeed = MAXMOVE;+		//player->thrustfactor = FIXEDUNSCALE(atoi(skins[player->skin].thrustfactor),newscale);+		//player->accelstart = FIXEDUNSCALE(atoi(skins[player->skin].accelstart),newscale);+		//player->acceleration = FIXEDUNSCALE(atoi(skins[player->skin].acceleration),newscale);+		player->runspeed = FIXEDSCALE(atoi(skins[player->skin].runspeed),newscale);+#endif+#ifdef SCALESIZE+		if (player-players == displayplayer && !twodlevel+#ifdef SCALEMARIO+			&& !mariomode+#endif+		)+		{+			if (FIXEDSCALE(atoi(cv_viewheight.defaultvalue),newscale) < 0)+				cv_viewheight.value = 0;+			else+				cv_viewheight.value = FIXEDSCALE(atoi(cv_viewheight.defaultvalue),newscale);++			if (FIXEDSCALE(atoi(cv_cam_dist.defaultvalue),newscale) < 5)+				CV_SetValue(&cv_cam_dist,5);+			else+				CV_SetValue(&cv_cam_dist,FIXEDSCALE(atoi(cv_cam_dist.defaultvalue),newscale));++			if (FIXEDSCALE(atoi(cv_cam_height.defaultvalue),newscale) < 0)+				CV_SetValue(&cv_cam_height,0);+			else+				CV_SetValue(&cv_cam_height,FIXEDSCALE(atoi(cv_cam_height.defaultvalue),newscale));++#define FLOATSCALE(x,y) ((y)*(x)/100.0f)+			CV_Set(&cv_cam_speed,va("%f",FLOATSCALE(atof(cv_cam_speed.defaultvalue),(float)(abs(100-newscale)+100))));+#undef FLOATSCALE+		}+#endif+	}+#endif }  // Returns true if no boss with health is in the level.Index: src/p_user.c===================================================================--- src/p_user.c	(revision 3385)+++ src/p_user.c	(working copy)@@ -144,6 +144,30 @@ { 	angle >>= ANGLETOFINESHIFT; +#ifdef SCALESPEEDS+	if (mo->scale != 100 && move)+	{+		if (move > 0)+		{+			if (mo->scale < 100 && move-FIXEDSCALE(move,mo->scale) > 0)+				move = FIXEDSCALE(move,mo->scale); // Then do the scaled move instead.+			else if (mo->scale > 100 && FIXEDSCALE(move,mo->scale)-move > 0)+				move = FIXEDSCALE(move,mo->scale); // Then do the scaled move instead.+			else // Uh oh!1...+				move = MAXMOVE;+		}+		else+		{+			if (mo->scale < 100 && move-FIXEDSCALE(move,mo->scale) < 0)+				move = FIXEDSCALE(move,mo->scale); // Then do the scaled move instead.+			else if (mo->scale > 100 && FIXEDSCALE(move,mo->scale)-move < 0)+				move = FIXEDSCALE(move,mo->scale); // Then do the scaled move instead.+			else // Uh oh!1...+				move = -MAXMOVE;+		}+	}+#endif+ 	mo->momx = FixedMul(move, FINECOSINE(angle));  	if (!(twodlevel || (mo->flags2 & MF2_TWOD)))@@ -1933,6 +1957,10 @@ 		if (player->climbing) 		{ 			player->mo->momz = FixedDiv(cmd->forwardmove*FRACUNIT,10*FRACUNIT);+#ifdef SCALESPEEDS+			if (player->mo->scale != 100)+				player->mo->momz = FIXEDSCALE(player->mo->momz, player->mo->scale);+#endif 		} 		else if (player->powers[pw_sneakers] || player->powers[pw_super]) // super sneakers? 			movepushforward = cmd->forwardmove * ((thrustfactor*2)*acceleration);@@ -2033,6 +2061,10 @@ 				// Thrust in the direction of the controls 				P_InstaThrust(player->mo, player->mo->angle-ANG90, FixedDiv(cmd->sidemove*FRACUNIT,10*FRACUNIT)); 				player->mo->momz = FixedDiv(cmd->forwardmove*FRACUNIT,10*FRACUNIT);+#ifdef SCALESPEEDS+				if (player->mo->scale != 100)+					player->mo->momz = FIXEDSCALE(player->mo->momz, player->mo->scale);+#endif 			}  			else if (player->powers[pw_sneakers] || player->powers[pw_super]) // super sneakers?@@ -2997,7 +3029,11 @@ 		player->mo->momz = -20*FRACUNIT;  	// You can create splashes as you fly across water.+#ifdef SCALESIZE+	if (player->mo->z + player->mo->height >= player->mo->watertop && player->mo->z <= player->mo->watertop && player->speed > 9000 && leveltime % (TICRATE/7) == 0)+#else 	if (player->mo->z + player->mo->info->height >= player->mo->watertop && player->mo->z <= player->mo->watertop && player->speed > 9000 && leveltime % (TICRATE/7) == 0)+#endif 		S_StartSound(P_SpawnMobj(player->mo->x, player->mo->y, player->mo->watertop, MT_SPLISH), sfx_wslap);  	// Spawn Sonic's bubbles@@ -4959,6 +4995,11 @@ 		{ 			if (player->pflags & PF_WALKINGANIM) 			{+#ifdef SCALESPEEDS // Turtle Man: Change this?+				if (player->speed*FRACUNIT > FIXEDSCALE(12*FRACUNIT,player->mo->scale))+					playerstatetics[player-players][player->mo->state->nextstate] = 2*NEWTICRATERATIO;+				else if (player->speed*FRACUNIT > FIXEDSCALE(6*FRACUNIT,player->mo->scale))+#else #ifdef SMASH // Shuffle's BETTER2DMODE thing. 				if (twodlevel || (player->mo->flags2 & MF2_TWOD)) 				{@@ -4978,13 +5019,18 @@ 				if (player->speed > 12) 					playerstatetics[player-players][player->mo->state->nextstate] = 2*NEWTICRATERATIO; 				else if (player->speed > 6)+#endif 					playerstatetics[player-players][player->mo->state->nextstate] = 3*NEWTICRATERATIO; 				else 					playerstatetics[player-players][player->mo->state->nextstate] = 4*NEWTICRATERATIO; 			} 			else if (player->pflags & PF_RUNNINGANIM) 			{+#ifdef SCALESPEEDS+				if (player->speed*FRACUNIT > FIXEDSCALE(52*FRACUNIT,player->mo->scale))+#else 				if (player->speed > 52)+#endif 					playerstatetics[player-players][player->mo->state->nextstate] = 1*NEWTICRATERATIO; 				else 					playerstatetics[player-players][player->mo->state->nextstate] = 2*NEWTICRATERATIO;@@ -6213,7 +6259,11 @@ 		&& (player->rmomy < 5*FRACUNIT/NEWTICRATERATIO 		&& player->rmomy > -5*FRACUNIT/NEWTICRATERATIO)) 	{+#ifdef SCALESIZE+		if (player->mo->subsector->sector->special == 979 || (player->mo->ceilingz - player->mo->floorz < player->mo->height))+#else 		if (player->mo->subsector->sector->special == 979 || (player->mo->ceilingz - player->mo->floorz < player->mo->info->height))+#endif 			P_InstaThrust(player->mo, player->mo->angle, 10*FRACUNIT); 		else 		{@@ -8221,6 +8271,11 @@ 	else 		player->mo->height = player->mo->info->height; +#ifdef SCALESIZE+	if (player->mo->scale != 100)+		player->mo->height = FIXEDSCALE(player->mo->height,player->mo->scale);+#endif+ 	// Crush test... 	if ((player->mo->ceilingz - player->mo->floorz < player->mo->height) 		&& !(player->mo->flags & MF_NOCLIP))@@ -10728,6 +10783,11 @@ 	{ 		player->mo->height = FixedDiv(player->mo->info->height, FixedDiv(14*FRACUNIT,10*FRACUNIT)); +#ifdef SCALESIZE+		if (player->mo->scale != 100)+			player->mo->height = FIXEDSCALE(player->mo->height,player->mo->scale);+#endif+ 		if (player->mo->eflags & MF_VERTICALFLIP) 		{ 			if ((player->mo->tracer->z + player->mo->tracer->height + player->mo->height + FRACUNIT) <= player->mo->tracer->ceilingz)Index: src/r_things.c===================================================================--- src/r_things.c	(revision 3385)+++ src/r_things.c	(working copy)@@ -149,8 +149,10 @@ static size_t maxframe; static const char *spritename; +#if !(defined FIXEDSCALE && defined FIXEDUNSCALE) #define FIXEDSCALE(x,y) FixedDiv(FixedMul((y)<<FRACBITS,(x)),100<<FRACBITS) #define FIXEDUNSCALE(x,y) ((y) == 0 ? 0 : FixedDiv(FixedMul((100<<FRACBITS),(x)),(y)<<FRACBITS))+#endif  // ========================================================================== //