
import { AccountManager } from "./AccountManager";
//用户user数据
export enum AccountUser{buyed_kun,diamond,equip_themes,favorite_times,game_times,get_themes,list_kun,moeny,progress_themes,revival,stage }


export class PlayerData {
    constructor(_token: string, _config: Object, _appSetting: Object, _user: Object, _userbase: Object, _useInvite: any[], _user_stage: Object = null, _user_sign, _user_achievement,lottery)  {
        this.zhengshu = _token;
        //this.peizhis = _config;
        this.netzheshe = _appSetting;
        this.account = _user;
        this.accountssss = _userbase;
        this.qiandao = _user_sign;
        this.renwu = _user_achievement;
        this.userId = this.account["user_id"];
        this.openid = this.accountssss["openid"];
        this.m_invite = _useInvite;
        this.lottery=lottery;
        console.log("user_id:" + this.userId);
    }

    public zhengshu: string;
    public peizhis: Object;
    public netzheshe: Object;
    public account: Object;
    public accountssss: Object;
    public qiandao: Object;
    public renwu: Object;
    public openid: string = "";
    public userId: string = "";
    public m_invite: any[];
    public lottery: any;
   

    public GainCollocation(_type: string): any  {
        return this.peizhis[_type];
    }

    public GainAccount(_type: string)  {
        return this.account[_type];
    }

    public get fenxiang(): boolean  {
        return this.netzheshe["share"] == "1";
    }


    public get fenxiangneirong(): string  {
        return this.netzheshe["sharecontent"];
    }
    public get fuhuocishu(): number  {
        return Number(this.netzheshe["revivenum"]);
    }
    public get wudishijian(): number  {
        return Number(this.netzheshe["Invincibletime"]);
    }
    public get wudaoshijian()  {
        return Number(this.netzheshe["cheattime"]);
    }
    public get banner(): boolean  {
        return this.netzheshe["banner"] == "1";
    }
    public get video(): boolean  {
        return this.netzheshe["video"] == "1";
    }
    public get wudao(): boolean  {
        return this.netzheshe["cheat"] == "1";
    }
    public get jiancechangjin(): boolean  {
        return this.netzheshe["checkscence"] == 1;
    }
    public get reviverate(): number  {
        return Number(this.netzheshe["revive"]);
    }
    public get uintid()  {
        return this.netzheshe["uintid"];
    }
    public get music(): boolean  {
        return this.netzheshe["music"] == "1";
    }
    public get skin(): boolean  {
        return this.netzheshe["skinget"] == "1";
    }
    public get aicheatspeed(): number  {
        return Number(this.netzheshe["aicheatspeed"]);
    }
    public get aispeedtime(): number  {
        return Number(this.netzheshe["aispeedtime"]);
    }
    public get videoshare(): boolean  {
        return this.netzheshe["videoshare"] == "1";
    }
    public get trial(): boolean  {
        return this.netzheshe["trial"] == "1";
    }
    public get invite(): boolean  {
        return this.netzheshe["invite"] == 1;
    }
    public get re(): boolean  {
        return this.netzheshe["re"] == 1;
    }
    public get autosign(): boolean  {
        return this.netzheshe["autosign"] == 1;
    }
    public get showgift(): boolean  {
        return this.netzheshe["showgift"] == 1;
    }
    public get showshop(): boolean  {
        return this.netzheshe["showshop"] == 1;
    }
    public get lotteryTimer(): Number  {
        if(this.netzheshe["lotteryTimer"]) return Number(this.netzheshe["lotteryTimer"]);
        return 0;
    }
    //获取高度线
    public get falldownline():number{
        return this.netzheshe["FallDownLine"];
    }
    
    public get touchsize():number
    {
        return Number(this.netzheshe["touchsize"]);
    }
    public get touchsmoothness():number
    {
        return Number(this.netzheshe["touchsmoothness"]);
    }

    public jianglidic: { [key: string]: any } = {};
    public shitidic: { [key: string]: any } = {};
    public chengjiuliebiao: { [key: string]: any } = {};


    public GainQinDao(_key: string)  {
        return this.qiandao[_key];
    }
    public GainShiTi(_key: string, shuxing: string)  {
        return this.shitidic[_key][shuxing];
    }
    public GainJiangLi(_rewardid: number): any  {
        var reward = this.jianglidic[_rewardid];
        return reward;
    }

    public GetUser(_type: AccountUser) {
        var type = AccountUser[_type];
        return this.account[type];
    }
    /** 判断玩家是否含有角色*/
    public HasRole(_id: number): boolean {
        var data = this.GainAccount("get_themes");
        for (var i = 0; i < data.length; i++) {
            var hd = data[i];
            if (_id == hd) {
                return true;
            }
        }
        return false;
    }
    /** 判断玩家是否含有枪械*/
    public HasGun(_id: number): boolean {
        var data = this.GainAccount("buyed_kun");
        for (var i = 0; i < data.length; i++) {
            var hd = data[i];
            if (_id == hd) {
                return true;
            }
        }
        return false;
    }
    /**返回玩家看视频获得角色及枪械的进度 */
    public GetProgress(_id:number):number{
        var config = this.account["progress_themes"];
        var progress = config[_id] ? config[_id] : 0;
        return progress;
    }
    



    GetJiangLiLieBiao()  {
        var peiz = this.GainCollocation("rewards");
        for (var key in peiz)  {
            this.jianglidic[peiz[key].id] = peiz[key];
        }
    }

    GetShiTiLieBiao()  {
        var peiz = this.GainCollocation("entity");
        for (var key in peiz)  {
            this.shitidic[peiz[key].entity_id] = peiz[key];
        }
    }

    GetChengJiuLieBiao()  {
        var shujiu = this.GainCollocation("achievement");
        var aadsadsdas = {};

        for (var key1 in shujiu)  {
            var type1 = shujiu[key1].type;
            //var obj = {};

            if (aadsadsdas[type1])  {
                continue;
            }

            var fasas = [];
            for (var key2 in shujiu)  {
                var type2 = shujiu[key2].type;

                if (type1 == type2)  {
                    fasas.push(shujiu[key2]);
                }
            }

            aadsadsdas[type1] = fasas;
        }
        this.chengjiuliebiao = aadsadsdas;
    }


}