diff --git a/src/world/world.c b/src/world/world.c index 2232f06..e7ae354 100644 --- a/src/world/world.c +++ b/src/world/world.c @@ -435,7 +435,7 @@ static void handleWidgets(void) static void doWorldObserving(void) { - int tx, ty; + int tx, ty, cx, cy; float diffX, diffY; tx = world.entityToTrack->x - (SCREEN_WIDTH / 2); @@ -448,28 +448,36 @@ static void doWorldObserving(void) diffX = MAX(3, MIN(50, diffX)); diffY = MAX(3, MIN(50, diffY)); + + cx = camera.x; + cy = camera.y; - if (camera.x > tx) + if (cx > tx) { - camera.x -= diffX; + cx -= diffX; } - if (camera.x < tx) + if (cx < tx) { - camera.x += diffX; + cx += diffX; } - if (camera.y > ty) + if (cy > ty) { - camera.y -= diffY; + cy -= diffY; } - if (camera.y < ty) + if (cy < ty) { - camera.y += diffY; + cy += diffY; } + + camera.x = cx; + camera.y = cy; + + clipCamera(); - if (collision(camera.x, camera.y, MAP_TILE_SIZE, MAP_TILE_SIZE, tx, ty, MAP_TILE_SIZE, MAP_TILE_SIZE)) + if (collision(cx, cy, MAP_TILE_SIZE, MAP_TILE_SIZE, tx, ty, MAP_TILE_SIZE, MAP_TILE_SIZE)) { if (--world.observationTimer <= 0) { diff --git a/src/world/world.h b/src/world/world.h index c19f0cb..214eddd 100644 --- a/src/world/world.h +++ b/src/world/world.h @@ -115,6 +115,7 @@ extern void showWidgetGroup(char *group); extern void startSectionTransition(void); extern void stopMusic(void); extern int collision(int x1, int y1, int w1, int h1, int x2, int y2, int w2, int h2); +extern void clipCamera(void); extern App app; extern Camera camera;