Valgrind passes. Fixed a bug in combat.

This commit is contained in:
Zed A. Shaw 2026-04-04 16:54:28 -04:00
parent 55af06821c
commit 568171c4a2
6 changed files with 18 additions and 21 deletions

View file

@ -181,22 +181,10 @@ namespace gui {
}
void FSM::ATTACKING(Event ev, std::any data) {
using enum Event;
switch(ev) {
case TICK: {
dbc::log("!!!!!! FIX System::combat(0) doesn't use any weapons, only first");
$systems.runCombat(0);
run_systems();
state(State::IDLE);
} break;
case ATTACK: {
int attack_id = std::any_cast<int>(data);
$systems.runCombat(attack_id);
run_systems();
} break;
default:
dbc::log($F("In ATTACKING state, unhandled event {}", (int)ev));
state(State::IDLE);
if(!$main_ui.hands_playing()) {
// run combat one more time
$systems.runCombat(0);
state(State::IDLE);
}
}
@ -254,13 +242,15 @@ namespace gui {
$main_ui.plan_rotate(1, DEFAULT_ROTATE);
state(State::ROTATING);
break;
case ATTACK:
case ATTACK: {
$main_ui.play_hands();
$main_ui.dirty();
sound::play("Sword_Hit_1");
$systems.runCombat(0);
run_systems();
$status_ui.update();
state(State::ATTACKING);
break;
} break;
case CLOSE:
dbc::log("Nothing to close.");
break;

View file

@ -146,6 +146,10 @@ namespace gui {
if(!$hand_anim.playing) $hand_anim.play();
}
bool MainUI::hands_playing() {
return $hand_anim.playing;
}
void MainUI::render_hands() {
if($hand_anim.playing) {
$hand_anim.update();

View file

@ -49,6 +49,7 @@ namespace gui {
void toggle_mind_reading();
void render_mind_reading();
void play_hands();
bool hands_playing();
void render_hands();
};
}