// Learn TypeScript:
//  - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
// Learn Attribute:
//  - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
//  - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html

const {ccclass, property, } = cc._decorator;



enum moduleState {
        "INIT",

    };

@ccclass("gameMY")
export class gameMY extends cc.Component {

    @property
    columnCount = 5;

    @property
    itemSize = 240;

    @property(cc.Label)
    betString: cc.Label = null;

    @property(cc.Label)
    bigFrameString: cc.Label = null;

    @property(cc.Label)
    balanceString: cc.Label = null;


    @property({type: cc.Prefab})
    columnPrefab: cc.Prefab | null = null;

    @property(cc.Node)
    slotBoard: cc.Node = null;

    


    private betNumber: number;
    private balanceNumber: number;
    private bigFrameNumber: number;

    // item 圖片資源存放區
    itemNameMapping = {
        'item_01':1, 'item_02':2, 'item_03':3, 'item_04':4, 'item_9':5, 
        'item_10':6, 'item_j':7,  'item_k':8,  'item_q':9,  'item_a':10, 
        'item_scatter':51, 'item_wild':52
    } as const;

    item_spriteFrame = {};
    itemBlur_spriteFrame = {};

    init_Complete:boolean = false 

    protected onLoad () {


        this.unitTestInit(); // for engineer use

        // 讀取 item 圖片資源
        cc.resources.loadDir('item',cc.SpriteFrame, (err: any, sF) => {
            sF.forEach( (eachSpriteFrame)=>{
                this.item_spriteFrame[ this.itemNameMapping[eachSpriteFrame.name] ] = eachSpriteFrame
            })
        } );
        cc.resources.loadDir('item_blur',cc.SpriteFrame, (err: any, sF) => {
            sF.forEach( (eachSpriteFrame)=>{
                this.itemBlur_spriteFrame[ this.itemNameMapping[eachSpriteFrame.name] ] = eachSpriteFrame
            })
        } );

    }



    protected start () {
        this.betNumber = 50;
        
        this.slotBoard.addChild( cc.instantiate(this.columnPrefab) )
        this.slotBoard.addChild( cc.instantiate(this.columnPrefab) )
        this.slotBoard.addChild( cc.instantiate(this.columnPrefab) )
        this.slotBoard.addChild( cc.instantiate(this.columnPrefab) )

    }

    protected update (dt) {

        if(!this.init_Complete){
            // 完成圖片載入再啟動 column
            if((Object.keys(this.item_spriteFrame).length === 12)){
                for(let i=0;i<=5;i++){
                    this.slotBoard.children[i].getComponent('columnControl').gameModule = this.node;
                    this.slotBoard.children[i].active = true;
                    this.init_Complete=true;
                }
            }
            
        }
    } 


    onBetBtnClick(e: cc.Event.EventTouch): void {
        // let a = e.getCurrentTarget().name
        // cc.log(a)
        if(e.getCurrentTarget().name == 'btn_plus'){
            this.betNumber += 50;
        }
        else{
            this.betNumber -= 50;
        }
        this.betString.string = "" + this.betNumber
    }


    onSpinBtnClick():void {

        


        cc.log("nothing");

    }

    unitTestInit():void {
        // for unitTest 1
        this.node.on('Bob', (arg1)=>{
            cc.log("columnControl Recieve Bob say " + arg1)
        }, this)
    }




}
