// // Created by Louis Auzuret 06/03/21 // #include #include "Component/Button/ButtonComponent.hpp" #include "Component/Position/PositionComponent.hpp" #include "System/MenuControllable/MenuControllableSystem.hpp" #include "Component/Controllable/ControllableComponent.hpp" #include "Entity/Entity.hpp" namespace BBM { MenuControllableSystem::MenuControllableSystem(WAL::Wal &wal) : System(wal), wal(wal) {} void MenuControllableSystem::updateButtonIndex(int length) { _buttonIndex -= (move.y > 0); _buttonIndex += (move.y < 0); if (_buttonIndex < 0) _buttonIndex = length - 1; if (_buttonIndex == length) _buttonIndex = 0; } void MenuControllableSystem::onFixedUpdate(WAL::ViewEntity &entity) { auto &controllable = entity.get(); move = controllable.move; select = controllable.bomb; } void MenuControllableSystem::onSelfUpdate(void) { auto &buttons = wal.scene->view(); ssize_t index = 0; //std::sort(buttons.begin(), buttons.end(), //[](WAL::Entity &first, WAL::Entity &second) { // auto &posA = first.getComponent(); // auto &posB = second.getComponent(); // // return (posA.position.y < posB.position.y); //}); updateButtonIndex(buttons.size()); for (auto &button : buttons) { if (index++ == _buttonIndex) { button.get().onHover(button); if (select) button.get().onClick(button); continue; } button.get().onIdle(button); } } }