added inventory & active object

This commit is contained in:
Vlad committed 2026-04-09 15:33:55 +06:00
1 parent e1b491be73
commit b3fda88784
16 files changed
+793 -98

No files matched your search

+68 -18
View File
@@ -1092,24 +1092,55 @@ namespace ZL {
renderer.PushMatrix();
renderer.LoadIdentity();
for (const auto& img : staticImages) {
img->draw(renderer);
}
for (const auto& b : buttons) {
b->draw(renderer);
}
for (const auto& tb : textButtons) {
tb->draw(renderer);
}
for (const auto& s : sliders) {
s->draw(renderer);
}
for (const auto& tv : textViews) {
tv->draw(renderer);
}
for (const auto& tf : textFields) {
tf->draw(renderer);
}
std::function<void(const std::shared_ptr<UiNode>&)> drawNode =
[&](const std::shared_ptr<UiNode>& node) {
if (!node || !node->visible) return;
renderer.PushMatrix();
renderer.TranslateMatrix({ node->screenRect.x + node->screenRect.w * 0.5f,
node->screenRect.y + node->screenRect.h * 0.5f, 0.0f });
renderer.ScaleMatrix({ node->scaleX, node->scaleY, 1.0f });
renderer.TranslateMatrix({ -(node->screenRect.x + node->screenRect.w * 0.5f),
-(node->screenRect.y + node->screenRect.h * 0.5f), 0.0f });
// 1. Сначала изображения
if (node->staticImage) {
node->staticImage->draw(renderer);
}
// 2. Потом кнопки
if (node->button) {
node->button->draw(renderer);
}
if (node->textButton) {
node->textButton->draw(renderer);
}
// 3. Потом слайдеры
if (node->slider) {
node->slider->draw(renderer);
}
// 4. Потом текстовые поля
if (node->textField) {
node->textField->draw(renderer);
}
// 5. ПОСЛЕДНИЙ - ТЕКСТ (поверх всего!)
if (node->textView) {
node->textView->draw(renderer);
}
// Рисуем детей
for (auto& child : node->children) {
drawNode(child);
}
renderer.PopMatrix();
};
drawNode(root);
renderer.PopMatrix();
renderer.PopProjectionMatrix();
@@ -1641,4 +1672,23 @@ namespace ZL {
return true;
}
std::shared_ptr<UiNode> UiManager::findNode(const std::string& name) {
if (!root) return nullptr;
return findNodeByName(root, name);
}
bool UiManager::setNodeVisible(const std::string& nodeName, bool visible) {
if (!root) return false;
auto node = findNodeByName(root, nodeName);
if (!node) return false;
node->visible = visible;
return true;
}
bool UiManager::getNodeVisible(const std::string& nodeName) {
if (!root) return false;
auto node = findNodeByName(root, nodeName);
if (!node) return false;
return node->visible;
}
} // namespace ZL