hench/hench.mjs

100 lines
3.1 KiB
JavaScript
Raw Normal View History

2024-12-20 11:18:13 -05:00
import { HenchCard, HenchCardDataModel } from "./module/cards/hench-card.mjs";
import { HenchCards, HenchCardsDataModel } from "./module/cards/hench-cards.mjs";
2024-12-13 22:31:03 -05:00
import { BossDataModel, HenchDataModel } from "./module/data-models.mjs";
2024-12-04 14:51:41 -05:00
import { HenchActorSheet } from "./module/sheets/hench-actor-sheet.mjs";
2024-12-20 12:00:44 -05:00
import { HenchCardsSheet } from "./module/sheets/hench-cards-sheet.mjs";
Handlebars.registerHelper('int2checkbox', (size, threshold, options) => {
2024-12-11 16:17:00 -05:00
return Array(size).fill(0).map(
(e, i) => options.fn({index: i + 1, marked: i < threshold})
2024-12-11 16:17:00 -05:00
).reduce((prev, next) => (prev + next), "");
});
2024-12-13 22:31:03 -05:00
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), "");
});
2024-12-11 16:17:00 -05:00
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), "");
});
2024-12-11 23:27:19 -05:00
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));
2024-12-26 15:38:59 -05:00
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,
2024-12-13 22:31:03 -05:00
boss: BossDataModel,
};
2024-12-20 11:18:13 -05:00
CONFIG.Card.dataModels = {
base: HenchCardDataModel,
};
CONFIG.Card.documentClass = HenchCard;
CONFIG.Cards.dataModels = {
base: HenchCardsDataModel,
};
CONFIG.Cards.documentClass = HenchCards;
2024-12-29 12:40:16 -05:00
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',
}
};
2024-12-26 22:36:56 -05:00
// 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,
};
2024-12-20 11:18:13 -05:00
console.log(CONFIG);
Actors.unregisterSheet('core', ActorSheet);
2024-12-04 14:51:41 -05:00
Actors.registerSheet('hench', HenchActorSheet, {
makeDefault: true,
2024-12-11 16:17:00 -05:00
label: 'Hench Sheet',
});
2024-12-20 12:00:44 -05:00
CardStacks.unregisterSheet('core', CardsConfig);
CardStacks.registerSheet('hench', HenchCardsSheet, {
makeDefault: true,
label: 'Hench Cards Sheet'
});
});