| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- import { Data } from "../core/data/Data";
- import { DataSystem } from "../core/data/DataSystem";
- import { ConfigData } from "../data/ConfigData";
- import { UserHeroData } from "../hero/UserHeroData";
- import { MarshalSkillData } from "./MarshalSkillData";
- /**
- * 统帅技能数据
- * @description 只有需要watch的,比如技能cd、当前技能编号这两个个字段在里面
- * @author 郑聂华
- */
- export class MarshalData extends Data {
- /**默认统帅技能ID*/
- public defaultId: number = 110001;
- /**统帅技能数据*/
- public marshalSkillData: MarshalSkillData;
- /**统帅技能冷却时间 时间戳*/
- public skillCoolingTime: number = 0;
- /**技能配置数据*/
- public skillData: { [key: number]: Skill };
- /**技能解锁升级小弹窗数据 type 1 解锁 2 升级 id 技能id lv 当前等级 lastLv 上一等级*/
- public skillNoticeQueue: { type: number, id: number, lv: number, lastLv: number }[] = [];
- /**技能解锁或升级的通知队列数据*/
- public skillUnlockLvUpQueue: { type: number, id: number, lv: number, lastLv: number }[] = [];
- /**
- * 初始化统帅技能数据
- */
- public async init() {
- if (!this.marshalSkillData) {
- this.marshalSkillData = new MarshalSkillData();
- DataSystem.regeditData(this.marshalSkillData);
- }
- let marshalSkillCfg: any = DataSystem.getData(ConfigData).get("commanderskill");
- for (let id in marshalSkillCfg) {
- this.marshalSkillData.lvNeedStarsMap.set(marshalSkillCfg[id].id, marshalSkillCfg[id].starcount.split(':'));
- }
- let numStar = 0;
- let userHeroData = DataSystem.getData(UserHeroData);
- //await userHeroData.pull(http);
- for (let id of userHeroData.haveHeros) {
- let tempHero = userHeroData.get(id);
- numStar += tempHero.server.star;
- }
- let tempKeys = this.marshalSkillData.lvNeedStarsMap.keys();
- for (let id of tempKeys) {
- let tempStarAry = this.marshalSkillData.lvNeedStarsMap.get(id);
- this.marshalSkillData.lvMarshalSkill.set(id, -1);
- for (let i = 0; i < tempStarAry.length; i++) {
- if (numStar >= tempStarAry[i])
- this.marshalSkillData.lvMarshalSkill.set(id, i + 1);
- }
- }
- //this.skillCoolingTime = new Date(1970, 1, 1).getTime();
- this.skillCoolingTime = parseInt(localStorage.getItem("MarshalCoolTime")) || new Date(1970, 1, 1).getTime();
- this.skillInit();
- }
- /**技能配置数据解析*/
- private skillInit() {
- let tempData = JSON.parse(JSON.stringify(DataSystem.getData(ConfigData).get("skill")));
- if (tempData) {
- this.skillData = {};
- for (let i in tempData) {
- let o = tempData[i];
- let sd: Skill = o;
- sd.id = o.id;
- sd.name = o.name;
- sd.res = o.res;
- sd.icon = o.icon;
- sd.des = o.des;
- if (o.extra) { sd.extra = o.extra.split(":"); }
- let a = o.attType.split(":");
- sd.attType = parseInt(a[0]);
- if (a[0] == '1' || a[1] == '2') {
- let b = a[1].split(",");
- sd.attackNum = parseInt(b[b.length - 1]);
- sd.attackRange = parseInt(b[0]);
- }
- let c = o.skillValue.split(",");
- sd.skillValue = [];
- for (let j = 0; j < c.length; j++) {
- sd.skillValue.push(parseFloat(c[j]));
- }
- this.skillData[i] = sd;
- }
- }
- }
- }
- export interface Skill {
- /**技能id*/
- id: number;
- /**技能名*/
- name: string;
- /**技能资源名*/
- res: string;
- /**技能头像名*/
- icon: string;
- /**描述*/
- des: string;
- /**攻击类型*/
- attType: number;
- /** [最小攻击系数,最大攻击系数] attType=3 万分比 attType=5 秒 */
- skillValue: number[];
- /** 技能范围,当attackType=2时才有 */
- attackRange: number;
- /** 技能攻击的个数 */
- attackNum: number;
- /**额外*/
- extra: string[];
- }
|