feat: add rankAfter in Delta
parent
1d0f095ad7
commit
8180de928c
|
|
@ -76,6 +76,7 @@ export const RANK_PARAMS: RankParam[] = [{
|
||||||
type Delta = {
|
type Delta = {
|
||||||
beforeGameId: string;
|
beforeGameId: string;
|
||||||
gameId: string;
|
gameId: string;
|
||||||
|
rankAfter?: string;
|
||||||
rankPoint: number;
|
rankPoint: number;
|
||||||
isRankUp: boolean;
|
isRankUp: boolean;
|
||||||
isChallengeFirst: boolean;
|
isChallengeFirst: boolean;
|
||||||
|
|
@ -83,7 +84,7 @@ type Delta = {
|
||||||
|
|
||||||
function addRank(state: RankState, delta: Delta): RankState {
|
function addRank(state: RankState, delta: Delta): RankState {
|
||||||
const { rank, rankPoint } = state;
|
const { rank, rankPoint } = state;
|
||||||
const { gameId, isRankUp, isChallengeFirst } = delta;
|
const { gameId, rankAfter, isRankUp, isChallengeFirst } = delta;
|
||||||
|
|
||||||
const rankIndex = RANK_PARAMS.findIndex((r) => r.rank === rank);
|
const rankIndex = RANK_PARAMS.findIndex((r) => r.rank === rank);
|
||||||
|
|
||||||
|
|
@ -122,7 +123,7 @@ function addRank(state: RankState, delta: Delta): RankState {
|
||||||
|
|
||||||
return {
|
return {
|
||||||
gameId,
|
gameId,
|
||||||
rank,
|
rank: rankAfter ?? rank,
|
||||||
rankPoint: rankPoint + delta.rankPoint,
|
rankPoint: rankPoint + delta.rankPoint,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
@ -149,7 +150,7 @@ export class RankTracker {
|
||||||
|
|
||||||
async getRankStateById(id: string): Promise<RankState | undefined> {
|
async getRankStateById(id: string): Promise<RankState | undefined> {
|
||||||
if (!this.state) {
|
if (!this.state) {
|
||||||
return undefined;
|
return;
|
||||||
}
|
}
|
||||||
const gid = await gameId(id);
|
const gid = await gameId(id);
|
||||||
|
|
||||||
|
|
@ -157,7 +158,7 @@ export class RankTracker {
|
||||||
while (cur.gameId !== gid) {
|
while (cur.gameId !== gid) {
|
||||||
const delta = this.deltaMap.get(cur.gameId);
|
const delta = this.deltaMap.get(cur.gameId);
|
||||||
if (!delta) {
|
if (!delta) {
|
||||||
throw new Error("Delta not found");
|
return;
|
||||||
}
|
}
|
||||||
cur = addRank(cur, delta);
|
cur = addRank(cur, delta);
|
||||||
}
|
}
|
||||||
|
|
@ -217,12 +218,13 @@ export class RankTracker {
|
||||||
isChallengeFirst: false,
|
isChallengeFirst: false,
|
||||||
};
|
};
|
||||||
beforeGameId = i.gameId;
|
beforeGameId = i.gameId;
|
||||||
// challenge
|
|
||||||
if (i.bankaraMatchChallenge) {
|
if (i.bankaraMatchChallenge) {
|
||||||
|
// challenge
|
||||||
if (i.index === 0 && i.bankaraMatchChallenge.state !== "INPROGRESS") {
|
if (i.index === 0 && i.bankaraMatchChallenge.state !== "INPROGRESS") {
|
||||||
// last battle in challenge
|
// last battle in challenge
|
||||||
delta = {
|
delta = {
|
||||||
...delta,
|
...delta,
|
||||||
|
rankAfter: i.bankaraMatchChallenge.udemaeAfter ?? undefined,
|
||||||
rankPoint: i.bankaraMatchChallenge.earnedUdemaePoint ?? 0,
|
rankPoint: i.bankaraMatchChallenge.earnedUdemaePoint ?? 0,
|
||||||
isRankUp: i.bankaraMatchChallenge.isUdemaeUp ?? false,
|
isRankUp: i.bankaraMatchChallenge.isUdemaeUp ?? false,
|
||||||
isChallengeFirst: i.index === 0,
|
isChallengeFirst: i.index === 0,
|
||||||
|
|
@ -235,8 +237,11 @@ export class RankTracker {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
// open
|
||||||
delta = {
|
delta = {
|
||||||
...delta,
|
...delta,
|
||||||
|
// TODO: is this right?
|
||||||
|
rankAfter: i.detail.udemae,
|
||||||
rankPoint: i.detail.bankaraMatch?.earnedUdemaePoint,
|
rankPoint: i.detail.bankaraMatch?.earnedUdemaePoint,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue