mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-11 19:25:21 +01:00
Fixed so that users can access sceneEnvironments if they have permissions
This commit is contained in:
parent
ec0b0df02e
commit
503aa712e6
2 changed files with 17 additions and 6 deletions
|
|
@ -1,3 +1,5 @@
|
||||||
|
import { emitAsGM, GMUpdateEvent } from '../../systemRegistration/socket.mjs';
|
||||||
|
|
||||||
export default class DhSceneNavigation extends foundry.applications.ui.SceneNavigation {
|
export default class DhSceneNavigation extends foundry.applications.ui.SceneNavigation {
|
||||||
/** @inheritdoc */
|
/** @inheritdoc */
|
||||||
static DEFAULT_OPTIONS = {
|
static DEFAULT_OPTIONS = {
|
||||||
|
|
@ -26,7 +28,9 @@ export default class DhSceneNavigation extends foundry.applications.ui.SceneNavi
|
||||||
if (!scene.flags.daggerheart) return x;
|
if (!scene.flags.daggerheart) return x;
|
||||||
|
|
||||||
const daggerheartInfo = new game.system.api.data.scenes.DHScene(scene.flags.daggerheart);
|
const daggerheartInfo = new game.system.api.data.scenes.DHScene(scene.flags.daggerheart);
|
||||||
const environments = daggerheartInfo.sceneEnvironments.filter(x => x);
|
const environments = daggerheartInfo.sceneEnvironments.filter(
|
||||||
|
x => x && x.testUserPermission(game.user, 'LIMITED')
|
||||||
|
);
|
||||||
const hasEnvironments = environments.length > 0;
|
const hasEnvironments = environments.length > 0;
|
||||||
return {
|
return {
|
||||||
...x,
|
...x,
|
||||||
|
|
@ -43,12 +47,14 @@ export default class DhSceneNavigation extends foundry.applications.ui.SceneNavi
|
||||||
|
|
||||||
static async #openSceneEnvironment(event, button) {
|
static async #openSceneEnvironment(event, button) {
|
||||||
const scene = game.scenes.get(button.dataset.sceneId);
|
const scene = game.scenes.get(button.dataset.sceneId);
|
||||||
const sceneEnvironments = new game.system.api.data.scenes.DHScene(scene.flags.daggerheart).sceneEnvironments;
|
const sceneEnvironments = new game.system.api.data.scenes.DHScene(
|
||||||
|
scene.flags.daggerheart
|
||||||
|
).sceneEnvironments.filter(x => x.testUserPermission(game.user, 'LIMITED'));
|
||||||
|
|
||||||
if (sceneEnvironments.length === 1 || event.shiftKey) {
|
if (sceneEnvironments.length === 1 || event.shiftKey) {
|
||||||
sceneEnvironments[0].sheet.render(true);
|
sceneEnvironments[0].sheet.render(true);
|
||||||
} else {
|
} else {
|
||||||
new ContextMenu(
|
new foundry.applications.ux.ContextMenu.implementation(
|
||||||
button,
|
button,
|
||||||
'.scene-environment',
|
'.scene-environment',
|
||||||
sceneEnvironments.map(environment => ({
|
sceneEnvironments.map(environment => ({
|
||||||
|
|
@ -60,7 +66,12 @@ export default class DhSceneNavigation extends foundry.applications.ui.SceneNavi
|
||||||
newEnvironments.findIndex(x => x === environment.uuid)
|
newEnvironments.findIndex(x => x === environment.uuid)
|
||||||
)[0];
|
)[0];
|
||||||
newEnvironments.unshift(newFirst);
|
newEnvironments.unshift(newFirst);
|
||||||
scene.update({ 'flags.daggerheart.sceneEnvironments': newEnvironments });
|
emitAsGM(
|
||||||
|
GMUpdateEvent.UpdateDocument,
|
||||||
|
scene.update.bind(scene),
|
||||||
|
{ 'flags.daggerheart.sceneEnvironments': newEnvironments },
|
||||||
|
scene.uuid
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
environment.sheet.render({ force: true });
|
environment.sheet.render({ force: true });
|
||||||
|
|
|
||||||
|
|
@ -96,11 +96,11 @@ export default class DHContextMenu extends foundry.applications.ux.ContextMenu {
|
||||||
* Trigger a context menu event in response to a normal click on a additional options button.
|
* Trigger a context menu event in response to a normal click on a additional options button.
|
||||||
* @param {PointerEvent} event
|
* @param {PointerEvent} event
|
||||||
*/
|
*/
|
||||||
static triggerContextMenu(event) {
|
static triggerContextMenu(event, altSelector) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
const { clientX, clientY } = event;
|
const { clientX, clientY } = event;
|
||||||
const selector = '[data-item-uuid]';
|
const selector = altSelector ?? '[data-item-uuid]';
|
||||||
const target = event.target.closest(selector) ?? event.currentTarget.closest(selector);
|
const target = event.target.closest(selector) ?? event.currentTarget.closest(selector);
|
||||||
target?.dispatchEvent(
|
target?.dispatchEvent(
|
||||||
new PointerEvent('contextmenu', {
|
new PointerEvent('contextmenu', {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue