Zepha/src/client/gui/GameGui.cpp
2020-11-08 22:57:34 -08:00

82 lines
1.7 KiB
C++

//
// Created by aurailus on 05/02/19.
//
#include "GameGui.h"
#include "../graph/Renderer.h"
GameGui::GameGui(InventoryRefsPtr refs, glm::vec2 bufferSize, SubgamePtr defs, Renderer& renderer) :
refs(refs),
defs(defs),
win(bufferSize),
renderer(renderer),
hudBuilder(refs, defs, hudLuaRoot),
menuBuilder(refs, defs, menuLuaRoot) {
hudRoot->add(hudLuaRoot);
menuRoot->add(menuLuaRoot);
handList->create({ 3, 3 }, {}, {}, refs.l()->getCursorList(), refs.l()->getCursorList(), defs);
menuRoot->add(handList);
}
void GameGui::update(double delta) {
menuRoot->update(delta);
hudRoot->update(delta);
hudBuilder.update();
menuBuilder.update();
handList->setPos((renderer.window.input.mousePos() - glm::ivec2(24)) / 3 * 3);
menuRoot->handleMouseInput(renderer.window);
}
void GameGui::winResized(glm::ivec2 win) {
this->win = win;
menuBuilder.build(win);
hudBuilder.build(win);
}
void GameGui::showMenu(std::shared_ptr<LuaGuiElement> root) {
menuBuilder.setGuiRoot(root);
menuBuilder.build(win);
inMenu = true;
}
void GameGui::closeMenu() {
menuBuilder.clear();
inMenu = false;
}
const bool GameGui::isInMenu() const {
return inMenu;
}
void GameGui::setHud(std::shared_ptr<LuaGuiElement> hud) {
this->hudRootElem = hud;
hudBuilder.setGuiRoot(hud);
hudBuilder.build(win);
}
std::shared_ptr<LuaGuiElement> GameGui::getHud() {
return hudRootElem;
}
void GameGui::setVisible(bool visible) {
menuRoot->setVisible(visible);
hudRoot->setVisible(visible);
}
bool GameGui::isVisible() {
return menuRoot->isVisible();
}
void GameGui::drawHud(Renderer& renderer) {
hudRoot->draw(renderer);
}
void GameGui::drawMenu(Renderer& renderer) {
menuRoot->draw(renderer);
}