From b32b0e970c61e273d5aa537cea81fd34b658ff06 Mon Sep 17 00:00:00 2001 From: Clansty Date: Wed, 31 Jul 2024 09:03:26 +0800 Subject: [PATCH] [+] Add change name for maimai and refactor settings page --- .../src/components/GameSettingFields.svelte | 78 +++++++++++++++++ AquaNet/src/components/Mai2Settings.svelte | 87 +++++++++++++++++++ AquaNet/src/components/WaccaSettings.svelte | 11 +++ AquaNet/src/libs/generalTypes.ts | 2 + AquaNet/src/libs/i18n/en_ref.ts | 8 +- AquaNet/src/libs/i18n/zh.ts | 6 +- AquaNet/src/libs/sdk.ts | 3 +- AquaNet/src/pages/User/Settings.svelte | 69 +++++---------- src/main/java/ext/Ext.kt | 4 +- .../java/icu/samnyan/aqua/net/SettingsApi.kt | 5 +- .../samnyan/aqua/net/db/AquaGameOptions.kt | 14 +-- .../icu/samnyan/aqua/net/games/GameHelper.kt | 12 +++ .../samnyan/aqua/net/games/mai2/Maimai2.kt | 14 ++- 13 files changed, 248 insertions(+), 65 deletions(-) create mode 100644 AquaNet/src/components/GameSettingFields.svelte create mode 100644 AquaNet/src/components/Mai2Settings.svelte create mode 100644 AquaNet/src/components/WaccaSettings.svelte diff --git a/AquaNet/src/components/GameSettingFields.svelte b/AquaNet/src/components/GameSettingFields.svelte new file mode 100644 index 00000000..895c1d81 --- /dev/null +++ b/AquaNet/src/components/GameSettingFields.svelte @@ -0,0 +1,78 @@ + + +
+
+ {#each gameFields as field} +
+ {#if field.type === "Boolean"} +
+ submitGameOption(field.key, field.value)}/> + +
+ {/if} +
+ {/each} +
+ + +
+ + diff --git a/AquaNet/src/components/Mai2Settings.svelte b/AquaNet/src/components/Mai2Settings.svelte new file mode 100644 index 00000000..1805a891 --- /dev/null +++ b/AquaNet/src/components/Mai2Settings.svelte @@ -0,0 +1,87 @@ + + +
+
+ {#each profileFields as [field, name], i (field)} +
+ +
+ changed = [...changed, field]} + placeholder={field === 'password' ? t('settings.profile.unchanged') : t('settings.profile.unset')}/> + {#if changed.includes(field) && values[i]} + + {/if} +
+
+ {/each} + +
+ + +
+ + diff --git a/AquaNet/src/components/WaccaSettings.svelte b/AquaNet/src/components/WaccaSettings.svelte new file mode 100644 index 00000000..a1cfe083 --- /dev/null +++ b/AquaNet/src/components/WaccaSettings.svelte @@ -0,0 +1,11 @@ + + +
+
+ +
+
diff --git a/AquaNet/src/libs/generalTypes.ts b/AquaNet/src/libs/generalTypes.ts index 2fa0ad28..60b90026 100644 --- a/AquaNet/src/libs/generalTypes.ts +++ b/AquaNet/src/libs/generalTypes.ts @@ -39,6 +39,7 @@ export interface CardSummary { chu3: CardSummaryGame | null ongeki: CardSummaryGame | null diva: CardSummaryGame | null + wacca: CardSummaryGame | null } @@ -119,6 +120,7 @@ export interface GameOption { key: string value: any type: 'Boolean' + game: string } export interface UserBox { diff --git a/AquaNet/src/libs/i18n/en_ref.ts b/AquaNet/src/libs/i18n/en_ref.ts index 13d75e88..2d7a5bb3 100644 --- a/AquaNet/src/libs/i18n/en_ref.ts +++ b/AquaNet/src/libs/i18n/en_ref.ts @@ -115,20 +115,22 @@ export const EN_REF_SETTINGS = { 'settings.title': 'Settings', 'settings.tabs.profile': 'Profile', 'settings.tabs.game': 'Game', - 'settings.tabs.userbox': 'Userbox', + 'settings.tabs.chu3': 'Chuni', + 'settings.tabs.mai2': 'Mai', + 'settings.tabs.wacca': 'Wacca', 'settings.fields.unlockMusic.name': 'Unlock All Music', 'settings.fields.unlockMusic.desc': 'Unlock all music and master difficulty in game.', 'settings.fields.unlockChara.name': 'Unlock All Characters', 'settings.fields.unlockChara.desc': 'Unlock all characters, voices, and partners in game.', 'settings.fields.unlockCollectables.name': 'Unlock All Collectables', - 'settings.fields.unlockCollectables.desc': 'Unlock all collectables (nameplate, title, icon, frame) in game. ' + - 'This setting is not relevant in chusan because in-game user box is disabled.', + 'settings.fields.unlockCollectables.desc': 'Unlock all collectables (nameplate, title, icon, frame) in game.', 'settings.fields.unlockTickets.name': 'Unlock All Tickets', 'settings.fields.unlockTickets.desc': 'Infinite map/ex tickets (note: maimai still limits which tickets can be used).', 'settings.fields.waccaInfiniteWp.name': 'Wacca: Infinite WP', 'settings.fields.waccaInfiniteWp.desc': 'Set WP to 999999', 'settings.fields.waccaAlwaysVip.name': 'Wacca: Always VIP', 'settings.fields.waccaAlwaysVip.desc': 'Set VIP expiration date to 2077-01-01', + 'settings.mai2.name': 'Player Name', 'settings.profile.picture': 'Profile Picture', 'settings.profile.upload-new': 'Upload New', 'settings.profile.save': 'Save', diff --git a/AquaNet/src/libs/i18n/zh.ts b/AquaNet/src/libs/i18n/zh.ts index 13da9906..873aa8ce 100644 --- a/AquaNet/src/libs/i18n/zh.ts +++ b/AquaNet/src/libs/i18n/zh.ts @@ -124,18 +124,22 @@ const zhSettings: typeof EN_REF_SETTINGS = { 'settings.title': '用户设置', 'settings.tabs.profile': '个人资料', 'settings.tabs.game': '游戏设置', + 'settings.tabs.chu3': '中二', + 'settings.tabs.mai2': '舞萌', + 'settings.tabs.wacca': 'Wacca', 'settings.fields.unlockMusic.name': '解锁谱面', 'settings.fields.unlockMusic.desc': '在游戏中解锁所有曲目和大师难度谱面。', 'settings.fields.unlockChara.name': '解锁角色', 'settings.fields.unlockChara.desc': '在游戏中解锁所有角色、语音和伙伴。', 'settings.fields.unlockCollectables.name': '解锁收藏品', - 'settings.fields.unlockCollectables.desc': '在游戏中解锁所有收藏品(名牌、称号、图标、背景图),此设置对中二不适用。', + 'settings.fields.unlockCollectables.desc': '在游戏中解锁所有收藏品(名牌、称号、图标、背景图)。', 'settings.fields.unlockTickets.name': '解锁游戏券', 'settings.fields.unlockTickets.desc': '无限跑图券/解锁券(注:maimai 客户端仍限制一些券不能使用)。', 'settings.fields.waccaInfiniteWp.name': 'Wacca: 无限 WP', 'settings.fields.waccaInfiniteWp.desc': '将 WP 设置为 999999', 'settings.fields.waccaAlwaysVip.name': 'Wacca: 永久会员', 'settings.fields.waccaAlwaysVip.desc': '将 VIP 到期时间设置为 2077-01-01', + 'settings.mai2.name': '玩家名字', 'settings.profile.picture': '头像', 'settings.profile.upload-new': '上传', 'settings.profile.save': '保存', diff --git a/AquaNet/src/libs/sdk.ts b/AquaNet/src/libs/sdk.ts index d9da5612..3a456206 100644 --- a/AquaNet/src/libs/sdk.ts +++ b/AquaNet/src/libs/sdk.ts @@ -299,7 +299,8 @@ export const GAME = { post(`/api/v2/game/${game}/user-summary`, { username }), ranking: (game: GameName): Promise => post(`/api/v2/game/${game}/ranking`, { }), - + changeName: (game: GameName, newName: string): Promise<{ newName: string }> => + post(`/api/v2/game/${game}/change-name`, { newName }), } export const DATA = { diff --git a/AquaNet/src/pages/User/Settings.svelte b/AquaNet/src/pages/User/Settings.svelte index c57ce6a8..716c0ac9 100644 --- a/AquaNet/src/pages/User/Settings.svelte +++ b/AquaNet/src/pages/User/Settings.svelte @@ -2,14 +2,16 @@