28 lines
864 B
C
28 lines
864 B
C
/**
|
|
* Copyright (c) 2026 Dominic Masters
|
|
*
|
|
* This software is released under the MIT License.
|
|
* https://opensource.org/licenses/MIT
|
|
*/
|
|
|
|
#include "npc.h"
|
|
#include "rpg/entity/entity.h"
|
|
#include "util/random.h"
|
|
#include "time/time.h"
|
|
#include <stdlib.h>
|
|
|
|
void npcRandomTurnInit(npc_t *npc) {
|
|
npcrandomturn_t *turn = &npc->moveData.randomTurn;
|
|
turn->frequencyMin = NPC_RANDOM_TURN_FREQUENCY_MIN_DEFAULT;
|
|
turn->frequencyMax = NPC_RANDOM_TURN_FREQUENCY_MAX_DEFAULT;
|
|
turn->timer = randomFloat(turn->frequencyMin, turn->frequencyMax);
|
|
}
|
|
|
|
void npcRandomTurnMovement(entity_t *entity) {
|
|
npcrandomturn_t *turn = &entity->data.npc.moveData.randomTurn;
|
|
turn->timer -= TIME.delta;
|
|
if(turn->timer > 0.0f) return;
|
|
turn->timer = randomFloat(turn->frequencyMin, turn->frequencyMax);
|
|
if(entityCanTurn(entity)) entityTurn(entity, (entitydir_t)(rand() % 4));
|
|
}
|