/* -------------------------------------------- */

import { MournbladeCYD2Utility } from "./mournblade-cyd2-utility.js";
import "./xregexp-all.js";

const __level1Expr = '(?<effectType>[a-z]+):(?<objectType>[a-zA-Z]+)\\((?<objectName>[a-zA-Z0-9\\.]+)\\)\\s+(?<modifierValue>[\\d]+)\\s*{*(?<modifierLabel>[a-zA-Zàéè\\s]*)}*'
const __effectTypes = {modifier: 1, cost: 1, provide: 1}

/* -------------------------------------------- */
export class MournbladeCYD2Automation {

  /* -------------------------------------------- */
  static init() {
    this.__objectTypes = { }
    
    Object.entries(game.data.model.Actor).forEach(kv => { 
      this.__objectTypes[kv[0]] = foundry.utils.duplicate(kv[1])
    })
    Object.entries(game.data.model.Item).forEach(kv => { 
      this.__objectTypes[kv[0]] = foundry.utils.duplicate(kv[1])
    })
  }

  /* -------------------------------------------- */
  static processAutomations(event, item, actor) {
    //console.log("We have", event, item, actor)
    if ( !item.system.isautomated || item.system.automations.length == 0 ) {
      return  {isValid: true}
    }
    let relevantAutomations = item.system.automations.filter( auto => auto.eventtype == event)
    if ( !relevantAutomations || relevantAutomations.length == 0) {
      return  {isValid: true}
    }
    
    let validTab = []
    for(let auto of relevantAutomations) {
      if ( event == "on-drop") {        
        validTab.push( actor.checkAttributOrCompetenceLevel( auto.competence, auto.minLevel) )
      }
    }
    
    // Post process validation array
    for (let ret of validTab) {
      if ( !ret.isValid) {
        return ret
      }
    }

    return  {isValid: true}
  }

}