70 lines
2.0 KiB
TypeScript
70 lines
2.0 KiB
TypeScript
import { ActivityModelType } from '../../db/Activity';
|
||
import { UserGachaType } from '../../db/UserGacha';
|
||
import { DicGacha } from '../../pubUtils/dictionary/DicGacha';
|
||
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; // 免费次数
|
||
|
||
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;
|
||
}
|
||
}
|
||
|
||
|
||
public isPickHero(hid: number) {
|
||
return this.heroes.findIndex(cur => cur.hid == hid) != -1;
|
||
}
|
||
}
|