From 67010592b88ebcbcf993d10d1b1921e60526cbd4 Mon Sep 17 00:00:00 2001 From: Dominic Masters Date: Fri, 26 Jun 2026 14:41:30 -0500 Subject: [PATCH] Fixing some performance --- src/dusk/rpg/entity/npc/npcpath.c | 13 ++++++++++--- src/dusk/rpg/overworld/worldpos.h | 8 ++++---- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/dusk/rpg/entity/npc/npcpath.c b/src/dusk/rpg/entity/npc/npcpath.c index 2d8e9a36..f0b02b6c 100644 --- a/src/dusk/rpg/entity/npc/npcpath.c +++ b/src/dusk/rpg/entity/npc/npcpath.c @@ -8,11 +8,13 @@ #include "npc.h" #include "rpg/entity/entity.h" #include "rpg/overworld/worldpos.h" +#include "time/time.h" void npcPathInit(npc_t *npc) { npcpath_t *path = &npc->moveData.path; path->count = 0; path->index = 0; + path->blockedTimer = 0.0f; } void npcPathMovement(entity_t *entity) { @@ -43,9 +45,14 @@ void npcPathMovement(entity_t *entity) { worldpos_t prevPos = entity->position; entityWalk(entity, dir); - // If entityWalk didn't move us (blocked), skip this waypoint to avoid - // getting stuck. if(worldPosIsEqual(entity->position, prevPos)) { - path->index = (path->index + 1) % path->count; + // Blocked - wait before skipping so temporary blockers can move away. + path->blockedTimer += TIME.delta; + if(path->blockedTimer >= NPC_PATH_BLOCKED_TIMEOUT) { + path->index = (path->index + 1) % path->count; + path->blockedTimer = 0.0f; + } + } else { + path->blockedTimer = 0.0f; } } diff --git a/src/dusk/rpg/overworld/worldpos.h b/src/dusk/rpg/overworld/worldpos.h index a4d2d298..41c803a1 100644 --- a/src/dusk/rpg/overworld/worldpos.h +++ b/src/dusk/rpg/overworld/worldpos.h @@ -10,14 +10,14 @@ #define TILE_SIZE_PIXELS 24 -#define CHUNK_WIDTH 32 -#define CHUNK_HEIGHT 32 +#define CHUNK_WIDTH 16 +#define CHUNK_HEIGHT 14 #define CHUNK_DEPTH 8 #define CHUNK_TILE_COUNT (CHUNK_WIDTH * CHUNK_HEIGHT * CHUNK_DEPTH) -#define MAP_CHUNK_WIDTH 2 -#define MAP_CHUNK_HEIGHT 2 +#define MAP_CHUNK_WIDTH 5 +#define MAP_CHUNK_HEIGHT 3 #define MAP_CHUNK_DEPTH 2 #define MAP_CHUNK_COUNT (MAP_CHUNK_WIDTH * MAP_CHUNK_HEIGHT * MAP_CHUNK_DEPTH)