diff --git a/src/main/java/net/rptools/maptool/client/script/javascript/api/JSAPIToken.java b/src/main/java/net/rptools/maptool/client/script/javascript/api/JSAPIToken.java index 8e575a0dc8..4430318346 100644 --- a/src/main/java/net/rptools/maptool/client/script/javascript/api/JSAPIToken.java +++ b/src/main/java/net/rptools/maptool/client/script/javascript/api/JSAPIToken.java @@ -177,4 +177,11 @@ public void setY(int y) { public boolean isOwner(String playerID) { return this.token.isOwner(playerID); } + + @HostAccess.Export + public boolean isOnCurrentMap() { + Token findToken = + MapTool.getFrame().getCurrentZoneRenderer().getZone().getToken(new GUID(this.getId())); + return this.token == findToken; + } } diff --git a/src/main/java/net/rptools/maptool/client/script/javascript/api/JSAPITokens.java b/src/main/java/net/rptools/maptool/client/script/javascript/api/JSAPITokens.java index e30967cb3b..2e07322468 100644 --- a/src/main/java/net/rptools/maptool/client/script/javascript/api/JSAPITokens.java +++ b/src/main/java/net/rptools/maptool/client/script/javascript/api/JSAPITokens.java @@ -19,6 +19,7 @@ import net.rptools.maptool.client.MapTool; import net.rptools.maptool.client.script.javascript.*; import net.rptools.maptool.client.ui.zone.ZoneRenderer; +import net.rptools.maptool.model.GUID; import net.rptools.maptool.model.Token; import org.graalvm.polyglot.HostAccess; @@ -91,10 +92,37 @@ public JSAPIToken getSelected() { @HostAccess.Export public JSAPIToken getTokenByID(String uuid) { - JSAPIToken token = new JSAPIToken(uuid); - if (JSScriptEngine.inTrustedContext() || token.isOwner(MapTool.getPlayer().getName())) { + JSAPIToken token = null; + Token findToken = + MapTool.getFrame().getCurrentZoneRenderer().getZone().getToken(new GUID(uuid)); + if (findToken != null) { + token = new JSAPIToken(findToken); + } else { + List zrenderers = MapTool.getFrame().getZoneRenderers(); + for (ZoneRenderer zr : zrenderers) { + findToken = zr.getZone().resolveToken(uuid); + if (findToken != null) { + token = new JSAPIToken(findToken); + break; + } + } + } + if (token != null + && (JSScriptEngine.inTrustedContext() || token.isOwner(MapTool.getPlayer().getName()))) { return token; } return null; } + + @HostAccess.Export + public JSAPIToken getMapTokenByID(String uuid) { + JSAPIToken token = null; + Token findToken = + MapTool.getFrame().getCurrentZoneRenderer().getZone().getToken(new GUID(uuid)); + if (findToken != null + && (JSScriptEngine.inTrustedContext() || token.isOwner(MapTool.getPlayer().getName()))) { + token = new JSAPIToken(findToken); + } + return token; + } }