diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2025-02-23 06:19:13 +1100 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2025-02-23 06:19:13 +1100 |
commit | 61cefb79a1fb5ccf0be73aff23af5a6e79ad79c4 (patch) | |
tree | 80a4da5755e0f2c9d1ddad5e81ce8e35e82122f5 /source/frontend | |
parent | d0b15c335d9bf8b915e82d230a757671180bf80a (diff) |
remove unusable buttons, make configurable and draggable
[skip ci]
Diffstat (limited to 'source/frontend')
-rw-r--r-- | source/frontend/StarCharSelection.cpp | 14 | ||||
-rw-r--r-- | source/frontend/StarCharSelection.hpp | 2 | ||||
-rw-r--r-- | source/frontend/StarMainInterface.cpp | 22 |
3 files changed, 30 insertions, 8 deletions
diff --git a/source/frontend/StarCharSelection.cpp b/source/frontend/StarCharSelection.cpp index 6cbfb9b..6a61dcf 100644 --- a/source/frontend/StarCharSelection.cpp +++ b/source/frontend/StarCharSelection.cpp @@ -37,8 +37,7 @@ CharSelectionPane::CharSelectionPane(PlayerStoragePtr playerStorage, updateCharacterPlates(); }); guiReader.registerCallback("clearSearch", [=](Widget*) { - auto searchCharacter = fetchChild<TextBoxWidget>("searchCharacter"); - searchCharacter->setText(""); + fetchChild<TextBoxWidget>("searchCharacter")->setText(""); }); guiReader.construct(root.assets()->json("/interface/windowconfig/charselection.config"), this); @@ -63,6 +62,7 @@ void CharSelectionPane::show() { Pane::show(); m_downScroll = 0; + fetchChild<TextBoxWidget>("searchCharacter")->setText(""); updateCharacterPlates(); } @@ -96,14 +96,18 @@ void CharSelectionPane::updateCharacterPlates() { if (m_filteredList.size() > 0 && scrollPosition < m_filteredList.size()) { auto playerUuid = m_filteredList.get(scrollPosition); if (auto player = m_playerStorage->loadPlayer(playerUuid)) { + charSelector->show(); player->humanoid()->setFacingDirection(Direction::Right); charSelector->setPlayer(player); - charSelector->enableDelete([this, playerUuid](Widget*) { m_deleteCallback(playerUuid); }); + if (!m_readOnly) + charSelector->enableDelete([this, playerUuid](Widget*) { m_deleteCallback(playerUuid); }); return; } } charSelector->setPlayer(PlayerPtr()); charSelector->disableDelete(); + if (m_readOnly) + charSelector->hide(); }; updatePlayerLine("charSelector1", m_downScroll + 0); @@ -122,4 +126,8 @@ void CharSelectionPane::updateCharacterPlates() { fetchChild("playerDownButton")->hide(); } +void CharSelectionPane::setReadOnly(bool readOnly) { + findChild("createCharButton")->setVisibility(!(m_readOnly = readOnly)); +} + } diff --git a/source/frontend/StarCharSelection.hpp b/source/frontend/StarCharSelection.hpp index b4837ca..eb4d906 100644 --- a/source/frontend/StarCharSelection.hpp +++ b/source/frontend/StarCharSelection.hpp @@ -19,6 +19,7 @@ public: bool sendEvent(InputEvent const& event) override; void show() override; void updateCharacterPlates(); + void setReadOnly(bool readOnly); private: void shiftCharacters(int movement); @@ -28,6 +29,7 @@ private: unsigned m_downScroll; String m_search; List<Uuid> m_filteredList; + bool m_readOnly = false; CreateCharCallback m_createCallback; SelectCharacterCallback m_selectCallback; diff --git a/source/frontend/StarMainInterface.cpp b/source/frontend/StarMainInterface.cpp index 320cd4f..2b2bb5f 100644 --- a/source/frontend/StarMainInterface.cpp +++ b/source/frontend/StarMainInterface.cpp @@ -169,11 +169,23 @@ MainInterface::MainInterface(UniverseClientPtr client, WorldPainterPtr painter, planetName->addChild("planetText", m_planetText); m_paneManager.registerPane(MainInterfacePanes::PlanetText, PaneLayer::Hud, planetName); - auto charSelectionMenu = make_shared<CharSelectionPane>(m_client->playerStorage(), [=]() {}, [=](PlayerPtr mainPlayer) { - m_client->playerStorage()->moveToFront(mainPlayer->uuid()); - m_client->switchPlayer(mainPlayer->uuid()); - m_paneManager.dismissRegisteredPane(MainInterfacePanes::CharacterSwap); }, [=](Uuid) {}); - charSelectionMenu->setAnchor(PaneAnchor::Center); + auto charSelectionMenu = make_shared<CharSelectionPane>(m_client->playerStorage(), [=]() {}, + [=](PlayerPtr mainPlayer) { + auto configuration = Root::singleton().configuration(); + if (configuration->get("characterSwapMovesToFront", false).toBool()) + m_client->playerStorage()->moveToFront(mainPlayer->uuid()); + if (configuration->get("characterSwapDismisses", false).toBool()) + m_paneManager.dismissRegisteredPane(MainInterfacePanes::CharacterSwap); + m_client->switchPlayer(mainPlayer->uuid()); + }, [=](Uuid) {}); + { + charSelectionMenu->setReadOnly(true); + charSelectionMenu->setAnchor(PaneAnchor::Center); + charSelectionMenu->unlockPosition(); + auto backgrounds = charSelectionMenu->getBG(); + backgrounds.header = std::move(backgrounds.body); + charSelectionMenu->setBG(backgrounds); + } m_paneManager.registerPane(MainInterfacePanes::CharacterSwap, PaneLayer::ModalWindow, charSelectionMenu); |