Now have a nice panel to hold all the UI panels we'll use later.
This commit is contained in:
parent
baaf56d4de
commit
9bc9c9007f
12 changed files with 123 additions and 83 deletions
35
gui.cpp
35
gui.cpp
|
@ -32,9 +32,9 @@ using namespace components;
|
|||
GUI::GUI(DinkyECS::World &world, Map& game_map) :
|
||||
$game_map(game_map),
|
||||
$log({{"Welcome to the game!"}}),
|
||||
$status_ui(SCREEN_X, SCREEN_Y, 0, 0),
|
||||
$map_view(0, 0, GAME_MAP_POS, 0, false),
|
||||
$view_port{0,0},
|
||||
$status_screen(SCREEN_X, SCREEN_Y),
|
||||
$map_screen(0,0),
|
||||
$world(world),
|
||||
$sounds("./assets"),
|
||||
$renderer()
|
||||
|
@ -52,7 +52,7 @@ void GUI::resize_map(int new_size) {
|
|||
if($renderer.resize_map(new_size, $view_port)) {
|
||||
// set canvas to best size
|
||||
$canvas = Canvas($view_port.x * 2, $view_port.y * 4);
|
||||
$map_screen = Screen($view_port.x, $view_port.y);
|
||||
$map_view.resize($view_port.x, $view_port.y);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -65,17 +65,12 @@ void GUI::create_renderer() {
|
|||
Terminal::SetColorSupport(Terminal::Color::TrueColor);
|
||||
auto player = $world.get_the<Player>();
|
||||
|
||||
$map_view = Renderer([&] {
|
||||
$map_view.set_renderer([&] {
|
||||
System::draw_map($world, $game_map, $canvas, $view_port.x, $view_port.y);
|
||||
return canvas($canvas);
|
||||
});
|
||||
|
||||
$prompt = Renderer([&] {
|
||||
return hbox({hflow(vbox(text("HELLO!")))}) | border;
|
||||
});
|
||||
|
||||
|
||||
$status_ui = Renderer([&, player]{
|
||||
$status_ui.set_renderer([&, player]{
|
||||
const auto& player_combat = $world.get<Combat>(player.entity);
|
||||
const auto& inventory = $world.get<Inventory>(player.entity);
|
||||
$status_text = player_combat.hp > 0 ? "NOT DEAD" : "DEAD!!!!!!";
|
||||
|
@ -194,10 +189,10 @@ void GUI::run_systems() {
|
|||
|
||||
void GUI::shake() {
|
||||
for(int i = 0; i < 10; ++i) {
|
||||
int x = Random::uniform<int>(-10,10);
|
||||
int y = Random::uniform<int>(-10,10);
|
||||
int x = Random::uniform<int>(-20,20);
|
||||
int y = Random::uniform<int>(-20,20);
|
||||
// add x/y back to draw screen
|
||||
$renderer.draw_screen($map_screen, x, y);
|
||||
$renderer.draw_screen($map_view, x, y);
|
||||
std::this_thread::sleep_for(1ms);
|
||||
}
|
||||
}
|
||||
|
@ -205,18 +200,8 @@ void GUI::shake() {
|
|||
void GUI::render_scene() {
|
||||
$renderer.clear();
|
||||
|
||||
$status_screen.Clear();
|
||||
Render($status_screen, $status_ui->Render());
|
||||
$renderer.draw_text_ui($status_screen, 0, 0);
|
||||
|
||||
Render($map_screen, $map_view->Render());
|
||||
$renderer.draw_screen($map_screen);
|
||||
|
||||
/*
|
||||
Screen prompt_screen(30,10);
|
||||
Render(prompt_screen, $prompt->Render());
|
||||
$renderer.draw_text_ui(prompt_screen, 700, 300);
|
||||
*/
|
||||
$renderer.draw_text_ui($status_ui);
|
||||
$renderer.draw_screen($map_view);
|
||||
|
||||
$renderer.display();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue