added inventory & active object
This commit is contained in:
1 parent
e1b491be73
commit
b3fda88784
16 files changed
+793
-98
No files matched your search
+68
-18
@@ -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
|
||||
Reference in new issue
Block a user