import { LoginMgr } from "../common/LoginManager";
import { RoleData } from "../data/RoleData";
import { RoleConf } from "../ui/tower/conf/RoleConf";
import { GoodsManager } from "./GoodsManager";


//角色管理器
export class RoleManager {
    //抽一个英雄
    static getNewRole() {
        LoginMgr.sendPost('tavern', 'get', (data) => {
            console.log(data);
        }, {})
        return false;
    }

    //英雄升星
    static sendRoleAdvance(args: { hid: number }, callback) {
        LoginMgr.sendPost('role', 'grade_up', (data) => {
            console.log(data);
            let rData = RoleData.getRoleDataByID(args.hid);
            rData.grade = data.grade;
            RoleData.setRoleDataByID(args.hid, rData)
            if(data.awards){
                GoodsManager.parseServerAwards(data.awards);
            }
            callback();
        }, args)
    }

    static getRolesRaceGroup() {
        let roles = {};
        let roleConf = RoleConf.data
        for (const rId in roleConf) {
            if (Object.prototype.hasOwnProperty.call(roleConf, rId)) {
                const element = roleConf[rId];
                let rData = RoleData.getRoleDataByID(rId);
                if (roles[element.Race]) {
                    if (rData) {
                        roles[element.Race].push(rData);
                    } else {
                        roles[element.Race].push({ conf: element });
                    }
                } else {
                    roles[element.Race] = [];
                    if (rData) {
                        roles[element.Race].push(rData);
                    } else {
                        roles[element.Race].push({ conf: element });
                    }
                }
            }
        }
        for (const key in roles) {
            if (Object.prototype.hasOwnProperty.call(roles, key)) {
                const element = roles[key];
                element.sort((a, b) => {
                    return Number(a.conf.Id) < Number(b.conf.Id) ? -1 : 1;
                });
            }
        }
        return roles;
    }
}