summary refs log tree commit diff
path: root/src/GameTick.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/GameTick.cpp')
-rw-r--r--src/GameTick.cpp237
1 files changed, 63 insertions, 174 deletions
diff --git a/src/GameTick.cpp b/src/GameTick.cpp
index a848289..8adbbfe 100644
--- a/src/GameTick.cpp
+++ b/src/GameTick.cpp
@@ -565,12 +565,7 @@ void Game::Tick()
 				inblock=0;
 
 				//Ground collision
-
-				move=0;
-
-				move.x=i*block_spacing;
-
-				move.z=j*block_spacing;
+				move = {(float) i * block_spacing, 0.0f, (float) j * block_spacing};
 
 				whichtri=sidewalkcollide.LineCheck2(overpoint,underpoint,&collpoint,move,cityrotation[i][j]*90);
 
@@ -601,13 +596,7 @@ void Game::Tick()
 					if(inblock){
 
 						for(int l=0;l<8;l++){
-
-							move=0;
-
-							move.x=i*block_spacing;
-
-							move.z=j*block_spacing;
-
+							move = {(float) i * block_spacing, 0.0f, (float) j * block_spacing};
 							whichtri=blockwalls[citytype[i][j]].LineCheck3(person[k].oldplayercoords+boundingpoints[l],person[k].playercoords+boundingpoints[l],&collpoint,move,cityrotation[i][j]*90,&depth);
 
 							if(whichtri!=-1){
@@ -625,13 +614,7 @@ void Game::Tick()
 							pointnum=k+1;
 
 							if(pointnum>3)pointnum=0;
-
-							move=0;
-
-							move.x=i*block_spacing;
-
-							move.z=j*block_spacing;
-
+							move = {(float) i * block_spacing, 0.0f, (float) j * block_spacing};
 							whichtri=blockwalls[citytype[i][j]].LineCheck3(person[k].playercoords+boundingpoints[l],person[k].playercoords+boundingpoints[pointnum],&collpoint,move,cityrotation[i][j]*90,&depth);
 
 							if(whichtri!=-1){
@@ -651,13 +634,7 @@ void Game::Tick()
 					if(inblock&&person[k].playercoords.y>30){
 
 						if(!person[k].onground){
-
-							move=0;
-
-							move.x=i*block_spacing;
-
-							move.z=j*block_spacing;
-
+							move = {(float) i * block_spacing, 0.0f, (float) j * block_spacing};
 							whichtri=blockroofs[citytype[i][j]].LineCheck2(overpoint,underpoint,&collpoint,move,cityrotation[i][j]*90);
 
 							if(whichtri!=-1&&person[k].playercoords.y<=collpoint.y&&person[k].velocity.y<=0){
@@ -702,10 +679,9 @@ void Game::Tick()
 
 	}
 
-	//Camera
-	camera.oldposition=camera.position;
-	camera.targetoffset=0;
-	camera.targetoffset.z=-5;
+	// Camera
+	camera.oldposition = camera.position;
+	camera.targetoffset = {0.0f, 0.0f, -5.0f};
 
 	// Spawn people
 	int cyclenum = 0;
@@ -935,24 +911,23 @@ void Game::Tick()
 				underpoint=person[i].skeleton.joints[abdomen].position;
 				underpoint.y-=3000;
 
-				move=0;
-				move.x=person[i].whichblockx*block_spacing;
-				move.z=person[i].whichblocky*block_spacing;
+				move = {
+					(float) person[i].whichblockx * block_spacing,
+					0.0f,
+					(float) person[i].whichblocky * block_spacing,
+				};
 
 				XYZ temp;
 				whichtri=sidewalkcollide.LineCheck2(overpoint,underpoint,&temp,move,cityrotation[person[i].whichblockx][person[i].whichblocky]*90);
 
-				XYZ normish;
-				normish=0;
-				normish.y=1;
-
+				XYZ normish {0.0f, 1.0f, 0.0f};
 				if(whichtri>=0){
 					decals.MakeDecal(bloodpool,temp,12,normish, whichtri, &sidewalkcollide, move, cityrotation[person[i].whichblockx][person[i].whichblocky]*90);
 				}
 				if(whichtri==-1){
 					temp=person[i].skeleton.joints[abdomen].position;
 					temp.y=-.5;
-					move=0;
+					move = {};
 					decals.MakeDecal(bloodpool,temp,12,normish, 0, &sidewalkcollide, move, 0);
 				}
 
@@ -1008,7 +983,7 @@ void Game::Tick()
 				if(person[i].skeleton.free>0){
 					bleedloc=(person[i].bjoint1->position+person[i].bjoint2->position)/2;
 				}
-				vel=0;
+				vel = {};
 				sprites.MakeSprite(bloodspritedown, .6, 1, .2, .2,bleedloc, vel, 3*person[i].bleeding);
 			}
 
@@ -1064,9 +1039,9 @@ void Game::Tick()
 
 				for(int k=0;k<2;k++){
 					person[person[i].killtarget].skeleton.joints[head].position=DoRotation(person[i].skeleton.joints[righthand].position,0,person[i].playerrotation,0)+person[i].playercoords;
-					person[person[i].killtarget].skeleton.joints[head].velocity=0;
+					person[person[i].killtarget].skeleton.joints[head].velocity = {};
 					person[person[i].killtarget].skeleton.joints[rightshoulder].position=DoRotation(person[i].skeleton.joints[lefthand].position,0,person[i].playerrotation,0)+person[i].playercoords;
-					person[person[i].killtarget].skeleton.joints[rightshoulder].velocity=0;
+					person[person[i].killtarget].skeleton.joints[rightshoulder].velocity = {};
 					person[person[i].killtarget].skeleton.DoConstraints();
 					person[person[i].killtarget].skeleton.DoConstraints(&blocksimplecollide[citytype[person[i].whichblockx][person[i].whichblocky]],&move,cityrotation[person[i].whichblockx][person[i].whichblocky]*90);
 				}
@@ -1524,16 +1499,18 @@ void Game::Tick()
 			person[i].whichblockx=((person[i].skeleton.joints[0].position.x+block_spacing/2)/block_spacing);
 			person[i].whichblocky=((person[i].skeleton.joints[0].position.z+block_spacing/2)/block_spacing);
 
-			move=0;
-			move.x=person[i].whichblockx*block_spacing;
-			move.z=person[i].whichblocky*block_spacing;
+			move = {
+				(float) person[i].whichblockx * block_spacing,
+				0.0f,
+				(float) person[i].whichblocky * block_spacing,
+			};
 			person[i].skeleton.DoGravity();
 
 			if(person[i].averageloc.y<=50)person[i].skeleton.DoConstraints(&blocksimplecollide[citytype[person[i].whichblockx][person[i].whichblocky]],&move,cityrotation[person[i].whichblockx][person[i].whichblocky]*90);
 			if(person[i].averageloc.y>50)person[i].skeleton.DoConstraints(&blockcollide[citytype[person[i].whichblockx][person[i].whichblocky]],&move,cityrotation[person[i].whichblockx][person[i].whichblocky]*90);
 
 			person[i].oldaverageloc=person[i].averageloc;
-			person[i].averageloc=0;
+			person[i].averageloc = {};
 
 			for (auto& joint : person[i].skeleton.joints)
 				person[i].averageloc += joint.position;
@@ -1570,7 +1547,7 @@ void Game::Tick()
 			person[i].playerrotation*=360/6.28;
 			if(0>firsttop.x)person[i].playerrotation=360-person[i].playerrotation;
 			person[i].playerrotation*=-1;
-			person[i].playervelocity=0;
+			person[i].playervelocity = {};
 			if(person[i].targetanimation==getupfrontanim)person[i].playerrotation+=180;
 
 			for (int j = 0; j < max_joints; ++j) {
@@ -1917,10 +1894,8 @@ void Game::Tick()
 
 				}
 
-				//Blocks
-
-				wallhit=0;
-
+				// Blocks
+				wallhit = {};
 				beginx=(person[j].playercoords.x+block_spacing/2)/block_spacing-3;
 
 				if(beginx<0)beginx=0;
@@ -1939,18 +1914,10 @@ void Game::Tick()
 
 				if(beginx<endx&&beginz<endz)
 
-				finalwallhit=0;
-
+				finalwallhit = {};
 				for(int i=beginx;i<=endx;i++)
-
 					for(int j=beginz;j<=endz;j++){
-
-						move=0;
-
-						move.x=i*block_spacing;
-
-						move.z=j*block_spacing;
-
+						move = {(float) i * block_spacing, 0.0f, (float) j * block_spacing};
 						whichtri=blocks[citytype[i][j]].LineCheck2(start,end,&wallhit,move,cityrotation[i][j]*90);
 
 						if(whichtri!=-1){
@@ -1972,37 +1939,20 @@ void Game::Tick()
 							model=&blocks[citytype[i][j]];
 
 							if(j==0&&blocks[citytype[i][j]].normals[whichtri].y>.9)bulletstrength=2;
-
 						}
-
 					}
-
-				wallhit=0;
-
-				wallhit.x=camera.position.x;
-
-				wallhit.z=camera.position.z;
+				wallhit = {camera.position.x, 0.0f, camera.position.z};
 
 				whichtri=Bigstreet.LineCheck2(start,end,&wallhit,wallhit,0);
 
 				if(whichtri!=-1){
-
 					end.y-=.5;
-
 					end=wallhit;
-
 					finalwallhit=wallhit;
-
 					bulletstrength=2;
-
-					hitnorm=0;
-
-					hitnorm.y=1;
-
-					hitmove=0;
-
+					hitnorm = {0.0f, 1.0f, 0.0f};
+					hitmove = {};
 					hitrotation=0;
-
 				}
 
 				if(m==0){
@@ -2349,25 +2299,18 @@ void Game::Tick()
 
 				if(j!=0||zoom==0)sprites.MakeSprite(bullet, .07, 1, 1, .7, lastshot[0]+aim*1, lastshot[1], .2);
 
-				//Nearby bullet whoosh
-
-				long dot_ta,dot_tb;
-
-				XYZ *a,*b,*c,nearest;
-
-				a=&lastshot[0];
-
-				*a+=aim*1;
-
-				b=&lastshot[1];
-
-				c=&camera.position;
-
-				nearest=0;
-
-				dot_ta = (c->x - a->x)*(b->x - a->x) + (c->y - a->y)*(b->y - a->y) + (c->z - a->z)*(b->z - a->z);
-
-				dot_tb = (c->x - b->x)*(a->x - b->x) + (c->y - b->y)*(a->y - b->y) + (c->z - b->z)*(a->z - b->z);
+				// Nearby bullet whoosh
+				XYZ* a = &lastshot[0];
+				*a += aim;
+				XYZ* b = &lastshot[1];
+				XYZ* c = &camera.position;
+				XYZ nearest {};
+				long dot_ta = (c->x - a->x) * (b->x - a->x)
+					+ (c->y - a->y) * (b->y - a->y)
+					+ (c->z - a->z) * (b->z - a->z);
+				long dot_tb = (c->x - b->x) * (a->x - b->x)
+					+ (c->y - b->y) * (a->y - b->y)
+					+ (c->z - b->z) * (a->z - b->z);
 
 				if (dot_ta > 0 && dot_tb > 0) {
 					nearest.x = a->x + ((b->x - a->x) * dot_ta) / (dot_ta + dot_tb);
@@ -2475,10 +2418,8 @@ void Game::Tick()
 
 				end=start+aim*1000;
 
-				//Blocks
-
-				wallhit=0;
-
+				// Blocks
+				wallhit = {};
 				beginx=(person[j].playercoords.x+block_spacing/2)/block_spacing-2;
 
 				if(beginx<0)beginx=0;
@@ -2497,18 +2438,10 @@ void Game::Tick()
 
 				if(beginx<endx&&beginz<endz)
 
-				finalwallhit=0;
-
+				finalwallhit = {};
 				for(int i=beginx;i<=endx;i++)
-
 					for(int j=beginz;j<=endz;j++){
-
-						move=0;
-
-						move.x=i*block_spacing;
-
-						move.z=j*block_spacing;
-
+						move = {(float) i * block_spacing, 0.0f, (float) j * block_spacing};
 						whichtri=blocks[citytype[i][j]].LineCheck2(start,end,&wallhit,move,cityrotation[i][j]*90);
 
 						if(whichtri!=-1){
@@ -2520,13 +2453,7 @@ void Game::Tick()
 						}
 
 					}
-
-				wallhit=0;
-
-				wallhit.x=camera.position.x;
-
-				wallhit.z=camera.position.z;
-
+				wallhit = {camera.position.x, 0.0f, camera.position.z};
 				whichtri=Bigstreet.LineCheck2(start,end,&wallhit,wallhit,0);
 
 				if(whichtri!=-1){
@@ -2587,8 +2514,7 @@ void Game::Tick()
 	snowdelay-=multiplier;
 	while(snowdelay<0&&environment==snowy_environment){
 		snowdelay+=1/precipitationdensity*2;
-		velocity=0;
-		velocity.y=-5;
+		velocity = {0.0f, -5.0f, 0.0f};
 		start=camera.position;
 		start.y+=precipitationvert;
 		start.x += randUint(precipitationhorz);
@@ -2598,8 +2524,7 @@ void Game::Tick()
 
 	while(snowdelay<0&&environment==rainy_environment){
 		snowdelay+=1/precipitationdensity/4;
-		velocity=0;
-		velocity.y=-100;
+		velocity = {0.0f, -100.0f, 0.0f};
 		start=camera.position;
 		start.y+=precipitationvert;
 		start.x += randUint(precipitationhorz) * 0.5f;
@@ -2631,11 +2556,7 @@ void Game::Tick()
 
 				wherey=(sprites.location[i].z+block_spacing/2)/block_spacing;
 
-				move=0;
-
-				move.x=wherex*block_spacing;
-
-				move.z=wherey*block_spacing;
+				move = {(float) wherex * block_spacing, 0.0f, (float) wherey * block_spacing};
 
 				whichtri=blocks[citytype[wherex][wherey]].LineCheck2(sprites.oldlocation[i],sprites.location[i],&wallhit,move,cityrotation[wherex][wherey]*90);
 
@@ -2667,36 +2588,23 @@ void Game::Tick()
 						alSourcePlay(gSourceID[whichsound]);
 					}
 
-					if(findLengthfast(sprites.velocity[i])<=10)sprites.velocity[i]=0;
+					if (findLengthfast(sprites.velocity[i]) <= 10)
+						sprites.velocity[i] = {};
 
 				}
 
 				if(sprites.location[i].y<0){
-
 					impact=1;
-
-					sprites.velocity[i].y*=-1;
-
-					sprites.velocity[i]*=.3;
-
-					sprites.location[i].y=0;
+					sprites.velocity[i].y *= -1.0f;
+					sprites.velocity[i] *= 0.3f;
+					sprites.location[i].y = 0.0f;
 
 					if(sprites.type[i]==grenadesprite){
-
 						if(sprites.size[i]>1){
-
-							move=0;
-
+							move = {};
 							sprites.location[i].y=-.5;
-
-							XYZ normish;
-
-							normish=0;
-
-							normish.y=1;
-
+							XYZ normish = {0.0f, 1.0f, 0.0f};
 							decals.MakeDecal(crater, sprites.location[i],9,normish, 0, &blocks[citytype[wherex][wherey]], move, 0);
-
 						}
 
 						auto soundpos = sprites.location[i] - camera.position;
@@ -2713,7 +2621,8 @@ void Game::Tick()
 
 					}
 
-					if(findLengthfast(sprites.velocity[i])<=10)sprites.velocity[i]=0;
+					if (findLengthfast(sprites.velocity[i]) <= 10)
+						sprites.velocity[i] = {};
 
 				}
 
@@ -2828,33 +2737,19 @@ void Game::Tick()
 					//if(!sprites.size[i]>1){
 
 						overpoint=sprites.location[i];
-
 						overpoint.y+=3000;
-
 						underpoint=sprites.location[i];
-
 						underpoint.y-=3000;
-
-						move=0;
-
 						wherex=(sprites.location[i].x+block_spacing/2)/block_spacing;
-
 						wherey=(sprites.location[i].z+block_spacing/2)/block_spacing;
+						move = {(float) wherex * block_spacing, 0.0f, (float) wherey * block_spacing};
 
-						move.x=wherex*block_spacing;
-
-						move.z=wherey*block_spacing;
 
 						XYZ temp;
 
 						whichtri=sidewalkcollide.LineCheck2(overpoint,underpoint,&temp,move,cityrotation[wherex][wherey]*90);
 
-						XYZ normish;
-
-						normish=0;
-
-						normish.y=1;
-
+						XYZ normish = {0.0f, 1.0f, 0.0f};
 						if(whichtri>=0){
 
 							decals.MakeDecal(crater, sprites.location[i],9,normish, 0, &sidewalkcollide, move, cityrotation[wherex][wherey]*90);
@@ -2862,17 +2757,11 @@ void Game::Tick()
 						}
 
 						if(whichtri==-1){
-
 							temp=sprites.location[i];
-
 							temp.y=-.5;
-
-							move=0;
-
+							move = {};
 							decals.MakeDecal(crater, sprites.location[i],9,normish, 0, &sidewalkcollide, move, 0);
-
 						}
-
 					//}
 
 					for(int k=0;k<numpeople;k++){