Files
foundryvtt-reve-de-dragon/module/actor-token.mjs

43 lines
1.3 KiB
JavaScript

/**
* class providing the actor and token, and choosing the name and image from the token if available.
*/
export class ActorToken {
static fromTokenActor(token, actor){
return token ? ActorToken.fromToken(token) : ActorToken.fromActor(actor)
}
static fromActorId(actorId, onError = () => undefined) {
actorId = actorId ?? (canvas.tokens.controlled.length > 0
? canvas.tokens.controlled[0].actor.id
: undefined)
const actor = actorId ? game.actors.get(actorId) : undefined
if (actor) {
return this.fromActor(actor)
}
return onError()
}
static fromActor(actor) {
const token = actor.isToken ? actor.token : actor.prototypeToken
return ActorToken.fromToken(token)
}
static fromTokenId(tokenId, sceneId = undefined) {
const tokensList = sceneId ? game.scenes.get(sceneId).tokens : canvas.tokens.placeables
const token = tokensList.get(tokenId)
return ActorToken.fromToken(token)
}
static fromToken(token) {
return new ActorToken(token)
}
constructor(token) {
this.name = token.name ?? token.actor.name
this.img = token.actor.isToken && token.texture.src ? token.texture.src : token.actor.img
this.actor = token.actor
this.id = token.actor?.id
this.token = token
this.tokenId = token?.id
}
}