Skip to content

Commit 948765b

Browse files
Kathundaidn3
andcommitted
refactor(BuildBattle)
Co-authored-by: aidn5 <[email protected]>
1 parent dfb5e22 commit 948765b

File tree

13 files changed

+1880
-85
lines changed

13 files changed

+1880
-85
lines changed

src/Structures/MiniGames/BuildBattle.test.ts

Lines changed: 0 additions & 44 deletions
This file was deleted.

src/Structures/MiniGames/BuildBattle.ts

Lines changed: 0 additions & 30 deletions
This file was deleted.
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
import BuildBattleEmblem from './Emblem/BuildBattleEmblem.ts';
2+
import BuildBattleLastWin from './BuildBattleLastWin.js';
3+
import BuildBattleLeaderboardSettings from './BuildBattleLeaderboardSettings.js';
4+
import BuildBattleVotes from './BuildBattleVotes.js';
5+
import { BuildBattleTitleRequirements } from '../../../Utils/Constants.ts';
6+
import { monthAB } from '../../../Utils/Oscillation.ts';
7+
import type {
8+
BuildBattleBackdrop,
9+
BuildBattleHat,
10+
BuildBattleIsland,
11+
BuildBattleMovementTrail,
12+
BuildBattlePackageItem,
13+
BuildBattleShopSort,
14+
BuildBattleSong,
15+
BuildBattleSuit,
16+
BuildBattleTitle,
17+
BuildBattleVictoryDance
18+
} from '../../../Types/Player.ts';
19+
20+
class BuildBattle {
21+
activeIsland: BuildBattleIsland | 'island_none';
22+
activeMovementTrail: BuildBattleMovementTrail | 'movement_trail_none';
23+
correctGuesses: number;
24+
emblem: BuildBattleEmblem;
25+
playedGames: number;
26+
lastPurchasedSong: BuildBattleSong | 'UNKNOWN';
27+
lastWon: BuildBattleLastWin;
28+
leaderboardSettings: BuildBattleLeaderboardSettings;
29+
loadout: string[];
30+
monthlyTokensA: number;
31+
monthlyTokensB: number;
32+
monthlyTokens: number;
33+
music: boolean;
34+
selectedHat: BuildBattleHat | 'hats_none';
35+
suit: BuildBattleSuit | 'suit_none';
36+
victoryDance: BuildBattleVictoryDance | 'victory_dance_none';
37+
packages: BuildBattlePackageItem[];
38+
score: number;
39+
title: BuildBattleTitle;
40+
selectedBackdrop: BuildBattleBackdrop | 'backdrops_none';
41+
shopSort: BuildBattleShopSort | 'UNKNOWN';
42+
shopSortEnableOwnedFirst: boolean;
43+
soloMostPoints: number;
44+
superVotes: number;
45+
teamsMostPoints: number;
46+
tokens: number;
47+
totalVotes: number;
48+
weeklyTokensA: number;
49+
weeklyTokensB: number;
50+
votes: BuildBattleVotes;
51+
wins: number;
52+
winsGuessTheBuild: number;
53+
winsHalloween: number;
54+
winsSoloNormal: number;
55+
winsSoloPro: number;
56+
winsSpeedBuilders: number;
57+
winsTeamsNormal: number;
58+
constructor(data: Record<string, any>) {
59+
this.activeIsland = data?.active_island || 'island_none';
60+
this.activeMovementTrail = data?.active_movement_trail || 'movement_trail_none';
61+
this.correctGuesses = data?.correct_guesses || 0;
62+
this.emblem = new BuildBattleEmblem(data?.emblem || {});
63+
this.playedGames = data?.games_played || 0;
64+
this.lastPurchasedSong = data?.last_purchased_song || 'UNKNOWN';
65+
this.lastWon = new BuildBattleLastWin(data?.last_won || {});
66+
this.leaderboardSettings = new BuildBattleLeaderboardSettings(data?.leaderboardSettings || {});
67+
this.loadout = data?.buildbattle_loadout || [];
68+
this.monthlyTokensA = data?.monthly_tokens_a || data?.monthly_coins_a || 0;
69+
this.monthlyTokensB = data?.monthly_tokens_b || data?.monthly_coins_b || 0;
70+
this.monthlyTokens = data?.[`monthly_tokens_${monthAB()}`] || data?.[`monthly_coins_${monthAB()}`] || 0;
71+
this.music = data?.music || true;
72+
this.selectedHat = data?.new_selected_hat || 'hats_none';
73+
this.suit = data?.new_suit || 'suit_none';
74+
this.victoryDance = data?.new_victory_dance || 'victory_dance_none';
75+
this.packages = data?.packages || [];
76+
this.score = data?.score || 0;
77+
this.title = BuildBattle.getBuildBattleTitle(this.score);
78+
this.selectedBackdrop = data?.selected_backdrop || 'backdrops_none';
79+
this.shopSort = data?.shop_sort || false;
80+
this.shopSortEnableOwnedFirst = data?.shop_sort_enable_owned_first || false;
81+
this.soloMostPoints = data?.solo_most_points || 0;
82+
this.superVotes = data?.super_votes || 0;
83+
this.teamsMostPoints = data?.teams_most_points || 0;
84+
this.tokens = data?.tokens || data?.coins || 0;
85+
this.totalVotes = data?.total_votes || 0;
86+
this.weeklyTokensA = data?.weekly_tokens_a || data?.weekly_coins_a || 0;
87+
this.weeklyTokensB = data?.weekly_tokens_b || data?.weekly_coins_b || 0;
88+
this.monthlyTokens = data?.[`weekly_tokens_${monthAB()}`] || data?.[`weekly_coins_${monthAB()}`] || 0;
89+
this.votes = new BuildBattleVotes(data);
90+
this.wins = data?.wins || 0;
91+
this.winsGuessTheBuild = data?.wins_guess_the_build || 0;
92+
this.winsHalloween = data?.wins_halloween || 0;
93+
this.winsSoloNormal = data?.wins_solo_normal || 0;
94+
this.winsSoloPro = data?.wins_solo_pro || 0;
95+
this.winsSpeedBuilders = data?.wins_speed_builders || 0;
96+
this.winsTeamsNormal = data?.wins_teams_normal || 0;
97+
}
98+
99+
static getBuildBattleTitle(score: number): BuildBattleTitle {
100+
return (
101+
(
102+
BuildBattleTitleRequirements.slice()
103+
.reverse()
104+
.find((t) => score >= t.requirement) || BuildBattleTitleRequirements[0]
105+
)?.title || 'Rookie'
106+
);
107+
}
108+
}
109+
110+
export default BuildBattle;
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class BuildBattleLastWin {
2+
guessTheBuildAt: Date | null;
3+
soloNormalAt: Date | null;
4+
soloProAt: Date | null;
5+
speedBuildersAt: Date | null;
6+
teamsNormalAt: Date | null;
7+
constructor(data: Record<string, any>) {
8+
this.guessTheBuildAt = data?.GUESS_THE_BUILD ? new Date(data?.GUESS_THE_BUILD) : null;
9+
this.soloNormalAt = data?.SOLO_NORMAL ? new Date(data?.SOLO_NORMAL) : null;
10+
this.soloProAt = data?.SOLO_PRO ? new Date(data?.SOLO_PRO) : null;
11+
this.speedBuildersAt = data?.SPEED_BUILDERS ? new Date(data?.SPEED_BUILDERS) : null;
12+
this.teamsNormalAt = data?.TEAMS_NORMAL ? new Date(data?.TEAMS_NORMAL) : null;
13+
}
14+
}
15+
16+
export default BuildBattleLastWin;
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import type {
2+
BuildBattleLeaderboardSettingsMode,
3+
BuildBattleLeaderboardSettingsResetType
4+
} from '../../../Types/Player.ts';
5+
6+
class BuildBattleLeaderboardSettings {
7+
mode: BuildBattleLeaderboardSettingsMode | 'UNKNOWN';
8+
resetType: BuildBattleLeaderboardSettingsResetType | 'UNKNOWN';
9+
constructor(data: Record<string, any>) {
10+
this.mode = data?.mode || 'UNKNOWN';
11+
this.resetType = data?.resetType || 'UNKNOWN';
12+
}
13+
}
14+
15+
export default BuildBattleLeaderboardSettings;

0 commit comments

Comments
 (0)