From 2c22da022f1eaf420af050b7ce6ca33e7d6021e6 Mon Sep 17 00:00:00 2001 From: "Zed A. Shaw" Date: Wed, 23 Jul 2025 00:25:00 -0400 Subject: [PATCH] Text can be centered wither with the centered attribute on a class or with = in the spec. --- demos/clicker_game.cpp | 17 ++++++++--------- src/guecs/sfml/components.cpp | 3 ++- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/demos/clicker_game.cpp b/demos/clicker_game.cpp index 6e271ec..7651ee1 100644 --- a/demos/clicker_game.cpp +++ b/demos/clicker_game.cpp @@ -73,7 +73,7 @@ struct ClickerUI { ClickerUI() { $gui.position(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT); $gui.layout( - "[_|*%(300,400)clicker|_|_|_]" + "[_|=*%(300,400)clicker|_|_|_]" "[_|_ |_|_|_]" "[_|_ |_|_|_]" "[_|_ |_|_|_]" @@ -135,15 +135,14 @@ struct ClickerUI { using enum Event; switch(ev) { case CLICKER: { - auto& shaker = $gui.get($clicker); - auto& sprite = $gui.get($clicker); - shaker.play(sprite); - fmt::println("CLICKER LOVES YOU!"); - } break; + auto& shaker = $gui.get($clicker); + auto& sprite = $gui.get($clicker); + shaker.play(sprite); + fmt::println("CLICKER LOVES YOU!"); + } break; case A_BUTTON: - fmt::println("a button clicked"); - break; - + fmt::println("a button clicked"); + break; default: assert(false && "invalid event"); } diff --git a/src/guecs/sfml/components.cpp b/src/guecs/sfml/components.cpp index db46ad6..06c2f0f 100644 --- a/src/guecs/sfml/components.cpp +++ b/src/guecs/sfml/components.cpp @@ -13,7 +13,7 @@ namespace guecs { if(text == nullptr) text = make_shared(*font, content, size); text->setFillColor(color); - if(centered) { + if(centered || cell.center) { auto bounds = text->getLocalBounds(); auto text_cell = lel::center(bounds.size.x, bounds.size.y, cell); // this stupid / 2 is because SFML renders from baseline rather than from the claimed bounding box @@ -57,6 +57,7 @@ namespace guecs { sf::IntRect rect{{0,0}, bounds}; sprite = make_shared(*sprite_texture.texture, rect); + fmt::println("SPRITE centered: {}", cell.center); sprite->setPosition({float(cell.x + padding), float(cell.y + padding)});