/* -------------------------------------------- */
import { RdDUtility } from "./rdd-utility.js";

/* -------------------------------------------- */
export class RdDTokenHud {
  
  /* -------------------------------------------- */
  static addTokenHudExtensions( app, html, data ) {
    let token = canvas.tokens.get(data._id);    
    
    // Affichage seulement si le token est un combat
    if ( token.inCombat) {
      this.addInitiativeTokenTip(html, token);
    }
  }

  /* -------------------------------------------- */
  static async addInitiativeTokenTip(html, token ) {
    // Helper actor and sanity check
    let actor = token.actor;    
    if (actor === undefined) return;    
    
    // Get combatant stuff 
    let combatant = game.combat.data.combatants.find(c => c.tokenId == token.data._id );
    if ( combatant ) {
      let armesList = RdDUtility.buildArmeList( combatant );
      // Create space for Hud Extensions next to combat icon
      let htmlInit = '<div class="tokenhudext right">'; 
      let htmlCombat = '<div class="tokenhudext rightright">';
      console.log("Token !!!", combatant, armesList);
      for( let armeIndex=0; armeIndex<armesList.length; armeIndex++) {
        let arme = armesList[armeIndex];
        htmlInit += '<div class="control-icon tokenhudicon right" title="'+ arme.name +'">';
        htmlInit += '<label class="hud-text-small" data-combatant-id="'+combatant._id+'" data-arme-id="'+armeIndex+'"></i>I:'+arme.name+'</label></div>';
        if ( !arme.data.initOnly) { 
          htmlCombat += '<div class="control-icon tokenhudicon right" title="'+ arme.name +'">';
          htmlCombat += '<label class="hud-text-small" data-combatant-id="'+combatant._id+'" data-arme-id="'+armeIndex+'"></i>C:'+arme.name+'</label></div>';
        }
      }
      htmlInit += "</div>";
      htmlCombat += "</div>";
      let hudInitiative = $(htmlInit);
      html.find('.control-icon.combat').after(hudInitiative); // Add Initiative and Agility token tip
      let hudCombat = $(htmlCombat);
      html.find('.control-icon.combat').after(hudCombat); // Add Initiative and Agility token tip

      // Add interactions for Initiative
      hudInitiative.find('label').click(async (event) => {
        let armeIndex = event.currentTarget.attributes['data-arme-id'].value;
        let combatantId = event.currentTarget.attributes['data-combatant-id'].value;        
        let arme = armesList[armeIndex];
        RdDUtility.rollInitiativeCompetence( combatantId, arme );
      });
      // Add interactions for Combat
      hudCombat.find('label').click(async (event) => {
        let armeIndex = event.currentTarget.attributes['data-arme-id'].value;
        let arme = armesList[armeIndex];
        actor.rollArme( arme.data.competence, arme.name);
      });
    }
  }
}