126 lines
4.0 KiB
JavaScript
126 lines
4.0 KiB
JavaScript
import { HenchCard, HenchCardDataModel } from "./module/cards/hench-card.mjs";
|
|
import { HenchCards, HenchCardsDataModel } from "./module/cards/hench-cards.mjs";
|
|
import { BossDataModel, HenchDataModel } from "./module/data-models.mjs";
|
|
import { CURRENT_VERSION, showUpdateWarningDialogue } from "./module/helpers/update-helper.mjs";
|
|
|
|
import { HenchActorSheet } from "./module/sheets/hench-actor-sheet.mjs";
|
|
import { HenchCardsSheet } from "./module/sheets/hench-cards-sheet.mjs";
|
|
|
|
Handlebars.registerHelper('int2checkbox', (size, threshold, options) => {
|
|
return Array(size).fill(0).map(
|
|
(e, i) => options.fn({index: i + 1, marked: i < threshold})
|
|
).reduce((prev, next) => (prev + next), "");
|
|
});
|
|
|
|
Handlebars.registerHelper('partialint2checkbox', (size, threshold, start, end, options) => {
|
|
const indexBase = start + 1;
|
|
const arrSize = Math.max(end - start, 0);
|
|
|
|
return Array(arrSize).fill(0).map(
|
|
(e, i) => options.fn({ index: i + indexBase, marked: (i + start) < threshold })
|
|
).reduce((prev, next) => (prev + next), "");
|
|
});
|
|
|
|
Handlebars.registerHelper('partialList', (list, start, end, options) => {
|
|
return list.slice(start, end).map(
|
|
(e, i) => options.fn({ item: e, index: (start + i)})
|
|
).reduce((prev, next) => (prev + next), "");
|
|
});
|
|
|
|
Handlebars.registerHelper('canDecrease', (value, cap) => {
|
|
return value > cap;
|
|
});
|
|
|
|
Handlebars.registerHelper('canIncrease', (value, cap) => {
|
|
return value < cap;
|
|
});
|
|
|
|
Handlebars.registerHelper('increment', (value) => (value + 1));
|
|
Handlebars.registerHelper('decrement', (value) => (value - 1));
|
|
|
|
Handlebars.registerHelper('topCard', (cards, zone, options) => {
|
|
const pile = cards.cardsInZone(zone);
|
|
|
|
const topCardImage = pile[0]?.currentFace?.img;
|
|
const defaultImage = cards.img;
|
|
|
|
const hasTopCard = pile.length > 0;
|
|
|
|
return options.fn({ hasTopCard: hasTopCard, topCardImage: topCardImage, deckImage: defaultImage });
|
|
});
|
|
|
|
Hooks.once("init", () => {
|
|
CONFIG.Actor.dataModels = {
|
|
hench: HenchDataModel,
|
|
boss: BossDataModel,
|
|
};
|
|
|
|
CONFIG.Card.dataModels = {
|
|
base: HenchCardDataModel,
|
|
};
|
|
CONFIG.Card.documentClass = HenchCard;
|
|
|
|
CONFIG.Cards.dataModels = {
|
|
base: HenchCardsDataModel,
|
|
};
|
|
CONFIG.Cards.documentClass = HenchCards;
|
|
|
|
CONFIG.Cards.presets = {
|
|
henchDark: {
|
|
label: 'CARDS.HenchPresetDark',
|
|
src: 'systems/hench/presets/dark.json',
|
|
type: 'deck',
|
|
},
|
|
henchLight: {
|
|
label: 'CARDS.HenchPresetLight',
|
|
src: 'systems/hench/presets/light.json',
|
|
type: 'deck',
|
|
}
|
|
};
|
|
|
|
// ABSOLUTE FUCKING CLUDGE:
|
|
// For some reason, the Card embedded doc in Cards is filed under "cards" and not "Card",
|
|
// And/or the lookup to create embedded documents is fucked beyond belief.
|
|
CONFIG.cards = {
|
|
documentClass: HenchCard,
|
|
};
|
|
|
|
console.log(CONFIG);
|
|
|
|
Actors.unregisterSheet('core', ActorSheet);
|
|
Actors.registerSheet('hench', HenchActorSheet, {
|
|
makeDefault: true,
|
|
label: 'Hench Sheet',
|
|
});
|
|
|
|
CardStacks.unregisterSheet('core', CardsConfig);
|
|
CardStacks.registerSheet('hench', HenchCardsSheet, {
|
|
makeDefault: true,
|
|
label: 'Hench Cards Sheet'
|
|
});
|
|
|
|
// remove other card stack types...
|
|
CardStacks.unregisterSheet('core', CardsHand);
|
|
CardStacks.unregisterSheet('core', CardsPile);
|
|
|
|
// prepare version checker
|
|
game.settings.register('hench', 'version', {
|
|
name: 'Version',
|
|
scope: 'world',
|
|
config: false,
|
|
type: String,
|
|
});
|
|
});
|
|
|
|
Hooks.once("ready", () => {
|
|
// update version and alert if updated
|
|
const existingVersion = game.settings.get('hench', 'version');
|
|
|
|
// TODO: don't alert on null/undefined after draft 1 cut.
|
|
if(existingVersion !== CURRENT_VERSION) {
|
|
console.log(`Showing warnings from ${existingVersion} -> ${CURRENT_VERSION}`);
|
|
showUpdateWarningDialogue(existingVersion);
|
|
}
|
|
|
|
game.settings.set('hench', 'version', CURRENT_VERSION);
|
|
}); |