Ent movement
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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
|
||||
}
|
||||
};
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user