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

summaryrefslogtreecommitdiff
path: root/source/frontend
diff options
context:
space:
mode:
Diffstat (limited to 'source/frontend')
-rw-r--r--source/frontend/StarMainInterface.cpp33
-rw-r--r--source/frontend/StarScriptPane.cpp4
-rw-r--r--source/frontend/StarScriptPane.hpp1
3 files changed, 22 insertions, 16 deletions
diff --git a/source/frontend/StarMainInterface.cpp b/source/frontend/StarMainInterface.cpp
index 5163eeb..9f0bc0d 100644
--- a/source/frontend/StarMainInterface.cpp
+++ b/source/frontend/StarMainInterface.cpp
@@ -220,15 +220,12 @@ void MainInterface::openMerchantWindow(Json const& config, EntityId sourceEntity
}
bool openWithInventory = config.getBool("openWithInventory", true);
+ bool closeWithInventory = config.getBool("closeWithInventory", !m_paneManager.registeredPaneIsDisplayed(MainInterfacePanes::Inventory));
m_merchantWindow = make_shared<MerchantPane>(m_client->worldClient(), m_client->mainPlayer(), config, sourceEntityId);
- m_paneManager.displayPane(PaneLayer::Window,
- m_merchantWindow,
- [this, openWithInventory](PanePtr const&) {
- if (auto player = m_client->mainPlayer())
- player->clearSwap();
- if (openWithInventory)
- m_paneManager.dismissRegisteredPane(MainInterfacePanes::Inventory);
- });
+ m_paneManager.displayPane(PaneLayer::Window, m_merchantWindow, [this, closeWithInventory](PanePtr const&) {
+ if (closeWithInventory)
+ m_paneManager.dismissRegisteredPane(MainInterfacePanes::Inventory);
+ });
if (openWithInventory)
m_paneManager.displayRegisteredPane(MainInterfacePanes::Inventory);
@@ -404,13 +401,17 @@ void MainInterface::handleInteractAction(InteractAction interactAction) {
m_containerInteractor->openContainer(containerEntity);
+ bool closeWithInventory = !m_paneManager.registeredPaneIsDisplayed(MainInterfacePanes::Inventory);
m_paneManager.displayRegisteredPane(MainInterfacePanes::Inventory);
m_containerPane = make_shared<ContainerPane>(world, m_client->mainPlayer(), m_containerInteractor);
- m_paneManager.displayPane(PaneLayer::Window, m_containerPane, [this](PanePtr const&) {
- if (auto player = m_client->mainPlayer())
- player->clearSwap();
- m_paneManager.dismissRegisteredPane(MainInterfacePanes::Inventory);
+ m_paneManager.displayPane(PaneLayer::Window, m_containerPane, [this, closeWithInventory](PanePtr const&) {
+ if (closeWithInventory)
+ m_paneManager.dismissRegisteredPane(MainInterfacePanes::Inventory);
+ else {
+ m_containerInteractor->closeContainer();
+ m_containerPane = {};
+ }
});
m_paneManager.bringPaneAdjacent(m_paneManager.registeredPane(MainInterfacePanes::Inventory),
@@ -1580,10 +1581,10 @@ void MainInterface::displayScriptPane(ScriptPanePtr& scriptPane, EntityId source
layer = PaneLayerNames.getLeft(*layerName);
if (scriptPane->openWithInventory()) {
- m_paneManager.displayPane(layer, scriptPane, [this](PanePtr const&) {
- if (auto player = m_client->mainPlayer())
- player->clearSwap();
- m_paneManager.dismissRegisteredPane(MainInterfacePanes::Inventory);
+ bool closeWithInventory = scriptPane->closeWithInventory();
+ m_paneManager.displayPane(layer, scriptPane, [this, closeWithInventory](PanePtr const&) {
+ if (closeWithInventory)
+ m_paneManager.dismissRegisteredPane(MainInterfacePanes::Inventory);
});
m_paneManager.displayRegisteredPane(MainInterfacePanes::Inventory);
m_paneManager.bringPaneAdjacent(m_paneManager.registeredPane(MainInterfacePanes::Inventory),
diff --git a/source/frontend/StarScriptPane.cpp b/source/frontend/StarScriptPane.cpp
index c98bd2c..bcd599c 100644
--- a/source/frontend/StarScriptPane.cpp
+++ b/source/frontend/StarScriptPane.cpp
@@ -88,6 +88,10 @@ bool ScriptPane::openWithInventory() const {
return m_config.getBool("openWithInventory", false);
}
+bool ScriptPane::closeWithInventory() const {
+ return m_config.getBool("closeWithInventory", openWithInventory());
+}
+
EntityId ScriptPane::sourceEntityId() const {
return m_sourceEntityId;
}
diff --git a/source/frontend/StarScriptPane.hpp b/source/frontend/StarScriptPane.hpp
index 9f31dc6..e583d51 100644
--- a/source/frontend/StarScriptPane.hpp
+++ b/source/frontend/StarScriptPane.hpp
@@ -20,6 +20,7 @@ public:
PanePtr createTooltip(Vec2I const& screenPosition) override;
bool openWithInventory() const;
+ bool closeWithInventory() const;
EntityId sourceEntityId() const;