Unlocked combat now works and weirdly this fixes the enemies not running away when scared.

This commit is contained in:
Zed A. Shaw 2026-03-31 23:54:54 -04:00
parent e9365e0d87
commit f6c8163acd
2 changed files with 17 additions and 2 deletions

View file

@ -73,8 +73,15 @@ void System::enemy_ai_initialize() {
if(world.has<ai::EntityAI>(ent)) { if(world.has<ai::EntityAI>(ent)) {
auto& enemy = world.get<ai::EntityAI>(ent); auto& enemy = world.get<ai::EntityAI>(ent);
auto& personality = world.get<Personality>(ent); auto& personality = world.get<Personality>(ent);
int dist_to_player = map.distance(pos.location);
enemy.set_state("detect_enemy", map.distance(pos.location) < personality.hearing_distance); if(dist_to_player > 1) {
// not near the player so can't be in combat
enemy.set_state("enemy_found", false);
enemy.set_state("in_combat", false);
}
enemy.set_state("detect_enemy", dist_to_player < personality.hearing_distance);
enemy.update(); enemy.update();
} else { } else {
auto ai_start = ai::load_state(config.ai_start_name); auto ai_start = ai::load_state(config.ai_start_name);

View file

@ -1,4 +1,3 @@
#define FSM_DEBUG 1
#include "gui/fsm.hpp" #include "gui/fsm.hpp"
#include <iostream> #include <iostream>
#include <chrono> #include <chrono>
@ -175,6 +174,12 @@ namespace gui {
case AIM_CLICK: case AIM_CLICK:
$systems.runPickup(); $systems.runPickup();
break; break;
case COMBAT_START:
fmt::println("!!!!!!!!!!!!!! COMBAT START in IDLE");
break;
case COMBAT_STOP:
fmt::println("!!!!!!!!!!!!!!!! COMBAT STOP in IDLE");
break;
default: default:
break; // ignore everything else break; // ignore everything else
} }
@ -335,6 +340,9 @@ namespace gui {
auto &damage = std::any_cast<components::CombatResult&>(data); auto &damage = std::any_cast<components::CombatResult&>(data);
} }
break; break;
case eGUI::COMBAT_START:
event(Event::COMBAT_START);
break;
case eGUI::ENTITY_SPAWN: { case eGUI::ENTITY_SPAWN: {
auto& sprite = world->get<components::Sprite>(entity); auto& sprite = world->get<components::Sprite>(entity);
$main_ui.$rayview->update_sprite(entity, sprite); $main_ui.$rayview->update_sprite(entity, sprite);