import CthulhuEternalUtils from "../utils.mjs"

export default class CthulhuEternalActor extends Actor {
  
  static async create(data, options) {

    // Case of compendium global import
    if (data instanceof Array) {
      return super.create(data, options);
    }
    // If the created actor has items (only applicable to duplicated actors) bypass the new actor creation logic
    if (data.items) {
      let actor = super.create(data, options);
      return actor;
    }

    if (data.type === 'protagonist') {
      let era = game.settings.get("fvtt-cthulhu-eternal", "settings-era")
      const skills = await CthulhuEternalUtils.loadCompendium("fvtt-cthulhu-eternal.skills")
      data.items = data.items || []
      for (let skill of skills) {
        if (skill.system.settings === era ) {
          data.items.push(skill.toObject())
        }
      }
    }

    return super.create(data, options);
  }

  _onUpdate(changed, options, userId) {
    // DEBUG : console.log("CthulhuEternalActor.update", changed, options, userId)
    if ( changed?.system?.wp?.exhausted) {
      ChatMessage.create({
        user: userId,
        speaker: { alias: this.name },
        rollMode: "selfroll",
        content: game.i18n.localize("CTHULHUETERNAL.ChatMessage.exhausted"),
        type: CONST.CHAT_MESSAGE_STYLES.OTHER
      })
    }
    return super._onUpdate(changed, options, userId)
  }

  async _preCreate(data, options, user) {
    await super._preCreate(data, options, user)

    // Configure prototype token settings
    const prototypeToken = {}
    if (this.type === "protagonist") {
      Object.assign(prototypeToken, {
        sight: { enabled: true },
        actorLink: true,
        disposition: CONST.TOKEN_DISPOSITIONS.FRIENDLY,
      })
      this.updateSource({ prototypeToken })
    }
  }

}