diff --git a/game-server/app/servers/activity/handler/miniGameHandler.ts b/game-server/app/servers/activity/handler/miniGameHandler.ts index 910e493d2..ad6902573 100644 --- a/game-server/app/servers/activity/handler/miniGameHandler.ts +++ b/game-server/app/servers/activity/handler/miniGameHandler.ts @@ -86,7 +86,7 @@ export class ForgeHandler { let playerRecord = await ActivityMiniGameModel.incScore(serverId, activityId, playerData.roundIndex, roleId, score, playerData.nextRefreshTime); if(!record) return resResult(STATUS.ACTIVITY_MINI_GAME_RECORD_NOT_FOUND); playerData.setPlayerData(playerRecord); - playerData.incPlayerCnt(); + playerData.incPlayCnt(); let rewards = stringToRewardParam(playerData.reward, playerData.nextRefreshTime); let { goods } = await addReward(roleId, roleName, sid, serverId, rewards, ITEM_CHANGE_REASON.ACT_MINI_GAME_REWARD); diff --git a/shared/domain/activityField/miniGameField.ts b/shared/domain/activityField/miniGameField.ts index 9b315093d..0f5d1a763 100644 --- a/shared/domain/activityField/miniGameField.ts +++ b/shared/domain/activityField/miniGameField.ts @@ -51,8 +51,10 @@ export class MiniGameData extends ActivityBase { freeCnt: number = 0; // 今天的免费次数 maxBuyCnt: number = 0; // 今天可以购买的次数 box: MiniGameBox[] = []; // 宝箱 + buyCounts: MiniGameBuyCountInDb[]; playCnt: number = 0; // 已玩次数,当 playCnt < freeCnt + buyCnt 时可以玩 + todayPlayCnt: number = 0; // 今日已挑战次数 buyCnt: number = 0; // 已购买次数 score: number = 0; // 当前总分 @@ -69,6 +71,7 @@ export class MiniGameData extends ActivityBase { this.consume = dataObj.consume; this.reward = dataObj.reward; + this.buyCounts = dataObj.buyCounts; for(let { day, buyCnt, freeCnt } of (dataObj.buyCounts||[])) { if(day == this.todayIndex) this.freeCnt = freeCnt; if(day <= this.todayIndex) this.maxBuyCnt += buyCnt; @@ -89,11 +92,26 @@ export class MiniGameData extends ActivityBase { } public setPlayerRecords(records: ActivityMiniGameRecModelType[]) { - this.playCnt = records.length; + let recByDay = new Map(); // day => recs + for(let record of records) { + if(record.todayIndex == this.todayIndex) { + this.todayPlayCnt ++; + this.playCnt++; // playCnt 当天玩的部分 + } + if(!recByDay.has(record.todayIndex)) recByDay.set(record.todayIndex, []); + recByDay.get(record.todayIndex).push(record); + } + for(let { day, freeCnt } of this.buyCounts) { + if(this.todayIndex > day) { + let curRecords = recByDay.get(day)||[]; + if(curRecords.length > freeCnt) this.playCnt += curRecords.length - freeCnt;// playCnt 前几天不免费的部分 + } + } } - public incPlayerCnt() { + public incPlayCnt() { this.playCnt++; + this.todayPlayCnt++; } public findBox(boxId: number) {