From e0d7b5c5090c1495ff4fce7437cd57d08c48df37 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Thu, 12 Feb 2026 16:16:41 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=88=E6=9C=AC=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web-antd/.vscode/settings.json | 3 +- apps/web-antd/.vscode/tasks.json | 18 + .../web-antd/public/item/shop_diamond_LV1.png | Bin 0 -> 33316 bytes apps/web-antd/public/item/shop_energy_LV1.png | Bin 0 -> 39095 bytes apps/web-antd/public/merge_pic_expplate2.png | Bin 0 -> 8169 bytes apps/web-antd/src/api/core/log.ts | 3 + apps/web-antd/src/api/core/mail.ts | 3 + apps/web-antd/src/api/core/server.ts | 1 + apps/web-antd/src/component/index.ts | 3 +- .../src/component/modal/chessComponent.vue | 10 +- .../src/component/user/friend/friend_item.vue | 30 + .../src/component/user/friend/index.vue | 56 + apps/web-antd/src/model/type.ts | 10 + apps/web-antd/src/preferences.ts | 2 +- apps/web-antd/src/store/glossary.json | 1036 ++++++++++------- apps/web-antd/src/store/util.ts | 124 +- .../views/dashboard/serverList/appList.vue | 75 +- .../src/views/dashboard/serverList/index.vue | 73 +- apps/web-antd/src/views/language/language.vue | 57 +- .../src/views/operation/copyUser/copy.vue | 11 +- .../src/views/operation/mail/mail-detail.vue | 13 +- .../src/views/operation/mail/mail-info.vue | 26 +- .../src/views/operation/mail/mail-table.vue | 44 +- .../views/userlog/userlist/asset-table.vue | 2 +- .../src/views/userlog/userlist/user.vue | 12 +- .../src/views/userlog/userlist/userlist.vue | 15 +- config | 11 + .../dashboard/workbench/workbench-detail.vue | 46 +- .../dashboard/workbench/workbench-trends.vue | 2 +- 29 files changed, 1066 insertions(+), 620 deletions(-) create mode 100644 apps/web-antd/.vscode/tasks.json create mode 100644 apps/web-antd/public/item/shop_diamond_LV1.png create mode 100644 apps/web-antd/public/item/shop_energy_LV1.png create mode 100644 apps/web-antd/public/merge_pic_expplate2.png create mode 100644 apps/web-antd/src/component/user/friend/friend_item.vue create mode 100644 apps/web-antd/src/component/user/friend/index.vue create mode 100644 config diff --git a/apps/web-antd/.vscode/settings.json b/apps/web-antd/.vscode/settings.json index 0a8ba92..962f8e8 100644 --- a/apps/web-antd/.vscode/settings.json +++ b/apps/web-antd/.vscode/settings.json @@ -1,4 +1,5 @@ { "workbench.colorTheme":"One Dark Pro", - "editor.fontSize": 14 + "editor.fontSize": 14, + "typescript.experimental.useTsgo": false } \ No newline at end of file diff --git a/apps/web-antd/.vscode/tasks.json b/apps/web-antd/.vscode/tasks.json new file mode 100644 index 0000000..2746007 --- /dev/null +++ b/apps/web-antd/.vscode/tasks.json @@ -0,0 +1,18 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "pnpm build:antd", + "type": "shell", + "command": "pnpm", + "args": [ + "build:antd" + ], + "options": { + "cwd": "D:\\Github\\admin_web" + }, + "group": "build", + "problemMatcher": [] + } + ] +} \ No newline at end of file diff --git a/apps/web-antd/public/item/shop_diamond_LV1.png b/apps/web-antd/public/item/shop_diamond_LV1.png new file mode 100644 index 0000000000000000000000000000000000000000..36b617d0571e9877882d9db215541af19b157dec GIT binary patch literal 33316 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 P00000NkvXXu0mjfB6q?9 literal 0 HcmV?d00001 diff --git a/apps/web-antd/src/api/core/log.ts b/apps/web-antd/src/api/core/log.ts index eb6d52e..e5ef5b1 100644 --- a/apps/web-antd/src/api/core/log.ts +++ b/apps/web-antd/src/api/core/log.ts @@ -1,4 +1,5 @@ import { requestClient } from '#/api/request'; +import type { friendRecord } from '#/model/type'; export interface UserData { data: object[]; @@ -55,6 +56,8 @@ export interface UserLogInfo { ChessMap?:string; Heatmap?: heatType[]; ActLog?:actlog[]; + MaxCharge?: number; + FriendList?: friendRecord[]; } export interface actlog { diff --git a/apps/web-antd/src/api/core/mail.ts b/apps/web-antd/src/api/core/mail.ts index 2161d30..5e466aa 100644 --- a/apps/web-antd/src/api/core/mail.ts +++ b/apps/web-antd/src/api/core/mail.ts @@ -23,6 +23,9 @@ export interface MailData { send_type: number; to_uids :string; create_time?: number; + title_es_latam?: string; + subTitle_es_latam?: string; + content_es_latam?: string; } export interface MailListParam { diff --git a/apps/web-antd/src/api/core/server.ts b/apps/web-antd/src/api/core/server.ts index 0aff971..2c5cc82 100644 --- a/apps/web-antd/src/api/core/server.ts +++ b/apps/web-antd/src/api/core/server.ts @@ -28,6 +28,7 @@ export interface ServerData { MemUsage?: number; ClientVersion?: string; Tags?: string[]; + Latency?: number; } export interface editServerParam { diff --git a/apps/web-antd/src/component/index.ts b/apps/web-antd/src/component/index.ts index 000393e..439293b 100644 --- a/apps/web-antd/src/component/index.ts +++ b/apps/web-antd/src/component/index.ts @@ -5,5 +5,6 @@ import assetModal from "./modal/asset.vue"; import orderComponent from "./modal/orderComponent.vue"; import chessComponent from "./modal/chessComponent.vue"; import type {dataType} from "./calendar/index.vue"; -export { eventTable, calendar, eventModal, assetModal, orderComponent, chessComponent }; +import friendComponent from "./user/friend/index.vue"; +export { eventTable, calendar, eventModal, assetModal, orderComponent, chessComponent, friendComponent }; export type { dataType }; diff --git a/apps/web-antd/src/component/modal/chessComponent.vue b/apps/web-antd/src/component/modal/chessComponent.vue index 1784864..2cd5ede 100644 --- a/apps/web-antd/src/component/modal/chessComponent.vue +++ b/apps/web-antd/src/component/modal/chessComponent.vue @@ -25,13 +25,14 @@ defineEmits(['click']); diff --git a/apps/web-antd/src/component/user/friend/friend_item.vue b/apps/web-antd/src/component/user/friend/friend_item.vue new file mode 100644 index 0000000..237e7f4 --- /dev/null +++ b/apps/web-antd/src/component/user/friend/friend_item.vue @@ -0,0 +1,30 @@ + + + \ No newline at end of file diff --git a/apps/web-antd/src/component/user/friend/index.vue b/apps/web-antd/src/component/user/friend/index.vue new file mode 100644 index 0000000..1737d34 --- /dev/null +++ b/apps/web-antd/src/component/user/friend/index.vue @@ -0,0 +1,56 @@ + + + \ No newline at end of file diff --git a/apps/web-antd/src/model/type.ts b/apps/web-antd/src/model/type.ts index 039589f..e3c33cb 100644 --- a/apps/web-antd/src/model/type.ts +++ b/apps/web-antd/src/model/type.ts @@ -84,3 +84,13 @@ export interface scriptsRecord{ code: number; color?: string; } + +export interface friendRecord{ + Uid: number; + NickName: string; + avatarUrl: string; + Level: number; + LogoutTime?: string; + LoginTime: string; + onlineStatus?: boolean; +} diff --git a/apps/web-antd/src/preferences.ts b/apps/web-antd/src/preferences.ts index ac9a95d..38927e2 100644 --- a/apps/web-antd/src/preferences.ts +++ b/apps/web-antd/src/preferences.ts @@ -16,7 +16,7 @@ export const overridesPreferences = defineOverridesPreferences({ companySiteLink: 'https://bywaystudios.com', }, footer: { - enable: true, + enable: false, }, logo: { source: import.meta.env.VITE_APP_LOGO || 'https://unpkg.com/@vbenjs/static-source@0.1.7/source/logo-v1.webp', diff --git a/apps/web-antd/src/store/glossary.json b/apps/web-antd/src/store/glossary.json index bd46a67..311f8be 100644 --- a/apps/web-antd/src/store/glossary.json +++ b/apps/web-antd/src/store/glossary.json @@ -1,792 +1,926 @@ [ { "no": 1, - "inGameGlossary": "Merge", + "term": "Merge", "introduction": "Core gameplay. Combine two items together, they'll turn into a new higher-level item.", "screenshot": "", - "zhCN": "合成", - "ptBR": "Combinar", - "notes": "", - "esLATAM": "Combinar" + "zh_CN": "合成", + "pt_BR": "Combinar", + "note": "", + "es_LATAM": "Combinar" }, { "no": 2, - "inGameGlossary": "Pet Coin", - "introduction": "Pet Coin is an in-game soft currency earned by completing orders, and it's used to progress the story.", + "term": "Pet Coin", + "introduction": "Pet Coin is an in-game soft currency earned by completing orders, and it’s used to progress the story.", "screenshot": "", - "zhCN": "宠物币", - "ptBR": "Moeda Pet", - "notes": "", - "esLATAM": "Moneda de mascota" + "zh_CN": "宠物币", + "pt_BR": "Moeda Pet", + "note": "", + "es_LATAM": "Moneda de mascota" }, { "no": 3, - "inGameGlossary": "Time-limited Event", + "term": "Time-limited Event", "introduction": "", "screenshot": "", - "zhCN": "限时事件", - "ptBR": "Evento por tempo limitado", - "notes": "", - "esLATAM": "Evento de duración limitada" + "zh_CN": "限时事件", + "pt_BR": "Evento por tempo limitado", + "note": "", + "es_LATAM": "Evento de duración limitada" }, { "no": 4, - "inGameGlossary": "Meowment", + "term": "Meowment", "introduction": "Meowment or Meowment: Merge & Makeover is the name of this game. It is created by combining Meow and Moment.", "screenshot": "", - "zhCN": "喵喵喵之家", - "ptBR": "Meowment", - "notes": "", - "esLATAM": "Meowment" + "zh_CN": "喵喵喵之家", + "pt_BR": "Meowment", + "note": "", + "es_LATAM": "Meowment" }, { "no": 5, - "inGameGlossary": "Energy", + "term": "Energy", "introduction": "Energy is one of the in-game basic resources. Used to produce products.", "screenshot": "", - "zhCN": "体力", - "ptBR": "Energia", - "notes": "", - "esLATAM": "Energía" + "zh_CN": "体力", + "pt_BR": "Energia", + "note": "", + "es_LATAM": "Energía" }, { "no": 6, - "inGameGlossary": "Diamond", + "term": "Diamond", "introduction": "Energy is an in-game soft currency earned by charging or some events.", "screenshot": "", - "zhCN": "钻石", - "ptBR": "Diamante", - "notes": "", - "esLATAM": "Diamante" + "zh_CN": "钻石", + "pt_BR": "Diamante", + "note": "", + "es_LATAM": "Diamante" }, { "no": 7, - "inGameGlossary": "Scissors", + "term": "Scissors", "introduction": "Scissorsis a tool to divide one product to two with lower level.", "screenshot": "", - "zhCN": "分离器", - "ptBR": "Tesoura", - "notes": "", - "esLATAM": "Tijera" + "zh_CN": "分离器", + "pt_BR": "Tesoura", + "note": "", + "es_LATAM": "Tijera" }, { "no": 8, - "inGameGlossary": "Magic Wand", + "term": "Magic Wand", "introduction": "Magic Wand a tool to upgrade one product to higher level.", "screenshot": "", - "zhCN": "魔术棒", - "ptBR": "Varinha mágica", - "notes": "", - "esLATAM": "Varita mágica" + "zh_CN": "魔术棒", + "pt_BR": "Varinha mágica", + "note": "", + "es_LATAM": "Varita mágica" }, { "no": 9, - "inGameGlossary": "Piggy Bank", + "term": "Piggy Bank", "introduction": "Piggy Bank is an item that player can save diamond in it by finishing orders.", "screenshot": "", - "zhCN": "小猪存钱罐", - "ptBR": "Cofrinho", - "notes": "Its in-game image is a piggy bank. Can this image be incorporated into the name? (P.S. If adding it makes the name too long, please keep the original name.)", - "esLATAM": "Alcancía" + "zh_CN": "小猪存钱罐", + "pt_BR": "Cofrinho", + "note": "Its in-game image is a piggy bank. Can this image be incorporated into the name? (P.S. If adding it makes the name too long, please keep the original name.)", + "es_LATAM": "Alcancía" }, { "no": 10, - "inGameGlossary": "Main Scene", + "term": "Main Scene", "introduction": "The scene shows entrance to other functions.", "screenshot": "", - "zhCN": "主场景", - "ptBR": "Cena Principal", - "notes": "", - "esLATAM": "Escena principal" + "zh_CN": "主场景", + "pt_BR": "Cena Principal", + "note": "", + "es_LATAM": "Escena principal" }, { "no": 11, - "inGameGlossary": "Merge Scene", + "term": "Merge Scene", "introduction": "The scene players merging and finishing orders.", "screenshot": "", - "zhCN": "合成场景", - "ptBR": "Cena de Combinação", - "notes": "", - "esLATAM": "Escena de combinación" + "zh_CN": "合成场景", + "pt_BR": "Cena de Combinação", + "note": "", + "es_LATAM": "Escena de combinación" }, { "no": 12, - "inGameGlossary": "Story Scene/Decorate Scene", + "term": "Story Scene/Decorate Scene", "introduction": "Players spend Pet Coins and materrials to finish decoration and unlock story.", "screenshot": "", - "zhCN": "装饰场景", - "ptBR": "Cena de História/Decoração", - "notes": "", - "esLATAM": "Escena histórica/Escena de decoración" + "zh_CN": "装饰场景", + "pt_BR": "Cena de História/Decoração", + "note": "", + "es_LATAM": "Escena histórica/Escena de decoración" }, { "no": 13, - "inGameGlossary": "Pet Home", + "term": "Pet Home", "introduction": "The scene players can pet the kitten.", "screenshot": "", - "zhCN": "宠物室", - "ptBR": "Casa dos Pets", - "notes": "", - "esLATAM": "Casa de las Mascotas" + "zh_CN": "宠物室", + "pt_BR": "Casa dos Pets", + "note": "", + "es_LATAM": "Casa de las Mascotas" }, { "no": 14, - "inGameGlossary": "Pet Playroom", + "term": "Pet Playroom", "introduction": "The main room in Pet Home where players can play with the kitten.", "screenshot": "", - "zhCN": "休息室", - "ptBR": "Sala de Brincadeiras", - "notes": "", - "esLATAM": "Sala de Juegos" + "zh_CN": "休息室", + "pt_BR": "Sala de Brincadeiras", + "note": "", + "es_LATAM": "Sala de Juegos" }, { "no": 15, - "inGameGlossary": "Kitchen", + "term": "Kitchen", "introduction": "The second room in Pet Playroom where players can buy foods and feeding the kitten.", "screenshot": "", - "zhCN": "厨房", - "ptBR": "Cozinha", - "notes": "", - "esLATAM": "Cocina" + "zh_CN": "厨房", + "pt_BR": "Cozinha", + "note": "", + "es_LATAM": "Cocina" }, { "no": 16, - "inGameGlossary": "Bathroom", + "term": "Bathroom", "introduction": "The third room in Pet Playroom where players can buy soaps and washing the kitten.", "screenshot": "", - "zhCN": "浴室", - "ptBR": "Banheiro", - "notes": "", - "esLATAM": "Baño" + "zh_CN": "浴室", + "pt_BR": "Banheiro", + "note": "", + "es_LATAM": "Baño" }, { "no": 17, - "inGameGlossary": "Cloakroom", + "term": "Cloakroom", "introduction": "The fourth room in Pet Playroom where players can decorate the kitten.", "screenshot": "", - "zhCN": "试衣间", - "ptBR": "Vestiário", - "notes": "", - "esLATAM": "Guardarropa" + "zh_CN": "试衣间", + "pt_BR": "Vestiário", + "note": "", + "es_LATAM": "Guardarropa" }, { "no": 18, - "inGameGlossary": "Food Shop", + "term": "Food Shop", "introduction": "The shop in Kitchen where players can by Food.", "screenshot": "", - "zhCN": "美食屋", - "ptBR": "Loja de Alimentos", - "notes": "", - "esLATAM": "Tienda de Alimentos" + "zh_CN": "美食屋", + "pt_BR": "Loja de Alimentos", + "note": "", + "es_LATAM": "Tienda de Alimentos" }, { "no": 19, - "inGameGlossary": "Soap Shop", + "term": "Soap Shop", "introduction": "The shop in Bathroom where players can by Soap.", "screenshot": "", - "zhCN": "香皂铺", - "ptBR": "Loja de Sabonetes", - "notes": "", - "esLATAM": "Tienda de Jabones" + "zh_CN": "香皂铺", + "pt_BR": "Loja de Sabonetes", + "note": "", + "es_LATAM": "Tienda de Jabones" }, { "no": 20, - "inGameGlossary": "Pet Treasure", + "term": "Pet Treasure", "introduction": "Players can saving Pet Coins into the treasure box by finishing orders after they finished the Pet Home.Once they saved at least 200 Pet Coins and have at least 5 friends, they will be able to play a mini game and get reward.", "screenshot": "", - "zhCN": "宠物宝藏", - "ptBR": "Tesouro dos Pets", - "notes": "", - "esLATAM": "Tesoro de las Mascotas" + "zh_CN": "宠物宝藏", + "pt_BR": "Tesouro dos Pets", + "note": "", + "es_LATAM": "Tesoro de las Mascotas" }, { "no": 21, - "inGameGlossary": "Visit", + "term": "Visit", "introduction": "Players can go to visit another player every time they petted the kitten 5 times. They will finish a mini game and get reward.", "screenshot": "", - "zhCN": "拜访", - "ptBR": "Visita", - "notes": "", - "esLATAM": "Visitar" + "zh_CN": "拜访", + "pt_BR": "Visita", + "note": "", + "es_LATAM": "Visitar" }, { "no": 22, - "inGameGlossary": "CAT TEASER", + "term": "CAT TEASER", "introduction": "One of the visiting mini games. Try to catch the kitten and get better reward.", "screenshot": "", - "zhCN": "愿猫上钩", - "ptBR": "Pega o Gato", - "notes": "The English original refers to a mini-game where players \"try to catch the kitten and get better rewards.\" The current translation \"Brinquedo de Gato\" literally means \"cat toy,\" failing to accurately convey the game's action (teasing or catching).", - "esLATAM": "Captura al Gatito" + "zh_CN": "愿猫上钩", + "pt_BR": "Pega o Gato", + "note": "The English original refers to a mini-game where players \"try to catch the kitten and get better rewards.\" The current translation \"Brinquedo de Gato\" literally means \"cat toy,\" failing to accurately convey the game's action (teasing or catching).", + "es_LATAM": "Captura al Gatito" }, { "no": 23, - "inGameGlossary": "CAT TREASURE", + "term": "CAT TREASURE", "introduction": "One of the visiting mini games. Try to find three same items and get better reward.", "screenshot": "", - "zhCN": "猫猫秘宝", - "ptBR": "Tesouro do Gato", - "notes": "", - "esLATAM": "Tesoro del Gato" + "zh_CN": "猫猫秘宝", + "pt_BR": "Tesouro do Gato", + "note": "", + "es_LATAM": "Tesoro del Gato" }, { "no": 24, - "inGameGlossary": "HIDE & SEEK", + "term": "HIDE & SEEK", "introduction": "One of the visiting mini games. Try to find the kitten and get better reward.", "screenshot": "", - "zhCN": "捉迷藏", - "ptBR": "Esconde-esconde", - "notes": "", - "esLATAM": "Escondidas" + "zh_CN": "捉迷藏", + "pt_BR": "Esconde-esconde", + "note": "", + "es_LATAM": "Escondidas" }, { "no": 25, - "inGameGlossary": "Little Helper", + "term": "Little Helper", "introduction": "Let the kitten peoduce products when players are offline.", "screenshot": "", - "zhCN": "小猫打工", - "ptBR": "Ajuda Felina", - "notes": "The English original means \"let the kitten produce products when players are offline.\" The current translation \"Ajudante\" simply means \"assistant,\" which is too generic and does not highlight the role of the kitten.", - "esLATAM": "Gatito Ayudante" + "zh_CN": "小猫打工", + "pt_BR": "Ajuda Felina", + "note": "The English original means \"let the kitten produce products when players are offline.\" The current translation \"Ajudante\" simply means \"assistant,\" which is too generic and does not highlight the role of the kitten.", + "es_LATAM": "Gatito Ayudante" }, { "no": 26, - "inGameGlossary": "Flight Device", + "term": "Flight Device", "introduction": "A special decoration used when the kitten works.", "screenshot": "", - "zhCN": "飞行器", - "ptBR": "Aparelho de Voo", - "notes": "", - "esLATAM": "Dispositivo de Vuelo" + "zh_CN": "飞行器", + "pt_BR": "Aparelho de Voo", + "note": "", + "es_LATAM": "Dispositivo de Vuelo" }, { "no": 27, - "inGameGlossary": "Merge", - "introduction": "Drag one product to another same product to make them a higer level product.", + "term": "Board", + "introduction": "The area players can play merging.", "screenshot": "", - "zhCN": "合成", - "ptBR": "Combinar", - "notes": "", - "esLATAM": "Combinar" + "zh_CN": "棋盘", + "pt_BR": "Tabuleiro", + "note": "", + "es_LATAM": "Tablero" }, { "no": 28, - "inGameGlossary": "Board", - "introduction": "The area players can play merging.", + "term": "Order", + "introduction": "Request specific product. Players can submit requested products to finish one order and get reward such as Pet Coin,Cat Food or Materials.", "screenshot": "", - "zhCN": "棋盘", - "ptBR": "Tabuleiro", - "notes": "", - "esLATAM": "Tablero" + "zh_CN": "订单", + "pt_BR": "Pedido", + "note": "", + "es_LATAM": "Pedido" }, { "no": 29, - "inGameGlossary": "Order", - "introduction": "Request specific product. Players can submit requested products to finish one order and get reward such as Pet Coin,Cat Food or Materials.", + "term": "Producer", + "introduction": "Click the producer will spend energy and get its products. Different producer can provide different products.", "screenshot": "", - "zhCN": "订单", - "ptBR": "Pedido", - "notes": "", - "esLATAM": "Pedido" + "zh_CN": "发射器", + "pt_BR": "Produtor", + "note": "The English original refers to \"click the producer to spend energy and get its products.\" The current translation \"Gerador\" means \"generator,\" which may not be accurate in the game context; the Chinese translation \"发射器\" leans more towards an action-oriented term.", + "es_LATAM": "Productor" }, { "no": 30, - "inGameGlossary": "Producer", - "introduction": "Click the producer will spend energy and get its products. Different producer can provide different products.", + "term": "Product", + "introduction": "Items gotten from producers. Products can be merged to upgarde.", "screenshot": "", - "zhCN": "发射器", - "ptBR": "Produtor", - "notes": "The English original refers to \"click the producer to spend energy and get its products.\" The current translation \"Gerador\" means \"generator,\" which may not be accurate in the game context; the Chinese translation \"发射器\" leans more towards an action-oriented term.", - "esLATAM": "Productor" + "zh_CN": "产物", + "pt_BR": "Produto", + "note": "The English original specifically means \"items obtained from producers.\" The current translation \"Item\" is too generic and does not reflect the \"product\" nature of being produced.", + "es_LATAM": "Producto" }, { "no": 31, - "inGameGlossary": "Product", - "introduction": "Items gotten from producers. Products can be merged to upgarde.", + "term": "Bubble", + "introduction": "Randomly appear when merging products. Player can open the bubble by watching ADs or paying diamonds to get an extra product in the bubble.", "screenshot": "", - "zhCN": "产物", - "ptBR": "Produto", - "notes": "The English original specifically means \"items obtained from producers.\" The current translation \"Item\" is too generic and does not reflect the \"product\" nature of being produced.", - "esLATAM": "Producto" + "zh_CN": "气泡", + "pt_BR": "Bolha", + "note": "", + "es_LATAM": "Burbuja" }, { "no": 32, - "inGameGlossary": "Bubble", - "introduction": "Randomly appear when merging products. Player can open the bubble by watching ADs or paying diamonds to get an extra product in the bubble.", + "term": "Material", + "introduction": "Can be gotten by finishing orders. Some decorating steps will need to spend materials.", "screenshot": "", - "zhCN": "气泡", - "ptBR": "Bolha", - "notes": "", - "esLATAM": "Burbuja" + "zh_CN": "材料", + "pt_BR": "Material", + "note": "", + "es_LATAM": "Material" }, { "no": 33, - "inGameGlossary": "Material", - "introduction": "Can be gotten by finishing orders. Some decorating steps will need to spend materials.", + "term": "Shop", + "introduction": "Where players can buy items by cash or diamond.", "screenshot": "", - "zhCN": "材料", - "ptBR": "Material", - "notes": "", - "esLATAM": "Material" + "zh_CN": "商店", + "pt_BR": "Loja", + "note": "", + "es_LATAM": "Tienda" }, { "no": 34, - "inGameGlossary": "Shop", - "introduction": "Where players can buy items by cash or diamond.", + "term": "Weekly Gift", + "introduction": "Every time players login for the first time that day they will get a gift which loops every 7 days.", "screenshot": "", - "zhCN": "商店", - "ptBR": "Loja", - "notes": "", - "esLATAM": "Tienda" + "zh_CN": "七日签到礼", + "pt_BR": "Presente semanal", + "note": "", + "es_LATAM": "Regalo Semanal" }, { "no": 35, - "inGameGlossary": "Weekly Gift", - "introduction": "Every time players login for the first time that day they will get a gift which loops every 7 days.", + "term": "Endless Gift", + "introduction": "One special pack that play can buy it endless times everyday.", "screenshot": "", - "zhCN": "七日签到礼", - "ptBR": "Presente semanal", - "notes": "", - "esLATAM": "Regalo Semanal" + "zh_CN": "无尽礼包", + "pt_BR": "Presente infinito", + "note": "", + "es_LATAM": "Regalo Infinito" }, { "no": 36, - "inGameGlossary": "Endless Gift", - "introduction": "One special pack that play can buy it endless times everyday.", + "term": "Storage", + "introduction": "Where players can save items from board.", "screenshot": "", - "zhCN": "无尽礼包", - "ptBR": "Presente infinito", - "notes": "", - "esLATAM": "Regalo Infinito" + "zh_CN": "仓库", + "pt_BR": "Inventário", + "note": "", + "es_LATAM": "Almacén" }, { "no": 37, - "inGameGlossary": "Storage", - "introduction": "Where players can save items from board.", + "term": "Hall of Honor", + "introduction": "A special page in Storage that saving retired producers.", "screenshot": "", - "zhCN": "仓库", - "ptBR": "Inventário", - "notes": "", - "esLATAM": "Almacén" + "zh_CN": "荣誉室", + "pt_BR": "Salão de Honra", + "note": "The English original means \"Hall of Honor.\" The current translation \"Hall da Fama\" means \"Hall of Fame,\" which slightly deviates from the concept of \"honor\" (\"Fama\" emphasizes fame rather than honor).", + "es_LATAM": "Salón de Honor" }, { "no": 38, - "inGameGlossary": "Hall of Honor", - "introduction": "A special page in Storage that saving retired producers.", + "term": "Level", + "introduction": "Players' level. It needs EXP gotten from finishing decorations and petting the kitten,", "screenshot": "", - "zhCN": "荣誉室", - "ptBR": "Salão de Honra", - "notes": "The English original means \"Hall of Honor.\" The current translation \"Hall da Fama\" means \"Hall of Fame,\" which slightly deviates from the concept of \"honor\" (\"Fama\" emphasizes fame rather than honor).", - "esLATAM": "Salón de Honor" + "zh_CN": "等级", + "pt_BR": "Nível", + "note": "", + "es_LATAM": "Nivel; Nv. (Abbreviation)" }, { "no": 39, - "inGameGlossary": "Level", - "introduction": "Players' level. It needs EXP gotten from finishing decorations and petting the kitten,", + "term": "Bonding Map", + "introduction": "The player's level list.", "screenshot": "", - "zhCN": "等级", - "ptBR": "Nível", - "notes": "", - "esLATAM": "Nivel\nNv. (Abbreviation)" + "zh_CN": "心路历程", + "pt_BR": "Caminho do Coração", + "note": "The English original refers to \"the player's level list.\" The current translation \"Mapa de Afinidade\" means \"Affinity Map,\" which does not match the concept of a level list; the Chinese translation \"心路历程\" also emphasizes growth.", + "es_LATAM": "Mapa de Vínculo" }, { "no": 40, - "inGameGlossary": "Bonding Map", - "introduction": "The player's level list.", + "term": "Level Up Reward", + "introduction": "The items players can get aftering leveling up.", "screenshot": "", - "zhCN": "心路历程", - "ptBR": "Caminho do Coração", - "notes": "The English original refers to \"the player's level list.\" The current translation \"Mapa de Afinidade\" means \"Affinity Map,\" which does not match the concept of a level list; the Chinese translation \"心路历程\" also emphasizes growth.", - "esLATAM": "Mapa de Vínculo" + "zh_CN": "升级奖励", + "pt_BR": "Recompensa de Nível", + "note": "", + "es_LATAM": "Recompensa de Nivel" }, { "no": 41, - "inGameGlossary": "Level Up Reward", - "introduction": "The items players can get aftering leveling up.", + "term": "Collection", + "introduction": "Where players can check what items they have collected in game.", "screenshot": "", - "zhCN": "升级奖励", - "ptBR": "Recompensa de Nível", - "notes": "", - "esLATAM": "Recompensa de Nivel" + "zh_CN": "图鉴", + "pt_BR": "Coleção", + "note": "", + "es_LATAM": "Colección" }, { "no": 42, - "inGameGlossary": "Collection", - "introduction": "Where players can check what items they have collected in game.", + "term": "Daily Task", + "introduction": "Refresh every day for players to finish and get reward.", "screenshot": "", - "zhCN": "图鉴", - "ptBR": "Coleção", - "notes": "", - "esLATAM": "Colección" + "zh_CN": "日常任务", + "pt_BR": "Tarefa diária", + "note": "", + "es_LATAM": "Tarea Diaria" }, { "no": 43, - "inGameGlossary": "Daily Task", - "introduction": "Refresh every day for players to finish and get reward.", + "term": "Booster Mode", + "introduction": "Activate Booster Mode allows players to spend more energy every click and get higher level products directly.", "screenshot": "", - "zhCN": "日常任务", - "ptBR": "Tarefa diária", - "notes": "", - "esLATAM": "Tarea Diaria" + "zh_CN": "多倍生产", + "pt_BR": "Modo Turbo", + "note": "", + "es_LATAM": "Modo Turbo" }, { "no": 44, - "inGameGlossary": "Booster Mode", - "introduction": "Activate Booster Mode allows players to spend more energy every click and get higher level products directly.", + "term": "Friend", + "introduction": "One page that makes players able to play with other players.", "screenshot": "", - "zhCN": "多倍生产", - "ptBR": "Modo Turbo", - "notes": "", - "esLATAM": "Modo Turbo" + "zh_CN": "好友", + "pt_BR": "Amigo", + "note": "", + "es_LATAM": "Amigo" }, { "no": 45, - "inGameGlossary": "Friend", - "introduction": "One page that makes players able to play with other players.", + "term": "Ranking", + "introduction": "A page in Friend for players to check the ranking.", "screenshot": "", - "zhCN": "好友", - "ptBR": "Amigo", - "notes": "", - "esLATAM": "Amigo" + "zh_CN": "排行榜", + "pt_BR": "Classificação", + "note": "", + "es_LATAM": "Clasificación" }, { "no": 46, - "inGameGlossary": "Ranking", - "introduction": "A page in Friend for players to check the ranking.", + "term": "Timeline", + "introduction": "A page in Friend for players to check the recent events with friends.", "screenshot": "", - "zhCN": "排行榜", - "ptBR": "Classificação", - "notes": "", - "esLATAM": "Clasificación" + "zh_CN": "时间线", + "pt_BR": "Linha do Tempo", + "note": "", + "es_LATAM": "Línea de Tiempo" }, { "no": 47, - "inGameGlossary": "Timeline", - "introduction": "A page in Friend for players to check the recent events with friends.", + "term": "Player ID", + "introduction": "Player's ID can be checked in menu.", "screenshot": "", - "zhCN": "时间线", - "ptBR": "Linha do Tempo", - "notes": "", - "esLATAM": "Línea de Tiempo" + "zh_CN": "玩家ID", + "pt_BR": "ID do Jogador", + "note": "", + "es_LATAM": "ID de Jugador" }, { "no": 48, - "inGameGlossary": "Player ID", - "introduction": "Player's ID can be checked in menu.", + "term": "Device ID", + "introduction": "Player's Device ID can be checked in the below of Setting page.", "screenshot": "", - "zhCN": "玩家ID", - "ptBR": "ID do Jogador", - "notes": "", - "esLATAM": "ID de Jugador" + "zh_CN": "设备ID", + "pt_BR": "ID do Dispositivo", + "note": "", + "es_LATAM": "ID de Dispositivo" }, { "no": 49, - "inGameGlossary": "Device ID", - "introduction": "Player's Device ID can be checked in the below of Setting page.", + "term": "Friend Code", + "introduction": "Player's Friend Code can be checked on Add Friend page.", "screenshot": "", - "zhCN": "设备ID", - "ptBR": "ID do Dispositivo", - "notes": "", - "esLATAM": "ID de Dispositivo" + "zh_CN": "好友码", + "pt_BR": "Código de Amigo", + "note": "", + "es_LATAM": "Clave de Amigo" }, { "no": 50, - "inGameGlossary": "Friend Code", - "introduction": "Player's Friend Code can be checked on Add Friend page.", + "term": "Nickname", + "introduction": "Can be setted by players.", "screenshot": "", - "zhCN": "好友码", - "ptBR": "Código de Amigo", - "notes": "", - "esLATAM": "Clave de Amigo" + "zh_CN": "玩家昵称", + "pt_BR": "Apelido", + "note": "", + "es_LATAM": "Apodo" }, { "no": 51, - "inGameGlossary": "Nickname", + "term": "Avatar", "introduction": "Can be setted by players.", "screenshot": "", - "zhCN": "玩家昵称", - "ptBR": "Apelido", - "notes": "", - "esLATAM": "Apodo" + "zh_CN": "头像", + "pt_BR": "Avatar", + "note": "", + "es_LATAM": "Avatar" }, { "no": 52, - "inGameGlossary": "Avatar", + "term": "Frame", "introduction": "Can be setted by players.", "screenshot": "", - "zhCN": "头像", - "ptBR": "Avatar", - "notes": "", - "esLATAM": "Avatar" + "zh_CN": "头像框", + "pt_BR": "Moldura", + "note": "", + "es_LATAM": "Marco" }, { "no": 53, - "inGameGlossary": "Frame", - "introduction": "Can be setted by players.", + "term": "Emoji", + "introduction": "Can be sent in particular events by players.", "screenshot": "", - "zhCN": "头像框", - "ptBR": "Moldura", - "notes": "", - "esLATAM": "Marco" + "zh_CN": "表情", + "pt_BR": "Emoji", + "note": "", + "es_LATAM": "Emoji" }, { "no": 54, - "inGameGlossary": "Emoji", - "introduction": "Can be sent in particular events by players.", + "term": "Card", + "introduction": "A collection item in game.", "screenshot": "", - "zhCN": "表情", - "ptBR": "Emoji", - "notes": "", - "esLATAM": "Emoji" + "zh_CN": "卡片", + "pt_BR": "Carta", + "note": "", + "es_LATAM": "Carta" }, { "no": 55, - "inGameGlossary": "Card", - "introduction": "A collection item in game.", + "term": "Card Pack", + "introduction": "Where players can get random cards.", "screenshot": "", - "zhCN": "卡片", - "ptBR": "Carta", - "notes": "", - "esLATAM": "Carta" + "zh_CN": "卡包", + "pt_BR": "Pacote de Cartas", + "note": "", + "es_LATAM": "Paquete de Cartas" }, { "no": 56, - "inGameGlossary": "Card Pack", - "introduction": "Where players can get random cards.", + "term": "Album", + "introduction": "One group of cards. Players can get reward when they collected all cards in one Album.", "screenshot": "", - "zhCN": "卡包", - "ptBR": "Pacote de Cartas", - "notes": "", - "esLATAM": "Paquete de Cartas" + "zh_CN": "相册", + "pt_BR": "Álbum", + "note": "", + "es_LATAM": "Álbum" }, { "no": 57, - "inGameGlossary": "Album", - "introduction": "One group of cards. Players can get reward when they collected all cards in one Album.", + "term": "Card Rarity", + "introduction": "The star mark on the card.", "screenshot": "", - "zhCN": "相册", - "ptBR": "Álbum", - "notes": "", - "esLATAM": "Álbum" + "zh_CN": "卡片稀有度", + "pt_BR": "Raridade da Carta", + "note": "", + "es_LATAM": "Rareza de la Carta" }, { "no": 58, - "inGameGlossary": "Card Rarity", - "introduction": "The star mark on the card.", + "term": "Star", + "introduction": "Gotten when players get a repeated card,", "screenshot": "", - "zhCN": "卡片稀有度", - "ptBR": "Raridade da Carta", - "notes": "", - "esLATAM": "Rareza de la Carta" + "zh_CN": "星星", + "pt_BR": "Estrela", + "note": "", + "es_LATAM": "Estrella" }, { "no": 59, - "inGameGlossary": "Star", - "introduction": "Gotten when players get a repeated card,", + "term": "Star Exchange", + "introduction": "Stars can be uesd to exchange Card Packs.", "screenshot": "", - "zhCN": "星星", - "ptBR": "Estrela", - "notes": "", - "esLATAM": "Estrella" + "zh_CN": "星星兑换", + "pt_BR": "Troca de Estrelas", + "note": "", + "es_LATAM": "Cambio de Estrellas" }, { "no": 60, - "inGameGlossary": "Star Exchange", - "introduction": "Stars can be uesd to exchange Card Packs.", + "term": "Master Card", + "introduction": "Can be exchanged into any no-Golden Card.", "screenshot": "", - "zhCN": "星星兑换", - "ptBR": "Troca de Estrelas", - "notes": "", - "esLATAM": "Cambio de Estrellas" + "zh_CN": "银色万能卡", + "pt_BR": "Carta Mestre", + "note": "", + "es_LATAM": "Carta Maestra" }, { "no": 61, - "inGameGlossary": "Master Card", - "introduction": "Can be exchanged into any no-Golden Card.", + "term": "Golden Master Card", + "introduction": "Can be exchanged into any Card.", "screenshot": "", - "zhCN": "银色万能卡", - "ptBR": "Carta Mestre", - "notes": "", - "esLATAM": "Carta Maestra" + "zh_CN": "金色万能卡", + "pt_BR": "Carta Mestre Dourada", + "note": "", + "es_LATAM": "Carta Maestra Dorada" }, { "no": 62, - "inGameGlossary": "Golden Master Card", - "introduction": "Can be exchanged into any Card.", + "term": "Kitten's Gift", + "introduction": "Every time players finish the progress bar the kitten will send a random Time-limited Event.", "screenshot": "", - "zhCN": "金色万能卡", - "ptBR": "Carta Mestre Dourada", - "notes": "", - "esLATAM": "Carta Maestra Dorada" + "zh_CN": "小猫赠礼", + "pt_BR": "Presente do Gatinho", + "note": "", + "es_LATAM": "Regalo del Gatito" }, { "no": 63, - "inGameGlossary": "Kitten's Gift", - "introduction": "Every time players finish the progress bar the kitten will send a random Time-limited Event.", + "term": "Chest Rain", + "introduction": "One of the Time-limited Events. Players can get a chest after finishing an order.", "screenshot": "", - "zhCN": "小猫赠礼", - "ptBR": "Presente do Gatinho", - "notes": "", - "esLATAM": "Regalo del Gatito" + "zh_CN": "宝箱雨", + "pt_BR": "Chuva de Baús", + "note": "", + "es_LATAM": "Lluvia de Baúles" }, { "no": 64, - "inGameGlossary": "Chest Rain", - "introduction": "One of the Time-limited Events. Players can get a chest after finishing an order.", + "term": "Turbo Boost", + "introduction": "One of the Time-limited Events. Enable players to use higher level Booster Mode.", "screenshot": "", - "zhCN": "宝箱雨", - "ptBR": "Chuva de Baús", - "notes": "", - "esLATAM": "Lluvia de Baúles" + "zh_CN": "超级加倍", + "pt_BR": "Impulso Turbo", + "note": "", + "es_LATAM": "Impulso Turbo" }, { "no": 65, - "inGameGlossary": "Turbo Boost", - "introduction": "One of the Time-limited Events. Enable players to use higher level Booster Mode.", + "term": "Bonus Coins", + "introduction": "One of the Time-limited Events. Players can get extra Pet Coins after finishing an order.", "screenshot": "", - "zhCN": "超级加倍", - "ptBR": "Impulso Turbo", - "notes": "", - "esLATAM": "Impulso Turbo" + "zh_CN": "猫币猎手", + "pt_BR": "Moedas Bônus", + "note": "", + "es_LATAM": "Bonificación de Monedas" }, { "no": 66, - "inGameGlossary": "Bonus Coins", - "introduction": "One of the Time-limited Events. Players can get extra Pet Coins after finishing an order.", + "term": "Super Producer", + "introduction": "One of the Time-limited Events. Producer can produce unlimited times.", "screenshot": "", - "zhCN": "猫币猎手", - "ptBR": "Moedas Bônus", - "notes": "", - "esLATAM": "Bonificación de Monedas" + "zh_CN": "超级发射器", + "pt_BR": "Super Produtor", + "note": "", + "es_LATAM": "Super Productor" }, { "no": 67, - "inGameGlossary": "Super Producer", - "introduction": "One of the Time-limited Events. Producer can produce unlimited times.", + "term": "Power Order", + "introduction": "One of the Time-limited Events. Players can get an extra order rewarding Card Pack.", "screenshot": "", - "zhCN": "超级发射器", - "ptBR": "Super Produtor", - "notes": "", - "esLATAM": "Super Productor" + "zh_CN": "超级订单", + "pt_BR": "Super Pedido", + "note": "The English original refers to \"an extra order rewarding Card Pack.\" The current translation \"Pedido de Poder\" means \"Power Order,\" which is too abstract and does not convey the \"super\" or \"enhanced\" meaning.", + "es_LATAM": "Super Pedido" }, { "no": 68, - "inGameGlossary": "Power Order", - "introduction": "One of the Time-limited Events. Players can get an extra order rewarding Card Pack.", + "term": "Scene Rush", + "introduction": "One of the Time-limited Events. Players can get a Wheel of Fortune after finishing a scene,", "screenshot": "", - "zhCN": "超级订单", - "ptBR": "Super Pedido", - "notes": "The English original refers to \"an extra order rewarding Card Pack.\" The current translation \"Pedido de Poder\" means \"Power Order,\" which is too abstract and does not convey the \"super\" or \"enhanced\" meaning.", - "esLATAM": "Super Pedido" + "zh_CN": "场景冲刺", + "pt_BR": "Corrida de Cenas", + "note": "", + "es_LATAM": "Escena Frenética" }, { "no": 69, - "inGameGlossary": "Scene Rush", - "introduction": "One of the Time-limited Events. Players can get a Wheel of Fortune after finishing a scene,", + "term": "Pack Boost", + "introduction": "One of the Time-limited Events. Players can get extra cards when opening Card Packs.", "screenshot": "", - "zhCN": "场景冲刺", - "ptBR": "Corrida de Cenas", - "notes": "", - "esLATAM": "Escena Frenética" + "zh_CN": "卡包加成", + "pt_BR": "Chuva de Cartas", + "note": "The English original means \"players can get extra cards when opening Card Packs.\" The current translation \"Pacote de Impulso\" means \"Boost Pack,\" which might be misunderstood as a type of card pack rather than a boost effect.", + "es_LATAM": "Potenciador de Paquetes" }, { "no": 70, - "inGameGlossary": "Pack Boost", - "introduction": "One of the Time-limited Events. Players can get extra cards when opening Card Packs.", + "term": "Meow Mania", + "introduction": "One of the Time-limited Events. Players can get extra reward by finishing a mini game.", "screenshot": "", - "zhCN": "卡包加成", - "ptBR": "Chuva de Cartas", - "notes": "The English original means \"players can get extra cards when opening Card Packs.\" The current translation \"Pacote de Impulso\" means \"Boost Pack,\" which might be misunderstood as a type of card pack rather than a boost effect.", - "esLATAM": "Potenciador de Paquetes" + "zh_CN": "连击快手", + "pt_BR": "Meow Mania", + "note": "", + "es_LATAM": "Miaumanía" }, { "no": 71, - "inGameGlossary": "Meow Mania", - "introduction": "One of the Time-limited Events. Players can get extra reward by finishing a mini game.", + "term": "Card-copy Cat", + "introduction": "One of the Time-limited Events. Players can get extra card reward when visiting other players.", "screenshot": "", - "zhCN": "连击快手", - "ptBR": "Meow Mania", - "notes": "", - "esLATAM": "Miaumanía" + "zh_CN": "宠物怪盗", + "pt_BR": "Gato Copiador", + "note": "", + "es_LATAM": "Gato Copiador" }, { "no": 72, - "inGameGlossary": "Card-copy Cat", - "introduction": "One of the Time-limited Events. Players can get extra card reward when visiting other players.", + "term": "Golden Card Trade", + "introduction": "One of the Time-limited Events. Players can trade Specific golden cards.", "screenshot": "", - "zhCN": "宠物怪盗", - "ptBR": "Gato Copiador", - "notes": "", - "esLATAM": "Gato Copiador" + "zh_CN": "金卡交换", + "pt_BR": "Troca de Cartas Douradas", + "note": "The English original means \"players can trade specific golden cards.\" The current translation \"Troca de Ouro\" means \"Gold Trade,\" which could be misinterpreted as trading gold currency rather than golden cards.", + "es_LATAM": "Cambio de Cartas Doradas" }, { "no": 73, - "inGameGlossary": "Golden Card Trade", - "introduction": "One of the Time-limited Events. Players can trade Specific golden cards.", + "term": "Mass Merge", + "introduction": "One of the Time-limited Events. Players can merge all same products together.", "screenshot": "", - "zhCN": "金卡交换", - "ptBR": "Troca de Cartas Douradas", - "notes": "The English original means \"players can trade specific golden cards.\" The current translation \"Troca de Ouro\" means \"Gold Trade,\" which could be misinterpreted as trading gold currency rather than golden cards.", - "esLATAM": "Cambio de Cartas Doradas" + "zh_CN": "一网打尽", + "pt_BR": "Combinação em Massa", + "note": "", + "es_LATAM": "Combinación Masiva" }, { "no": 74, - "inGameGlossary": "Mass Merge", - "introduction": "One of the Time-limited Events. Players can merge all same products together.", + "term": "Maneki", + "introduction": "One of the Time-limited Events. Players can get more and more extra Pet Coins by finishing orders quickly.", "screenshot": "", - "zhCN": "一网打尽", - "ptBR": "Combinação em Massa", - "notes": "", - "esLATAM": "Combinación Masiva" + "zh_CN": "招财猫", + "pt_BR": "Maneki", + "note": "", + "es_LATAM": "Maneki" }, { "no": 75, - "inGameGlossary": "Maneki", - "introduction": "One of the Time-limited Events. Players can get more and more extra Pet Coins by finishing orders quickly.", + "term": "Lucky Cat", + "introduction": "One of the Time-limited Events. Chances for players to get free Bubble when merging.", "screenshot": "", - "zhCN": "招财猫", - "ptBR": "Maneki", - "notes": "", - "esLATAM": "Maneki" + "zh_CN": "好运猫", + "pt_BR": "Gato da Sorte", + "note": "", + "es_LATAM": "Gato de la Suerte" }, { "no": 76, - "inGameGlossary": "Lucky Cat", - "introduction": "One of the Time-limited Events. Chances for players to get free Bubble when merging.", + "term": "Recycling Day", + "introduction": "One of the Time-limited Events. Players can sell products at a higher price.", "screenshot": "", - "zhCN": "好运猫", - "ptBR": "Gato da Sorte", - "notes": "", - "esLATAM": "Gato de la Suerte" + "zh_CN": "回收日", + "pt_BR": "Dia da Reciclagem", + "note": "", + "es_LATAM": "Día de Reciclaje" }, { "no": 77, - "inGameGlossary": "Recycling Day", - "introduction": "One of the Time-limited Events. Players can sell products at a higher price.", + "term": "Wheel of Fortune", + "introduction": "Get a random reward from the Wheel.", "screenshot": "", - "zhCN": "回收日", - "ptBR": "Dia da Reciclagem", - "notes": "", - "esLATAM": "Día de Reciclaje" + "zh_CN": "奖励转盘", + "pt_BR": "Roda da Fortuna", + "note": "", + "es_LATAM": "Rueda de la Fortuna" }, { "no": 78, - "inGameGlossary": "Wheel of Fortune", - "introduction": "Get a random reward from the Wheel.", - "screenshot": "", - "zhCN": "奖励转盘", - "ptBR": "Roda da Fortuna", - "notes": "", - "esLATAM": "Rueda de la Fortuna" - }, - { - "no": 79, - "inGameGlossary": "Pets' Championship", + "term": "Pets' Championship", "introduction": "An event opening everyday. Players can get score by finishing orders to get event reward and higher ranking,", "screenshot": "", - "zhCN": "锦标赛", - "ptBR": "Campeonato de Pets", - "notes": "", - "esLATAM": "Campeonato de Mascotas" + "zh_CN": "锦标赛", + "pt_BR": "Campeonato de Pets", + "note": "", + "es_LATAM": "Campeonato de Mascotas" + }, + { + "hi": 1, + "term": "Lily", + "introduction": "Lily, one of the main characters in the game, is a cute 5-year-old girl and Birch's niece.", + "screenshot": "", + "zh_CN": "丽丽", + "pt_BR": "Luna", + "es_LATAM": "Lilia" + }, + { + "hi": 2, + "term": "Birch", + "introduction": "Birch, one of the main character in the game, is around 35 years old and Lily's uncle.", + "screenshot": "", + "zh_CN": "柏奇", + "pt_BR": "Beto", + "es_LATAM": "Beto" + }, + { + "hi": 3, + "term": "Timber", + "introduction": "Timber, one of the main character in the game, is Birch's dog.", + "screenshot": "", + "zh_CN": "旺财", + "pt_BR": "Toco", + "es_LATAM": "Tocón" + }, + { + "hi": 4, + "term": "/", + "introduction": "A kitten, is named by the player. Adopted by Lily and Birch, it is a being that can be possessed by a soul. If you need to call her by her name during dialogue, you can use: #s1", + "screenshot": "", + "zh_CN": "/", + "pt_BR": "/", + "es_LATAM": "/" + }, + { + "hi": 5, + "term": "Mrs Jenkins", + "introduction": "Mrs Jenkins, head of the community animal welfare organization, provided initial guidance to Lily and Birch in adopting and caring for the kitten.", + "screenshot": "", + "zh_CN": "詹奶奶", + "pt_BR": "Sra. Pacheco", + "es_LATAM": "Sra. Pacheco" + }, + { + "hi": 6, + "term": "Evelyn", + "introduction": "Evelyn, the café owner, has feelings for Birch. She is a key character in chapters 1 and 2 of the story.", + "screenshot": "", + "zh_CN": "爱芙", + "pt_BR": "Eva", + "es_LATAM": "Evelin" + }, + { + "hi": 7, + "term": "Cloudy", + "introduction": "Cloudy, Evelyn's pet cat. It makes a brief appearance in Chapter 1 and plays a significant role in Chapter 2.", + "screenshot": "", + "zh_CN": "乌云", + "pt_BR": "Nuvem", + "es_LATAM": "Brumito" + }, + { + "hi": 8, + "term": "Tracy", + "introduction": "Tracy is a character in Chapter 1. Evelyn's friend. After being persecuted by her fiancé, her soul possesses the kitten.", + "screenshot": "", + "zh_CN": "唐知微", + "pt_BR": "Tatiana", + "es_LATAM": "Teresa" + }, + { + "hi": 9, + "term": "Luther", + "introduction": "Luther is a character in Chapter 1. He is Tracy's husband. He does not actually appear in the story, only in character dialogue and illustrations.", + "screenshot": "", + "zh_CN": "陆川", + "pt_BR": "Lucas", + "es_LATAM": "Luís" + }, + { + "hi": 10, + "term": "Mr Hawthorne", + "introduction": "Mr. Hawthorne, Evelyn's father. In Chapter 2, after being deceived by Adrian and falling into a coma, he possesses the kitten.", + "screenshot": "", + "zh_CN": "霍桑先生", + "pt_BR": "Sr. Torres", + "es_LATAM": "Sr. Espino" + }, + { + "hi": 11, + "term": "Adrian", + "introduction": "Adrian, Evelyn's fiancé. He deceived and persecuted Mr. Hawthorne for money.", + "screenshot": "", + "zh_CN": "林辰", + "pt_BR": "André", + "es_LATAM": "Adrián" + }, + { + "hi": 12, + "term": "Kevin", + "introduction": "Car Mechanic, Andy's father, Sarah's husband, and Birch's longtime friend", + "screenshot": "", + "zh_CN": "陈凯", + "pt_BR": "Kevin", + "es_LATAM": "Kevin" + }, + { + "hi": 13, + "term": "Andy", + "introduction": "Kevin and Sarah's son", + "screenshot": "", + "zh_CN": "陈迪", + "pt_BR": "Davi", + "es_LATAM": "David" + }, + { + "hi": 14, + "term": "Mr. Cane", + "introduction": "Candy shop owner", + "screenshot": "", + "zh_CN": "汤先生", + "pt_BR": "Sr. Campos", + "es_LATAM": "Sr. Campos" + }, + { + "hi": 15, + "term": "Amanda", + "introduction": "Artist, Sarah's sister and Andy's aunt", + "screenshot": "", + "zh_CN": "安曼", + "pt_BR": "Amanda", + "es_LATAM": "Amanda" + }, + { + "hi": 16, + "term": "Sarah", + "introduction": "Lawyer, Kevin's wife, Andy's mother, Amanda's sister. Dead some years ago.", + "screenshot": "", + "zh_CN": "安莎", + "pt_BR": "Sara", + "es_LATAM": "Sara" } -] \ No newline at end of file +] diff --git a/apps/web-antd/src/store/util.ts b/apps/web-antd/src/store/util.ts index 0f763cb..0239544 100644 --- a/apps/web-antd/src/store/util.ts +++ b/apps/web-antd/src/store/util.ts @@ -1,52 +1,88 @@ -import MergeData from "./MergeData.json"; +import MergeData from './MergeData.json'; +import dayjs from 'dayjs'; export function getImageUrl(key: string): string { - if (!key) return ""; + if (!key) return ''; - // 1. 判断 key 是否为 UI_MergeData_ 格式,取出数字;同时支持直接传入数字字符串或数字 - let id: string | null = null; - const m = /^UI_MergeData_(\d+)$/.exec(key); - if (m) id = m[1] ?? ""; - else if (/^\d+$/.test(key)) id = key; - else id = String(key); + // 1. 判断 key 是否为 UI_MergeData_ 格式,取出数字;同时支持直接传入数字字符串或数字 + let id: string | null = null; + const m = /^UI_MergeData_(\d+)$/.exec(key); + if (m) id = m[1] ?? ''; + else if (/^\d+$/.test(key)) id = key; + else id = String(key); - // 2. 从 MergeData 中取出 id 对应的 Icon - const item = (MergeData as any)[id]; - const icon = item && typeof item.Icon === 'string' ? item.Icon : ''; - if (!icon) return ''; + // 2. 从 MergeData 中取出 id 对应的 Icon + const item = (MergeData as any)[id]; + const icon = item && typeof item.Icon === 'string' ? item.Icon : ''; + if (!icon) return ''; - // 3. 在 Node 环境中遍历指定文件夹寻找包含 Icon 名称的文件并返回绝对路径 - // 如果不在 Node 环境(例如浏览器),则回退返回 icon 字符串 - try { - // @ts-ignore - const fs = require('fs'); - // @ts-ignore - const path = require('path'); - const SEARCH_DIR = 'D:\\Github\\AplusB_Pet_nation\\Assets\\GameMain\\UI\\UISprites\\MergeObj'; + // 3. 在 Node 环境中遍历指定文件夹寻找包含 Icon 名称的文件并返回绝对路径 + // 如果不在 Node 环境(例如浏览器),则回退返回 icon 字符串 + try { + // @ts-ignore + const fs = require('fs'); + // @ts-ignore + const path = require('path'); + const SEARCH_DIR = + 'D:\\Github\\AplusB_Pet_nation\\Assets\\GameMain\\UI\\UISprites\\MergeObj'; - function findFile(dir: string): string | null { - let entries: string[] = []; - try { entries = fs.readdirSync(dir); } catch (e) { return null; } - for (const name of entries) { - const full = path.join(dir, name); - let stat; - try { stat = fs.statSync(full); } catch (e) { continue; } - if (stat.isDirectory()) { - const res = findFile(full); - if (res) return res; - } else { - if (name.indexOf(icon) !== -1) return path.resolve(full); - } - } - return null; - } + function findFile(dir: string): string | null { + let entries: string[] = []; + try { + entries = fs.readdirSync(dir); + } catch (e) { + return null; + } + for (const name of entries) { + const full = path.join(dir, name); + let stat; + try { + stat = fs.statSync(full); + } catch (e) { + continue; + } + if (stat.isDirectory()) { + const res = findFile(full); + if (res) return res; + } else { + if (name.indexOf(icon) !== -1) return path.resolve(full); + } + } + return null; + } - const found = findFile(SEARCH_DIR); - if (found) return found; - } catch (e) { - // 非 Node 环境或访问失败,忽略并回退 - } + const found = findFile(SEARCH_DIR); + if (found) return found; + } catch (e) { + // 非 Node 环境或访问失败,忽略并回退 + } - // 回退:返回 icon 名称(供前端拼接资源路径使用) - return icon; -} \ No newline at end of file + // 回退:返回 icon 名称(供前端拼接资源路径使用) + return icon; +} + +export const getUnixTime = (date: any): number => { + if (date) { + if (typeof date === 'string') { + return dayjs(date).unix(); + } else if (dayjs.isDayjs(date)) { + return date.unix(); + } else if (typeof (date as any).unix === 'function') { + return (date as any).unix(); + } else { + return dayjs(date).unix(); + } + } + return 0; +}; + +export const getItemUrl = (itemId: number): string => { + switch (itemId) { + case 100001: + return './Assets/Art_SubModule/Art_Resource/Art_UISprites/Shop/Big/shop_energy_LV1.png'; + case 100003: + return './Assets/Art_SubModule/Art_Resource/Art_UISprites/Shop/Big/shop_diamond_LV2.png'; + default: + return ''; + } +}; diff --git a/apps/web-antd/src/views/dashboard/serverList/appList.vue b/apps/web-antd/src/views/dashboard/serverList/appList.vue index 79d5c9e..9d49023 100644 --- a/apps/web-antd/src/views/dashboard/serverList/appList.vue +++ b/apps/web-antd/src/views/dashboard/serverList/appList.vue @@ -1,10 +1,10 @@ diff --git a/apps/web-antd/src/views/language/language.vue b/apps/web-antd/src/views/language/language.vue index 418636e..946b824 100644 --- a/apps/web-antd/src/views/language/language.vue +++ b/apps/web-antd/src/views/language/language.vue @@ -1,6 +1,6 @@