From cd14c2946360d0bc7747056cc0a85fadd8901852 Mon Sep 17 00:00:00 2001 From: jmr3366 Date: Sun, 10 Sep 2023 22:45:32 -0400 Subject: [PATCH 1/4] onChangeMap event --- .../java/net/rptools/maptool/client/AppActions.java | 8 ++++++++ .../maptool/client/functions/MapFunctions.java | 1 + .../maptool/client/ui/syntax/MapToolScriptSyntax.java | 1 + .../model/library/token/LibTokenConverter.java | 2 +- .../maptool/model/player/PlayerZoneListener.java | 11 +++++++++++ 5 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/rptools/maptool/client/AppActions.java b/src/main/java/net/rptools/maptool/client/AppActions.java index a61ba52407..9bc60998c9 100644 --- a/src/main/java/net/rptools/maptool/client/AppActions.java +++ b/src/main/java/net/rptools/maptool/client/AppActions.java @@ -14,6 +14,8 @@ */ package net.rptools.maptool.client; +import static net.rptools.maptool.client.functions.MapFunctions.ON_CHANGE_MAP_CALLBACK; + import com.jidesoft.docking.DockableFrame; import java.awt.*; import java.awt.event.ActionEvent; @@ -498,6 +500,12 @@ protected void executeAction() { } MapTool.serverCommand().enforceZone(renderer.getZone().getId()); + List libTokens = EventMacroUtil.getEventMacroTokens(ON_CHANGE_MAP_CALLBACK); + String prefix = ON_CHANGE_MAP_CALLBACK + "@"; + for (Token handler : libTokens) { + EventMacroUtil.callEventHandlerOld( + prefix + handler.getName(), "", handler, Collections.emptyMap(), true); + } } }; diff --git a/src/main/java/net/rptools/maptool/client/functions/MapFunctions.java b/src/main/java/net/rptools/maptool/client/functions/MapFunctions.java index df0190f68a..749c62bd67 100644 --- a/src/main/java/net/rptools/maptool/client/functions/MapFunctions.java +++ b/src/main/java/net/rptools/maptool/client/functions/MapFunctions.java @@ -39,6 +39,7 @@ import net.rptools.parser.function.AbstractFunction; public class MapFunctions extends AbstractFunction { + public static final String ON_CHANGE_MAP_CALLBACK = "onChangeMap"; private static final MapFunctions instance = new MapFunctions(); private MapFunctions() { diff --git a/src/main/java/net/rptools/maptool/client/ui/syntax/MapToolScriptSyntax.java b/src/main/java/net/rptools/maptool/client/ui/syntax/MapToolScriptSyntax.java index 9b0591b73a..20ef6a676a 100644 --- a/src/main/java/net/rptools/maptool/client/ui/syntax/MapToolScriptSyntax.java +++ b/src/main/java/net/rptools/maptool/client/ui/syntax/MapToolScriptSyntax.java @@ -97,6 +97,7 @@ public class MapToolScriptSyntax extends MapToolScriptTokenMaker { static String[] RESERVED_WORDS_2 = { "onCampaignLoad", + "onChangeMap", "onChangeSelection", "onMouseOverEvent", TokenMoveFunctions.ON_MULTIPLE_TOKENS_MOVED_COMPLETE_CALLBACK, diff --git a/src/main/java/net/rptools/maptool/model/library/token/LibTokenConverter.java b/src/main/java/net/rptools/maptool/model/library/token/LibTokenConverter.java index 0e079e9721..3815c56abd 100644 --- a/src/main/java/net/rptools/maptool/model/library/token/LibTokenConverter.java +++ b/src/main/java/net/rptools/maptool/model/library/token/LibTokenConverter.java @@ -91,7 +91,7 @@ public void convert() { macroScriptNameMap.put(macroName, macroName + ".mts"); legacyEventNameMap.put(macroName, macroName); } - case "onCampaignLoad" -> { + case "onCampaignLoad", "onChangeMap" -> { macroScriptNameMap.put(macroName, macroName + ".mts"); eventNameMap.put(macroName, macroName); } diff --git a/src/main/java/net/rptools/maptool/model/player/PlayerZoneListener.java b/src/main/java/net/rptools/maptool/model/player/PlayerZoneListener.java index df701f5cee..d69d80671c 100644 --- a/src/main/java/net/rptools/maptool/model/player/PlayerZoneListener.java +++ b/src/main/java/net/rptools/maptool/model/player/PlayerZoneListener.java @@ -14,12 +14,17 @@ */ package net.rptools.maptool.model.player; +import static net.rptools.maptool.client.functions.MapFunctions.ON_CHANGE_MAP_CALLBACK; + import com.google.common.eventbus.Subscribe; +import java.util.Collections; import net.rptools.maptool.client.MapTool; import net.rptools.maptool.client.events.PlayerStatusChanged; import net.rptools.maptool.client.events.ZoneLoaded; import net.rptools.maptool.client.events.ZoneLoading; import net.rptools.maptool.events.MapToolEventBus; +import net.rptools.maptool.model.Token; +import net.rptools.maptool.util.EventMacroUtil; public class PlayerZoneListener { public PlayerZoneListener() { @@ -54,6 +59,8 @@ public void OnZoneLoading(ZoneLoading event) { @Subscribe public void OnZoneLoaded(ZoneLoaded event) { + var libTokens = EventMacroUtil.getEventMacroTokens(ON_CHANGE_MAP_CALLBACK); + String prefix = ON_CHANGE_MAP_CALLBACK + "@"; var player = MapTool.getPlayer(); player.setLoaded(true); player.setZoneId(event.zone().getId()); @@ -76,5 +83,9 @@ public void OnZoneLoaded(ZoneLoaded event) { eventBus.post(new PlayerStatusChanged(player)); MapTool.serverCommand().updatePlayerStatus(player); + for (Token handler : libTokens) { + EventMacroUtil.callEventHandlerOld( + prefix + handler.getName(), "", handler, Collections.emptyMap(), true); + } } } From 1d9303ec8e44285a43be15f9388175d05249f429 Mon Sep 17 00:00:00 2001 From: jmr3366 Date: Mon, 11 Sep 2023 08:23:15 -0400 Subject: [PATCH 2/4] onChangeMap event, with corrections --- .../net/rptools/maptool/client/MapTool.java | 3 ++ .../maptool/events/ZoneLoadedListener.java | 41 +++++++++++++++++++ .../model/player/PlayerZoneListener.java | 11 ----- 3 files changed, 44 insertions(+), 11 deletions(-) create mode 100644 src/main/java/net/rptools/maptool/events/ZoneLoadedListener.java diff --git a/src/main/java/net/rptools/maptool/client/MapTool.java b/src/main/java/net/rptools/maptool/client/MapTool.java index e740218d23..ceaa5fbab5 100644 --- a/src/main/java/net/rptools/maptool/client/MapTool.java +++ b/src/main/java/net/rptools/maptool/client/MapTool.java @@ -80,6 +80,7 @@ import net.rptools.maptool.client.ui.zone.ZoneRenderer; import net.rptools.maptool.client.ui.zone.ZoneRendererFactory; import net.rptools.maptool.events.MapToolEventBus; +import net.rptools.maptool.events.ZoneLoadedListener; import net.rptools.maptool.language.I18N; import net.rptools.maptool.model.AssetManager; import net.rptools.maptool.model.Campaign; @@ -158,6 +159,7 @@ public class MapTool { private static List playerList; private static LocalPlayer player; private static PlayerZoneListener playerZoneListener; + private static ZoneLoadedListener zoneLoadedListener; private static MapToolConnection conn; private static ClientMessageHandler handler; @@ -679,6 +681,7 @@ private static void initialize() { try { player = new LocalPlayer("", Player.Role.GM, ServerConfig.getPersonalServerGMPassword()); playerZoneListener = new PlayerZoneListener(); + zoneLoadedListener = new ZoneLoadedListener(); Campaign cmpgn = CampaignFactory.createBasicCampaign(); // This was previously being done in the server thread and didn't always get done // before the campaign was accessed by the postInitialize() method below. diff --git a/src/main/java/net/rptools/maptool/events/ZoneLoadedListener.java b/src/main/java/net/rptools/maptool/events/ZoneLoadedListener.java new file mode 100644 index 0000000000..1f9ee6681a --- /dev/null +++ b/src/main/java/net/rptools/maptool/events/ZoneLoadedListener.java @@ -0,0 +1,41 @@ +/* + * This software Copyright by the RPTools.net development team, and + * licensed under the Affero GPL Version 3 or, at your option, any later + * version. + * + * MapTool Source Code is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public + * License * along with this source Code. If not, please visit + * and specifically the Affero license + * text at . + */ +package net.rptools.maptool.events; + +import static net.rptools.maptool.client.functions.MapFunctions.ON_CHANGE_MAP_CALLBACK; + +import com.google.common.eventbus.Subscribe; +import java.util.Collections; +import net.rptools.maptool.client.events.ZoneLoaded; +import net.rptools.maptool.model.Token; +import net.rptools.maptool.util.EventMacroUtil; + +public class ZoneLoadedListener { + + public ZoneLoadedListener() { + new MapToolEventBus().getMainEventBus().register(this); + } + + @Subscribe + public void OnChangedMap(ZoneLoaded event) { + var libTokens = EventMacroUtil.getEventMacroTokens(ON_CHANGE_MAP_CALLBACK); + String prefix = ON_CHANGE_MAP_CALLBACK + "@"; + + for (Token handler : libTokens) { + EventMacroUtil.callEventHandlerOld( + prefix + handler.getName(), "", handler, Collections.emptyMap(), true); + } + } +} diff --git a/src/main/java/net/rptools/maptool/model/player/PlayerZoneListener.java b/src/main/java/net/rptools/maptool/model/player/PlayerZoneListener.java index d69d80671c..df701f5cee 100644 --- a/src/main/java/net/rptools/maptool/model/player/PlayerZoneListener.java +++ b/src/main/java/net/rptools/maptool/model/player/PlayerZoneListener.java @@ -14,17 +14,12 @@ */ package net.rptools.maptool.model.player; -import static net.rptools.maptool.client.functions.MapFunctions.ON_CHANGE_MAP_CALLBACK; - import com.google.common.eventbus.Subscribe; -import java.util.Collections; import net.rptools.maptool.client.MapTool; import net.rptools.maptool.client.events.PlayerStatusChanged; import net.rptools.maptool.client.events.ZoneLoaded; import net.rptools.maptool.client.events.ZoneLoading; import net.rptools.maptool.events.MapToolEventBus; -import net.rptools.maptool.model.Token; -import net.rptools.maptool.util.EventMacroUtil; public class PlayerZoneListener { public PlayerZoneListener() { @@ -59,8 +54,6 @@ public void OnZoneLoading(ZoneLoading event) { @Subscribe public void OnZoneLoaded(ZoneLoaded event) { - var libTokens = EventMacroUtil.getEventMacroTokens(ON_CHANGE_MAP_CALLBACK); - String prefix = ON_CHANGE_MAP_CALLBACK + "@"; var player = MapTool.getPlayer(); player.setLoaded(true); player.setZoneId(event.zone().getId()); @@ -83,9 +76,5 @@ public void OnZoneLoaded(ZoneLoaded event) { eventBus.post(new PlayerStatusChanged(player)); MapTool.serverCommand().updatePlayerStatus(player); - for (Token handler : libTokens) { - EventMacroUtil.callEventHandlerOld( - prefix + handler.getName(), "", handler, Collections.emptyMap(), true); - } } } From d73d24486a8fe307632d44da3f866dcd570191ed Mon Sep 17 00:00:00 2001 From: jmr3366 Date: Mon, 11 Sep 2023 21:39:39 -0400 Subject: [PATCH 3/4] onChangeMap event, attempt 2, with corrections --- src/main/java/net/rptools/maptool/client/AppActions.java | 6 ------ .../maptool/model/library/token/LibTokenConverter.java | 5 +++-- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/src/main/java/net/rptools/maptool/client/AppActions.java b/src/main/java/net/rptools/maptool/client/AppActions.java index 9bc60998c9..af3f2926bc 100644 --- a/src/main/java/net/rptools/maptool/client/AppActions.java +++ b/src/main/java/net/rptools/maptool/client/AppActions.java @@ -500,12 +500,6 @@ protected void executeAction() { } MapTool.serverCommand().enforceZone(renderer.getZone().getId()); - List libTokens = EventMacroUtil.getEventMacroTokens(ON_CHANGE_MAP_CALLBACK); - String prefix = ON_CHANGE_MAP_CALLBACK + "@"; - for (Token handler : libTokens) { - EventMacroUtil.callEventHandlerOld( - prefix + handler.getName(), "", handler, Collections.emptyMap(), true); - } } }; diff --git a/src/main/java/net/rptools/maptool/model/library/token/LibTokenConverter.java b/src/main/java/net/rptools/maptool/model/library/token/LibTokenConverter.java index 3815c56abd..047e693ee1 100644 --- a/src/main/java/net/rptools/maptool/model/library/token/LibTokenConverter.java +++ b/src/main/java/net/rptools/maptool/model/library/token/LibTokenConverter.java @@ -87,11 +87,12 @@ public void convert() { case "onInitiativeChangeRequest", "onInitiativeChange", "onTokenMove", - "onMultipleTokensMove" -> { + "onMultipleTokensMove", + "onChangeMap" -> { macroScriptNameMap.put(macroName, macroName + ".mts"); legacyEventNameMap.put(macroName, macroName); } - case "onCampaignLoad", "onChangeMap" -> { + case "onCampaignLoad" -> { macroScriptNameMap.put(macroName, macroName + ".mts"); eventNameMap.put(macroName, macroName); } From db453b05ac7dc2c5c4ffab4b9735c17d00729740 Mon Sep 17 00:00:00 2001 From: jmr3366 Date: Mon, 11 Sep 2023 21:46:08 -0400 Subject: [PATCH 4/4] onChangeMap event, attempt 2b, with corrections --- src/main/java/net/rptools/maptool/client/AppActions.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/net/rptools/maptool/client/AppActions.java b/src/main/java/net/rptools/maptool/client/AppActions.java index af3f2926bc..a61ba52407 100644 --- a/src/main/java/net/rptools/maptool/client/AppActions.java +++ b/src/main/java/net/rptools/maptool/client/AppActions.java @@ -14,8 +14,6 @@ */ package net.rptools.maptool.client; -import static net.rptools.maptool.client.functions.MapFunctions.ON_CHANGE_MAP_CALLBACK; - import com.jidesoft.docking.DockableFrame; import java.awt.*; import java.awt.event.ActionEvent;