Combat UI can now send events to the GUIwhen they click on buttons, and I've got a crappy wood texture for the buttons to test that.

This commit is contained in:
Zed A. Shaw 2025-02-18 14:24:57 -05:00
parent 722d55d948
commit 69a810b5a1
7 changed files with 38 additions and 20 deletions

32
gui.cpp
View file

@ -108,6 +108,9 @@ namespace gui {
dbc::log("Exiting ATTACKING STATE");
state(State::IDLE);
break;
case ATTACK:
// ignore these since they're just from SFML not having discrete events
break;
default:
dbc::log(fmt::format("In ATTACKING state, unhandled event {}", (int)ev));
}
@ -249,10 +252,6 @@ namespace gui {
case KEY::A:
event(Event::MOVE_LEFT);
break;
case KEY::Space:
$rotation = 0;
event(Event::ATTACK);
break;
case KEY::R:
$stats.reset();
break;
@ -262,15 +261,8 @@ namespace gui {
case KEY::Escape:
event(Event::CLOSE);
break;
case KEY::P: {
auto& debug = $level.world->get_the<Debug>();
debug.FPS = !debug.FPS;
debug.PATHS = !debug.PATHS;
auto player = $level.world->get_the<Player>();
auto& player_combat = $level.world->get<Combat>(player.entity);
player_combat.hp = player_combat.max_hp;
$combat_view.set_damage(float(player_combat.hp) / float(player_combat.max_hp));
} break;
case KEY::P:
debug();
default:
break; // ignored
}
@ -278,6 +270,16 @@ namespace gui {
}
}
void FSM::debug() {
auto& debug = $level.world->get_the<Debug>();
debug.FPS = !debug.FPS;
debug.PATHS = !debug.PATHS;
auto player = $level.world->get_the<Player>();
auto& player_combat = $level.world->get<Combat>(player.entity);
player_combat.hp = player_combat.max_hp;
$combat_view.set_damage(float(player_combat.hp) / float(player_combat.max_hp));
}
void FSM::draw_weapon() {
return;
auto weapon = $rayview.$textures.sword.sprite;
@ -426,6 +428,10 @@ namespace gui {
$status_view.log("You picked up an item.");
}
break;
case eGUI::ATTACK:
$rotation = 0;
event(Event::ATTACK);
break;
default:
$status_view.log(fmt::format("INVALID EVENT! {},{}", evt, entity));
}