diff --git a/include/editor.h b/include/editor.h index 92368b0b..9f2af304 100644 --- a/include/editor.h +++ b/include/editor.h @@ -88,7 +88,7 @@ public: void setSelectedConnectionFromMap(QString mapName); void updatePrimaryTileset(QString tilesetLabel, bool forceLoad = false); void updateSecondaryTileset(QString tilesetLabel, bool forceLoad = false); - void toggleBorderVisibility(bool visible); + void toggleBorderVisibility(bool visible, bool enableScriptCallback = true); void updateCustomMapHeaderValues(QTableWidget *); void configureEncounterJSON(QWidget *); Tileset *getCurrentMapPrimaryTileset(); diff --git a/include/scripting.h b/include/scripting.h index 55f5a3ef..ce51f7e1 100644 --- a/include/scripting.h +++ b/include/scripting.h @@ -22,6 +22,7 @@ enum CallbackType { OnTilesetUpdated, OnMainTabChanged, OnMapViewTabChanged, + OnBorderVisibilityToggled, }; class Scripting @@ -52,6 +53,7 @@ public: static void cb_TilesetUpdated(QString tilesetName); static void cb_MainTabChanged(int oldTab, int newTab); static void cb_MapViewTabChanged(int oldTab, int newTab); + static void cb_BorderVisibilityToggled(bool visible); static bool tryErrorJS(QJSValue js); private: diff --git a/src/editor.cpp b/src/editor.cpp index d15b3bbc..5b6f12aa 100644 --- a/src/editor.cpp +++ b/src/editor.cpp @@ -1936,11 +1936,13 @@ void Editor::updateSecondaryTileset(QString tilesetLabel, bool forceLoad) } } -void Editor::toggleBorderVisibility(bool visible) +void Editor::toggleBorderVisibility(bool visible, bool enableScriptCallback) { this->setBorderItemsVisible(visible); this->setConnectionsVisibility(visible); porymapConfig.setShowBorder(visible); + if (enableScriptCallback) + Scripting::cb_BorderVisibilityToggled(visible); } void Editor::updateCustomMapHeaderValues(QTableWidget *table) diff --git a/src/mainwindow_scriptapi.cpp b/src/mainwindow_scriptapi.cpp index 6e0c2487..4cacb8d4 100644 --- a/src/mainwindow_scriptapi.cpp +++ b/src/mainwindow_scriptapi.cpp @@ -794,7 +794,7 @@ bool MainWindow::getGridVisibility() { } void MainWindow::setBorderVisibility(bool visible) { - this->editor->toggleBorderVisibility(visible); + this->editor->toggleBorderVisibility(visible, false); } bool MainWindow::getBorderVisibility() { diff --git a/src/scripting.cpp b/src/scripting.cpp index d5100312..70a8eda4 100644 --- a/src/scripting.cpp +++ b/src/scripting.cpp @@ -15,6 +15,7 @@ QMap callbackFunctions = { {OnTilesetUpdated, "onTilesetUpdated"}, {OnMainTabChanged, "onMainTabChanged"}, {OnMapViewTabChanged, "onMapViewTabChanged"}, + {OnBorderVisibilityToggled, "onBorderVisibilityToggled"}, }; Scripting *instance = nullptr; @@ -241,6 +242,15 @@ void Scripting::cb_MapViewTabChanged(int oldTab, int newTab) { instance->invokeCallback(OnMapViewTabChanged, args); } +void Scripting::cb_BorderVisibilityToggled(bool visible) { + if (!instance) return; + + QJSValueList args { + visible, + }; + instance->invokeCallback(OnBorderVisibilityToggled, args); +} + QJSValue Scripting::fromBlock(Block block) { QJSValue obj = instance->engine->newObject(); obj.setProperty("metatileId", block.metatileId);