diff --git a/desktop_version/src/Ent.cpp b/desktop_version/src/Ent.cpp index b6e126af..77f655c6 100644 --- a/desktop_version/src/Ent.cpp +++ b/desktop_version/src/Ent.cpp @@ -56,6 +56,8 @@ entclass::entclass() actionframe = 0; realcol = 0; + lerpoldxp = 0; + lerpoldyp = 0; } bool entclass::outside() diff --git a/desktop_version/src/Ent.h b/desktop_version/src/Ent.h index 96c7ee87..6b66c5f4 100644 --- a/desktop_version/src/Ent.h +++ b/desktop_version/src/Ent.h @@ -49,6 +49,7 @@ public: int yp;int xp; Uint32 realcol; + int lerpoldxp, lerpoldyp; }; #endif /* ENT_H */ diff --git a/desktop_version/src/Entity.cpp b/desktop_version/src/Entity.cpp index b63f219c..510bd7e3 100644 --- a/desktop_version/src/Entity.cpp +++ b/desktop_version/src/Entity.cpp @@ -1213,8 +1213,8 @@ void entityclass::createentity( float xp, float yp, int t, float vx /*= 0*/, flo entclass entity; entity.xp = xp; entity.yp = yp; - entity.oldxp = xp; - entity.oldyp = yp; + entity.lerpoldxp = xp; + entity.lerpoldyp = yp; entity.type = t; switch(t) { @@ -1783,7 +1783,7 @@ void entityclass::createentity( float xp, float yp, int t, float vx /*= 0*/, flo entity.tile = 188 + vx; entity.colour = 37; entity.h += 3; - entity.oldyp -= 3; + entity.lerpoldyp -= 3; entity.yp -= 3; } break; @@ -2440,20 +2440,20 @@ bool entityclass::updateentities( int i ) { entities[i].tile = 120; entities[i].yp = (28*8)-62; - entities[i].oldyp = (28*8)-62; + entities[i].lerpoldyp = (28*8)-62; } else { entities[i].tile = 96; entities[i].yp = 24; - entities[i].oldyp = 24; + entities[i].lerpoldyp = 24; } //now, x position if (INBOUNDS_VEC(player, entities) && entities[player].xp > 20 * 8) { //approach from the left entities[i].xp = -64; - entities[i].oldxp = -64; + entities[i].lerpoldxp = -64; entities[i].state = 2; bool entitygone = updateentities(i); //right if (entitygone) return true; @@ -2462,7 +2462,7 @@ bool entityclass::updateentities( int i ) { //approach from the left entities[i].xp = 320; - entities[i].oldxp = 320; + entities[i].lerpoldxp = 320; entities[i].state = 3; bool entitygone = updateentities(i); //left if (entitygone) return true; @@ -2491,7 +2491,7 @@ bool entityclass::updateentities( int i ) { entities[i].statedelay = 6; entities[i].xp -= int(entities[i].para); - entities[i].oldxp -= int(entities[i].para); + entities[i].lerpoldxp -= int(entities[i].para); } break; case 18: //Special for ASCII Snake (right) @@ -2499,7 +2499,7 @@ bool entityclass::updateentities( int i ) { entities[i].statedelay = 6; entities[i].xp += int(entities[i].para); - entities[i].oldxp += int(entities[i].para); + entities[i].lerpoldxp += int(entities[i].para); } break; } @@ -4422,6 +4422,9 @@ void entityclass::updateentitylogic( int t ) return; } + entities[t].oldxp = entities[t].xp; + entities[t].oldyp = entities[t].yp; + entities[t].vx = entities[t].vx + entities[t].ax; entities[t].vy = entities[t].vy + entities[t].ay; entities[t].ax = 0; diff --git a/desktop_version/src/Game.cpp b/desktop_version/src/Game.cpp index ec31f8cb..1b67acae 100644 --- a/desktop_version/src/Game.cpp +++ b/desktop_version/src/Game.cpp @@ -1987,8 +1987,8 @@ void Game::updatestate() { obj.entities[i].xp = obj.entities[j].xp+44; obj.entities[i].yp = obj.entities[j].yp+44; - obj.entities[i].oldxp = obj.entities[i].xp; - obj.entities[i].oldyp = obj.entities[i].yp; + obj.entities[i].lerpoldxp = obj.entities[i].xp; + obj.entities[i].lerpoldyp = obj.entities[i].yp; } obj.entities[i].ay = -6; obj.entities[i].ax = 6; @@ -3361,8 +3361,8 @@ void Game::updatestate() { obj.entities[i].xp = obj.entities[j].xp+44; obj.entities[i].yp = obj.entities[j].yp+44; - obj.entities[i].oldxp = obj.entities[i].xp; - obj.entities[i].oldyp = obj.entities[i].yp; + obj.entities[i].lerpoldxp = obj.entities[i].xp; + obj.entities[i].lerpoldyp = obj.entities[i].yp; obj.entities[j].tile = 2; obj.entities[j].colour = 101; } @@ -3492,8 +3492,8 @@ void Game::updatestate() { obj.entities[i].xp = obj.entities[j].xp+44; obj.entities[i].yp = obj.entities[j].yp+44; - obj.entities[i].oldxp = obj.entities[i].xp; - obj.entities[i].oldyp = obj.entities[i].yp; + obj.entities[i].lerpoldxp = obj.entities[i].xp; + obj.entities[i].lerpoldyp = obj.entities[i].yp; obj.entities[j].tile = 2; obj.entities[j].colour = 101; } @@ -3605,8 +3605,8 @@ void Game::updatestate() { obj.entities[i].xp = obj.entities[j].xp+44; obj.entities[i].yp = obj.entities[j].yp+44; - obj.entities[i].oldxp = obj.entities[i].xp; - obj.entities[i].oldyp = obj.entities[i].yp; + obj.entities[i].lerpoldxp = obj.entities[i].xp; + obj.entities[i].lerpoldyp = obj.entities[i].yp; obj.entities[j].tile = 2; obj.entities[j].colour = 101; } @@ -3718,8 +3718,8 @@ void Game::updatestate() { obj.entities[i].xp = obj.entities[j].xp+44; obj.entities[i].yp = obj.entities[j].yp+44; - obj.entities[i].oldxp = obj.entities[i].xp; - obj.entities[i].oldyp = obj.entities[i].yp; + obj.entities[i].lerpoldxp = obj.entities[i].xp; + obj.entities[i].lerpoldyp = obj.entities[i].yp; obj.entities[j].tile = 2; obj.entities[j].colour = 101; } @@ -3836,8 +3836,8 @@ void Game::updatestate() { obj.entities[i].xp = obj.entities[j].xp+44; obj.entities[i].yp = obj.entities[j].yp+44; - obj.entities[i].oldxp = obj.entities[i].xp; - obj.entities[i].oldyp = obj.entities[i].yp; + obj.entities[i].lerpoldxp = obj.entities[i].xp; + obj.entities[i].lerpoldyp = obj.entities[i].yp; obj.entities[j].tile = 2; obj.entities[j].colour = 101; } @@ -3954,8 +3954,8 @@ void Game::updatestate() { obj.entities[i].xp = obj.entities[j].xp+44; obj.entities[i].yp = obj.entities[j].yp+44; - obj.entities[i].oldxp = obj.entities[i].xp; - obj.entities[i].oldyp = obj.entities[i].yp; + obj.entities[i].lerpoldxp = obj.entities[i].xp; + obj.entities[i].lerpoldyp = obj.entities[i].yp; obj.entities[j].tile = 2; obj.entities[j].colour = 101; } @@ -4070,8 +4070,8 @@ void Game::updatestate() { obj.entities[i].xp = obj.entities[j].xp+44; obj.entities[i].yp = obj.entities[j].yp+44; - obj.entities[i].oldxp = obj.entities[i].xp; - obj.entities[i].oldyp = obj.entities[i].yp; + obj.entities[i].lerpoldxp = obj.entities[i].xp; + obj.entities[i].lerpoldyp = obj.entities[i].yp; obj.entities[j].tile = 2; obj.entities[j].colour = 101; } @@ -4183,8 +4183,8 @@ void Game::updatestate() { obj.entities[i].xp = obj.entities[j].xp+44; obj.entities[i].yp = obj.entities[j].yp+44; - obj.entities[i].oldxp = obj.entities[i].xp; - obj.entities[i].oldyp = obj.entities[i].yp; + obj.entities[i].lerpoldxp = obj.entities[i].xp; + obj.entities[i].lerpoldyp = obj.entities[i].yp; obj.entities[j].tile = 2; obj.entities[j].colour = 101; } @@ -4296,8 +4296,8 @@ void Game::updatestate() { obj.entities[i].xp = obj.entities[j].xp+44; obj.entities[i].yp = obj.entities[j].yp+44; - obj.entities[i].oldxp = obj.entities[i].xp; - obj.entities[i].oldyp = obj.entities[i].yp; + obj.entities[i].lerpoldxp = obj.entities[i].xp; + obj.entities[i].lerpoldyp = obj.entities[i].yp; obj.entities[j].tile = 2; obj.entities[j].colour = 101; } diff --git a/desktop_version/src/Graphics.cpp b/desktop_version/src/Graphics.cpp index f6d9000d..20ebc2f3 100644 --- a/desktop_version/src/Graphics.cpp +++ b/desktop_version/src/Graphics.cpp @@ -1633,8 +1633,8 @@ void Graphics::drawentities() continue; } - int xp = lerp(obj.entities[i].oldxp, obj.entities[i].xp); - int yp = lerp(obj.entities[i].oldyp, obj.entities[i].yp); + int xp = lerp(obj.entities[i].lerpoldxp, obj.entities[i].xp); + int yp = lerp(obj.entities[i].lerpoldyp, obj.entities[i].yp); switch (obj.entities[i].size) { diff --git a/desktop_version/src/Logic.cpp b/desktop_version/src/Logic.cpp index 3b5984db..8622c88e 100644 --- a/desktop_version/src/Logic.cpp +++ b/desktop_version/src/Logic.cpp @@ -1070,7 +1070,7 @@ void gamelogic() obj.moveblockto(obj.entities[i].xp, obj.entities[i].yp, obj.entities[i].xp + 400, obj.entities[i].yp, obj.entities[i].w, obj.entities[i].h); } obj.entities[i].xp += 400; - obj.entities[i].oldxp += 400; + obj.entities[i].lerpoldxp += 400; } else if (obj.entities[i].xp > 320) { @@ -1079,7 +1079,7 @@ void gamelogic() obj.moveblockto(obj.entities[i].xp, obj.entities[i].yp, obj.entities[i].xp - 400, obj.entities[i].yp, obj.entities[i].w, obj.entities[i].h); } obj.entities[i].xp -= 400; - obj.entities[i].oldxp -= 400; + obj.entities[i].lerpoldxp -= 400; } } else @@ -1091,7 +1091,7 @@ void gamelogic() obj.moveblockto(obj.entities[i].xp, obj.entities[i].yp, obj.entities[i].xp + 320, obj.entities[i].yp, obj.entities[i].w, obj.entities[i].h); } obj.entities[i].xp += 320; - obj.entities[i].oldxp += 320; + obj.entities[i].lerpoldxp += 320; } else if (obj.entities[i].xp > 310) { @@ -1100,7 +1100,7 @@ void gamelogic() obj.moveblockto(obj.entities[i].xp, obj.entities[i].yp, obj.entities[i].xp - 320, obj.entities[i].yp, obj.entities[i].w, obj.entities[i].h); } obj.entities[i].xp -= 320; - obj.entities[i].oldxp -= 320; + obj.entities[i].lerpoldxp -= 320; } } } @@ -1119,7 +1119,7 @@ void gamelogic() obj.moveblockto(obj.entities[i].xp, obj.entities[i].yp, obj.entities[i].xp, obj.entities[i].yp + 232, obj.entities[i].w, obj.entities[i].h); } obj.entities[i].yp += 232; - obj.entities[i].oldyp += 232; + obj.entities[i].lerpoldyp += 232; } else if (obj.entities[i].yp > 226) { @@ -1128,7 +1128,7 @@ void gamelogic() obj.moveblockto(obj.entities[i].xp, obj.entities[i].yp, obj.entities[i].xp, obj.entities[i].yp - 232, obj.entities[i].w, obj.entities[i].h); } obj.entities[i].yp -= 232; - obj.entities[i].oldyp -= 232; + obj.entities[i].lerpoldyp -= 232; } } } @@ -1149,7 +1149,7 @@ void gamelogic() obj.moveblockto(obj.entities[i].xp, obj.entities[i].yp, obj.entities[i].xp + 350, obj.entities[i].yp, obj.entities[i].w, obj.entities[i].h); } obj.entities[i].xp += 350; - obj.entities[i].oldxp += 350; + obj.entities[i].lerpoldxp += 350; } else if (obj.entities[i].xp > 320) { @@ -1158,7 +1158,7 @@ void gamelogic() obj.moveblockto(obj.entities[i].xp, obj.entities[i].yp, obj.entities[i].xp - 350, obj.entities[i].yp, obj.entities[i].w, obj.entities[i].h); } obj.entities[i].xp -= 350; - obj.entities[i].oldxp -= 350; + obj.entities[i].lerpoldxp -= 350; } } } @@ -1256,12 +1256,12 @@ void gamelogic() if (obj.entities[i].xp <= -10) { obj.entities[i].xp += 320; - obj.entities[i].oldxp += 320; + obj.entities[i].lerpoldxp += 320; } else if (obj.entities[i].xp > 310) { obj.entities[i].xp -= 320; - obj.entities[i].oldxp -= 320; + obj.entities[i].lerpoldxp -= 320; } } } diff --git a/desktop_version/src/Map.cpp b/desktop_version/src/Map.cpp index 007621a5..118d6646 100644 --- a/desktop_version/src/Map.cpp +++ b/desktop_version/src/Map.cpp @@ -894,8 +894,8 @@ void mapclass::warpto(int rx, int ry , int t, int tx, int ty) { obj.entities[t].xp = tx * 8; obj.entities[t].yp = (ty * 8) - obj.entities[t].h; - obj.entities[t].oldxp = obj.entities[t].xp; - obj.entities[t].oldyp = obj.entities[t].yp; + obj.entities[t].lerpoldxp = obj.entities[t].xp; + obj.entities[t].lerpoldyp = obj.entities[t].yp; } game.gravitycontrol = 0; } @@ -1100,8 +1100,8 @@ void mapclass::gotoroom(int rx, int ry) temp = obj.getplayer(); if(INBOUNDS_VEC(temp, obj.entities)) { - obj.entities[temp].oldxp = obj.entities[temp].xp - int(obj.entities[temp].vx); - obj.entities[temp].oldyp = obj.entities[temp].yp - int(obj.entities[temp].vy); + obj.entities[temp].lerpoldxp = obj.entities[temp].xp - int(obj.entities[temp].vx); + obj.entities[temp].lerpoldyp = obj.entities[temp].yp - int(obj.entities[temp].vy); } for (size_t i = 0; i < obj.entities.size(); i++) diff --git a/desktop_version/src/Script.cpp b/desktop_version/src/Script.cpp index c9bbaab2..1bc9be8b 100644 --- a/desktop_version/src/Script.cpp +++ b/desktop_version/src/Script.cpp @@ -3447,8 +3447,8 @@ void scriptclass::teleport() obj.entities[i].xp = 150; obj.entities[i].yp = 110; if(game.teleport_to_x==17 && game.teleport_to_y==17) obj.entities[i].xp = 88; //prevent falling! - obj.entities[i].oldxp = obj.entities[i].xp; - obj.entities[i].oldyp = obj.entities[i].yp; + obj.entities[i].lerpoldxp = obj.entities[i].xp; + obj.entities[i].lerpoldyp = obj.entities[i].yp; } if (game.teleportscript == "levelonecomplete") diff --git a/desktop_version/src/main.cpp b/desktop_version/src/main.cpp index d9410981..b50e8c81 100644 --- a/desktop_version/src/main.cpp +++ b/desktop_version/src/main.cpp @@ -542,11 +542,11 @@ void inline fixedloop() script.run(); } - //Update old positions of entities - has to be done BEFORE gameinput! + //Update old lerp positions of entities - has to be done BEFORE gameinput! for (size_t i = 0; i < obj.entities.size(); i++) { - obj.entities[i].oldxp = obj.entities[i].xp; - obj.entities[i].oldyp = obj.entities[i].yp; + obj.entities[i].lerpoldxp = obj.entities[i].xp; + obj.entities[i].lerpoldyp = obj.entities[i].yp; } gameinput();