43 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			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 TokenActor {
 | 
						|
  static fromTokenActor(token, actor){
 | 
						|
    return token ? TokenActor.fromToken(token) : TokenActor.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 TokenActor.fromToken(token)
 | 
						|
  }
 | 
						|
 | 
						|
  static fromTokenId(tokenId, sceneId = undefined) {
 | 
						|
    const tokensList = sceneId ? game.scenes.get(sceneId).tokens : canvas.tokens.placeables
 | 
						|
    const token = tokensList.get(tokenId)
 | 
						|
    return TokenActor.fromToken(token)
 | 
						|
  }
 | 
						|
 | 
						|
  static fromToken(token) {
 | 
						|
    return new TokenActor(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
 | 
						|
  }
 | 
						|
} |