|
|
@ -23,6 +23,7 @@ namespace gui { |
|
|
|
$status_ui($level), |
|
|
|
$status_ui($level), |
|
|
|
$map_ui($level), |
|
|
|
$map_ui($level), |
|
|
|
$mini_map($level), |
|
|
|
$mini_map($level), |
|
|
|
|
|
|
|
$loot_ui($level), |
|
|
|
$font{FONT_FILE_NAME} |
|
|
|
$font{FONT_FILE_NAME} |
|
|
|
{ |
|
|
|
{ |
|
|
|
} |
|
|
|
} |
|
|
@ -37,6 +38,7 @@ namespace gui { |
|
|
|
FSM_STATE(State, IN_COMBAT, ev); |
|
|
|
FSM_STATE(State, IN_COMBAT, ev); |
|
|
|
FSM_STATE(State, COMBAT_ROTATE, ev); |
|
|
|
FSM_STATE(State, COMBAT_ROTATE, ev); |
|
|
|
FSM_STATE(State, NEXT_LEVEL, ev); |
|
|
|
FSM_STATE(State, NEXT_LEVEL, ev); |
|
|
|
|
|
|
|
FSM_STATE(State, LOOTING, ev); |
|
|
|
FSM_STATE(State, END, ev); |
|
|
|
FSM_STATE(State, END, ev); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -46,6 +48,7 @@ namespace gui { |
|
|
|
$main_ui.update_level($level); |
|
|
|
$main_ui.update_level($level); |
|
|
|
$level.world->set_the<Debug>({}); |
|
|
|
$level.world->set_the<Debug>({}); |
|
|
|
$main_ui.init(); |
|
|
|
$main_ui.init(); |
|
|
|
|
|
|
|
$loot_ui.init(); |
|
|
|
|
|
|
|
|
|
|
|
// BUG: maybe this is a function on main_ui?
|
|
|
|
// BUG: maybe this is a function on main_ui?
|
|
|
|
auto cell = $main_ui.$overlay_ui.$gui.cell_for("left"); |
|
|
|
auto cell = $main_ui.$overlay_ui.$gui.cell_for("left"); |
|
|
@ -110,6 +113,22 @@ namespace gui { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void FSM::LOOTING(Event ev) { |
|
|
|
|
|
|
|
using enum Event; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
switch(ev) { |
|
|
|
|
|
|
|
case LOOT_OPEN: |
|
|
|
|
|
|
|
$loot_ui.active = false; |
|
|
|
|
|
|
|
state(State::IDLE); |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case TICK: |
|
|
|
|
|
|
|
// do nothing
|
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
default: |
|
|
|
|
|
|
|
state(State::LOOTING); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void FSM::IDLE(Event ev) { |
|
|
|
void FSM::IDLE(Event ev) { |
|
|
|
using enum Event; |
|
|
|
using enum Event; |
|
|
|
|
|
|
|
|
|
|
@ -161,6 +180,10 @@ namespace gui { |
|
|
|
case TICK: |
|
|
|
case TICK: |
|
|
|
// do nothing
|
|
|
|
// do nothing
|
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
case LOOT_OPEN: |
|
|
|
|
|
|
|
$loot_ui.active = true; |
|
|
|
|
|
|
|
state(State::LOOTING); |
|
|
|
|
|
|
|
break; |
|
|
|
default: |
|
|
|
default: |
|
|
|
dbc::sentinel("unhandled event in IDLE"); |
|
|
|
dbc::sentinel("unhandled event in IDLE"); |
|
|
|
} |
|
|
|
} |
|
|
@ -248,6 +271,7 @@ namespace gui { |
|
|
|
$combat_ui.mouse(pos.x, pos.y, false); |
|
|
|
$combat_ui.mouse(pos.x, pos.y, false); |
|
|
|
$status_ui.mouse(pos.x, pos.y, false); |
|
|
|
$status_ui.mouse(pos.x, pos.y, false); |
|
|
|
$main_ui.mouse(pos.x, pos.y, false); |
|
|
|
$main_ui.mouse(pos.x, pos.y, false); |
|
|
|
|
|
|
|
if($loot_ui.active) $loot_ui.mouse(pos.x, pos.y, false); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} else if(const auto* mouse = ev->getIf<sf::Event::MouseMoved>()) { |
|
|
|
} else if(const auto* mouse = ev->getIf<sf::Event::MouseMoved>()) { |
|
|
@ -303,6 +327,9 @@ namespace gui { |
|
|
|
case KEY::L: |
|
|
|
case KEY::L: |
|
|
|
event(Event::STAIRS_DOWN); |
|
|
|
event(Event::STAIRS_DOWN); |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
case KEY::X: |
|
|
|
|
|
|
|
event(Event::LOOT_OPEN); |
|
|
|
|
|
|
|
break; |
|
|
|
default: |
|
|
|
default: |
|
|
|
break; // ignored
|
|
|
|
break; // ignored
|
|
|
|
} |
|
|
|
} |
|
|
@ -322,6 +349,8 @@ namespace gui { |
|
|
|
$status_ui.render($window); |
|
|
|
$status_ui.render($window); |
|
|
|
$combat_ui.render($window); |
|
|
|
$combat_ui.render($window); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if($loot_ui.active) $loot_ui.render($window); |
|
|
|
|
|
|
|
|
|
|
|
if($map_open) { |
|
|
|
if($map_open) { |
|
|
|
$map_ui.render($window, $main_ui.$compass_dir); |
|
|
|
$map_ui.render($window, $main_ui.$compass_dir); |
|
|
|
} else { |
|
|
|
} else { |
|
|
@ -442,6 +471,7 @@ namespace gui { |
|
|
|
$mini_map.update_level($level); |
|
|
|
$mini_map.update_level($level); |
|
|
|
$combat_ui.update_level($level); |
|
|
|
$combat_ui.update_level($level); |
|
|
|
$main_ui.update_level($level); |
|
|
|
$main_ui.update_level($level); |
|
|
|
|
|
|
|
$loot_ui.update_level($level); |
|
|
|
|
|
|
|
|
|
|
|
$boss_fight_ui = $levels.create_bossfight($level.world); |
|
|
|
$boss_fight_ui = $levels.create_bossfight($level.world); |
|
|
|
$boss_fight_ui->init(); |
|
|
|
$boss_fight_ui->init(); |