Files
ZYZ/shared/domain/activityField/newHeroGachaField.ts
T
2022-08-03 11:27:20 +08:00

64 lines
2.1 KiB
TypeScript

import { ActivityModelType } from '../../db/Activity';
import { UserGachaType } from '../../db/UserGacha';
import { DicGacha } from '../../pubUtils/dictionary/DicGacha';
import { RewardInter } from '../../pubUtils/interface';
import { ActivityBase } from './activityField';
interface NewHeroGachaItemInDb {
hid: number;
position: string; // x&y
}
interface NewHeroGachaDataInDb {
gachaId: number; // dic_zyz_gacha表的id,卡池的概率,消耗都通过这个表读取
icon: string; // 大地图的icon图片文件名
heroes: NewHeroGachaItemInDb[]; // 本期活动pick的武将
bg: string; // 首页背景图片
uiType: number; // 布局格式,具体什么代表什么含义由策划和客户端定
}
// 每日关卡活动数据
export class NewHeroGachaData extends ActivityBase {
gachaId: number;
icon: string;
heroes: NewHeroGachaItemInDb[];
bg: string;
uiType: number;
pickHero: number = 0;
count: number = 0;
isFree: boolean = false; // 免费次数
cost: RewardInter[] = []; // 消耗
constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
super(activityData, createTime, serverTime)
this.initData(activityData.data)
}
public initData(data: string) {
let dataObj: NewHeroGachaDataInDb = JSON.parse(data);
this.gachaId = dataObj.gachaId;
this.icon = dataObj.icon;
this.heroes = dataObj.heroes;
this.bg = dataObj.bg;
this.uiType = dataObj.uiType;
}
public findItem(hid: number) {
return this.heroes.find(obj => { return obj && obj.hid == hid })
}
//解析玩家记录
public setPlayerRecords(data: UserGachaType, dic: DicGacha) {
if(dic) this.cost = dic.cost;
if (data) {
this.pickHero = data.pickHero;
this.count = data.count;
this.isFree = data.freeCount < dic?.free.count;
}
}
public isPickHero(hid: number) {
return this.heroes.findIndex(cur => cur.hid == hid) != -1;
}
}