Unlocked combat finally but the robots won't chase you.
This commit is contained in:
parent
2b69f388e5
commit
e9365e0d87
6 changed files with 34 additions and 79 deletions
|
|
@ -1,3 +1,4 @@
|
|||
#define FSM_DEBUG 1
|
||||
#include "gui/fsm.hpp"
|
||||
#include <iostream>
|
||||
#include <chrono>
|
||||
|
|
@ -34,8 +35,6 @@ namespace gui {
|
|||
FSM_STATE(State, ATTACKING, ev, data);
|
||||
FSM_STATE(State, ROTATING, ev);
|
||||
FSM_STATE(State, IDLE, ev, data);
|
||||
FSM_STATE(State, IN_COMBAT, ev);
|
||||
FSM_STATE(State, COMBAT_ROTATE, ev);
|
||||
FSM_STATE(State, LOOTING, ev, data);
|
||||
FSM_STATE(State, END, ev);
|
||||
}
|
||||
|
|
@ -72,11 +71,8 @@ namespace gui {
|
|||
dbc::log("!!!!!! FIX System::combat(0) doesn't use any weapons, only first");
|
||||
$systems.runCombat(0);
|
||||
run_systems();
|
||||
state(State::IN_COMBAT);
|
||||
} break;
|
||||
case COMBAT_STOP:
|
||||
state(State::IDLE);
|
||||
break;
|
||||
} break;
|
||||
case ATTACK: {
|
||||
int attack_id = std::any_cast<int>(data);
|
||||
$systems.runCombat(attack_id);
|
||||
|
|
@ -96,14 +92,6 @@ namespace gui {
|
|||
}
|
||||
}
|
||||
|
||||
void FSM::COMBAT_ROTATE(Event) {
|
||||
if(auto aim = $main_ui.play_rotate()) {
|
||||
auto& player_pos = GameDB::player_position();
|
||||
player_pos.aiming_at = *aim;
|
||||
state(State::IN_COMBAT);
|
||||
}
|
||||
}
|
||||
|
||||
void FSM::LOOTING(Event ev, std::any data) {
|
||||
using enum Event;
|
||||
|
||||
|
|
@ -151,11 +139,12 @@ namespace gui {
|
|||
state(State::ROTATING);
|
||||
break;
|
||||
case ATTACK:
|
||||
$main_ui.play_hands();
|
||||
$main_ui.dirty();
|
||||
sound::play("Sword_Hit_1");
|
||||
$status_ui.update();
|
||||
state(State::ATTACKING);
|
||||
break;
|
||||
case COMBAT_START:
|
||||
state(State::IN_COMBAT);
|
||||
break;
|
||||
case CLOSE:
|
||||
dbc::log("Nothing to close.");
|
||||
break;
|
||||
|
|
@ -191,47 +180,6 @@ namespace gui {
|
|||
}
|
||||
}
|
||||
|
||||
void FSM::IN_COMBAT(Event ev) {
|
||||
using enum Event;
|
||||
|
||||
switch(ev) {
|
||||
case MOUSE_CLICK:
|
||||
mouse_action(guecs::NO_MODS);
|
||||
break;
|
||||
case MOUSE_MOVE: {
|
||||
mouse_action({1 << guecs::ModBit::hover});
|
||||
} break;
|
||||
case TICK:
|
||||
run_systems();
|
||||
break;
|
||||
case ATTACK:
|
||||
$main_ui.play_hands();
|
||||
$main_ui.dirty();
|
||||
sound::play("Sword_Hit_1");
|
||||
$status_ui.update();
|
||||
state(State::ATTACKING);
|
||||
break;
|
||||
case ROTATE_LEFT:
|
||||
$main_ui.plan_rotate(-1, DEFAULT_ROTATE);
|
||||
state(State::COMBAT_ROTATE);
|
||||
break;
|
||||
case ROTATE_RIGHT:
|
||||
$main_ui.plan_rotate(1, DEFAULT_ROTATE);
|
||||
state(State::COMBAT_ROTATE);
|
||||
break;
|
||||
case COMBAT_STOP:
|
||||
$main_ui.$overlay_ui.close_sprite("top_right");
|
||||
state(State::IDLE);
|
||||
break;
|
||||
case QUIT:
|
||||
$window.close();
|
||||
state(State::END);
|
||||
return;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void FSM::try_move(int dir, bool strafe) {
|
||||
auto& level = GameDB::current_level();
|
||||
using enum State;
|
||||
|
|
@ -387,9 +335,6 @@ namespace gui {
|
|||
auto &damage = std::any_cast<components::CombatResult&>(data);
|
||||
}
|
||||
break;
|
||||
case eGUI::COMBAT_START:
|
||||
event(Event::COMBAT_START);
|
||||
break;
|
||||
case eGUI::ENTITY_SPAWN: {
|
||||
auto& sprite = world->get<components::Sprite>(entity);
|
||||
$main_ui.$rayview->update_sprite(entity, sprite);
|
||||
|
|
|
|||
|
|
@ -16,8 +16,6 @@ namespace gui {
|
|||
enum class State {
|
||||
START=__LINE__,
|
||||
MOVING=__LINE__,
|
||||
IN_COMBAT=__LINE__,
|
||||
COMBAT_ROTATE=__LINE__,
|
||||
ATTACKING=__LINE__,
|
||||
ROTATING=__LINE__,
|
||||
LOOTING=__LINE__,
|
||||
|
|
@ -48,8 +46,6 @@ namespace gui {
|
|||
void MAPPING(game::Event ev);
|
||||
void ROTATING(game::Event ev);
|
||||
void IDLE(game::Event ev, std::any data);
|
||||
void IN_COMBAT(game::Event ev);
|
||||
void COMBAT_ROTATE(game::Event ev);
|
||||
void LOOTING(game::Event ev, std::any data);
|
||||
void END(game::Event ev);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue