|
|
|
@@ -15,21 +15,21 @@ const _SPACEHOLDER = { placeholder: true }
|
|
|
|
|
const _VENDRE = {
|
|
|
|
|
code: 'item-vendre', label: 'Vendre ou donner', icon: it => 'fa-solid fa-comments-dollar',
|
|
|
|
|
filter: it => Misc.toInt(it.system.quantite) > 0,
|
|
|
|
|
optionsFilter: options => options.editable,
|
|
|
|
|
action: (item, actor) => item.proposerVente()
|
|
|
|
|
}
|
|
|
|
|
const _ACHAT_SERVICE = {
|
|
|
|
|
code: 'item-service-acheter', label: 'Acheter', icon: it => 'fa-regular fa-coins',
|
|
|
|
|
const _ACHETER = {
|
|
|
|
|
code: 'item-acheter', label: 'Acheter', icon: it => 'fa-regular fa-coins',
|
|
|
|
|
filter: it => Misc.toInt(it.system.quantite) > 0 && it.parent?.type == ACTOR_TYPES.commerce,
|
|
|
|
|
action: (item, actor) => actor.vente(item)
|
|
|
|
|
}
|
|
|
|
|
const _MONTRER = {
|
|
|
|
|
code: 'item-montrer', label: 'Montrer', icon: it => 'fa-solid fa-comment',
|
|
|
|
|
allowLimited: true,
|
|
|
|
|
action: (item, actor) => item.postItemToChat()
|
|
|
|
|
}
|
|
|
|
|
const _SPLIT = {
|
|
|
|
|
code: 'item-split', label: 'Séparer le goupe', icon: it => 'fa-solid fa-unlink',
|
|
|
|
|
filter: it => Misc.toInt(it.system.quantite) > 1,
|
|
|
|
|
filter: it => Misc.toInt(it.system.quantite) > 1 && it.parent?.type != ACTOR_TYPES.commerce,
|
|
|
|
|
action: (item, actor) => RdDSheetUtility.splitItem(item, actor)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -39,7 +39,7 @@ const _EDIT = {
|
|
|
|
|
}
|
|
|
|
|
const _DELETE = {
|
|
|
|
|
code: 'item-delete', label: 'Supprimer', icon: it => 'fa-solid fa-trash',
|
|
|
|
|
optionsFilter: options => options.editable && options.isOwner,
|
|
|
|
|
optionsFilter: options => options.isOwner,
|
|
|
|
|
action: (item, actor) => RdDUtility.confirmActorItemDelete(item, actor)
|
|
|
|
|
}
|
|
|
|
|
const _EQUIPER = {
|
|
|
|
@@ -51,30 +51,25 @@ const _EQUIPER = {
|
|
|
|
|
const _CUISINER = {
|
|
|
|
|
code: 'item-cuisiner', label: 'Cuisiner', icon: it => 'fa-solid fa-utensils',
|
|
|
|
|
filter: it => it.getUtilisation() == 'cuisine' && it.system.sust > 0,
|
|
|
|
|
optionsFilter: options => options.editable,
|
|
|
|
|
action: (item, actor) => actor.preparerNourriture(item)
|
|
|
|
|
}
|
|
|
|
|
const _MANGER_CRU = {
|
|
|
|
|
code: 'item-manger-cru', label: 'Manger cru', icon: it => 'fa-solid fa-drumstick-bite',
|
|
|
|
|
filter: it => it.getUtilisation() == 'cuisine' && it.system.sust > 0,
|
|
|
|
|
optionsFilter: options => options.editable,
|
|
|
|
|
action: (item, actor) => actor.mangerNourriture(item)
|
|
|
|
|
}
|
|
|
|
|
const _MANGER = {
|
|
|
|
|
code: 'item-manger', label: 'Manger', icon: it => 'fa-solid fa-utensils',
|
|
|
|
|
filter: it => !(it.system.boisson),
|
|
|
|
|
optionsFilter: options => options.editable,
|
|
|
|
|
action: (item, actor) => actor.mangerNourriture(item)
|
|
|
|
|
}
|
|
|
|
|
const _BOIRE = {
|
|
|
|
|
code: 'item-boire', label: 'Boire', icon: it => 'fa-solid fa-glass-water',
|
|
|
|
|
filter: it => it.system.boisson,
|
|
|
|
|
optionsFilter: options => options.editable,
|
|
|
|
|
action: (item, actor) => actor.mangerNourriture(item)
|
|
|
|
|
}
|
|
|
|
|
const _DECOCTION = {
|
|
|
|
|
code: 'item-decoction', label: 'Décoction', icon: it => 'fa-solid fa-flask-vial',
|
|
|
|
|
optionsFilter: options => options.editable,
|
|
|
|
|
action: (item, actor) => actor.fabriquerDecoctionHerbe(item)
|
|
|
|
|
}
|
|
|
|
|
const _OUVRIR = {
|
|
|
|
@@ -84,14 +79,12 @@ const _OUVRIR = {
|
|
|
|
|
|
|
|
|
|
const _LIRE = {
|
|
|
|
|
code: 'item-lire', label: 'Lire', icon: it => 'fa-solid fa-book-open',
|
|
|
|
|
optionsFilter: options => options.editable,
|
|
|
|
|
action: (item, actor) => actor.actionLire(item)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const _REFOULER = {
|
|
|
|
|
code: 'item-refouler', label: 'Refouler', icon: it => 'fa-solid fa-burst',
|
|
|
|
|
filter: it => it.system.refoulement > 0,
|
|
|
|
|
optionsFilter: options => options.editable,
|
|
|
|
|
action: (item, actor) => actor.actionRefoulement(item)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -102,7 +95,7 @@ const _SORT_RESERVE = {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const COMMON_ACTIONS = [_EQUIPER]
|
|
|
|
|
export const DEFAULT_ACTIONS = [_SPACEHOLDER, _SPLIT, _VENDRE, _MONTRER, _EDIT, _DELETE]
|
|
|
|
|
export const DEFAULT_ACTIONS = [_ACHETER, _SPACEHOLDER, _SPLIT, _VENDRE, _MONTRER, _EDIT, _DELETE]
|
|
|
|
|
|
|
|
|
|
export const ITEM_ACTIONS = {
|
|
|
|
|
faune: [_CUISINER, _MANGER_CRU],
|
|
|
|
@@ -114,17 +107,16 @@ export const ITEM_ACTIONS = {
|
|
|
|
|
ombre: [_REFOULER],
|
|
|
|
|
plante: [_CUISINER, _MANGER_CRU],
|
|
|
|
|
queue: [_REFOULER],
|
|
|
|
|
sort: [_SORT_RESERVE],
|
|
|
|
|
service: [_ACHAT_SERVICE]
|
|
|
|
|
sort: [_SORT_RESERVE]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export class ItemAction {
|
|
|
|
|
|
|
|
|
|
static applies(action, item, options) {
|
|
|
|
|
return action && item
|
|
|
|
|
&& item.isActionAllowed(action.code)
|
|
|
|
|
&& (!action.filter || action.filter(item))
|
|
|
|
|
&& (action.allowLimited || options.editable)
|
|
|
|
|
&& (!action.optionsFilter || action.optionsFilter(options))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -136,10 +128,10 @@ export class ItemAction {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static async onActionItem(event, actor, options) {
|
|
|
|
|
const item = RdDSheetUtility.getItem(event, actor)
|
|
|
|
|
const code = $(event.currentTarget).data('code')
|
|
|
|
|
const item = RdDSheetUtility.getItem(event, actor)
|
|
|
|
|
const action = item?.itemActions().find(it => it.code == code)
|
|
|
|
|
if (action && (!action.optionsFilter || action.optionsFilter(options))) {
|
|
|
|
|
if (action && ItemAction.applies(action, item, options)) {
|
|
|
|
|
await action.action(item, actor)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|