From ec28088945a3f4975ca0f05b4da61e1ec192a207 Mon Sep 17 00:00:00 2001 From: Entrox-Licher Date: Mon, 19 Jun 2023 01:46:11 -0400 Subject: [PATCH] Addressed the last of PR suggestions, fixing several issues with option panel importing --- src/accessories/CampaignImporterExporter.ttslua | 16 ++++++++++------ src/core/Global.ttslua | 5 +++-- src/core/OptionPanelApi.ttslua | 16 ++++++++++++++++ 3 files changed, 29 insertions(+), 8 deletions(-) create mode 100644 src/core/OptionPanelApi.ttslua diff --git a/src/accessories/CampaignImporterExporter.ttslua b/src/accessories/CampaignImporterExporter.ttslua index f9399881..bf1a1642 100644 --- a/src/accessories/CampaignImporterExporter.ttslua +++ b/src/accessories/CampaignImporterExporter.ttslua @@ -46,10 +46,10 @@ local DAMAGE_HORROR_GUIDS = { "468e88"; "0257d9"; "7b5729"; "beb964"; } -local deckImporterApi - local chaosBagApi local playAreaAPI +local optionPanelApi +local deckImporterApi local campaignBoxGUID @@ -57,13 +57,14 @@ function onLoad(save_state) chaosBagApi = require("chaosbag/ChaosBagApi") playAreaAPI = require("core/PlayAreaApi") deckImporterApi = require("arkhamdb/DeckImporterApi") + optionPanelApi = require("core/OptionPanelApi") campaignBoxGUID = "" self.createButton({ click_function = "findCampaignFromToken", function_owner = self, label = "Import", - tooltip = "Create a campaign save token!\n\n(Ensure all chaos tokens have been unsealed!)", + tooltip = "Load in a campaign save from a token!\n\n(Token can be anywhere on the table, but ensure there is only 1!)", position = {x=-1, y=0.2, z=0}, font_size = 400, width = 1400, @@ -74,7 +75,7 @@ function onLoad(save_state) click_function = "createCampaignToken", function_owner = self, label = "Export", - tooltip = "Load in a campaign save from a token!", + tooltip = "Create a campaign save token!\n\n(Ensure all chaos tokens have been unsealed!)", position = {x=1, y=0.2, z=0}, font_size = 400, width = 1400, @@ -167,7 +168,10 @@ function createCampaignFromToken(importData) end ) end - Global.call("loadSettings", importData["options"]) + Wait.time( + function() optionPanelApi.loadSettings(importData["options"]) end, + 0.5 + ) broadcastToAll("Campaign successfully imported!", Color.Green) end @@ -217,7 +221,7 @@ function createCampaignToken(_, _, _) decks = deckImporterApi.getUiState(), clueCount = playAreaAPI.getInvestigatorCount(), guide = campaignGuidePage, - options = Global.getTable("optionPanel") + options = optionPanelApi.getOptionPanel() } campaignTokenData.GMNotes = JSON.encode(campaignData) campaignTokenData.Nickname = os.date("%b %d ") .. getObjectFromGUID(campaignBoxGUID).getName() .. " Save" diff --git a/src/core/Global.ttslua b/src/core/Global.ttslua index bb950091..e73a316b 100644 --- a/src/core/Global.ttslua +++ b/src/core/Global.ttslua @@ -550,7 +550,6 @@ end function getChaosBagState() local tokens = {} local invertedTable = createChaosTokenNameLookupTable() - log(invertedTable) local chaosbag = findChaosBag() for _, v in ipairs(chaosbag.getObjects()) do @@ -969,7 +968,9 @@ end ---@param rotation Vector Rotation of the object for spawning (default: {0, 270, 0}) ---@return. GUID of the spawnedObj (or nil if object was removed) function spawnOrRemoveHelper(state, name, position, rotation) - if state then + if (type(state) == "table" and #state == 0) then + return removeHelperObject(name) + elseif state then Player.getPlayers()[1].pingTable(position) return spawnHelperObject(name, position, rotation).getGUID() else diff --git a/src/core/OptionPanelApi.ttslua b/src/core/OptionPanelApi.ttslua new file mode 100644 index 00000000..866f8344 --- /dev/null +++ b/src/core/OptionPanelApi.ttslua @@ -0,0 +1,16 @@ +do + local OptionPanelApi = {} + + -- loads saved options + ---@param options Table New options table + OptionPanelApi.loadSettings = function(options) + return Global.call("loadSettings", options) + end + + -- returns option panel table + OptionPanelApi.getOptionPanel = function() + return Global.getTable("optionPanel") + end + + return OptionPanelApi +end \ No newline at end of file