import {
    Label,
    MySprite
} from './Unit';

/**
 * 根据父级组件大小设置字体大小
 * @param parWidth 
 * @param label 
 */
export function setFontSize(parWidth : number, label: Label){

    if(!label){
      return;
    }

    let w = label.width;

    let h = label.height;

    let r = Math.sqrt( w * w + h * h)/2;

    //如果宽度超过，则缩小字体
    if(r > parWidth/2){
      
      shrinkFont(parWidth, label);
    }
    else{
      magnifyingFontSize(parWidth, label);
    }
  }

  export function shrinkFont(parWidth : number, label: Label){
    if(!label){
      return;
    }

    let w = label.width;

    let h = label.height;

    let r = Math.sqrt( w * w + h * h)/2;

    //如果宽度超过，则缩小字体
    if(r > parWidth/2){
      
      let fontSize = label.fontSize;

      fontSize = fontSize - 2;

      label.fontSize = fontSize;

      label.refreshSize();


      shrinkFont(parWidth, label);

    }
  }

  export function magnifyingFontSize(parWidth : number, label: Label){

    if(!label){
      return;
    }

    let w = label.width;

    let h = label.height;

    let r = Math.sqrt( w * w + h * h)/2;

    //如果宽度超过，则缩小字体
    if(r < parWidth/2){
      
      let fontSize = label.fontSize;

      fontSize = fontSize + 2;

      label.fontSize = fontSize;

      label.refreshSize();

      magnifyingFontSize(parWidth, label);

    }
  }

  /**
   * 根据父级组件大小设置字体大小
   * @param parWidth 
   * @param parHeight
   * @param label 
   */
  export function setRectFontSize(parWidth : number, parHeight : number,label: Label){

    if(!label){
      return;
    }

    let w = label.width;
    let scaleX = w / parWidth;

    let h = label.height;
    let scaleY = h / parHeight;
    //console.log('sacle x:', scaleX, 'sacle y:', scaleY);
    //如果宽度比高度的比例小，则按高度进行字体处理
    if(scaleX < scaleY){
      //如果高度超过，则缩小字体
      if(h > parHeight){
          
        shrinkRectFont(parWidth, parHeight, label);
      }
      else{

        magnifyingRectFontSize(parWidth, parHeight, label);
      }
    }
    else{

      //如果高度超过，则缩小字体
      if(w > parWidth){
          
        shrinkRectFont(parWidth, parHeight, label);
      }
      else{

        magnifyingRectFontSize(parWidth, parHeight, label);
      }
    }
    
  }

  export function shrinkRectFont(parWidth : number, parHeight : number, label: Label){
    if(!label){
      return;
    }

    let w = label.width;
    let scaleX = w / parWidth;

    let h = label.height;
    let scaleY = h / parHeight;

    let flag = false;

    //如果宽度比高度的比例小，则按高度进行字体处理
    if(scaleX < scaleY){
      //如果高度超过，则缩小字体
      if(h > parHeight){
          
        flag = true;
      }
    }
    else{

      //如果宽度超过，则缩小字体
      if(w > parWidth){
          
        flag = true;
      }
    }

    //如果超过，则继续缩小字体
    if(flag){
      let fontSize = label.fontSize;

      fontSize = fontSize - 1;
  
      label.fontSize = fontSize;
  
      label.refreshSize();
  
      shrinkRectFont(parWidth, parHeight, label);
    }

    
  }

  export function magnifyingRectFontSize(parWidth : number, parHeight : number, label: Label){

    if(!label){
      return;
    }

    let w = label.width;
    let scaleX = w / parWidth;

    let h = label.height;
    let scaleY = h / parHeight;

    let flag = false;

    //如果宽度比高度的比例小，则按高度进行字体处理
    if(scaleX < scaleY){
      //如果高度超过，则缩小字体
      if(h < parHeight){
          
        flag = true;
      }
    }
    else{

      //如果宽度超过，则放大字体
      if(w < parWidth){
          
        flag = true;
      }
    }

    //如果超过，则继续放大字体
    if(flag){
      let fontSize = label.fontSize;

      fontSize = fontSize + 1;
  
      label.fontSize = fontSize;
  
      label.refreshSize();
  
      magnifyingRectFontSize(parWidth, parHeight, label);
    }
  }


  /**
   * 获取按钮图片
   * @param text 文本内容
   * @param font 字体
   * @param fontColor
   */
  export function getBtnPic(text, font, fontColor){

    const btn = new MySprite();
    btn.init(this.images.get('btn'));
    btn.setScaleXY(this.mapScale);

    let btnText = new Label();
    btnText.text = text;
    btnText.textAlign='middle';
    btnText.fontSize = 50;
    btnText.fontName = font;
    btnText.fontColor = fontColor;
    btnText.refreshSize();
    
    btnText.x = -btnText.width/2;
    btnText.y = 0;
    btn.addChild(btnText);
    btn.childDepandAlpha = true;

    return btn;
  }

  export function getRandomItemFromArr(arr){

    if(!arr){
      return;
    }

    let length = arr.length;

    let index = Math.ceil(Math.random()*100000000)%length;

    return arr[index];
  }