Initial
This commit is contained in:
78
resources/app/client/data/collections/combats.js
Normal file
78
resources/app/client/data/collections/combats.js
Normal file
@@ -0,0 +1,78 @@
|
||||
/**
|
||||
* The singleton collection of Combat documents which exist within the active World.
|
||||
* This Collection is accessible within the Game object as game.combats.
|
||||
* @extends {WorldCollection}
|
||||
*
|
||||
* @see {@link Combat} The Combat document
|
||||
* @see {@link CombatTracker} The CombatTracker sidebar directory
|
||||
*/
|
||||
class CombatEncounters extends WorldCollection {
|
||||
|
||||
/** @override */
|
||||
static documentName = "Combat";
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/**
|
||||
* Provide the settings object which configures the Combat document
|
||||
* @type {object}
|
||||
*/
|
||||
static get settings() {
|
||||
return game.settings.get("core", Combat.CONFIG_SETTING);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/** @inheritdoc */
|
||||
get directory() {
|
||||
return ui.combat;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/**
|
||||
* Get an Array of Combat instances which apply to the current canvas scene
|
||||
* @type {Combat[]}
|
||||
*/
|
||||
get combats() {
|
||||
return this.filter(c => (c.scene === null) || (c.scene === game.scenes.current));
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/**
|
||||
* The currently active Combat instance
|
||||
* @type {Combat}
|
||||
*/
|
||||
get active() {
|
||||
return this.combats.find(c => c.active);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/**
|
||||
* The currently viewed Combat encounter
|
||||
* @type {Combat|null}
|
||||
*/
|
||||
get viewed() {
|
||||
return ui.combat?.viewed ?? null;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/**
|
||||
* When a Token is deleted, remove it as a combatant from any combat encounters which included the Token
|
||||
* @param {string} sceneId The Scene id within which a Token is being deleted
|
||||
* @param {string} tokenId The Token id being deleted
|
||||
* @protected
|
||||
*/
|
||||
async _onDeleteToken(sceneId, tokenId) {
|
||||
for ( let combat of this ) {
|
||||
const toDelete = [];
|
||||
for ( let c of combat.combatants ) {
|
||||
if ( (c.sceneId === sceneId) && (c.tokenId === tokenId) ) toDelete.push(c.id);
|
||||
}
|
||||
if ( toDelete.length ) await combat.deleteEmbeddedDocuments("Combatant", toDelete);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user