Ent movement

This commit is contained in:
2025-11-04 09:03:36 -06:00
parent 68c4834a62
commit 7d46b98310
4 changed files with 18 additions and 13 deletions

View File

@@ -43,8 +43,8 @@ void entityUpdate(entity_t *entity) {
}
// Movement code.
if(entity->type == ENTITY_TYPE_PLAYER) {
playerInput(entity);
if(ENTITY_CALLBACKS[entity->type].movement != NULL) {
ENTITY_CALLBACKS[entity->type].movement(entity);
}
}
@@ -100,14 +100,11 @@ void entityWalk(entity_t *entity, const entitydir_t direction) {
entity_t * entityGetAt(const worldpos_t position) {
entity_t *ent = ENTITIES;
do {
if(
ent->type != ENTITY_TYPE_NULL &&
ent->position.x == position.x &&
ent->position.y == position.y &&
ent->position.z == position.z
) {
if(ent->type == ENTITY_TYPE_NULL) continue;
if(ent->position.x != position.x) continue;
if(ent->position.y != position.y) continue;
if(ent->position.z != position.z) continue;
return ent;
}
} while(++ent, ent < &ENTITIES[ENTITY_COUNT]);
return NULL;

View File

@@ -30,6 +30,12 @@ typedef struct {
*/
void (*init)(entity_t *entity);
/**
* Movement callback for the entity type.
* @param entity Pointer to the entity to move.
*/
void (*movement)(entity_t *entity);
/**
* Interaction callback for the entity type.
* @param player Pointer to the player entity.
@@ -43,11 +49,13 @@ static const entitycallback_t ENTITY_CALLBACKS[ENTITY_TYPE_COUNT] = {
[ENTITY_TYPE_NULL] = { NULL },
[ENTITY_TYPE_PLAYER] = {
.init = playerInit
.init = playerInit,
.movement = playerInput
},
[ENTITY_TYPE_NPC] = {
.init = npcInit,
.movement = npcMovement,
.interact = npcInteract
}
};

View File

@@ -12,7 +12,7 @@ void npcInit(entity_t *entity) {
assertNotNull(entity, "Entity pointer cannot be NULL");
}
void npcUpdate(entity_t *entity) {
void npcMovement(entity_t *entity) {
assertNotNull(entity, "Entity pointer cannot be NULL");
}

View File

@@ -26,7 +26,7 @@ void npcInit(entity_t *entity);
*
* @param entity Pointer to the entity structure to update.
*/
void npcUpdate(entity_t *entity);
void npcMovement(entity_t *entity);
/**
* Handles interaction with an NPC entity.