粮草先行:离开页面的时候不发道具&离开军团不算加成

This commit is contained in:
luying
2022-09-28 19:00:47 +08:00
parent cee94b0cf0
commit 53a252a392
7 changed files with 190 additions and 23 deletions
+26 -5
View File
@@ -22,12 +22,14 @@ export class WoodenHorseMember {
items: RewardInter[] = [];
code?: string;
hasReceiveInitItems: boolean = false;
isOnline: boolean = false;
constructor(roleId: string, roleName: string, sid: string, code: string) {
this.roleId = roleId;
this.roleName = roleName;
this.sid = sid;
this.code = code;
if(sid) this.isOnline = true;
}
addTempItem(item: RewardInter) {
@@ -58,6 +60,11 @@ export class WoodenHorseMember {
updateSid(sid: string) {
this.sid = sid;
this.isOnline = true;
}
leave() {
this.isOnline = false;
}
}
@@ -236,19 +243,24 @@ export class WoodenHorse {
if(this.durability < 0) this.durability = 0;
break;
case RACE_EVENT.ITEM:
let ranMember: WoodenHorseMember[] = getRandEelm(this.members, GUILDACTIVITY.RACEACTIVITY_EVENT_MEMBERCNT);
if(ranMember.length <= 0) ranMember = this.members;
let onlineMembers = this.members.filter(member => member.isOnline);
let memberCnt = onlineMembers.length;
console.log('##### HANDLE_ITEM', memberCnt, onlineMembers)
let ranMember: WoodenHorseMember[] = getRandEelm(onlineMembers, GUILDACTIVITY.RACEACTIVITY_EVENT_MEMBERCNT);
if(ranMember.length <= 0) ranMember = onlineMembers;
for(let member of ranMember) {
let item = gameData.raceEventItems;
member.addTempItems(item);
}
let normalItems = getRaceEventItems();
for(let [id, {total, max}] of normalItems) {
let randResult = getRandResultByMember(total, max, this.members.length);
for(let i = 0; i < this.members.length; i++) {
let randResult = getRandResultByMember(total, max, memberCnt);
for(let i = 0; i < onlineMembers.length; i++) {
let count = randResult.arr[i]||0;
if(count > 0) {
this.members[i].addTempItem({ id, count });
onlineMembers[i].addTempItem({ id, count });
normalItems.get(id).total -= count;
}
}
@@ -278,6 +290,15 @@ export class WoodenHorse {
}
}
public leaveMemberSid(roleId: string, isQuit = false) {
let index = this.members.findIndex(cur => cur.roleId == roleId);
if(index != -1) {
this.members[index].leave();
}
if(isQuit) this.memberCnt--;
if(this.memberCnt < 0) this.memberCnt = 0;
}
public setRemainItem(id: number, remain: number, max: number) {
this.remainItems.set(id, { total: remain, max });
}