73 lines
2.2 KiB
TypeScript
73 lines
2.2 KiB
TypeScript
import { ActivityModelType } from '../../db/Activity';
|
|
import { UserGachaType } from '../../db/UserGacha';
|
|
import { DicGacha } from '../../pubUtils/dictionary/DicGacha';
|
|
import { getGachaRemainFloor } from '../../pubUtils/util';
|
|
import { ActivityBase } from './activityField';
|
|
|
|
interface NewHeroGachaItemInDb {
|
|
hid: number;
|
|
isDefault: boolean;
|
|
}
|
|
|
|
interface NewHeroGachaDataInDb {
|
|
gachaId: number; // dic_zyz_gacha表的id,卡池的概率,消耗都通过这个表读取
|
|
heroes: NewHeroGachaItemInDb[]; // 本期活动pick的武将
|
|
}
|
|
|
|
class NewHeroGachaItem {
|
|
hid: number;
|
|
isDefault: boolean;
|
|
constructor(hero: NewHeroGachaItemInDb) {
|
|
this.hid = hero.hid;
|
|
this.isDefault = hero.isDefault;
|
|
}
|
|
}
|
|
|
|
// 每日关卡活动数据
|
|
export class NewHeroGachaData extends ActivityBase {
|
|
gachaId: number;
|
|
heroes: NewHeroGachaItem[] = [];
|
|
pickHero: number = 0;
|
|
count: number = 0;
|
|
isFree: boolean = false; // 免费次数
|
|
remainFloor: number = 0;
|
|
|
|
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;
|
|
let heroes = dataObj.heroes||[];
|
|
for(let hero of heroes) {
|
|
this.heroes.push(new NewHeroGachaItem(hero))
|
|
}
|
|
}
|
|
|
|
public findItem(hid: number) {
|
|
return this.heroes.find(obj => { return obj && obj.hid == hid })
|
|
}
|
|
|
|
public getDefaultHero() {
|
|
let hero = this.heroes.find(obj => obj.isDefault)||this.heroes[0];
|
|
return hero?.hid||0;
|
|
}
|
|
|
|
//解析玩家记录
|
|
public setPlayerRecords(data: UserGachaType, dic: DicGacha) {
|
|
if (data) {
|
|
this.pickHero = data.pickHero;
|
|
this.count = data.count;
|
|
this.isFree = data.freeCount < dic?.free.count;
|
|
this.remainFloor = getGachaRemainFloor(data.gachaId, data.floor||[])
|
|
}
|
|
}
|
|
|
|
|
|
public isPickHero(hid: number) {
|
|
return this.heroes.findIndex(cur => cur.hid == hid) != -1;
|
|
}
|
|
}
|