aboutsummaryrefslogtreecommitdiff
path: root/src/GameTick.cpp
diff options
context:
space:
mode:
authorNguyễn Gia Phong <mcsinyx@disroot.org>2021-12-09 23:07:32 +0700
committerNguyễn Gia Phong <mcsinyx@disroot.org>2021-12-09 23:37:37 +0700
commit48417e11854f832c40a42ec497cad3b275b57b2e (patch)
tree73162cd7294a49ba39f0f06afd16da74dee0f6da /src/GameTick.cpp
parente4888c19818ef61264ea4e1b0da9ebdc302f1483 (diff)
downloadblackshades-48417e11854f832c40a42ec497cad3b275b57b2e.tar.gz
Make XYZ C-compatible
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++){