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