import { respath } from "../constants/respath";
import { config } from "../constants/config";
import { UIManager } from "../models/UIManager";
import { StorageManager } from "../models/StorageManager";
import { EventManager, EVENT_TYPES } from "../models/EventManager";
import { Difficulty } from "./Difficulty";
import { DOStage } from "../models/DOStage";

const { regClass, property } = Laya;

@regClass()
export class GameOver extends Laya.Script {
    declare owner : Laya.Box;


    @property(Laya.Sprite)
    public btn_second: Laya.Sprite

    @property(Laya.Sprite)
    public btn_restart: Laya.Sprite

    @property(Laya.Sprite)
    public btn_newOrClose: Laya.Sprite
    @property(Laya.Label)
    public label_newOrClose: Laya.Label
    

    public onSetStageInfo(doStage: DOStage): void {

      this.btn_second.on(Laya.Event.CLICK, this, (evt: Laya.Event) => {
            doStage.set_mistake(doStage.get_mistake()-1)
            EventManager.getInstance().DispatchEvent(EVENT_TYPES.NOT_UPDATE_MISTAKE)
            this.owner.destroy()
      })

      this.btn_restart.on(Laya.Event.CLICK, this, (evt: Laya.Event) => {
        var stageID = doStage.get_stageID()
        var type = doStage.get_stageType()
        var difficulty = doStage.get_difficulty()
        StorageManager.getInstance().newStage(stageID, type, difficulty, difficulty)
        UIManager.getInstance().loadStageUI(stageID);
        this.owner.destroy()
      })

      var type = doStage.get_stageType()
      if (type == config.STAGE_TYPE.MAIN) {
        this.label_newOrClose.text = "New Game"
        this.btn_newOrClose.on(Laya.Event.CLICK, this, (evt: Laya.Event) => {
          if (config.H_SCREEN) {
            var user = StorageManager.getInstance().getUser()
            user.update_progress(doStage.get_difficulty(), doStage.get_stageIndex()+1)//主线关卡更新难度进度
            var difficulty = doStage.get_difficulty()
            StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, difficulty, difficulty)
            UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID);
            this.owner.destroy()
          }
          else {
            Laya.loader.load(respath.difficulty_ui_res).then((go)=>{
              var prefab = go.create()
              var d = UIManager.getInstance().getUIRoot().addChild(prefab).getComponent(Difficulty)
              d.onInit((value: string)=> {
                console.log("选择难度", value)
                StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, value, value)
                UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID);
                this.owner.destroy()
              })
            }) 
          }
        })
      }
      else {
        this.label_newOrClose.text = "Close"
        this.btn_newOrClose.on(Laya.Event.CLICK, this, (evt: Laya.Event) => {
          UIManager.getInstance().loadDCUI()
          UIManager.getInstance().closeStageUI();
          this.owner.destroy()
        })
      }

    }
}