Very jank but now I can set different panels as active and test for mouse events in them to enable mouse. This needs a big cleanup and probably some FSM love.
This commit is contained in:
parent
f0829bb9ea
commit
941be008f8
3 changed files with 17 additions and 9 deletions
24
gui.cpp
24
gui.cpp
|
@ -84,8 +84,6 @@ void StatusUI::create_render() {
|
||||||
GUI::GUI(DinkyECS::World &world, Map& game_map) :
|
GUI::GUI(DinkyECS::World &world, Map& game_map) :
|
||||||
$game_map(game_map),
|
$game_map(game_map),
|
||||||
$status_ui(world),
|
$status_ui(world),
|
||||||
$map_view(),
|
|
||||||
$inventory_ui(),
|
|
||||||
$lights(game_map.width(), game_map.height()),
|
$lights(game_map.width(), game_map.height()),
|
||||||
$world(world),
|
$world(world),
|
||||||
$sounds("./assets"),
|
$sounds("./assets"),
|
||||||
|
@ -105,7 +103,6 @@ void GUI::resize_map(int new_size) {
|
||||||
$renderer.resize_grid(new_size, $map_view);
|
$renderer.resize_grid(new_size, $map_view);
|
||||||
// set canvas to best size
|
// set canvas to best size
|
||||||
$canvas = Canvas($map_view.width * 2, $map_view.height * 4);
|
$canvas = Canvas($map_view.width * 2, $map_view.height * 4);
|
||||||
dbc::log("WHY IS RESIZING LIGHTS STILL WORKING?!!!!!!!!!!!!!!!");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GUI::save_world() {
|
void GUI::save_world() {
|
||||||
|
@ -123,6 +120,9 @@ void GUI::create_renderer() {
|
||||||
|
|
||||||
$status_ui.create_render();
|
$status_ui.create_render();
|
||||||
$inventory_ui.create_render();
|
$inventory_ui.create_render();
|
||||||
|
// don't activate this one
|
||||||
|
|
||||||
|
$panels = {&$map_view, &$status_ui};
|
||||||
}
|
}
|
||||||
|
|
||||||
void GUI::handle_world_events() {
|
void GUI::handle_world_events() {
|
||||||
|
@ -209,9 +209,11 @@ bool GUI::handle_ui_events() {
|
||||||
} else if(KB::isKeyPressed(KB::I)) {
|
} else if(KB::isKeyPressed(KB::I)) {
|
||||||
// yes, using an if to avoid double grabbing screen
|
// yes, using an if to avoid double grabbing screen
|
||||||
if($show_modal) {
|
if($show_modal) {
|
||||||
|
$panels = {&$map_view, &$status_ui};
|
||||||
$show_modal = false;
|
$show_modal = false;
|
||||||
} else {
|
} else {
|
||||||
pause_screen();
|
pause_screen();
|
||||||
|
$panels = {&$inventory_ui};
|
||||||
$show_modal = true;
|
$show_modal = true;
|
||||||
}
|
}
|
||||||
} else if(KB::isKeyPressed(KB::P)) {
|
} else if(KB::isKeyPressed(KB::P)) {
|
||||||
|
@ -224,12 +226,16 @@ bool GUI::handle_ui_events() {
|
||||||
} else if(KB::isKeyPressed(KB::Enter)) {
|
} else if(KB::isKeyPressed(KB::Enter)) {
|
||||||
$status_ui.key_press(Event::Return);
|
$status_ui.key_press(Event::Return);
|
||||||
}
|
}
|
||||||
} else if($renderer.mouse_position($status_ui, pos)) {
|
} else {
|
||||||
if(MOUSE::isButtonPressed(MOUSE::Left)) {
|
for(Panel *panel : $panels) {
|
||||||
$status_ui.mouse_click(Mouse::Button::Left, pos);
|
if($renderer.mouse_position(*panel, pos)) {
|
||||||
event_happened = true;
|
if(MOUSE::isButtonPressed(MOUSE::Left)) {
|
||||||
} else {
|
panel->mouse_click(Mouse::Button::Left, pos);
|
||||||
$status_ui.mouse_release(Mouse::Button::Left, pos);
|
event_happened = true;
|
||||||
|
} else {
|
||||||
|
panel->mouse_release(Mouse::Button::Left, pos);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
1
gui.hpp
1
gui.hpp
|
@ -89,6 +89,7 @@ class GUI {
|
||||||
SoundManager $sounds;
|
SoundManager $sounds;
|
||||||
SFMLRender $renderer;
|
SFMLRender $renderer;
|
||||||
UnDumbTSS $paused;
|
UnDumbTSS $paused;
|
||||||
|
std::vector<Panel*> $panels;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
GUI(DinkyECS::World& world, Map& game_map);
|
GUI(DinkyECS::World& world, Map& game_map);
|
||||||
|
|
|
@ -36,6 +36,7 @@ const std::wstring& Panel::to_string() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Panel::mouse_click(ftxui::Mouse::Button btn, Point pos) {
|
void Panel::mouse_click(ftxui::Mouse::Button btn, Point pos) {
|
||||||
|
fmt::println("CLICK AT {},{}", pos.x, pos.y);
|
||||||
ftxui::Mouse mev{
|
ftxui::Mouse mev{
|
||||||
.button=btn,
|
.button=btn,
|
||||||
.motion=ftxui::Mouse::Motion::Pressed,
|
.motion=ftxui::Mouse::Motion::Pressed,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue