mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-04-21 23:13:39 +02:00
Logic improvements
This commit is contained in:
parent
1fe1ec3dcb
commit
befe55b900
3 changed files with 32 additions and 28 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
import { AdversaryBPPerEncounter } from '../../config/encounterConfig.mjs';
|
import { AdversaryBPPerEncounter } from '../../config/encounterConfig.mjs';
|
||||||
import { expireActiveEffects } from '../../helpers/utils.mjs';
|
import { expireActiveEffects } from '../../helpers/utils.mjs';
|
||||||
import { spotlightToken } from '../../macros/spotlightCombatant.mjs';
|
import { clearPreviousSpotlight } from '../../macros/spotlightCombatant.mjs';
|
||||||
|
|
||||||
export default class DhCombatTracker extends foundry.applications.sidebar.tabs.CombatTracker {
|
export default class DhCombatTracker extends foundry.applications.sidebar.tabs.CombatTracker {
|
||||||
static DEFAULT_OPTIONS = {
|
static DEFAULT_OPTIONS = {
|
||||||
|
|
@ -190,7 +190,7 @@ export default class DhCombatTracker extends foundry.applications.sidebar.tabs.C
|
||||||
await combatant.update(update);
|
await combatant.update(update);
|
||||||
|
|
||||||
if (!combatant.token) return;
|
if (!combatant.token) return;
|
||||||
spotlightToken(combatant.token);
|
clearPreviousSpotlight();
|
||||||
}
|
}
|
||||||
|
|
||||||
async clearTurn() {
|
async clearTurn() {
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,9 @@ export default class DhTokenPlaceable extends foundry.canvas.placeables.Token {
|
||||||
.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.SpotlightTracker)
|
.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.SpotlightTracker)
|
||||||
.spotlightedTokens.has(this.document.uuid);
|
.spotlightedTokens.has(this.document.uuid);
|
||||||
|
|
||||||
const markerActive = markersEnabled && spotlighted;
|
const turnIsSet = game.combat?.turn !== null;
|
||||||
|
const isTurn = game.combat?.combatant?.tokenId === this.id;
|
||||||
|
const markerActive = markersEnabled && turnIsSet ? isTurn : spotlighted;
|
||||||
|
|
||||||
// Activate a Turn Marker
|
// Activate a Turn Marker
|
||||||
if (markerActive) {
|
if (markerActive) {
|
||||||
|
|
|
||||||
|
|
@ -3,42 +3,44 @@
|
||||||
* @param {TokenDocument} token - The token to spotlight
|
* @param {TokenDocument} token - The token to spotlight
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
const spotlightCombatantMacro = token => {
|
const spotlightCombatantMacro = async token => {
|
||||||
if (!token)
|
if (!token)
|
||||||
return ui.notifications.error(game.i18n.localize('DAGGERHEART.MACROS.Spotlight.errors.noTokenSelected'));
|
return ui.notifications.error(game.i18n.localize('DAGGERHEART.MACROS.Spotlight.errors.noTokenSelected'));
|
||||||
|
|
||||||
if (game.combat && token.combatant) {
|
const combatantCombat = game.combats.find(combat =>
|
||||||
ui.combat.setCombatantSpotlight(token.combatant.id);
|
combat.combatants.some(x => x.token && x.token.id === token.document.id)
|
||||||
|
);
|
||||||
|
if (combatantCombat) {
|
||||||
|
const combatant = combatantCombat.combatants.find(x => x.token.id === token.document.id);
|
||||||
|
if (!combatantCombat.active) await combatantCombat.activate();
|
||||||
|
if (combatantCombat.combatant?.id !== combatant.id) ui.combat.setCombatantSpotlight(combatant.id);
|
||||||
} else {
|
} else {
|
||||||
if (game.combat) ui.combat.clearTurn();
|
if (game.combat) await ui.combat.clearTurn();
|
||||||
spotlightToken(token.document);
|
|
||||||
|
const spotlightTracker = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.SpotlightTracker);
|
||||||
|
const isSpotlighted = spotlightTracker.spotlightedTokens.has(token.document.uuid);
|
||||||
|
if (!isSpotlighted) await clearPreviousSpotlight();
|
||||||
|
|
||||||
|
spotlightTracker.updateSource({
|
||||||
|
spotlightedTokens: isSpotlighted ? [] : [token.document.uuid]
|
||||||
|
});
|
||||||
|
|
||||||
|
await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.SpotlightTracker, spotlightTracker);
|
||||||
|
token.renderFlags.set({ refreshTurnMarker: true });
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
export const clearPreviousSpotlight = async () => {
|
||||||
* Spotlight a token on the canvas.
|
|
||||||
* @param {TokenDocument} token - The token to spotlight
|
|
||||||
* @returns {void}
|
|
||||||
*/
|
|
||||||
export const spotlightToken = async token => {
|
|
||||||
const spotlightTracker = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.SpotlightTracker);
|
const spotlightTracker = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.SpotlightTracker);
|
||||||
let previouslySpotlightedUuid = null;
|
const previouslySpotlightedUuid =
|
||||||
const isSpotlighted = spotlightTracker.spotlightedTokens.has(token.uuid);
|
spotlightTracker.spotlightedTokens.size > 0 ? spotlightTracker.spotlightedTokens.first() : null;
|
||||||
if (!isSpotlighted && spotlightTracker.spotlightedTokens.size > 0) {
|
if (!previouslySpotlightedUuid) return;
|
||||||
previouslySpotlightedUuid = spotlightTracker.spotlightedTokens.first();
|
|
||||||
}
|
|
||||||
|
|
||||||
spotlightTracker.updateSource({
|
|
||||||
spotlightedTokens: isSpotlighted ? [] : [token.uuid]
|
|
||||||
});
|
|
||||||
|
|
||||||
|
spotlightTracker.updateSource({ spotlightedTokens: [] });
|
||||||
await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.SpotlightTracker, spotlightTracker);
|
await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.SpotlightTracker, spotlightTracker);
|
||||||
token.object.renderFlags.set({ refreshTurnMarker: true });
|
|
||||||
|
|
||||||
if (previouslySpotlightedUuid) {
|
const previousToken = await foundry.utils.fromUuid(previouslySpotlightedUuid);
|
||||||
const previousToken = await foundry.utils.fromUuid(previouslySpotlightedUuid);
|
previousToken.object.renderFlags.set({ refreshTurnMarker: true });
|
||||||
previousToken.object.renderFlags.set({ refreshTurnMarker: true });
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export default spotlightCombatantMacro;
|
export default spotlightCombatantMacro;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue