Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/frontend
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2025-02-23 06:19:13 +1100
committerKae <80987908+Novaenia@users.noreply.github.com>2025-02-23 06:19:13 +1100
commit61cefb79a1fb5ccf0be73aff23af5a6e79ad79c4 (patch)
tree80a4da5755e0f2c9d1ddad5e81ce8e35e82122f5 /source/frontend
parentd0b15c335d9bf8b915e82d230a757671180bf80a (diff)
remove unusable buttons, make configurable and draggable
[skip ci]
Diffstat (limited to 'source/frontend')
-rw-r--r--source/frontend/StarCharSelection.cpp14
-rw-r--r--source/frontend/StarCharSelection.hpp2
-rw-r--r--source/frontend/StarMainInterface.cpp22
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);