Working on a better character view.

This commit is contained in:
Zed A. Shaw 2025-05-16 01:22:12 -04:00
parent d6e64dd06b
commit 0eb245d113
10 changed files with 18 additions and 42 deletions

View file

@ -17,9 +17,9 @@ namespace gui {
"[ ritual_ui ]"
"[inv_slot1 | inv_slot2 | inv_slot3]"
"[inv_slot4 | inv_slot5 | inv_slot6]"
"[*%(100,300)log_view]"
"[_]"
"[_]");
"[*%(200,300)character_view|_|stat1]"
"[_|_|stat2]"
"[_|_|stat3]");
size_t inv_id = 0;
for(auto [name, entity] : $gui.$name_ents) {
@ -33,10 +33,14 @@ namespace gui {
$gui.set<Background>($gui.MAIN, {$gui.$parser});
for(auto& [name, cell] : $gui.cells()) {
if(name == "log_view") {
$log_to = $gui.entity("log_view");
$gui.set<Rectangle>($log_to, {});
$gui.set<Textual>($log_to, {L"Welcome to the Game!", 20});
if(name == "character_view") {
auto char_view = $gui.entity(name);
$gui.set<Rectangle>(char_view, {});
$gui.set<Sprite>(char_view, {"peasant_girl"});
} else if(name.starts_with("stat")) {
auto stat = $gui.entity(name);
$gui.set<Rectangle>(stat, {});
$gui.set<Label>(stat, {guecs::to_wstring(name)});
} else {
auto button = $gui.entity(name);
$gui.set<Rectangle>(button, {});
@ -84,30 +88,12 @@ namespace gui {
if(inventory.has_item(inv_id)) {
auto [used, name] = inventory.use($level, inv_id);
if(used) {
// log(fmt::format(L"Used item: {}", name));
log(fmt::format(L"Used item: {}", L"FIX ME ZED"));
} else {
// log(fmt::format(L"You are out of {}.", name));
log(fmt::format(L"Used item: {}", L"FIX ME ZED"));
}
}
}
}
/* WARNING: This is really not the greatest way to do this. */
void StatusUI::update() {
if($gui.has<Textual>($log_to)) {
auto& text = $gui.get<Textual>($log_to);
//BUG: I'm calling this what it is, fix it
wstring log_garbage;
for(auto msg : $messages) {
log_garbage += msg + L"\n";
}
text.update(log_garbage);
}
auto world = $level.world;
if(world->has<components::Inventory>($level.player)) {
auto& inventory = world->get<components::Inventory>($level.player);
@ -136,17 +122,10 @@ namespace gui {
void StatusUI::render(sf::RenderWindow &window) {
$gui.render(window);
// $gui.debug_layout(window);
$ritual_ui.render(window);
}
void StatusUI::log(wstring msg) {
$messages.push_front(msg);
if($messages.size() > MAX_LOG_MESSAGES) {
$messages.pop_back();
}
update();
}
void StatusUI::update_level(GameLevel &level) {
$level = level;
init();