import { socket } from "./socket";
function makeDialogContent(): string {
const users = (game as foundry.Game).users.filter((user: foundry.documents.User): boolean => user.name !== "Gamemaster");
let out = `
";
return out;
}
export function getOwners(actorId: string): foundry.documents.User[] {
return (game as foundry.Game).users.filter((user: foundry.documents.User): boolean => {
return user.character?.id === actorId;
});
}
export function tokenControlCB(event: Event): void {
const direction = (event.target as HTMLButtonElement).dataset.direction;
const tokens = (game as foundry.Game).user.character.getActiveTokens();
if ((direction === null) || (direction === undefined)) return;
if (tokens.length === 0) return;
socket!.executeAsGM("tokenMove", {
tokenId: tokens[0].id,
direction
});
}
interface PlayerInfo {
id: string;
display: boolean;
mobile: boolean;
}
export async function editPlayerModes(): Promise {
const data: PlayerInfo[] = await foundry.applications.api.DialogV2.prompt({
window: {
title: (game as foundry.Game).i18n!.localize("pf2e-table-mode.editPlayerModes")
},
content: makeDialogContent(),
ok: {
label: (game as foundry.Game).i18n!.localize("pf2e-table-mode.confirm"),
callback: (_event: PointerEvent | SubmitEvent, button: HTMLButtonElement, dialog: foundry.applications.api.DialogV2): Promise => {
const elements = button.form!.elements;
return new Promise((resolve: (value: PlayerInfo[] | PromiseLike) => void, reject: (reason?: any) => void): void => {
resolve(
(game as foundry.Game).users.filter((user: foundry.documents.User): boolean => user.name !== "Gamemaster").map((user: foundry.documents.User): PlayerInfo => {
return {
id: user.id,
display: (elements.namedItem(`user-${user.id}-display`) as HTMLInputElement).checked,
mobile: (elements.namedItem(`user-${user.id}-mobile`) as HTMLInputElement).checked
};
})
);
});
}
}
});
data.forEach(async (player: PlayerInfo): Promise => {
const user = (game as foundry.Game).users.get(player.id);
if (user.getFlag("pf2e-table-mode", "mobile") !== player.mobile) {
await user.setFlag("pf2e-table-mode", "mobile", player.mobile);
}
if (user.getFlag("pf2e-table-mode", "display") !== player.display) {
await user.setFlag("pf2e-table-mode", "display", player.display);
}
console.log(`User data for ${user.name} updated`);
});
}