import { resolve } from "path";

declare const RF;
declare const alertEx;

function getRandomArbitrary(min, max) {
    return ~~(Math.random() * (max - min)) + min;
}

@RF.decorateComponent({
    name: 'game1',
    template: require('./game1.html')
})
export class Game1 {

    guessTotal:number = 3;
    introText: string = `
        Я загадал число от 1 до 10. 
        Попробуй отгадать его. Всего попыток: ${this.guessTotal}`;
    guessResultText:string;    
    guessNum: number = 1;
    trying: number;
    valueObj  = {value:'0'};

    private static resolveFn: Function;

    static async open(){
        let p = new Promise((resolve)=>{
            this.resolveFn = resolve;
        });
        RF.Router.navigateTo('game1');
        return p;
    }

    onShow(){
        this.guessNum = getRandomArbitrary(1,10);
        this.trying = 1;
        this.guessResultText = '';
    }

    accept(){
        let num = parseInt(this.valueObj.value);
        if (!num) return alertEx(`Некорректное значение`);
        if (num<1 || num>10) return alertEx(`Введите число от 1 до 10`);
        if (num==this.guessNum) return Game1.resolveFn(true);
        this.trying++;
        if (this.trying>this.guessTotal) {
            this.trying=this.guessTotal;
            return Game1.resolveFn(false);
        }    
        if (this.guessNum<num) return this.guessResultText = `Мое число меньше чем ${num}`;
        this.guessResultText = `Мое число больше чем ${num}`;

    }

}

(window as any).G1 = Game1;