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.cpp176
1 files changed, 61 insertions, 115 deletions
diff --git a/src/GameTick.cpp b/src/GameTick.cpp
index 0d13e2d..d8c8801 100644
--- a/src/GameTick.cpp
+++ b/src/GameTick.cpp
@@ -206,7 +206,6 @@ void Game::handleToggles(unsigned char* theKeyMap)
 
 				camera.visrotation = camera.rotation;
 				camera.oldrotation = camera.rotation;
-				camera.oldoldrotation = camera.rotation;
 			}
 
 			person[0].playercoords = bodycoords;
@@ -251,12 +250,68 @@ void Game::handleToggles(unsigned char* theKeyMap)
 		slomo = 2;
 		score -= 20;
 
-		alSourcef(gSourceID[knifesong], AL_PITCH, (ALfloat)(.5));
-		alSourcef(gSourceID[shootsong], AL_PITCH, (ALfloat)(.5));
-		alSourcef(gSourceID[zombiesong], AL_PITCH, (ALfloat)(.5));
+		alSourcef(gSourceID[knifesong], AL_PITCH, 0.5f);
+		alSourcef(gSourceID[shootsong], AL_PITCH, 0.5f);
+		alSourcef(gSourceID[zombiesong], AL_PITCH, 0.5f);
 	}
 }
 
+void Game::mouseLook()
+{
+	if ((person[0].aimamount <= 0
+	     && person[0].targetanimation != crouchanim)) {
+		camera.rotation = camera.visrotation;
+		camera.rotation2 = camera.visrotation2;
+		mousesensitivity = usermousesensitivity;
+	} else if (person[0].aimamount >= 1 && !zoom) {
+		mousesensitivity = usermousesensitivity * 0.8;
+	}
+	if (slomo == 2)
+		mousesensitivity *= 0.6;
+
+	GetMouseRel(&mouseloc);
+	auto factor = mousesensitivity / 1.3888;
+	mouserotation = mouseloc.h * factor;
+	mouserotation2 = mouseloc.v * factor;
+	if (abs(mouseloc.h) < 400)
+		camera.rotation += mouserotation;
+	if (abs(mouseloc.v) < 200)
+		camera.rotation2 += mouserotation2;
+
+	auto hrot = factor * 500;
+	if (mouseloc.h > 400)
+		camera.rotation += mouserotation - hrot;
+	if (mouseloc.h < -400)
+		camera.rotation += mouserotation + hrot;
+
+	auto vrot = factor * 300;
+	if (mouseloc.v > 200)
+		camera.rotation2 += mouserotation2 - vrot;
+	if (mouseloc.v < -200)
+		camera.rotation2 += mouserotation2 + vrot;
+	camera.rotation2 = min(max(camera.rotation2, -89.0f), 89.0f);
+
+	// Smooth
+	camera.rotation = camera.rotation * 0.7 + camera.oldrotation * 0.3;
+	camera.rotation2 = camera.rotation2 * 0.7 + camera.oldrotation2 * 0.3;
+
+	if (zoom || visions || person[0].aimamount <= 0
+	    || person[0].whichgun == nogun
+	    || person[0].whichgun == grenade
+	    || person[0].whichgun == knife) {
+		camera.visrotation = camera.rotation;
+		camera.visrotation2 = camera.rotation2;
+	} else {
+		camera.visrotation = min(camera.rotation + 7,
+			max(camera.rotation - 7, camera.visrotation));
+		camera.visrotation2 = min(camera.rotation2 + 15,
+			max(camera.rotation2 - 15, camera.visrotation2));
+	}
+
+	camera.oldrotation = camera.rotation;
+	camera.oldrotation2 = camera.rotation2;
+}
+
 void Game::Tick()
 {
 	unsigned char theKeyMap[16];
@@ -328,117 +383,7 @@ void Game::Tick()
 	Normalise(&flatfacing);
 
 	handleToggles(theKeyMap);
-
-	// Mouse look
-	if((person[0].aimamount<=0&&person[0].targetanimation!=crouchanim)){
-
-		camera.rotation=camera.visrotation;
-
-		camera.rotation2=camera.visrotation2;
-
-		mousesensitivity=usermousesensitivity;
-
-	}
-
-	if(person[0].aimamount>=1&&zoom==0){
-
-		mousesensitivity=usermousesensitivity*.8;
-
-	}
-
-	if(slomo==2){
-
-		mousesensitivity*=.6;
-
-	}
-
-// DDOI
-	GetMouse(&mouseloc);
-
-	if (mouseloc.h>600){MoveMouse(mouseloc.h-500,mouseloc.v,&mouseloc);}
-
-	if (mouseloc.h<100){MoveMouse(mouseloc.h+500,mouseloc.v,&mouseloc);}
-
-	GetMouse(&mouseloc);
-
-	if (mouseloc.v>400){MoveMouse(mouseloc.h,mouseloc.v-300,&mouseloc);}
-
-	if (mouseloc.v<100){MoveMouse(mouseloc.h,mouseloc.v+300,&mouseloc);}
-
-	GetMouse(&mouseloc);
-
-
-	GetMouseRel(&mouseloc);
-
-
-// DDOI
-	oldmouserotation=(oldmouseloc.h/1.3888)*mousesensitivity;
-
-	oldmouserotation2=(oldmouseloc.v/1.3888)*mousesensitivity;
-
-
-	mouserotation=(mouseloc.h/1.3888)*mousesensitivity;
-
-	mouserotation2=(mouseloc.v/1.3888)*mousesensitivity;
-
-// DDOI
-	if(abs(oldmouseloc.h-mouseloc.h)<400)camera.rotation+=mouserotation-oldmouserotation;
-
-	if(abs(oldmouseloc.v-mouseloc.v)<200)camera.rotation2+=mouserotation2-oldmouserotation2;
-
-	if(mouseloc.h-oldmouseloc.h>400)camera.rotation+=mouserotation-oldmouserotation-(500/1.3888*mousesensitivity);
-
-	if(mouseloc.h-oldmouseloc.h<-400)camera.rotation+=mouserotation-oldmouserotation+(500/1.3888*mousesensitivity);
-
-	if(mouseloc.v-oldmouseloc.v>200)camera.rotation2+=mouserotation2-oldmouserotation2-(300/1.3888*mousesensitivity);
-
-	if(mouseloc.v-oldmouseloc.v<-200)camera.rotation2+=mouserotation2-oldmouserotation2+(300/1.3888*mousesensitivity);
-
-	if(abs(mouseloc.h)<400)camera.rotation+=mouserotation;
-	if(abs(mouseloc.v)<200)camera.rotation2+=mouserotation2;
-	if(mouseloc.h>400)camera.rotation+=mouserotation-(500/1.3888*mousesensitivity);
-	if(mouseloc.h<-400)camera.rotation+=mouserotation+(500/1.3888*mousesensitivity);
-
-	if(mouseloc.v>200)camera.rotation2+=mouserotation2-(300/1.3888*mousesensitivity);
-
-	if(mouseloc.v<-200)camera.rotation2+=mouserotation2+(300/1.3888*mousesensitivity);
-
-
-	if(camera.rotation2>89){camera.rotation2=89;}
-
-	if(camera.rotation2<-89){camera.rotation2=-89;}
-
-	//Smooth
-
-	camera.rotation=(camera.oldoldrotation+((camera.rotation-camera.oldoldrotation)*.7+(camera.oldrotation-camera.oldoldrotation)*.3));
-
-	camera.rotation2=(camera.oldoldrotation2+((camera.rotation2-camera.oldoldrotation2)*.7+(camera.oldrotation2-camera.oldoldrotation2)*.3));
-
-	if(camera.visrotation<camera.rotation-7)camera.visrotation=camera.rotation-7;
-
-	if(camera.visrotation>camera.rotation+7)camera.visrotation=camera.rotation+7;
-
-	if(camera.visrotation2<camera.rotation2-15)camera.visrotation2=camera.rotation2-15;
-
-	if(camera.visrotation2>camera.rotation2+15)camera.visrotation2=camera.rotation2+15;
-
-	if(zoom||person[0].aimamount<=0||person[0].whichgun==nogun||visions||person[0].whichgun==grenade||person[0].whichgun==knife){
-
-		camera.visrotation=camera.rotation;
-
-		camera.visrotation2=camera.rotation2;
-
-	}
-
-	oldzoom=zoom;
-
-	camera.oldoldrotation=camera.oldrotation;
-
-	camera.oldoldrotation2=camera.oldrotation2;
-
-	camera.oldrotation=camera.rotation;
-
-	camera.oldrotation2=camera.rotation2;
+	mouseLook();
 
 	//Check collision with buildings
 
@@ -1059,6 +1004,7 @@ void Game::Tick()
 			 	if(person[i].recoil<0)person[i].recoil=0;
 
 				if(i==0){
+					oldzoom = zoom;
 					if(zoom){
 						mousesensitivity=.05*usermousesensitivity;
 						if(person[i].targetanimation!=crouchanim||person[i].currentanimation!=crouchanim||person[i].aiming<1){