diff options
Diffstat (limited to 'src/GameTick.cpp')
-rw-r--r-- | src/GameTick.cpp | 176 |
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){ |