108 lines
3.4 KiB
JavaScript
108 lines
3.4 KiB
JavaScript
import { SessionTrackerApp } from "./session-tracker-app.js";
|
|
|
|
Hooks.once("init", () => {
|
|
console.log("Session Tracker | Initializing");
|
|
|
|
// Register Session Count
|
|
game.settings.register("fvtt-session-tracker", "sessionCount", {
|
|
name: "Current Session Number",
|
|
hint: "The current session number displayed on the tracker.",
|
|
scope: "world",
|
|
config: true,
|
|
type: Number,
|
|
default: 1,
|
|
onChange: () => {
|
|
if (SessionTrackerApp.instance) SessionTrackerApp.instance.render();
|
|
}
|
|
});
|
|
|
|
// Register Auto-Increment Toggle
|
|
game.settings.register("fvtt-session-tracker", "autoIncrement", {
|
|
name: "Automate Session Tracking",
|
|
hint: "Automatically increment the session count when the selected user logs in.",
|
|
scope: "world",
|
|
config: true,
|
|
type: Boolean,
|
|
default: false
|
|
});
|
|
|
|
// Register Trigger User
|
|
game.settings.register("fvtt-session-tracker", "triggerUser", {
|
|
name: "Trigger User",
|
|
hint: "Selecting this user will trigger the session increment when they log in.",
|
|
scope: "world",
|
|
config: true,
|
|
type: String,
|
|
default: "",
|
|
choices: () => {
|
|
const users = game.users.reduce((acc, u) => {
|
|
acc[u.id] = u.name;
|
|
return acc;
|
|
}, {});
|
|
return users;
|
|
}
|
|
});
|
|
|
|
// Register tracker position (internal)
|
|
game.settings.register("fvtt-session-tracker", "position", {
|
|
scope: "client",
|
|
config: false,
|
|
type: Object,
|
|
default: { top: 10, left: 120 }
|
|
});
|
|
|
|
// Register visibility toggle for players
|
|
game.settings.register("fvtt-session-tracker", "showTracker", {
|
|
name: "Show Session Tracker",
|
|
hint: "Whether to display the session tracker on your canvas.",
|
|
scope: "client",
|
|
config: true,
|
|
type: Boolean,
|
|
default: true,
|
|
onChange: (value) => {
|
|
if (SessionTrackerApp.instance) {
|
|
if (value) SessionTrackerApp.instance.render(true);
|
|
else SessionTrackerApp.instance.close();
|
|
}
|
|
}
|
|
});
|
|
|
|
// Register scale setting
|
|
game.settings.register("fvtt-session-tracker", "scale", {
|
|
name: "Tracker Scale",
|
|
hint: "Adjust the size of the session tracker.",
|
|
scope: "world",
|
|
config: true,
|
|
type: Number,
|
|
default: 1.0,
|
|
range: {
|
|
min: 0.5,
|
|
max: 2.0,
|
|
step: 0.1
|
|
},
|
|
onChange: () => {
|
|
if (SessionTrackerApp.instance) SessionTrackerApp.instance.render();
|
|
}
|
|
});
|
|
});
|
|
|
|
Hooks.once("ready", () => {
|
|
// Initialize the app
|
|
SessionTrackerApp.initialize();
|
|
|
|
// Logic for auto-incrementing
|
|
if (game.user.isGM) {
|
|
Hooks.on("userConnected", (user, connected) => {
|
|
if (!connected) return;
|
|
|
|
const isAuto = game.settings.get("fvtt-session-tracker", "autoIncrement");
|
|
const targetUser = game.settings.get("fvtt-session-tracker", "triggerUser");
|
|
|
|
if (isAuto && user.id === targetUser) {
|
|
const current = game.settings.get("fvtt-session-tracker", "sessionCount");
|
|
game.settings.set("fvtt-session-tracker", "sessionCount", current + 1);
|
|
ui.notifications.info(`Session Tracker | User ${user.name} logged in. Incrementing to session ${current + 1}.`);
|
|
}
|
|
});
|
|
}
|
|
});
|