All of the GUI panels are now their own classes and pulled out of the main GUI so I can devise how they're managed.
This commit is contained in:
parent
941be008f8
commit
380e18b91a
2 changed files with 33 additions and 15 deletions
32
gui.cpp
32
gui.cpp
|
@ -79,15 +79,31 @@ void StatusUI::create_render() {
|
||||||
set_renderer(status_rend);
|
set_renderer(status_rend);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MapViewUI::MapViewUI(DinkyECS::World& world, LightRender& lights, Map& game_map) :
|
||||||
|
Panel(GAME_MAP_PIXEL_POS, 0, 0, 0, true),
|
||||||
|
$world(world), $lights(lights), $game_map(game_map)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
void MapViewUI::create_render() {
|
||||||
|
set_renderer(Renderer([&] {
|
||||||
|
System::draw_map($world, $game_map, $lights.lighting(), $canvas, width, height);
|
||||||
|
return canvas($canvas);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
void MapViewUI::resize_canvas() {
|
||||||
|
// set canvas to best size
|
||||||
|
$canvas = Canvas(width * 2, height * 4);
|
||||||
|
}
|
||||||
|
|
||||||
GUI::GUI(DinkyECS::World &world, Map& game_map) :
|
GUI::GUI(DinkyECS::World &world, Map& game_map) :
|
||||||
|
$world(world),
|
||||||
$game_map(game_map),
|
$game_map(game_map),
|
||||||
$status_ui(world),
|
$status_ui(world),
|
||||||
$lights(game_map.width(), game_map.height()),
|
$lights(game_map.width(), game_map.height()),
|
||||||
$world(world),
|
$map_view($world, $lights, $game_map),
|
||||||
$sounds("./assets"),
|
$sounds("./assets")
|
||||||
$renderer()
|
|
||||||
{
|
{
|
||||||
// this needs a config file soon
|
// this needs a config file soon
|
||||||
// $sounds.load("ambient", "ambient_sound.mp3");
|
// $sounds.load("ambient", "ambient_sound.mp3");
|
||||||
|
@ -101,8 +117,7 @@ GUI::GUI(DinkyECS::World &world, Map& game_map) :
|
||||||
|
|
||||||
void GUI::resize_map(int new_size) {
|
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
|
$map_view.resize_canvas();
|
||||||
$canvas = Canvas($map_view.width * 2, $map_view.height * 4);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GUI::save_world() {
|
void GUI::save_world() {
|
||||||
|
@ -113,11 +128,7 @@ void GUI::save_world() {
|
||||||
void GUI::create_renderer() {
|
void GUI::create_renderer() {
|
||||||
$renderer.init_terminal();
|
$renderer.init_terminal();
|
||||||
|
|
||||||
$map_view.set_renderer(Renderer([&] {
|
$map_view.create_render();
|
||||||
System::draw_map($world, $game_map, $lights.lighting(), $canvas, $map_view.width, $map_view.height);
|
|
||||||
return canvas($canvas);
|
|
||||||
}));
|
|
||||||
|
|
||||||
$status_ui.create_render();
|
$status_ui.create_render();
|
||||||
$inventory_ui.create_render();
|
$inventory_ui.create_render();
|
||||||
// don't activate this one
|
// don't activate this one
|
||||||
|
@ -186,7 +197,6 @@ bool GUI::handle_ui_events() {
|
||||||
if(event.type == sf::Event::Closed) {
|
if(event.type == sf::Event::Closed) {
|
||||||
shutdown();
|
shutdown();
|
||||||
} else if(event.type == sf::Event::KeyPressed) {
|
} else if(event.type == sf::Event::KeyPressed) {
|
||||||
|
|
||||||
if(KB::isKeyPressed(KB::Left)) {
|
if(KB::isKeyPressed(KB::Left)) {
|
||||||
player_motion.dx = -1;
|
player_motion.dx = -1;
|
||||||
event_happened = true;
|
event_happened = true;
|
||||||
|
|
16
gui.hpp
16
gui.hpp
|
@ -65,6 +65,7 @@ class StatusUI : public Panel {
|
||||||
Panel(0, 0, STATUS_UI_WIDTH, STATUS_UI_HEIGHT),
|
Panel(0, 0, STATUS_UI_WIDTH, STATUS_UI_HEIGHT),
|
||||||
$log({{"Welcome to the game!"}}),
|
$log({{"Welcome to the game!"}}),
|
||||||
$world(world) {}
|
$world(world) {}
|
||||||
|
|
||||||
void create_render();
|
void create_render();
|
||||||
void log(string msg) {
|
void log(string msg) {
|
||||||
$log.log(msg);
|
$log.log(msg);
|
||||||
|
@ -73,19 +74,26 @@ class StatusUI : public Panel {
|
||||||
|
|
||||||
class MapViewUI : public Panel {
|
class MapViewUI : public Panel {
|
||||||
public:
|
public:
|
||||||
MapViewUI() : Panel(GAME_MAP_PIXEL_POS, 0, 0, 0, true) {}
|
Canvas $canvas;
|
||||||
|
DinkyECS::World& $world;
|
||||||
|
LightRender& $lights;
|
||||||
|
Map& $game_map;
|
||||||
|
|
||||||
|
MapViewUI(DinkyECS::World& world, LightRender& lights, Map& game_map);
|
||||||
|
void create_render();
|
||||||
|
void resize_canvas();
|
||||||
};
|
};
|
||||||
|
|
||||||
class GUI {
|
class GUI {
|
||||||
Canvas $canvas;
|
DinkyECS::World& $world;
|
||||||
Map& $game_map;
|
Map& $game_map;
|
||||||
StatusUI $status_ui;
|
StatusUI $status_ui;
|
||||||
|
LightRender $lights;
|
||||||
MapViewUI $map_view;
|
MapViewUI $map_view;
|
||||||
InventoryUI $inventory_ui;
|
InventoryUI $inventory_ui;
|
||||||
LightRender $lights;
|
Canvas $canvas;
|
||||||
bool $show_modal = false;
|
bool $show_modal = false;
|
||||||
Component $test_button;
|
Component $test_button;
|
||||||
DinkyECS::World& $world;
|
|
||||||
SoundManager $sounds;
|
SoundManager $sounds;
|
||||||
SFMLRender $renderer;
|
SFMLRender $renderer;
|
||||||
UnDumbTSS $paused;
|
UnDumbTSS $paused;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue