Very basic attack system.
This commit is contained in:
parent
6bca6d021e
commit
abd843d5ec
5 changed files with 40 additions and 11 deletions
36
gui.cpp
36
gui.cpp
|
@ -94,6 +94,7 @@ namespace gui {
|
|||
switch($state) {
|
||||
FSM_STATE(State, START, ev);
|
||||
FSM_STATE(State, MOVING, ev);
|
||||
FSM_STATE(State, ATTACKING, ev);
|
||||
FSM_STATE(State, MAPPING, ev);
|
||||
FSM_STATE(State, ROTATING, ev);
|
||||
FSM_STATE(State, IDLE, ev);
|
||||
|
@ -141,6 +142,18 @@ namespace gui {
|
|||
}
|
||||
}
|
||||
|
||||
void FSM::ATTACKING(Event ev) {
|
||||
fmt::println("ATTACKING! {}", $rotation);
|
||||
switch(ev) {
|
||||
case Event::ATTACK:
|
||||
run_systems();
|
||||
$rotation = $rotation < 0.0f ? 0.0f : -33.0f;
|
||||
break;
|
||||
default:
|
||||
state(State::IDLE);
|
||||
}
|
||||
}
|
||||
|
||||
void FSM::ROTATING(Event ) {
|
||||
if($camera.play_rotate($rayview)) {
|
||||
state(State::IDLE);
|
||||
|
@ -149,6 +162,7 @@ namespace gui {
|
|||
|
||||
void FSM::IDLE(Event ev) {
|
||||
using FU = Event;
|
||||
$rotation = -10.0f;
|
||||
|
||||
switch(ev) {
|
||||
case FU::QUIT:
|
||||
|
@ -178,6 +192,11 @@ namespace gui {
|
|||
case FU::MAP_OPEN:
|
||||
state(State::MAPPING);
|
||||
break;
|
||||
case FU::ATTACK:
|
||||
fmt::println("ATTACK IN IDLE!");
|
||||
draw_weapon();
|
||||
state(State::ATTACKING);
|
||||
break;
|
||||
case FU::CLOSE:
|
||||
dbc::log("Nothing to close.");
|
||||
break;
|
||||
|
@ -229,6 +248,10 @@ 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;
|
||||
|
@ -258,8 +281,12 @@ namespace gui {
|
|||
rect.setFillColor({50, 50, 50});
|
||||
$window.draw(rect);
|
||||
|
||||
auto player = $level.world->get_the<Player>();
|
||||
auto player_combat = $level.world->get<Combat>(player.entity);
|
||||
|
||||
$text.setString(
|
||||
fmt::format("FPS\n"
|
||||
"HP: {}\n"
|
||||
"mean:{:>8.5}\n"
|
||||
"sdev: {:>8.5}\n"
|
||||
"min: {:>8.5}\n"
|
||||
|
@ -270,7 +297,7 @@ namespace gui {
|
|||
"Debug? {}\n\n"
|
||||
"dir: {:>2.02},{:>2.02}\n"
|
||||
"pos: {:>2.02},{:>2.02}\n\n",
|
||||
$stats.mean(), $stats.stddev(), $stats.min,
|
||||
player_combat.hp, $stats.mean(), $stats.stddev(), $stats.min,
|
||||
$stats.max, $stats.n, VSYNC,
|
||||
FRAME_LIMIT, DEBUG_BUILD, $rayview.$dir_x,
|
||||
$rayview.$dir_y, $rayview.$pos_x, $rayview.$pos_y));
|
||||
|
@ -294,16 +321,11 @@ namespace gui {
|
|||
$stats.sample(1/elapsed.count());
|
||||
|
||||
draw_gui();
|
||||
// draw_weapon();
|
||||
draw_weapon();
|
||||
$window.display();
|
||||
}
|
||||
|
||||
void FSM::mouse() {
|
||||
if(sf::Mouse::isButtonPressed(sf::Mouse::Button::Left)) {
|
||||
$rotation = -30.0f;
|
||||
} else {
|
||||
$rotation = -10.0f;
|
||||
}
|
||||
}
|
||||
|
||||
void FSM::generate_map() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue