Army sheet : Image and token now follow the commander's on drop.

This commit is contained in:
Vlyan
2022-03-25 09:44:48 +01:00
parent e3a42817c0
commit 783a49713a
2 changed files with 28 additions and 16 deletions

View File

@@ -6,6 +6,8 @@
- This is random by design, don't expect clan logic in values. - This is random by design, don't expect clan logic in values.
- PC sheet : - PC sheet :
- Added collapsible skill group. - Added collapsible skill group.
- Army sheet :
- Image and token now follow the commander's on drop.
- PC/NPC sheet : - PC/NPC sheet :
- Added a volatile storage to keep collapsible (Skills/Inventory) in theirs state on sheet update. - Added a volatile storage to keep collapsible (Skills/Inventory) in theirs state on sheet update.
- Added the ability for technique with a skill set, to open the DicePicker with presets values. - Added the ability for technique with a skill set, to open the DicePicker with presets values.

View File

@@ -34,7 +34,7 @@ export class ArmySheetL5r5e extends BaseSheetL5r5e {
if (data.commander_actor_id) { if (data.commander_actor_id) {
const commander = game.actors.get(data.commander_actor_id); const commander = game.actors.get(data.commander_actor_id);
if (commander) { if (commander) {
this._updateLinkedActorData("commander", commander); this._updateLinkedActorData("commander", commander, true);
} else { } else {
this._removeLinkedActorData("commander"); this._removeLinkedActorData("commander");
} }
@@ -42,7 +42,7 @@ export class ArmySheetL5r5e extends BaseSheetL5r5e {
if (data.warlord_actor_id) { if (data.warlord_actor_id) {
const warlord = game.actors.get(data.warlord_actor_id); const warlord = game.actors.get(data.warlord_actor_id);
if (warlord) { if (warlord) {
this._updateLinkedActorData("warlord", warlord); this._updateLinkedActorData("warlord", warlord, true);
} else { } else {
this._removeLinkedActorData("warlord"); this._removeLinkedActorData("warlord");
} }
@@ -196,7 +196,7 @@ export class ArmySheetL5r5e extends BaseSheetL5r5e {
} }
const droppedActor = await game.l5r5e.HelpersL5r5e.getDragnDropTargetObject(event); const droppedActor = await game.l5r5e.HelpersL5r5e.getDragnDropTargetObject(event);
return this._updateLinkedActorData(type, droppedActor); return this._updateLinkedActorData(type, droppedActor, false);
} }
/** /**
@@ -219,39 +219,49 @@ export class ArmySheetL5r5e extends BaseSheetL5r5e {
/** /**
* Update actor datas for this army sheet * Update actor datas for this army sheet
* @param {string} type commander|warlord * @param {string} type commander|warlord
* @param {ActorL5r5e} actor actor object * @param {ActorL5r5e} actor actor object
* @param {boolean} isInit If it's initialization process
* @return {Promise<abstract.Document>} * @return {Promise<abstract.Document>}
* @private * @private
*/ */
async _updateLinkedActorData(type, actor) { async _updateLinkedActorData(type, actor, isInit = false) {
if (!actor || actor.documentName !== "Actor" || !actor.isCharacter) { if (!actor || actor.documentName !== "Actor" || !actor.isCharacter) {
console.warn("L5R5E | Wrong actor type", actor?.data?.type, actor); console.warn("L5R5E | Wrong actor type", actor?.data?.type, actor);
return; return;
} }
const actorPath = `${CONFIG.l5r5e.paths.assets}icons/actors/`;
const actorData = {}; const actorData = {};
switch (type) { switch (type) {
case "commander": case "commander":
actorData.commander = actor.data.name; actorData["data.commander"] = actor.data.name;
actorData.commander_actor_id = actor.data._id; actorData["data.commander_actor_id"] = actor.data._id;
actorData.commander_standing = { actorData["data.commander_standing.honor"] = actor.data.data.social.honor;
honor: actor.data.data.social.honor, actorData["data.commander_standing.glory"] = actor.data.data.social.glory;
glory: actor.data.data.social.glory, actorData["data.commander_standing.status"] = actor.data.data.social.status;
status: actor.data.data.social.status,
}; // Replace the image by commander's image
if (
!isInit &&
this.actor.data.img !== actor.data.img &&
![`${actorPath}character.svg`, `${actorPath}npc.svg`].includes(actor.data.img)
) {
actorData["img"] = actor.data.img;
actorData["token.img"] = actor.data.token.img;
}
break; break;
case "warlord": case "warlord":
actorData.warlord = actor.data.name; actorData["data.warlord"] = actor.data.name;
actorData.warlord_actor_id = actor.data._id; actorData["data.warlord_actor_id"] = actor.data._id;
break; break;
default: default:
console.warn("L5R5E | Unknown type", type); console.warn("L5R5E | Unknown type", type);
return; return;
} }
return this.actor.update({ data: actorData }); return this.actor.update(actorData);
} }
/** /**