Enemies now turn into a lootable device witha grave_stone sprite so you know they died. Need to implement noclipping on items with collision.
This commit is contained in:
parent
0199248354
commit
3b9525cca4
8 changed files with 92 additions and 74 deletions
12
gui.cpp
12
gui.cpp
|
@ -372,7 +372,7 @@ namespace gui {
|
|||
System::collision($level);
|
||||
System::motion($level);
|
||||
System::lighting($level);
|
||||
System::death($level);
|
||||
System::death($level, $levels.$components);
|
||||
}
|
||||
|
||||
bool FSM::active() {
|
||||
|
@ -385,16 +385,14 @@ namespace gui {
|
|||
|
||||
while(world.has_event<eGUI>()) {
|
||||
auto [evt, entity, data] = world.recv<eGUI>();
|
||||
auto player = world.get_the<Player>();
|
||||
|
||||
switch(evt) {
|
||||
case eGUI::COMBAT: {
|
||||
auto &damage = std::any_cast<Events::Combat&>(data);
|
||||
auto enemy_combat = world.get<Combat>(entity);
|
||||
|
||||
if(damage.enemy_did > 0) {
|
||||
$status_view.log(fmt::format("Enemy HIT YOU for {} damage!", damage.enemy_did));
|
||||
$status_view.log(fmt::format("-- Enemy has {} HP left.", enemy_combat.hp));
|
||||
auto player = world.get_the<Player>();
|
||||
auto player_combat = world.get<Combat>(player.entity);
|
||||
$combat_view.set_damage(float(player_combat.hp) / float(player_combat.max_hp));
|
||||
} else {
|
||||
|
@ -425,6 +423,12 @@ namespace gui {
|
|||
$rotation = 0;
|
||||
event(Event::ATTACK);
|
||||
break;
|
||||
case eGUI::DEATH: {
|
||||
if(entity != player.entity) {
|
||||
auto &sprite = $level.world->get<Sprite>(entity);
|
||||
$rayview.update_sprite(entity, sprite);
|
||||
}
|
||||
} break;
|
||||
case eGUI::NOOP:
|
||||
$status_view.log(fmt::format("NOOP EVENT! {},{}", evt, entity));
|
||||
break;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue