/** * 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 } }