mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-04-21 15:03:37 +02:00
220 lines
7.9 KiB
JavaScript
220 lines
7.9 KiB
JavaScript
import { defaultLevelTiers, DhLevelTiers } from '../data/levelTier.mjs';
|
|
import DhCountdowns from '../data/countdowns.mjs';
|
|
import {
|
|
DhAppearance,
|
|
DhAutomation,
|
|
DhGlobalOverrides,
|
|
DhHomebrew,
|
|
DhMetagaming,
|
|
DhVariantRules
|
|
} from '../data/settings/_module.mjs';
|
|
import {
|
|
DhAppearanceSettings,
|
|
DhAutomationSettings,
|
|
DhHomebrewSettings,
|
|
DhMetagamingSettings,
|
|
DhVariantRuleSettings
|
|
} from '../applications/settings/_module.mjs';
|
|
import { CompendiumBrowserSettings } from '../data/_module.mjs';
|
|
import SpotlightTracker from '../data/spotlightTracker.mjs';
|
|
|
|
export const registerDHSettings = () => {
|
|
registerKeyBindings();
|
|
registerMenuSettings();
|
|
registerMenus();
|
|
registerNonConfigSettings();
|
|
|
|
game.settings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.SpotlightRequestQueue, {
|
|
name: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.SpotlightRequestQueue.name'),
|
|
label: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.SpotlightRequestQueue.label'),
|
|
hint: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.SpotlightRequestQueue.hint'),
|
|
scope: 'world',
|
|
config: true,
|
|
type: Boolean,
|
|
onChange: () => ui.combat.render()
|
|
});
|
|
};
|
|
|
|
export const registerKeyBindings = () => {
|
|
game.keybindings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.keybindings.spotlight, {
|
|
name: game.i18n.localize('DAGGERHEART.SETTINGS.Keybindings.spotlight.name'),
|
|
hint: game.i18n.localize('DAGGERHEART.SETTINGS.Keybindings.spotlight.hint'),
|
|
uneditable: [],
|
|
editable: [],
|
|
onDown: () => {
|
|
const selectedTokens = canvas.tokens.controlled.length > 0 ? canvas.tokens.controlled[0] : null;
|
|
const hoveredTokens = game.canvas.tokens.hover ? game.canvas.tokens.hover : null;
|
|
const tokens = selectedTokens ?? hoveredTokens;
|
|
game.system.api.macros.spotlightCombatant(tokens);
|
|
},
|
|
onUp: () => {},
|
|
restricted: true,
|
|
reservedModifiers: [],
|
|
precedence: CONST.KEYBINDING_PRECEDENCE.NORMAL
|
|
});
|
|
|
|
game.keybindings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.keybindings.partySheet, {
|
|
name: _loc('DAGGERHEART.SETTINGS.Keybindings.partySheet.name'),
|
|
hint: _loc('DAGGERHEART.SETTINGS.Keybindings.partySheet.hint'),
|
|
editable: [{ key: "KeyP" }],
|
|
onDown: () => {
|
|
const controlled = canvas.ready ? canvas.tokens.controlled : [];
|
|
const selectedParty = controlled.find((c) => c.actor?.type === 'party')?.actor;
|
|
const party = selectedParty ?? game.actors.party;
|
|
if (!party) return;
|
|
|
|
const sheet = party.sheet;
|
|
if (!sheet.rendered) {
|
|
sheet.render(true);
|
|
} else if (sheet.minimized) {
|
|
sheet.maximize();
|
|
} else {
|
|
sheet.close();
|
|
}
|
|
}
|
|
});
|
|
};
|
|
|
|
const registerMenuSettings = () => {
|
|
game.settings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.variantRules, {
|
|
scope: 'world',
|
|
config: false,
|
|
type: DhVariantRules
|
|
});
|
|
|
|
game.settings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation, {
|
|
scope: 'world',
|
|
config: false,
|
|
type: DhAutomation
|
|
});
|
|
|
|
game.settings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Metagaming, {
|
|
scope: 'world',
|
|
config: false,
|
|
type: DhMetagaming
|
|
});
|
|
|
|
game.settings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew, {
|
|
scope: 'world',
|
|
config: false,
|
|
type: DhHomebrew,
|
|
onChange: value => {
|
|
value.handleChange();
|
|
}
|
|
});
|
|
|
|
game.settings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.GlobalOverrides, {
|
|
scope: 'world',
|
|
config: false,
|
|
type: DhGlobalOverrides
|
|
});
|
|
|
|
game.settings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.appearance, {
|
|
scope: 'client',
|
|
config: false,
|
|
type: DhAppearance,
|
|
onChange: value => {
|
|
value.handleChange();
|
|
}
|
|
});
|
|
};
|
|
|
|
const registerMenus = () => {
|
|
game.settings.registerMenu(CONFIG.DH.id, CONFIG.DH.SETTINGS.menu.Automation.Name, {
|
|
name: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.automation.name'),
|
|
label: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.automation.label'),
|
|
hint: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.automation.hint'),
|
|
icon: CONFIG.DH.SETTINGS.menu.Automation.Icon,
|
|
type: DhAutomationSettings,
|
|
restricted: true
|
|
});
|
|
|
|
game.settings.registerMenu(CONFIG.DH.id, CONFIG.DH.SETTINGS.menu.Metagaming.Name, {
|
|
name: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.metagaming.name'),
|
|
label: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.metagaming.label'),
|
|
hint: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.metagaming.hint'),
|
|
icon: CONFIG.DH.SETTINGS.menu.Metagaming.Icon,
|
|
type: DhMetagamingSettings,
|
|
restricted: true
|
|
});
|
|
|
|
game.settings.registerMenu(CONFIG.DH.id, CONFIG.DH.SETTINGS.menu.Homebrew.Name, {
|
|
name: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.homebrew.name'),
|
|
label: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.homebrew.label'),
|
|
hint: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.homebrew.hint'),
|
|
icon: CONFIG.DH.SETTINGS.menu.Homebrew.Icon,
|
|
type: DhHomebrewSettings,
|
|
restricted: true
|
|
});
|
|
|
|
game.settings.registerMenu(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.appearance, {
|
|
name: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.appearance.label'),
|
|
label: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.appearance.label'),
|
|
hint: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.appearance.hint'),
|
|
icon: 'fa-solid fa-palette',
|
|
type: DhAppearanceSettings,
|
|
restricted: false
|
|
});
|
|
|
|
game.settings.registerMenu(CONFIG.DH.id, CONFIG.DH.SETTINGS.menu.VariantRules.Name, {
|
|
name: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.variantRules.title'),
|
|
label: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.variantRules.label'),
|
|
hint: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.variantRules.hint'),
|
|
icon: CONFIG.DH.SETTINGS.menu.VariantRules.Icon,
|
|
type: DhVariantRuleSettings,
|
|
restricted: true
|
|
});
|
|
};
|
|
|
|
const registerNonConfigSettings = () => {
|
|
game.settings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.LastMigrationVersion, {
|
|
scope: 'world',
|
|
config: false,
|
|
type: String
|
|
});
|
|
|
|
game.settings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.LevelTiers, {
|
|
scope: 'world',
|
|
config: false,
|
|
type: DhLevelTiers,
|
|
default: defaultLevelTiers
|
|
});
|
|
|
|
game.settings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Resources.Fear, {
|
|
name: game.i18n.localize('DAGGERHEART.SETTINGS.Resources.fear.name'),
|
|
hint: game.i18n.localize('DAGGERHEART.SETTINGS.Resources.fear.hint'),
|
|
scope: 'world',
|
|
config: false,
|
|
type: Number,
|
|
default: 0,
|
|
onChange: () => {
|
|
if (ui.resources) ui.resources.render();
|
|
ui.combat.render({ force: true });
|
|
}
|
|
});
|
|
|
|
game.settings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns, {
|
|
scope: 'world',
|
|
config: false,
|
|
type: DhCountdowns
|
|
});
|
|
|
|
game.settings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.CompendiumBrowserSettings, {
|
|
scope: 'world',
|
|
config: false,
|
|
type: CompendiumBrowserSettings
|
|
});
|
|
|
|
game.settings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.SpotlightTracker, {
|
|
scope: 'world',
|
|
config: false,
|
|
type: SpotlightTracker
|
|
});
|
|
|
|
game.settings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.ActiveParty, {
|
|
scope: 'world',
|
|
config: false,
|
|
type: String,
|
|
default: null,
|
|
});
|
|
};
|