var cat = []
var cost = 100
var boardy = 230
var gamepieces = [] // Game buttons
var crungo = [] // Game buttons amount
var score = 0
var texts = []
var categories = []
var texas = []
var count = 0
var started = false
var points = 0
var number = 0
var rando = []
var catArray = []
var nam
var timeLabel
var temp
var mintemp = 0
var sectemp = 0
var minutes = 0
var seconds = 0
var guhtemp = 0
var time
var mi
var name
var se
var guh
var category
var difficulty
var gameboard = new Phaser.Class({
    Extends: Phaser.Scene,
    initialize: function() {
        Phaser.Scene.call(this, { "key": "gameboard" });
    },
    init: function(data) {
        this.name = data.name
        this.catArr = data.catArr
        this.sec = data.sec
        this.min = data.min
        
        if(started == false){
           nam = this.name 
           catArray = catArr
           guhtemp = 0
           sectemp = 0
           mintemp = 0
        }
        
        boardy = 230
        cost = 100
        points = data.points

        this.number = data.number
        if (started == true){
            score = score + points
            crungo.push(number)
            guhtemp = geh
            mintemp = min
            sectemp = sec
        }

    },
    preload: function() {
        
        this.load.image('rest','QuestionPiece.png');
        this.load.image('gameBack','woodBackground.png')

    },
    create: function() {
        if(started == false){
            score = 0
            crungo = []
        }
        gr = this.add.image(400,300,"gameBack")
        
        log = this.add.image(400,300,"logo")
        log.setAlpha(0.5)

        const self = this

        self.startTime = new Date();
	    self.totalTime = 120;
	    self.timeElapsed = 0;
	    self.createTimer();
	    self.gameTimer = this.time.addEvent({
            delay: 100,
		    callback: self.updateTimer,
            callbackScope: self,
            loop: true
	    });
        
        self.full = new fullButton(self,gr.displayWidth - 34, gr.displayHeight - 587, "fulls",'game')
        this.add.existing(self.full)

        this.exi = new exitButton(this,ground.displayWidth - 19, ground.displayHeight - 587,"exit")
        this.add.existing(this.exi)
        namtext = this.add.text(85, 70, "Name: "+nam, {font: "40px Optima", fill: "#000000"})
        scortext = this.add.text(85, 40, "Score: "+score, {font: "40px Optima", fill: "#000000"})

        if(started == false){
            
        }
        
        namtext.setFontSize(25)
        scortext.setFontSize(25)
        namtext.setColor("#000000")
        scortext.setColor("#000000")
        let barf = 0
        
        for(let i = 135; i <= 660;i+=105){
            goopy = this.add.image(i,145,'rest')
            categories[barf] = goopy
            barf++
        }
        barf = 0
        for(let i = 135;i <= 660;i = i + 105){
            bongo = this.add.text(i,145, catArray[barf], {font: "20px Optima", fill: "#000000"})
            bongo.setAlign("center")
            bongo.setColor("#000000")
            bongo.setWordWrapWidth(100,true)
            texas[barf] = bongo
            barf++
        }
        for(let i = 0;i < 6;i++){
            Phaser.Display.Align.In.Center(texas[i],categories[i])
        }
        
        if (started == false){
           let borf = 0
            barf = 0
            for (let index = 0; index < 5; index++) {
                count = 0
            
                for(let i = 135;i <= 660;i = i + 105){
                    self.button = new gamebutton(self, i,boardy,'rest',index,count,barf,catArray)
                
                    gamepieces[barf] = self.button
                    barf++
                    borf++
                    count++
                }
                boardy = boardy + 80
                cost = cost + 100
            } 
        }
        
        if(started == true){
            let borf = 0
            barf = 0
            for (let index = 0; index < 5; index++) {
                count = 0
            
                for(let i = 135;i <= 660;i = i + 105){
                    self.button = new gamebutton(self, i,boardy,'rest',index,count,barf,catArray)
                
                    gamepieces[barf] = self.button
                    barf++
                    borf++
                    count++
                }
                boardy = boardy + 80
                cost = cost + 100
            }
        }

        if (started == false){
            for(let i = 0;i< gamepieces.length;i++){
                this.add.existing(gamepieces[i])
                
            }
        }
        barf = 0
        if (started == true){
            for(let i = 0;i< gamepieces.length;i++){
                
                this.add.existing(gamepieces[i])
            }
            
        }
        let borger = 0
        if(started == true){
            for(let i = 0;i < crungo.length;i++){
                gamepieces[crungo[i]].disableInteractive()
                gamepieces[crungo[i]].setAlpha(0)
                borger++
            }
            if(borger > 29){
                self.scene.start("results",{
                    "score":score
                },{
                    "nam":nam
                },{
                    "time":time
                })
            }
        }
        boardy =230
        cost = 100
        barf = 0
        borf = 0
        for (let index = 0; index < 5; index++) {

            
            for(let i = 135;i <= 660;i = i + 105){              
                scrungo = this.add.text(i,boardy, cost, {font: "20px Optima", fill: "#000000"})
                scrungo.setColor("#000000")
                texts[barf] = scrungo
                barf++
            }
            boardy = boardy + 80
            cost = cost + 100
        }

        for(let i = 0;i < gamepieces.length;i++){
            Phaser.Display.Align.In.Center(texts[i],gamepieces[i])
        }
        count = 0
        
        started = true
        
    },

    update: function() {
        const self = this
            onclick = function(event) {
                if(event.clientX > 725 && event.clientX < 795){
                    if(event.clientY > 5 && event.clientY < 75){
                        self.scene.start("results",{
                            "score":score
                        },{
                            "nam":nam
                        },{
                            "time":time
                        })
                    }
                }
            }
       
    },
    createTimer: function(){
        var me = this;
        me.timeLabel = me.add.text(615, 40, "00:00", {font: "40px Optima", fill: "#000000"});
       
        me.timeLabel.align = 'center';
    },
    updateTimer: function(){
        var me = this;
        var currentTime = new Date();
        var timeDifference = me.startTime.getTime() - currentTime.getTime();
        //Time elapsed in seconds
        me.timeElapsed = Math.abs(timeDifference / 1000) + guhtemp;
        //Time remaining in seconds
        //Convert seconds into minutes and seconds
        minutes = Math.floor(me.timeElapsed / 60);
        seconds = Math.floor(me.timeElapsed) - (60 * minutes);
        mi = Math.floor(minutes * 60)
        se = seconds
        guh = mi + se
        //Display minutes, add a 0 to the start if less than 10
        var result = (minutes < 10) ? "0" + minutes : minutes;
        //Display seconds, add a 0 to the start if less than 10
        result += (seconds < 10) ? ":0" + seconds : ":" + seconds;
        time = result
        me.timeLabel.text = result;
    }
    
});