|
|
|
@ -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() { |
|
|
|
|