From 23e00b419996dfb101bc188349a5dd273e7b70e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Tue, 10 Mar 2026 14:55:15 -0500 Subject: [PATCH 01/56] New translations en.json (Polish) --- packages/i18n/strings/pl.json | 64 +++++++++++++++++------------------ 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/packages/i18n/strings/pl.json b/packages/i18n/strings/pl.json index 3cca29713..24fd45f14 100644 --- a/packages/i18n/strings/pl.json +++ b/packages/i18n/strings/pl.json @@ -10,14 +10,14 @@ "m": "{value}m", "mm": "{value}mm", "deg": "{value}°", - "hp": "{value}hp", + "hp": "Wytrzymałość", "x": "x{value}", "percentage": "{value}%", "deg_s": "{value}°/s", "plus": "+{value}" }, "gun_types": { - "auto_loader": "Auto loader", + "auto_loader": "Samo ładowacz", "auto_reloader": "Automatyczne przeładowanie", "regular": "" }, @@ -28,18 +28,18 @@ "he": "OB" }, "player_count_period": { - "total": "Total", - "d_120": "Past 120 days", - "d_90": "Past 90 days", - "d_60": "Past 60 days", - "d_30": "Past month", + "total": "Łącznie", + "d_120": "Powyżej 120 dni", + "d_90": "Powyżej 90 dni", + "d_60": "Powyżej 60 dni", + "d_30": "W ciągu miesiąca", "d_7": "W minionym tygodniu", - "d_1": "Yesterday" + "d_1": "Wczoraj" }, "branches": { "local": "dev", "dev": "beta", - "opentest": "opentest", + "opentest": "otwarty test", "preview": "podgląd" }, "locales": { @@ -80,45 +80,45 @@ }, "nations": { "ussr": "ZSRR", - "germany": "Germany", - "usa": "U.S.A.", + "germany": "Niemcy", + "usa": "Stany Zjednoczone.", "china": "Chiny", "uk": "Wielka Brytania", - "france": "France", - "japan": "Japan", + "france": "Francja", + "japan": "Japonia", "european": "Nacja Europejska", "other": "Nacja Hybrydowa" }, "nations_adjectives": { "ussr": "ZSRR", - "germany": "German", + "germany": "Niemcy", "usa": "Amerykański", "china": "Chiński", "uk": "Wielkiej Brytanii", "france": "Francuski", "japan": "Japoński", - "european": "European", - "other": "Hybrid" + "european": "Europa", + "other": "Hybryda" }, "tank_class_short": { "-1": "unrecognized", - "0": "Light", - "1": "Medium", - "2": "Heavy", + "0": "Lekki", + "1": "Średni", + "2": "Ciężki", "3": "TD" }, "tank_class_short_plural_lowercase": { - "0": "lights", - "1": "mediums", - "2": "heavies", + "0": "lekkie", + "1": "średnie", + "2": "ciężkie", "3": "TDs" }, "tank_class_medium": { "-1": "unrecognized", "0": "Lekki", - "1": "Medium", - "2": "Heavy", - "3": "Tank destroyer" + "1": "Średni", + "2": "Ciężki", + "3": "Niszczyciel czołgów" }, "tree_type": { "-1": "unrecognized", @@ -856,7 +856,7 @@ "hull": "Hull", "turret": "Turret", "hard": "Hard", - "medium": "Medium", + "medium": "Średni", "soft": "Soft", "effective": "Effective" }, @@ -1066,19 +1066,19 @@ "speedBackwards": "Backwards", "hardTerrainCoefficient": "Hard", "hardTerrainCoefficientRaw": "Hard", - "mediumTerrainCoefficient": "Medium", - "mediumTerrainCoefficientRaw": "Medium", + "mediumTerrainCoefficient": "Średni", + "mediumTerrainCoefficientRaw": "Średni", "softTerrainCoefficient": "Soft", "softTerrainCoefficientRaw": "Soft", "enginePower": "Engine power", "powerToWeightRatioHardTerrain": "Hard", - "powerToWeightRatioMediumTerrain": "Medium", + "powerToWeightRatioMediumTerrain": "Średni", "powerToWeightRatioSoftTerrain": "Soft", "weight": "Weight", "turretTraverseSpeed": "Turret traverse speed", "gunTraverseSpeed": "Gun traverse speed", "hullTraverseHardTerrain": "Hard", - "hullTraverseMediumTerrain": "Medium", + "hullTraverseMediumTerrain": "Średni", "hullTraverseSoftTerrain": "Soft", "health": "Health", "fireChance": "Fire chance", @@ -1181,7 +1181,7 @@ "table": { "tanks": { "header": "Tank", - "total": "Total" + "total": "Łącznie" }, "stats": { "winrate": "Śr. wygranych", @@ -1239,7 +1239,7 @@ }, "table": { "tank": "Tank", - "total": "Total", + "total": "Łącznie", "remove": "Remove" } }, From 0f1c03d1e58b3e9d4ef731322e70c8978056fca8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Thu, 12 Mar 2026 22:52:18 -0500 Subject: [PATCH 02/56] New translations en.json (Chinese Simplified) --- packages/i18n/strings/zh.json | 86 +++++++++++++++++------------------ 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/packages/i18n/strings/zh.json b/packages/i18n/strings/zh.json index 8fd601af4..c8b842b3f 100644 --- a/packages/i18n/strings/zh.json +++ b/packages/i18n/strings/zh.json @@ -86,8 +86,8 @@ "uk": "英国", "france": "法国", "japan": "日本", - "european": "欧洲国家", - "other": "混合型国家" + "european": "欧盟 (E系)", + "other": "X系" }, "nations_adjectives": { "ussr": "苏联", @@ -97,34 +97,34 @@ "uk": "英国", "france": "法国", "japan": "日本", - "european": "欧洲国家", - "other": "混合型国家" + "european": "欧盟 (E系)", + "other": "X系" }, "tank_class_short": { "-1": "未识别", "0": "轻型坦克", "1": "中型坦克", "2": "重型战车", - "3": "驱逐战车" + "3": "坦克歼击车" }, "tank_class_short_plural_lowercase": { - "0": "轻型战车", - "1": "中型战车", - "2": "重型战车", - "3": "驱逐战车" + "0": "轻型坦克", + "1": "中型坦克", + "2": "重型坦克", + "3": "坦克歼击车" }, "tank_class_medium": { "-1": "未识别", - "0": "轻型战车", - "1": "中型战车", - "2": "重型战车", - "3": "驱逐战车" + "0": "轻型坦克", + "1": "中型坦克", + "2": "重型坦克", + "3": "坦克歼击车" }, "tree_type": { "-1": "未识别", "0": "科技树", - "1": "加值战车", - "2": "收藏家战车" + "1": "金币车", + "2": "收藏车" }, "regions": { "normal": { @@ -140,8 +140,8 @@ }, "leagues": { "diamond": "钻石", - "platinum": "白金", - "gold": "黃金", + "platinum": "铂金", + "gold": "黄金", "silver": "白银", "bronze": "青铜" }, @@ -210,7 +210,7 @@ "good": "好", "very_good": "非常好", "great": "很好", - "unicum": "極品", + "unicum": "极品", "super_unicum": "超强势玩家" } }, @@ -256,7 +256,7 @@ "description": "公会名称或标签" }, "tank": { - "name": "战车", + "name": "坦克", "description": "要获取战绩的坦克" }, "username": { @@ -269,8 +269,8 @@ "description": "国别" }, "class": { - "name": "战车车型", - "description": "战车车型" + "name": "坦克车型", + "description": "坦克车型" }, "type": { "name": "战车类型", @@ -320,7 +320,7 @@ } }, "commands": { - "dead": "# Stat Commands Are Dead\n\nThe BlitzKit Discord bot used to use BlitzStars to fetch periodic statistics. BlitzStars has enabled aggressive Cloudflare protections; hence, disabling BlitzKit from using BlitzStar's API. This has impacted the following commands:\n\n- `/stats`\n- `/today`\n- `/breakdown`\n- `/evolution`\n- `/full-stats`\n\nPlease use [Aftermath]() as an alternative which is completely independent of BlitzStars. BlitzKit-hosted stat commands will return in the near future.", + "dead": "# 统计指令现已停用\nBlitzKit Discord 机器人此前依赖 BlitzStars 获取周期性的统计数据。由于 BlitzStars 已启用严格的 Cloudflare 防护,导致 BlitzKit 无法继续使用其 API。这已导致以下指令失效:\n/统计\n/今日\n/损坏\n/演变\n/完整统计\n请使用 [Aftermath]() \n作为完全独立于 BlitzStars 的替代方案。由 BlitzKit 托管的统计指令将在近期内恢复。", "replay": { "name": "回放", "description": "显示重播结果", @@ -427,8 +427,8 @@ "description": "玩家数据统计" }, "tank": { - "name": "战车", - "description": "战车数据统计" + "name": "坦克", + "description": "坦克数据统计" } } }, @@ -564,15 +564,15 @@ }, "today": { "name": "今日", - "description": "今天玩过的战车和统计资料" + "description": "今天玩过的坦克和统计数据" }, "stats": { "name": "统计资料", "description": "一段时间内的快速统计" }, "owned_tanks": { - "name": "已拥有的战车", - "description": "显示该阶级中所有您已拥有的战车", + "name": "已拥有的坦克", + "description": "在一个等级中显示所有已拥有的坦克", "body": { "title": "# {name} 所拥有的 {tier} 阶坦克\n\n" } @@ -585,7 +585,7 @@ "view_channels": "查看频道:需要找到重新整理按钮使用的讯息", "read_message_history": "读取消息历史: 需要找到消息以刷新", "attach_files": "附加文件:需要将图像添加到基于图像的命令", - "external_emojis": "外部表情符号:需要添加国家旗帜和战车类别" + "external_emojis": "外部表情:需要添加国家旗帜和坦克等级表情" } }, "ping": { @@ -602,7 +602,7 @@ }, "wotb": { "name": "战车世界闪击战", - "description": "测试战车世界闪击战的ping值(延迟值)" + "description": "测试坦克世界闪击战的ping值(延迟值)" } } }, @@ -673,7 +673,7 @@ "search_bar_hint": "搜寻战车……", "recent": "最近查看的", "select_all": "全选", - "count_singular": "1辆战车", + "count_singular": "1 辆坦克", "count_plural": "{count} 辆坦克", "sorting_by": "按 {name} 排序", "clear": "清除", @@ -681,7 +681,7 @@ "passive": "{name} (被动)", "active": "{name} (主动)", "no_tanks_found": { - "body": "找不到战车。", + "body": "未找到坦克。", "search_again": "请尝试重新搜索。", "clear_filters": "请尝试清除筛选。" }, @@ -695,11 +695,11 @@ "survivability.volume": "体积", "survivability.length": "长度", "fire.dpm": "标准炮弹 每分钟伤害血量", - "fire.dpmPremium": "加值炮弹 每分钟伤害血量", + "fire.dpmPremium": "金币炮弹 每分钟伤害值", "fire.reload": "装填时间", "fire.caliber": "口径", "fire.standardPenetration": "标准炮弹穿透力", - "fire.premiumPenetration": "加值炮弹穿透力", + "fire.premiumPenetration": "金币炮弹穿透力", "fire.tertiaryPenetration": "第三种炮弹穿透力", "fire.damage": "炮弹伤害值", "fire.moduleDamage": "模组伤害值", @@ -750,8 +750,8 @@ "dismiss": "取消" }, "discord": { - "join_short": "加入超級酷的人群!", - "join_long": "加入我們的Discord社群,和超酷的人一起聊天!", + "join_short": "加入超级酷的人群!", + "join_long": "加入我们的Discord社群,和超酷的人一起聊天!", "action": "Discord" }, "hero": { @@ -765,7 +765,7 @@ "title": "其他酷炫的项目" }, "help_translate": "请帮忙将 {name} 翻译成 {language}!", - "seo_description": "战车世界闪击战 全方位工具" + "seo_description": "坦克世界闪击战 全方位工具" }, "docs": { "patches": { @@ -800,7 +800,7 @@ "proceed": "继续操作" }, "generate": "创建游玩列表", - "name": "遊玩列表", + "name": "游玩列表", "description": "坦克游玩列表生成器", "seo_description": "想不到在坦克世界闪击战玩什么? 使用BlitzKit 游玩列表来获得建议!", "button": "生成", @@ -961,7 +961,7 @@ "type": "战车类型", "dev_id": "开发参数:ID", "purchase": "购买价格", - "restoration": "恢复战车价格", + "restoration": "恢复坦克价格", "sale": "出售价格", "research": "研发所需经验" }, @@ -1056,10 +1056,10 @@ "dispersionGunDamaged": "主炮损坏时", "gunDepression": "俯角", "gunElevation": "仰角", - "gunFrontalDepression": "车辆前部俯角", - "gunFrontalElevation": "车辆前部仰角", - "gunRearDepression": "车辆後部俯角", - "gunRearElevation": "车辆後部仰角", + "gunFrontalDepression": "车体前部俯角", + "gunFrontalElevation": "车体前部仰角", + "gunRearDepression": "车体后部俯角", + "gunRearElevation": "车体后部仰角", "azimuthLeft": "左射界", "azimuthRight": "右射界", "speedForwards": "最高前进速度", @@ -1259,7 +1259,7 @@ "description": "用于串流的嵌入", "seo_description": "创建具有极高自订化的《坦克世界:闪击战》串流嵌入功能", "coming_soon": "更多嵌入功能即将推出。", - "suggest": "建议与想法", + "suggest": "建议与想法。", "preview": { "title": "示例预览", "upload": "上传测试背景" From e67970d2b9df4b4f637f031cedba7a6b73b3bb72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Mon, 16 Mar 2026 16:55:46 -0500 Subject: [PATCH 03/56] New translations en.json (Polish) --- packages/i18n/strings/pl.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/i18n/strings/pl.json b/packages/i18n/strings/pl.json index 24fd45f14..a34582c77 100644 --- a/packages/i18n/strings/pl.json +++ b/packages/i18n/strings/pl.json @@ -1,7 +1,7 @@ { "test": { - "default": "", - "long": ".", + "default": "test", + "long": "This is a long test string. You MUST NEVER see this in the UI. My favorite fruit is {fruit} because it has the color of {color}. I like it so much that I will say its name 3 times! {fruit}! {fruit}! {fruit}! Once again, it's {color}, not {not_color}.", "fox": "Szybki brązowy lis przeskoczył nad leniwym psem." }, "common": { @@ -10,7 +10,7 @@ "m": "{value}m", "mm": "{value}mm", "deg": "{value}°", - "hp": "Wytrzymałość", + "hp": "{value}hp", "x": "x{value}", "percentage": "{value}%", "deg_s": "{value}°/s", @@ -19,7 +19,7 @@ "gun_types": { "auto_loader": "Samo ładowacz", "auto_reloader": "Automatyczne przeładowanie", - "regular": "" + "regular": "Regular" }, "shells": { "ap": "AP", From 454c526666772aa94ee9b60cade8bfe13383d2a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:24:41 -0500 Subject: [PATCH 04/56] New translations en.json (Polish) --- packages/i18n/strings/pl.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/i18n/strings/pl.json b/packages/i18n/strings/pl.json index a34582c77..667d5801e 100644 --- a/packages/i18n/strings/pl.json +++ b/packages/i18n/strings/pl.json @@ -210,7 +210,7 @@ "good": "Dobrze", "very_good": "Bardzo dobrze", "great": "Świetne", - "unicum": "Unikalny ", + "unicum": "Unikalny", "super_unicum": "Bardzo unikalny" } }, @@ -236,7 +236,7 @@ "description": "Kariera" }, "custom": { - "name": "Niestandardowy", + "name": "custom", "description": "Zakres niestandardowy", "options": { "start": { From 30f94752086535d0e3fd75c23f0cce337807f779 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Thu, 19 Mar 2026 09:19:28 -0500 Subject: [PATCH 05/56] feat: disable bot --- .github/workflows/host-bot.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/host-bot.yml b/.github/workflows/host-bot.yml index 8503fb8b2..e7c47fb7c 100644 --- a/.github/workflows/host-bot.yml +++ b/.github/workflows/host-bot.yml @@ -1,13 +1,7 @@ name: Host on: - push: - branches: main - schedule: - - cron: "0 */5 * * *" workflow_dispatch: - release: - types: [created, published, released, edited] concurrency: group: ${{ github.workflow }}-${{ github.ref }} From c365993541021209af256ee519c4e45af9bdd803 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Thu, 19 Mar 2026 09:21:58 -0500 Subject: [PATCH 06/56] feat: remove discord bot . --- packages/website/src/constants/tools.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/website/src/constants/tools.ts b/packages/website/src/constants/tools.ts index 4dcb9ec69..100979a14 100644 --- a/packages/website/src/constants/tools.ts +++ b/packages/website/src/constants/tools.ts @@ -55,11 +55,6 @@ export const tools: Record = { id: "session", button: "blue", }, - discord: { - id: "discord", - href: "https://discord.com/application-directory/1097673957865443370", - button: "indigo", - }, tier_list: { id: "tier-list", strings: "tier_list", From ed252d5dfedada65449557c2995e158bd2fece33 Mon Sep 17 00:00:00 2001 From: GonnaHetzMe Date: Mon, 23 Mar 2026 13:17:42 +0100 Subject: [PATCH 07/56] Reset localTranslation for model extraction --- packages/scripts/src/core/blitz/extractModel/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/scripts/src/core/blitz/extractModel/index.ts b/packages/scripts/src/core/blitz/extractModel/index.ts index c535c86c6..362898414 100644 --- a/packages/scripts/src/core/blitz/extractModel/index.ts +++ b/packages/scripts/src/core/blitz/extractModel/index.ts @@ -170,6 +170,7 @@ export async function extractModel(vfs: AbstractVFS, path: string) { break; case "TransformComponent": { + component["tc.localTranslation"] = [0, 0, 0]; // Game when is loading model resets position to [0, 0, 0], so any set value is ignored. node.setTranslation(component["tc.localTranslation"]); node.setRotation(component["tc.localRotation"]); node.setScale(component["tc.localScale"]); From a2abfa7f85140e7c1ac907ab3afe28171e7b42f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Mon, 23 Mar 2026 21:56:33 -0500 Subject: [PATCH 08/56] fix: v-stabs now give 12% --- .../src/core/blitzkit/tankCharacteristics.ts | 88 +++++++++---------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/packages/website/src/core/blitzkit/tankCharacteristics.ts b/packages/website/src/core/blitzkit/tankCharacteristics.ts index dcab1976c..ccff1c836 100644 --- a/packages/website/src/core/blitzkit/tankCharacteristics.ts +++ b/packages/website/src/core/blitzkit/tankCharacteristics.ts @@ -76,7 +76,7 @@ export function tankCharacteristics( tankModelDefinition: ModelDefinition; equipmentDefinitions: EquipmentDefinitions; provisionDefinitions: ProvisionDefinitions; - } + }, ) { const preset = equipmentDefinitions.presets[tank.equipment_preset]; const turretModelDefinition = tankModelDefinition.turrets[turret.id]; @@ -138,7 +138,7 @@ export function tankCharacteristics( provisionDefinitions.provisions[provision].crew ? total + provisionDefinitions.provisions[provision].crew! / 100 : total, - 0 + 0, ) + (hasImprovedVentilation ? 0.08 : 0); const commanderMastery = 1 + provisionCrewBonus; const loaderMastery = @@ -158,13 +158,13 @@ export function tankCharacteristics( coefficient( [applyReactiveArmor && shell.type !== ShellType.HE, -0.27], [applyDynamicArmor, -0.1], - [applySpallLiner && shell.type === ShellType.HE, -0.2] + [applySpallLiner && shell.type === ShellType.HE, -0.2], ); const assaultDamageCoefficient = gun.assault_ranges && gun.assault_ranges.types.includes(shell.type) - ? gun.assault_ranges.ranges.find( - ({ distance }) => distance >= assaultDistance - )?.factor ?? 0 + ? (gun.assault_ranges.ranges.find( + ({ distance }) => distance >= assaultDistance, + )?.factor ?? 0) : 1; const moduleDamageCoefficient = coefficient([hasTungsten, 0.15]); const reloadCoefficient = @@ -178,16 +178,16 @@ export function tankCharacteristics( const healthCoefficient = coefficient( [hasSandbagArmor, 0.03], [hasEnhancedSandbagArmor, 0.06], - [hasImprovedAssembly, 0.04] + [hasImprovedAssembly, 0.04], ); const shellVelocityCoefficient = coefficient( [hasSupercharger, 0.35], - [hasImprovedGunPowder, 0.3] + [hasImprovedGunPowder, 0.3], ); const aimTimeCoefficient = coefficient( [hasEnhancedGunLayingDrive, -0.15], - [hasReticleCalibration, -0.3] + [hasReticleCalibration, -0.3], ) * coefficient([true, degressiveStat(gunnerMastery)]); const dispersionStillCoefficient = coefficient([hasRefinedGun, -0.15], [hasReticleCalibration, -0.3]) * @@ -197,20 +197,20 @@ export function tankCharacteristics( -0.12, ]); const dispersionHullTraverseCoefficient = coefficient( - [hasVerticalStabilizer, -0.15], - [true, -crewSkills.smooth_turn / 100] + [hasVerticalStabilizer, -0.12], + [true, -crewSkills.smooth_turn / 100], ); const dispersionAfterShotCoefficient = coefficient( - [hasVerticalStabilizer, -0.15], - [true, -crewSkills.soft_recoil / 100] + [hasVerticalStabilizer, -0.12], + [true, -crewSkills.soft_recoil / 100], ); const dispersionMovingCoefficient = coefficient( - [hasVerticalStabilizer, -0.15], - [true, -crewSkills.smooth_driving / 100] + [hasVerticalStabilizer, -0.12], + [true, -crewSkills.smooth_driving / 100], ); const dispersionTurretTraverseCoefficient = coefficient( - [hasVerticalStabilizer, -0.15], - [true, -crewSkills.smooth_turret * (2 / 100)] + [hasVerticalStabilizer, -0.12], + [true, -crewSkills.smooth_turret * (2 / 100)], ); const enginePowerCoefficient = coefficient( [ @@ -225,7 +225,7 @@ export function tankCharacteristics( [hasStandardFuel, 0.03], [hasImprovedFuel, 0.1], [hasGearOil, 0.03], - [hasImprovedGearOil, 0.06] + [hasImprovedGearOil, 0.06], ); const turretTraverseCoefficient = coefficient([hasStandardFuel, 0.03], [hasImprovedFuel, 0.1]) * @@ -234,7 +234,7 @@ export function tankCharacteristics( coefficient( [hasImprovedControl, 0.11], [hasImprovedEnginePowerBoost, 0.01], - [true, crewSkills.virtuoso / 100] + [true, crewSkills.virtuoso / 100], ) * coefficient([true, progressiveStat(driverMastery)]); const resistanceHardCoefficient = @@ -253,22 +253,22 @@ export function tankCharacteristics( tank.class === TankClass.HEAVY ? 0.06 : tank.class === TankClass.MEDIUM - ? 0.08 - : tank.class === TankClass.LIGHT - ? 0.11 - : 0.04, + ? 0.08 + : tank.class === TankClass.LIGHT + ? 0.11 + : 0.04, ]) * coefficient([true, progressiveStat(commanderMastery)]); const fireChanceCoefficient = coefficient([hasProtectiveKit, -0.2]); const speedForwardsSum = sum( [hasImprovedEnginePowerBoost, 4], [hasGearOil, 2], - [hasImprovedGearOil, 4] + [hasImprovedGearOil, 4], ); const speedBackwardsSum = sum( [hasImprovedEnginePowerBoost, 8], [hasGearOil, 2], - [hasImprovedGearOil, 4] + [hasImprovedGearOil, 4], ); const camouflageCoefficientMoving = sum( [ @@ -278,8 +278,8 @@ export function tankCharacteristics( tank.class === TankClass.TANK_DESTROYER ? 0.04 : tank.class === TankClass.HEAVY - ? 0.03 - : 0.02, + ? 0.03 + : 0.02, ]), ], [ @@ -287,11 +287,11 @@ export function tankCharacteristics( tank.class === TankClass.HEAVY ? 0.02 : tank.class === TankClass.MEDIUM - ? 0.04 - : tank.class === TankClass.LIGHT - ? 0.07 - : 0.1, - ] + ? 0.04 + : tank.class === TankClass.LIGHT + ? 0.07 + : 0.1, + ], ); const camouflageCoefficientStill = sum( [ @@ -302,10 +302,10 @@ export function tankCharacteristics( tank.class === TankClass.TANK_DESTROYER ? 0.04 : tank.class === TankClass.HEAVY - ? 0.03 - : 0.02, + ? 0.03 + : 0.02, ], - [true, crewSkills.camouflage * (3 / 100)] + [true, crewSkills.camouflage * (3 / 100)], ), ], [ @@ -313,18 +313,18 @@ export function tankCharacteristics( tank.class === TankClass.HEAVY ? 0.04 : tank.class === TankClass.MEDIUM - ? 0.08 - : tank.class === TankClass.LIGHT - ? 0.14 - : 0.2, - ] + ? 0.08 + : tank.class === TankClass.LIGHT + ? 0.14 + : 0.2, + ], ); const size = normalizeBoundingBox( unionBoundingBox( tankModelDefinition.bounding_box, - turretModelDefinition.bounding_box - ) + turretModelDefinition.bounding_box, + ), ); const weightKg = tank.weight + engine.weight + track.weight + turret.weight + gun.weight; @@ -344,7 +344,7 @@ export function tankCharacteristics( shell, damageCoefficient, reloadCoefficient, - intraClipCoefficient + intraClipCoefficient, ); const intraClip = gun.gun_type?.$case === "regular" @@ -398,7 +398,7 @@ export function tankCharacteristics( const shellReloads = gun.gun_type!.$case === "auto_reloader" ? gun.gun_type!.value.shell_reloads.map( - (reload) => reload * reloadCoefficient + (reload) => reload * reloadCoefficient, ) : undefined; const shellReload = From 22faa6d294d36ba5c67f23f7bd821a0d0a89daf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Mon, 23 Mar 2026 22:07:20 -0500 Subject: [PATCH 09/56] fix: stale compare indices --- .../src/components/Compare/CompareTable.tsx | 28 +++++++++---------- .../src/components/Compare/TankCard.tsx | 7 ++--- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/packages/website/src/components/Compare/CompareTable.tsx b/packages/website/src/components/Compare/CompareTable.tsx index 62029fb73..2829fae15 100644 --- a/packages/website/src/components/Compare/CompareTable.tsx +++ b/packages/website/src/components/Compare/CompareTable.tsx @@ -105,13 +105,13 @@ export function CompareTable({ stats }: CompareTableProps) { crewSkills[skill] === 0 ? Var("gray-11") : permanentSkills.includes(skill) - ? Var("crimson-11") - : Var("amber-11"), + ? Var("crimson-11") + : Var("amber-11"), }} /> ))} - ) + ), )} @@ -173,19 +173,19 @@ export function CompareTable({ stats }: CompareTableProps) { consumables, camouflage, }, - index + index, ) => { const equipmentPreset = equipmentDefinitions.presets[tank.equipment_preset]; const provisionsList = availableProvisions( tank, gun, - provisionDefinitions + provisionDefinitions, ); const consumablesList = Object.values( - consumableDefinitions.consumables + consumableDefinitions.consumables, ).filter((consumable) => - checkConsumableProvisionInclusivity(consumable, tank, gun) + checkConsumableProvisionInclusivity(consumable, tank, gun), ); return ( @@ -294,11 +294,11 @@ export function CompareTable({ stats }: CompareTableProps) { {unwrap( provision.id + (provision) => provision.id, )} selected={provisions} disabled={tank.max_provisions === provisions.length} @@ -452,7 +452,7 @@ export function CompareTable({ stats }: CompareTableProps) { CompareEphemeral.mutate((draft) => { draft.members[index].equipmentMatrix = times( 3, - () => times(3, () => 0) + () => times(3, () => 0), ) as EquipmentMatrix; draft.sorting = undefined; }); @@ -501,11 +501,11 @@ export function CompareTable({ stats }: CompareTableProps) { alt={unwrap( consumableDefinitions.consumables[ consumable - ].name + ].name, )} key={consumable} src={asset( - `/icons/consumables/${consumable}.webp` + `/icons/consumables/${consumable}.webp`, )} style={{ left: "50%", @@ -610,7 +610,7 @@ export function CompareTable({ stats }: CompareTableProps) { ); - } + }, )} diff --git a/packages/website/src/components/Compare/TankCard.tsx b/packages/website/src/components/Compare/TankCard.tsx index 3873d2195..6a87f8be6 100644 --- a/packages/website/src/components/Compare/TankCard.tsx +++ b/packages/website/src/components/Compare/TankCard.tsx @@ -55,7 +55,7 @@ export function TankCard({ index, tank }: TankCardProps) { }; }); const closest = distances.reduce((a, b) => - a.distance < b.distance ? a : b + a.distance < b.distance ? a : b, ); dropIndex = closest.index; @@ -85,8 +85,8 @@ export function TankCard({ index, tank }: TankCardProps) { CompareEphemeral.mutate((draft) => { const fromIndex = index; const toIndex = dropIndex > index ? dropIndex - 1 : dropIndex; - const member = draft.members[fromIndex]; + draft.members.splice(fromIndex, 1); draft.members.splice(toIndex, 0, member); }); @@ -99,7 +99,7 @@ export function TankCard({ index, tank }: TankCardProps) { return () => { draggable.current?.removeEventListener("pointerdown", handlePointerDown); }; - }, []); + }, [index]); return ( @@ -141,7 +141,6 @@ export function TankCard({ index, tank }: TankCardProps) { - ); From 4ff8d77460caaa11c56d3a3ab26d675648158752 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Mon, 23 Mar 2026 22:13:29 -0500 Subject: [PATCH 10/56] fix: object review videos --- packages/scripts/src/reviews.ts | 15 ++++--- .../components/Tankopedia/VideoSection.tsx | 40 +++++++++---------- 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/packages/scripts/src/reviews.ts b/packages/scripts/src/reviews.ts index 2affaae30..1eca4395b 100644 --- a/packages/scripts/src/reviews.ts +++ b/packages/scripts/src/reviews.ts @@ -5,6 +5,7 @@ import { Video, youtubers, } from "@blitzkit/core"; +import locales from "@blitzkit/i18n/locales.json"; import { google } from "googleapis"; import { cloneDeep, uniqBy } from "lodash-es"; import { AssetUploader } from "./core/github/assetUploader"; @@ -42,9 +43,11 @@ for (const tank of tanksSanitized) { } try { + const q = `World of Tanks Blitz ${tank.name.locales[locales.default]}`; + const results = await youtube.search.list({ part: ["snippet"], - q: `World of Tanks Blitz ${tank.name}`, + q, }); if (!results.data.items || results.data.items.length === 0) continue; @@ -54,9 +57,9 @@ for (const tank of tanksSanitized) { (item) => item.snippet?.channelId && item.id?.videoId && - youtubers.some(({ id }) => id === item.snippet?.channelId) + youtubers.some(({ id }) => id === item.snippet?.channelId), ), - (item) => item.snippet!.channelId + (item) => item.snippet!.channelId, ); reviews.reviews[tank.id] = { @@ -66,11 +69,13 @@ for (const tank of tanksSanitized) { ({ id: item.id!.videoId!, author: item.snippet!.channelId!, - } satisfies Video) + }) satisfies Video, ), }; - console.log(`${++done} done; found ${items.length} for ${tank.name.locales.en}`); + console.log( + `${++done} done; found ${items.length} for ${tank.name.locales.en}`, + ); await new Promise((resolve) => setTimeout(resolve, 1000 / 5)); } catch (error) { diff --git a/packages/website/src/components/Tankopedia/VideoSection.tsx b/packages/website/src/components/Tankopedia/VideoSection.tsx index 19293ed1b..0c879538b 100644 --- a/packages/website/src/components/Tankopedia/VideoSection.tsx +++ b/packages/website/src/components/Tankopedia/VideoSection.tsx @@ -1,12 +1,12 @@ -import { youtubers } from '@blitzkit/core'; -import { Box, Flex, Heading, Link, Skeleton, Text } from '@radix-ui/themes'; -import { awaitableReviews } from '../../core/awaitables/reviews'; -import { Var } from '../../core/radix/var'; -import { useLocale } from '../../hooks/useLocale'; -import { Duel } from '../../stores/duel'; -import type { MaybeSkeletonComponentProps } from '../../types/maybeSkeletonComponentProps'; -import { PageWrapper } from '../PageWrapper'; -import { VerifiedIcon } from '../VerifiedIcon'; +import { youtubers } from "@blitzkit/core"; +import { Box, Flex, Heading, Link, Skeleton, Text } from "@radix-ui/themes"; +import { awaitableReviews } from "../../core/awaitables/reviews"; +import { Var } from "../../core/radix/var"; +import { useLocale } from "../../hooks/useLocale"; +import { Duel } from "../../stores/duel"; +import type { MaybeSkeletonComponentProps } from "../../types/maybeSkeletonComponentProps"; +import { PageWrapper } from "../PageWrapper"; +import { VerifiedIcon } from "../VerifiedIcon"; const reviews = await awaitableReviews; @@ -47,22 +47,22 @@ export function VideoSection({ skeleton }: MaybeSkeletonComponentProps) { Date: Mon, 23 Mar 2026 22:20:29 -0500 Subject: [PATCH 11/56] fix: compact compare headers --- .../src/components/Compare/CompareRow.tsx | 18 +++++++++--------- .../components/Compare/CompareSectionTitle.tsx | 8 ++++---- .../src/components/StickyRowHeaderCell.tsx | 8 ++++++-- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/packages/website/src/components/Compare/CompareRow.tsx b/packages/website/src/components/Compare/CompareRow.tsx index 566a3741a..fdb317b10 100644 --- a/packages/website/src/components/Compare/CompareRow.tsx +++ b/packages/website/src/components/Compare/CompareRow.tsx @@ -14,7 +14,7 @@ import { StickyRowHeaderCell } from "../StickyRowHeaderCell"; type CompareRowProps = { display?: ( - member: Awaited + member: Awaited, ) => number | string | undefined; deltaType?: CompareCellDirection; decimals?: number; @@ -46,7 +46,7 @@ export function CompareRow({ const values = stats.map((stat) => typeof props.value === "function" ? props.value(stat)! - : (stat[props.value] as number) + : (stat[props.value] as number), ); const id = useRef(Math.random()); const name = @@ -56,10 +56,10 @@ export function CompareRow({ return ( - + @@ -156,7 +156,7 @@ export function CompareRow({ ( {`${deltaPercentage > 0 ? "+" : ""}${Math.round( - deltaPercentage * 100 + deltaPercentage * 100, )}%`} ) diff --git a/packages/website/src/components/Compare/CompareSectionTitle.tsx b/packages/website/src/components/Compare/CompareSectionTitle.tsx index 545481905..0c0f6cc68 100644 --- a/packages/website/src/components/Compare/CompareSectionTitle.tsx +++ b/packages/website/src/components/Compare/CompareSectionTitle.tsx @@ -1,7 +1,7 @@ -import { Heading, Table } from '@radix-ui/themes'; -import { times } from 'lodash-es'; -import { CompareEphemeral } from '../../stores/compareEphemeral'; -import { StickyColumnHeaderCell } from '../StickyColumnHeaderCell'; +import { Heading, Table } from "@radix-ui/themes"; +import { times } from "lodash-es"; +import { CompareEphemeral } from "../../stores/compareEphemeral"; +import { StickyColumnHeaderCell } from "../StickyColumnHeaderCell"; export function CompareSectionTitle({ children }: { children: string }) { const memberCount = CompareEphemeral.use((state) => state.members.length); diff --git a/packages/website/src/components/StickyRowHeaderCell.tsx b/packages/website/src/components/StickyRowHeaderCell.tsx index e3aaa61bf..d7f6a300c 100644 --- a/packages/website/src/components/StickyRowHeaderCell.tsx +++ b/packages/website/src/components/StickyRowHeaderCell.tsx @@ -1,12 +1,16 @@ import { Table } from "@radix-ui/themes"; import type { RowHeaderCellProps } from "@radix-ui/themes/src/components/table.js"; -export function StickyRowHeaderCell({ style, ...props }: RowHeaderCellProps) { +interface Props extends RowHeaderCellProps { + left?: string | number; +} + +export function StickyRowHeaderCell({ style, left = 0, ...props }: Props) { return ( Date: Mon, 23 Mar 2026 22:36:10 -0500 Subject: [PATCH 12/56] fix: use turret mantlet --- .../MixerScene/components/Model.tsx | 53 +++++++++++++++++-- 1 file changed, 48 insertions(+), 5 deletions(-) diff --git a/packages/website/src/components/MixerScene/components/Model.tsx b/packages/website/src/components/MixerScene/components/Model.tsx index 25fa9c211..4f5e583d5 100644 --- a/packages/website/src/components/MixerScene/components/Model.tsx +++ b/packages/website/src/components/MixerScene/components/Model.tsx @@ -84,7 +84,7 @@ export function Model() { useEffect(() => { function handleModelTransform( - event: QuicklimeEvent + event: QuicklimeEvent, ) { turretGroup.current.rotation.z = event.data.yaw; gunGroup.current.rotation.x = event.data.pitch; @@ -171,6 +171,49 @@ export function Model() { turretModel.gun_origin.y, ]} > + + {turretNodes.map((node) => { + const isCurrentMantlet = + node.name === + `gun_${turretModel.guns[turret.turret.guns.at(-1)!.id].model_id.toString().padStart(2, "0")}_mask`; + // const isCurrentGun = + // node.name === + // `gun_${gunModel.model_id.toString().padStart(2, "0")}`; + const isVisible = isCurrentMantlet; + + if (!isVisible) return null; + + return jsxTree(node, { + mesh(_, props, key) { + return ( + { + enablePitchRotation.current = true; + handlePointerDown(event); + }} + /> + ); + }, + }); + })} + + {gunNodes.map((node) => { - const isCurrentMantlet = - node.name === - `gun_${gunModel.model_id.toString().padStart(2, "0")}_mask`; + // const isCurrentMantlet = + // node.name === + // `gun_${gunModel.model_id.toString().padStart(2, "0")}_mask`; const isCurrentGun = node.name === `gun_${gunModel.model_id.toString().padStart(2, "0")}`; - const isVisible = isCurrentGun || isCurrentMantlet; + const isVisible = isCurrentGun; if (!isVisible) return null; From afec6d98513afafba413e99e6fcb73b61fb22940 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Mon, 23 Mar 2026 22:41:34 -0500 Subject: [PATCH 13/56] feat: enable all tiers --- packages/website/src/core/blitzkit/curateMixer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/website/src/core/blitzkit/curateMixer.ts b/packages/website/src/core/blitzkit/curateMixer.ts index da73c117f..021c296a3 100644 --- a/packages/website/src/core/blitzkit/curateMixer.ts +++ b/packages/website/src/core/blitzkit/curateMixer.ts @@ -8,7 +8,7 @@ const tanks = Object.values(tankDefinitions.tanks).filter((tank) => { const turret = tank.turrets.at(-1)!; const turretModel = tankModel.turrets[turret.id]; - return tank.tier >= 10 && !turretModel.yaw; + return !turretModel.yaw; }); export function curateMixer() { From 1a3517e035b88d655ba2854b43689a7bffeed439 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Mon, 23 Mar 2026 22:50:34 -0500 Subject: [PATCH 14/56] feat: logs --- docs/changelogs/1.29.16.md | 18 ++++++++++++++++++ package.json | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 docs/changelogs/1.29.16.md diff --git a/docs/changelogs/1.29.16.md b/docs/changelogs/1.29.16.md new file mode 100644 index 000000000..c111d385d --- /dev/null +++ b/docs/changelogs/1.29.16.md @@ -0,0 +1,18 @@ +# BlitzKit 1.29.16 + +Thank you to [GonnaHetzMe](https://github.com/karelpak1) for your contributions this update. + +## Fixes + +- [GonnaHetzMe] The turret for Centurion I is no longer offset from the body + - Please allow up to 24 hours for the model to update +- Vertical Stabilizers now give the correct 12% buff instead of 15% +- Re-ordering tanks in Compare now works once again +- Fixed review videos from being about the Object 452K across all tanks + - Please allow up to 2 weeks for all tanks to refresh their videos +- Tanks in Mixer with oscillating turrets are not handled properly + +## Features + +- Headings in the Compare tool are now even more compact for mobile devices +- Enabled all tiers for the randomizer in Mixer diff --git a/package.json b/package.json index c9b71bd33..efd85330d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "blitzkit", - "version": "1.29.15", + "version": "1.29.16", "license": "BlitzKit License", "private": true, "scripts": { From fe9b543a75fd2d680d87ff6ba48bce86c69b4581 Mon Sep 17 00:00:00 2001 From: GonnaHetzMe Date: Wed, 25 Mar 2026 00:43:30 +0100 Subject: [PATCH 15/56] fix: include non-tier1 roots in tank tech tree routes --- .../website/src/components/Tankopedia/TechTreeSection/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/website/src/components/Tankopedia/TechTreeSection/index.tsx b/packages/website/src/components/Tankopedia/TechTreeSection/index.tsx index dc7df877b..2f83cb9ac 100644 --- a/packages/website/src/components/Tankopedia/TechTreeSection/index.tsx +++ b/packages/website/src/components/Tankopedia/TechTreeSection/index.tsx @@ -26,7 +26,7 @@ export function TechTreeSection({ skeleton }: MaybeSkeletonComponentProps) { function extend(line: Line): Line[] { const root = tankDefinitions.tanks[line.at(-1)!]; - if (root.ancestors === undefined || root.tier === 1) { + if (root.ancestors === undefined || root.ancestors.length === 0 || root.tier === 1) { return [line]; } else { if (root.ancestors.length === 1 || root.tier === 2) { From 41882ddf23bab978bf80be0d664ae771c65b1d12 Mon Sep 17 00:00:00 2001 From: GonnaHetzMe Date: Wed, 25 Mar 2026 01:12:06 +0100 Subject: [PATCH 16/56] fix: initialize tank quick inputs from current model transform --- .../Options/components/QuickInputs/index.tsx | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/packages/website/src/components/Tankopedia/HeroSection/components/Options/components/QuickInputs/index.tsx b/packages/website/src/components/Tankopedia/HeroSection/components/Options/components/QuickInputs/index.tsx index 97cb6faec..03e958c82 100644 --- a/packages/website/src/components/Tankopedia/HeroSection/components/Options/components/QuickInputs/index.tsx +++ b/packages/website/src/components/Tankopedia/HeroSection/components/Options/components/QuickInputs/index.tsx @@ -27,27 +27,29 @@ export function QuickInputs() { const hasDownImprovedVerticalStabilizer = useEquipment(124); useEffect(() => { - function handleTransformEvent( - event: QuicklimeEvent - ) { + function syncInputValues(data: ModelTransformEventData) { if (!pitchInput.current || !yawInput.current) return; pitchInput.current.value = ( - radToDeg(event.data.pitch) + + radToDeg(data.pitch) + (tankModelDefinition.initial_turret_rotation?.pitch ?? 0) ).toFixed(1); + yawInput.current.value = radToDeg(data.yaw).toFixed(1); + } - if (event.data.yaw === undefined) return; - - yawInput.current.value = radToDeg(event.data.yaw).toFixed(1); + function handleTransformEvent( + event: QuicklimeEvent + ) { + syncInputValues(event.data); } modelTransformEvent.on(handleTransformEvent); + syncInputValues(modelTransformEvent.last!); return () => { modelTransformEvent.off(handleTransformEvent); }; - }, []); + }, [initialGunPitch]); return ( { const value = Number(yawInput.current!.value); @@ -113,7 +115,9 @@ export function QuickInputs() { size="1" radius="full" style={{ flex: 1, textAlign: "right" }} - defaultValue="0.0" + defaultValue={( + radToDeg(modelTransformEvent.last!.pitch) + initialGunPitch + ).toFixed(1)} onBlur={() => { const value = Number(pitchInput.current!.value); if (isNaN(value)) { From e6fcfdb51488d75fb007c44f890f9ec4729b538f Mon Sep 17 00:00:00 2001 From: GonnaHetzMe Date: Wed, 25 Mar 2026 02:09:07 +0100 Subject: [PATCH 17/56] Feat: dev name --- .../core/src/protos/tank_definitions.proto | 1 + packages/core/src/protos/tank_definitions.ts | 18 +++++++ packages/i18n/strings/en.json | 1 + .../Armor/components/ArmorPlateDisplay.tsx | 26 +++++++++- .../Tankopedia/MetaSection/index.tsx | 52 ++++++++++++++++++- 5 files changed, 94 insertions(+), 4 deletions(-) diff --git a/packages/core/src/protos/tank_definitions.proto b/packages/core/src/protos/tank_definitions.proto index a827ef158..cd36878cf 100644 --- a/packages/core/src/protos/tank_definitions.proto +++ b/packages/core/src/protos/tank_definitions.proto @@ -39,6 +39,7 @@ message TankDefinition { required float camouflage_onFire = 29; required string equipment_preset = 30; required uint32 weight = 31; + optional string dev_name = 32; } message ResearchCost { diff --git a/packages/core/src/protos/tank_definitions.ts b/packages/core/src/protos/tank_definitions.ts index 08431fa77..f8358e187 100644 --- a/packages/core/src/protos/tank_definitions.ts +++ b/packages/core/src/protos/tank_definitions.ts @@ -316,6 +316,7 @@ export interface TankDefinition { camouflage_onFire: number; equipment_preset: string; weight: number; + dev_name: string; } export interface TankDefinition_RolesEntry { @@ -693,6 +694,7 @@ function createBaseTankDefinition(): TankDefinition { camouflage_onFire: 0, equipment_preset: "", weight: 0, + dev_name: "", }; } @@ -803,6 +805,9 @@ export const TankDefinition: MessageFns = { if (message.weight !== 0) { writer.uint32(248).uint32(message.weight); } + if (message.dev_name !== "") { + writer.uint32(258).string(message.dev_name); + } return writer; }, @@ -1094,6 +1099,14 @@ export const TankDefinition: MessageFns = { message.weight = reader.uint32(); continue; } + case 32: { + if (tag !== 258) { + break; + } + + message.dev_name = reader.string(); + continue; + } } if ((tag & 7) === 4 || tag === 0) { break; @@ -1181,6 +1194,7 @@ export const TankDefinition: MessageFns = { ? globalThis.String(object.equipment_preset) : "", weight: isSet(object.weight) ? globalThis.Number(object.weight) : 0, + dev_name: isSet(object.dev_name) ? globalThis.String(object.dev_name) : "", }; }, @@ -1282,6 +1296,9 @@ export const TankDefinition: MessageFns = { if (message.weight !== 0) { obj.weight = Math.round(message.weight); } + if (message.dev_name !== "") { + obj.dev_name = message.dev_name; + } return obj; }, @@ -1343,6 +1360,7 @@ export const TankDefinition: MessageFns = { message.camouflage_onFire = object.camouflage_onFire ?? 0; message.equipment_preset = object.equipment_preset ?? ""; message.weight = object.weight ?? 0; + message.dev_name = object.dev_name ?? ""; return message; }, }; diff --git a/packages/i18n/strings/en.json b/packages/i18n/strings/en.json index 8b0dba23f..c5bc8b85f 100644 --- a/packages/i18n/strings/en.json +++ b/packages/i18n/strings/en.json @@ -1083,6 +1083,7 @@ "tier": "Tier", "type": "Type", "dev_id": "DEV: ID", + "dev_name": "DEV: NAME", "purchase": "Purchase price", "restoration": "Restoration price", "sale": "Sale price", diff --git a/packages/website/src/components/Armor/components/ArmorPlateDisplay.tsx b/packages/website/src/components/Armor/components/ArmorPlateDisplay.tsx index 9bbc2e524..87148680c 100644 --- a/packages/website/src/components/Armor/components/ArmorPlateDisplay.tsx +++ b/packages/website/src/components/Armor/components/ArmorPlateDisplay.tsx @@ -6,11 +6,13 @@ import { IconButton, Text, TextField, + Tooltip, } from "@radix-ui/themes"; import { Html } from "@react-three/drei"; -import { useRef } from "react"; +import { useRef, useState } from "react"; import { radToDeg } from "three/src/math/MathUtils.js"; import { resolveArmorIndex } from "../../../core/blitzkit/resolveArmorIndex"; +import { useLocale } from "../../../hooks/useLocale"; import { App } from "../../../stores/app"; import { Duel } from "../../../stores/duel"; import { Tankopedia } from "../../../stores/tankopedia"; @@ -21,6 +23,8 @@ export function ArmorPlateDisplay() { const highlightArmor = Tankopedia.use((state) => state.highlightArmor); const developerMode = App.useDeferred((state) => state.developerMode, false); const input = useRef(null); + const { strings } = useLocale(); + const [copied, setCopied] = useState(false); if (highlightArmor === undefined) return null; @@ -60,7 +64,25 @@ export function ArmorPlateDisplay() { {developerMode && ( <> - DEV: {highlightArmor.name} + DEV:{" "} + + { + navigator.clipboard.writeText(highlightArmor.name); + setCopied(true); + }} + onPointerLeave={() => setCopied(false)} + > + {highlightArmor.name} + + )} diff --git a/packages/website/src/components/Tankopedia/MetaSection/index.tsx b/packages/website/src/components/Tankopedia/MetaSection/index.tsx index f8d3fe135..787a0b069 100644 --- a/packages/website/src/components/Tankopedia/MetaSection/index.tsx +++ b/packages/website/src/components/Tankopedia/MetaSection/index.tsx @@ -4,7 +4,8 @@ import { TankType, TIER_ROMAN_NUMERALS, } from '@blitzkit/core'; -import { Box, Code, Flex } from '@radix-ui/themes'; +import { Box, Code, Flex, Tooltip } from '@radix-ui/themes'; +import { useState } from 'react'; import { Var } from '../../../core/radix/var'; import { useLocale } from '../../../hooks/useLocale'; import { App } from '../../../stores/app'; @@ -23,6 +24,7 @@ export function MetaSection() { const protagonist = Duel.use((state) => state.protagonist.tank); const ClassIcon = classIcons[protagonist.class]; const { locale, strings } = useLocale(); + const [copied, setCopied] = useState(null); return ( @@ -101,7 +103,53 @@ export function MetaSection() { - {protagonist.id} + + { + navigator.clipboard.writeText(`${protagonist.id}`); + setCopied('id'); + }} + onPointerLeave={() => { + if (copied === 'id') setCopied(null); + }} + > + {protagonist.id} + + + + )} + {developerMode && ( + + + { + if (!protagonist.dev_name) return; + navigator.clipboard.writeText(protagonist.dev_name); + setCopied('name'); + }} + onPointerLeave={() => { + if (copied === 'name') setCopied(null); + }} + > + {protagonist.dev_name ?? '-'} + + )} {protagonist.type === TankType.PREMIUM && ( From 4cdb71201366aeb76f73585715c4320098129964 Mon Sep 17 00:00:00 2001 From: GonnaHetzMe Date: Wed, 25 Mar 2026 11:18:53 +0100 Subject: [PATCH 18/56] feat: add CopyableCode component --- .../Armor/components/ArmorPlateDisplay.tsx | 29 ++--------- .../website/src/components/CopyableCode.tsx | 32 ++++++++++++ .../Tankopedia/MetaSection/index.tsx | 52 +++---------------- 3 files changed, 45 insertions(+), 68 deletions(-) create mode 100644 packages/website/src/components/CopyableCode.tsx diff --git a/packages/website/src/components/Armor/components/ArmorPlateDisplay.tsx b/packages/website/src/components/Armor/components/ArmorPlateDisplay.tsx index 87148680c..fb3fd4b6e 100644 --- a/packages/website/src/components/Armor/components/ArmorPlateDisplay.tsx +++ b/packages/website/src/components/Armor/components/ArmorPlateDisplay.tsx @@ -1,21 +1,19 @@ import { ReloadIcon } from "@radix-ui/react-icons"; import { Card, - Code, Flex, IconButton, Text, TextField, - Tooltip, } from "@radix-ui/themes"; import { Html } from "@react-three/drei"; -import { useRef, useState } from "react"; +import { useRef } from "react"; import { radToDeg } from "three/src/math/MathUtils.js"; import { resolveArmorIndex } from "../../../core/blitzkit/resolveArmorIndex"; -import { useLocale } from "../../../hooks/useLocale"; import { App } from "../../../stores/app"; import { Duel } from "../../../stores/duel"; import { Tankopedia } from "../../../stores/tankopedia"; +import { CopyableCode } from "../../CopyableCode"; import { layerTypeNames } from "./ShotDisplayCard"; import { ArmorType } from "./SpacedArmorScene"; @@ -23,8 +21,6 @@ export function ArmorPlateDisplay() { const highlightArmor = Tankopedia.use((state) => state.highlightArmor); const developerMode = App.useDeferred((state) => state.developerMode, false); const input = useRef(null); - const { strings } = useLocale(); - const [copied, setCopied] = useState(false); if (highlightArmor === undefined) return null; @@ -65,24 +61,9 @@ export function ArmorPlateDisplay() { <> DEV:{" "} - - { - navigator.clipboard.writeText(highlightArmor.name); - setCopied(true); - }} - onPointerLeave={() => setCopied(false)} - > - {highlightArmor.name} - - + + {highlightArmor.name} + )} diff --git a/packages/website/src/components/CopyableCode.tsx b/packages/website/src/components/CopyableCode.tsx new file mode 100644 index 000000000..8877b4b07 --- /dev/null +++ b/packages/website/src/components/CopyableCode.tsx @@ -0,0 +1,32 @@ +import { Code, Tooltip } from "@radix-ui/themes"; +import { useState, type ReactNode } from "react"; +import { useLocale } from "../hooks/useLocale"; + +interface CopyableCodeProps { + copy?: string; + children: ReactNode; +} + +export function CopyableCode({ copy, children }: CopyableCodeProps) { + const [copied, setCopied] = useState(false); + const { strings } = useLocale(); + + return ( + + { + if (!copy) return; + navigator.clipboard.writeText(copy); + setCopied(true); + }} + onPointerLeave={() => setCopied(false)} + > + {children} + + + ); +} diff --git a/packages/website/src/components/Tankopedia/MetaSection/index.tsx b/packages/website/src/components/Tankopedia/MetaSection/index.tsx index 787a0b069..f3276136a 100644 --- a/packages/website/src/components/Tankopedia/MetaSection/index.tsx +++ b/packages/website/src/components/Tankopedia/MetaSection/index.tsx @@ -4,13 +4,13 @@ import { TankType, TIER_ROMAN_NUMERALS, } from '@blitzkit/core'; -import { Box, Code, Flex, Tooltip } from '@radix-ui/themes'; -import { useState } from 'react'; +import { Box, Flex } from '@radix-ui/themes'; import { Var } from '../../../core/radix/var'; import { useLocale } from '../../../hooks/useLocale'; import { App } from '../../../stores/app'; import { Duel } from '../../../stores/duel'; import { classIcons } from '../../ClassIcon'; +import { CopyableCode } from '../../CopyableCode'; import { Listing } from './components/Listing'; const NATIONAL_BANNER_POSITION_OVERRIDES: Record = { @@ -24,7 +24,6 @@ export function MetaSection() { const protagonist = Duel.use((state) => state.protagonist.tank); const ClassIcon = classIcons[protagonist.class]; const { locale, strings } = useLocale(); - const [copied, setCopied] = useState(null); return ( @@ -103,53 +102,18 @@ export function MetaSection() { - - { - navigator.clipboard.writeText(`${protagonist.id}`); - setCopied('id'); - }} - onPointerLeave={() => { - if (copied === 'id') setCopied(null); - }} - > - {protagonist.id} - - + + {protagonist.id} + )} {developerMode && ( - - { - if (!protagonist.dev_name) return; - navigator.clipboard.writeText(protagonist.dev_name); - setCopied('name'); - }} - onPointerLeave={() => { - if (copied === 'name') setCopied(null); - }} - > - {protagonist.dev_name ?? '-'} - - + + {protagonist.dev_name ?? '-'} + )} {protagonist.type === TankType.PREMIUM && ( From 5b9ff7acb37d689408d42d08b0b2b935b8a7030b Mon Sep 17 00:00:00 2001 From: GonnaHetzMe Date: Wed, 25 Mar 2026 17:25:52 +0100 Subject: [PATCH 19/56] feat: CopyableCode styles and remove DEV name fallback --- .../Armor/components/ArmorPlateDisplay.tsx | 7 ++++- .../website/src/components/CopyableCode.tsx | 30 ++++++++++++------- .../Tankopedia/MetaSection/index.tsx | 19 +++++++++--- 3 files changed, 40 insertions(+), 16 deletions(-) diff --git a/packages/website/src/components/Armor/components/ArmorPlateDisplay.tsx b/packages/website/src/components/Armor/components/ArmorPlateDisplay.tsx index fb3fd4b6e..80e54eda4 100644 --- a/packages/website/src/components/Armor/components/ArmorPlateDisplay.tsx +++ b/packages/website/src/components/Armor/components/ArmorPlateDisplay.tsx @@ -61,7 +61,12 @@ export function ArmorPlateDisplay() { <> DEV:{" "} - + {highlightArmor.name} diff --git a/packages/website/src/components/CopyableCode.tsx b/packages/website/src/components/CopyableCode.tsx index 8877b4b07..030d52963 100644 --- a/packages/website/src/components/CopyableCode.tsx +++ b/packages/website/src/components/CopyableCode.tsx @@ -1,29 +1,37 @@ -import { Code, Tooltip } from "@radix-ui/themes"; -import { useState, type ReactNode } from "react"; +import { Code, Tooltip, type CodeProps } from "@radix-ui/themes"; +import { useState } from "react"; import { useLocale } from "../hooks/useLocale"; -interface CopyableCodeProps { +export interface CopyableCodeProps extends CodeProps { copy?: string; - children: ReactNode; } -export function CopyableCode({ copy, children }: CopyableCodeProps) { +export function CopyableCode({ + copy, + onClick, + onPointerLeave, + style, + children, + ...props +}: CopyableCodeProps) { const [copied, setCopied] = useState(false); const { strings } = useLocale(); return ( { + {...props} + style={{ ...(copy ? { cursor: "copy" } : {}), ...style }} + onClick={(event) => { + onClick?.(event); if (!copy) return; navigator.clipboard.writeText(copy); setCopied(true); }} - onPointerLeave={() => setCopied(false)} + onPointerLeave={(event) => { + onPointerLeave?.(event); + setCopied(false); + }} > {children} diff --git a/packages/website/src/components/Tankopedia/MetaSection/index.tsx b/packages/website/src/components/Tankopedia/MetaSection/index.tsx index f3276136a..62f560f5b 100644 --- a/packages/website/src/components/Tankopedia/MetaSection/index.tsx +++ b/packages/website/src/components/Tankopedia/MetaSection/index.tsx @@ -24,6 +24,7 @@ export function MetaSection() { const protagonist = Duel.use((state) => state.protagonist.tank); const ClassIcon = classIcons[protagonist.class]; const { locale, strings } = useLocale(); + const devName = (protagonist as { dev_name?: string }).dev_name; return ( @@ -102,17 +103,27 @@ export function MetaSection() { - + {protagonist.id} )} - {developerMode && ( + {developerMode && devName && ( - - {protagonist.dev_name ?? '-'} + + {devName} )} From 2ab576a37c65747ec0f346415a092f30d4a8c86f Mon Sep 17 00:00:00 2001 From: GonnaHetzMe Date: Thu, 26 Mar 2026 09:29:35 +0100 Subject: [PATCH 20/56] fix: Set pointer cursor and simplify devName access --- packages/website/src/components/CopyableCode.tsx | 2 +- .../website/src/components/Tankopedia/MetaSection/index.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/website/src/components/CopyableCode.tsx b/packages/website/src/components/CopyableCode.tsx index 030d52963..52b33648a 100644 --- a/packages/website/src/components/CopyableCode.tsx +++ b/packages/website/src/components/CopyableCode.tsx @@ -21,7 +21,7 @@ export function CopyableCode({ { onClick?.(event); if (!copy) return; diff --git a/packages/website/src/components/Tankopedia/MetaSection/index.tsx b/packages/website/src/components/Tankopedia/MetaSection/index.tsx index 62f560f5b..83849a0b9 100644 --- a/packages/website/src/components/Tankopedia/MetaSection/index.tsx +++ b/packages/website/src/components/Tankopedia/MetaSection/index.tsx @@ -24,7 +24,7 @@ export function MetaSection() { const protagonist = Duel.use((state) => state.protagonist.tank); const ClassIcon = classIcons[protagonist.class]; const { locale, strings } = useLocale(); - const devName = (protagonist as { dev_name?: string }).dev_name; + const devName = protagonist.dev_name; return ( From 8345f99603f4f8921d035f3ce4092dea71ccd64e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Thu, 26 Mar 2026 08:06:43 -0500 Subject: [PATCH 21/56] fix: use dev name directly --- .../website/src/components/Tankopedia/MetaSection/index.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/website/src/components/Tankopedia/MetaSection/index.tsx b/packages/website/src/components/Tankopedia/MetaSection/index.tsx index 83849a0b9..03e15e7bc 100644 --- a/packages/website/src/components/Tankopedia/MetaSection/index.tsx +++ b/packages/website/src/components/Tankopedia/MetaSection/index.tsx @@ -24,7 +24,6 @@ export function MetaSection() { const protagonist = Duel.use((state) => state.protagonist.tank); const ClassIcon = classIcons[protagonist.class]; const { locale, strings } = useLocale(); - const devName = protagonist.dev_name; return ( @@ -113,7 +112,7 @@ export function MetaSection() { )} - {developerMode && devName && ( + {developerMode && ( @@ -123,7 +122,7 @@ export function MetaSection() { highContrast color="gray" > - {devName} + {protagonist.dev_name} )} From 3d912036a7d1ead6dc9367ed73bfdf072086956e Mon Sep 17 00:00:00 2001 From: GonnaHetzMe Date: Fri, 27 Mar 2026 02:03:15 +0100 Subject: [PATCH 22/56] fix: use proper icon for large repair kit --- packages/scripts/src/buildAssets/consumableProvisionIcons.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/scripts/src/buildAssets/consumableProvisionIcons.ts b/packages/scripts/src/buildAssets/consumableProvisionIcons.ts index 0490cda72..e6d44c092 100644 --- a/packages/scripts/src/buildAssets/consumableProvisionIcons.ts +++ b/packages/scripts/src/buildAssets/consumableProvisionIcons.ts @@ -18,9 +18,9 @@ export async function consumableProvisionIcons() { using uploader = new AssetUploader("consumable and provision icons"); const styles = [ + "UI/Styles/Lobby/Inventory/InventoryNormalStyles.yaml", "UI/Styles/Lobby/Inventory/Event/InventoryBigStyles.yaml", "UI/Styles/Lobby/Inventory/Event/InventoryNormalStyles.yaml", - "UI/Styles/Lobby/Inventory/InventoryNormalStyles.yaml", "UI/Screens3/Lobby/Inventory/Equipment/EquipmentItemImage.style.yaml", "UI/Screens/Battle/Styles/BattleEquipmentStyles.yaml", ]; From bdea9fdab352c097a55b4fe29e9da12a10667074 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Tue, 31 Mar 2026 13:35:47 -0500 Subject: [PATCH 23/56] fix: consistent protos --- .../core/src/protos/average_definitions.proto | 56 +- .../core/src/protos/average_definitions.ts | 234 +- .../src/protos/camouflage_definitions.proto | 8 +- .../core/src/protos/camouflage_definitions.ts | 349 ++- .../src/protos/consumable_definitions.proto | 22 +- .../core/src/protos/consumable_definitions.ts | 207 +- .../src/protos/equipment_definitions.proto | 10 +- .../core/src/protos/equipment_definitions.ts | 118 +- packages/core/src/protos/gallery.proto | 8 +- packages/core/src/protos/gallery.ts | 34 +- .../core/src/protos/game_definitions.proto | 12 +- packages/core/src/protos/game_definitions.ts | 125 +- packages/core/src/protos/i18n.ts | 62 +- .../core/src/protos/map_definitions.proto | 4 +- packages/core/src/protos/map_definitions.ts | 78 +- .../core/src/protos/model_definitions.proto | 58 +- packages/core/src/protos/model_definitions.ts | 430 ++-- packages/core/src/protos/popular_tanks.proto | 2 +- packages/core/src/protos/popular_tanks.ts | 24 +- .../src/protos/provision_definitions.proto | 16 +- .../core/src/protos/provision_definitions.ts | 83 +- .../core/src/protos/rating_leaderboard.proto | 14 +- .../core/src/protos/rating_leaderboard.ts | 71 +- packages/core/src/protos/reviews.proto | 4 +- packages/core/src/protos/reviews.ts | 82 +- packages/core/src/protos/skill_definitions.ts | 68 +- .../core/src/protos/tank_definitions.proto | 250 +-- packages/core/src/protos/tank_definitions.ts | 1942 +++++++---------- packages/scripts/src/protos.ts | 6 +- 29 files changed, 2014 insertions(+), 2363 deletions(-) diff --git a/packages/core/src/protos/average_definitions.proto b/packages/core/src/protos/average_definitions.proto index 3844b4738..693edab02 100644 --- a/packages/core/src/protos/average_definitions.proto +++ b/packages/core/src/protos/average_definitions.proto @@ -4,44 +4,44 @@ package blitzkit; message AverageDefinitions { map averages = 1; - required Samples samples = 2; - required uint64 time = 3; + required Samples samples = 2; + required uint64 time = 3; } message AverageDefinitionsEntry { - required AverageDefinitionsAllStats mu = 1; - required AverageDefinitionsAllStats sigma = 2; - required AverageDefinitionsAllStats r = 3; - required Samples samples = 4; + required AverageDefinitionsAllStats mu = 1; + required AverageDefinitionsAllStats sigma = 2; + required AverageDefinitionsAllStats r = 3; + required Samples samples = 4; } message AverageDefinitionsAllStats { - required float battles = 1; - required float capture_points = 2; - required float damage_dealt = 3; - required float damage_received = 4; + required float battles = 1; + required float capture_points = 2; + required float damage_dealt = 3; + required float damage_received = 4; required float dropped_capture_points = 5; - required float frags = 6; - required float frags8p = 7; - required float hits = 8; - required float losses = 9; - required float max_frags = 10; - required float max_xp = 11; - required float shots = 12; - required float spotted = 13; - required float survived_battles = 14; - required float win_and_survived = 15; - required float wins = 16; - required float xp = 17; - required float battle_life_time = 18; + required float frags = 6; + required float frags8p = 7; + required float hits = 8; + required float losses = 9; + required float max_frags = 10; + required float max_xp = 11; + required float shots = 12; + required float spotted = 13; + required float survived_battles = 14; + required float win_and_survived = 15; + required float wins = 16; + required float xp = 17; + required float battle_life_time = 18; } message Samples { - required uint32 d_1 = 1; - required uint32 d_7 = 2; - required uint32 d_30 = 3; - required uint32 d_60 = 4; - required uint32 d_90 = 5; + required uint32 d_1 = 1; + required uint32 d_7 = 2; + required uint32 d_30 = 3; + required uint32 d_60 = 4; + required uint32 d_90 = 5; required uint32 d_120 = 6; required uint32 total = 7; } \ No newline at end of file diff --git a/packages/core/src/protos/average_definitions.ts b/packages/core/src/protos/average_definitions.ts index 1b75b45d3..32a76b863 100644 --- a/packages/core/src/protos/average_definitions.ts +++ b/packages/core/src/protos/average_definitions.ts @@ -1,8 +1,8 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.2.2 +// protoc-gen-ts_proto v2.11.2 // protoc v5.28.2 -// source: packages/core/src/protos/average_definitions.proto +// source: average_definitions.proto /* eslint-disable */ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; @@ -11,7 +11,7 @@ export const protobufPackage = "blitzkit"; export interface AverageDefinitions { averages: { [key: number]: AverageDefinitionsEntry }; - samples: Samples; + samples: Samples | undefined; time: number; } @@ -21,10 +21,10 @@ export interface AverageDefinitions_AveragesEntry { } export interface AverageDefinitionsEntry { - mu: AverageDefinitionsAllStats; - sigma: AverageDefinitionsAllStats; - r: AverageDefinitionsAllStats; - samples: Samples; + mu: AverageDefinitionsAllStats | undefined; + sigma: AverageDefinitionsAllStats | undefined; + r: AverageDefinitionsAllStats | undefined; + samples: Samples | undefined; } export interface AverageDefinitionsAllStats { @@ -58,13 +58,13 @@ export interface Samples { total: number; } -export function createBaseAverageDefinitions(): AverageDefinitions { - return { averages: {}, samples: createBaseSamples(), time: 0 }; +function createBaseAverageDefinitions(): AverageDefinitions { + return { averages: {}, samples: undefined, time: 0 }; } export const AverageDefinitions: MessageFns = { encode(message: AverageDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - Object.entries(message.averages).forEach(([key, value]) => { + globalThis.Object.entries(message.averages).forEach(([key, value]: [string, AverageDefinitionsEntry]) => { AverageDefinitions_AveragesEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join(); }); if (message.samples !== undefined) { @@ -78,7 +78,7 @@ export const AverageDefinitions: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): AverageDefinitions { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseAverageDefinitions(); while (reader.pos < end) { const tag = reader.uint32(); @@ -122,20 +122,23 @@ export const AverageDefinitions: MessageFns = { fromJSON(object: any): AverageDefinitions { return { averages: isObject(object.averages) - ? Object.entries(object.averages).reduce<{ [key: number]: AverageDefinitionsEntry }>((acc, [key, value]) => { - acc[globalThis.Number(key)] = AverageDefinitionsEntry.fromJSON(value); - return acc; - }, {}) + ? (globalThis.Object.entries(object.averages) as [string, any][]).reduce( + (acc: { [key: number]: AverageDefinitionsEntry }, [key, value]: [string, any]) => { + acc[globalThis.Number(key)] = AverageDefinitionsEntry.fromJSON(value); + return acc; + }, + {}, + ) : {}, - samples: Samples.fromJSON(assertSet("AverageDefinitions.samples", object.samples)), - time: globalThis.Number(assertSet("AverageDefinitions.time", object.time)), + samples: isSet(object.samples) ? Samples.fromJSON(object.samples) : undefined, + time: isSet(object.time) ? globalThis.Number(object.time) : 0, }; }, toJSON(message: AverageDefinitions): unknown { const obj: any = {}; if (message.averages) { - const entries = Object.entries(message.averages); + const entries = globalThis.Object.entries(message.averages) as [string, AverageDefinitionsEntry][]; if (entries.length > 0) { obj.averages = {}; entries.forEach(([k, v]) => { @@ -157,8 +160,8 @@ export const AverageDefinitions: MessageFns = { }, fromPartial, I>>(object: I): AverageDefinitions { const message = createBaseAverageDefinitions(); - message.averages = Object.entries(object.averages ?? {}).reduce<{ [key: number]: AverageDefinitionsEntry }>( - (acc, [key, value]) => { + message.averages = (globalThis.Object.entries(object.averages ?? {}) as [string, AverageDefinitionsEntry][]).reduce( + (acc: { [key: number]: AverageDefinitionsEntry }, [key, value]: [string, AverageDefinitionsEntry]) => { if (value !== undefined) { acc[globalThis.Number(key)] = AverageDefinitionsEntry.fromPartial(value); } @@ -168,19 +171,19 @@ export const AverageDefinitions: MessageFns = { ); message.samples = (object.samples !== undefined && object.samples !== null) ? Samples.fromPartial(object.samples) - : createBaseSamples(); + : undefined; message.time = object.time ?? 0; return message; }, }; -export function createBaseAverageDefinitions_AveragesEntry(): AverageDefinitions_AveragesEntry { - return { key: 0, value: createBaseAverageDefinitionsEntry() }; +function createBaseAverageDefinitions_AveragesEntry(): AverageDefinitions_AveragesEntry { + return { key: 0, value: undefined }; } export const AverageDefinitions_AveragesEntry: MessageFns = { encode(message: AverageDefinitions_AveragesEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - if (message.key !== undefined) { + if (message.key !== 0) { writer.uint32(8).uint32(message.key); } if (message.value !== undefined) { @@ -191,7 +194,7 @@ export const AverageDefinitions_AveragesEntry: MessageFns = { @@ -284,7 +282,7 @@ export const AverageDefinitionsEntry: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): AverageDefinitionsEntry { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseAverageDefinitionsEntry(); while (reader.pos < end) { const tag = reader.uint32(); @@ -332,10 +330,10 @@ export const AverageDefinitionsEntry: MessageFns = { fromJSON(object: any): AverageDefinitionsEntry { return { - mu: AverageDefinitionsAllStats.fromJSON(assertSet("AverageDefinitionsEntry.mu", object.mu)), - sigma: AverageDefinitionsAllStats.fromJSON(assertSet("AverageDefinitionsEntry.sigma", object.sigma)), - r: AverageDefinitionsAllStats.fromJSON(assertSet("AverageDefinitionsEntry.r", object.r)), - samples: Samples.fromJSON(assertSet("AverageDefinitionsEntry.samples", object.samples)), + mu: isSet(object.mu) ? AverageDefinitionsAllStats.fromJSON(object.mu) : undefined, + sigma: isSet(object.sigma) ? AverageDefinitionsAllStats.fromJSON(object.sigma) : undefined, + r: isSet(object.r) ? AverageDefinitionsAllStats.fromJSON(object.r) : undefined, + samples: isSet(object.samples) ? Samples.fromJSON(object.samples) : undefined, }; }, @@ -363,21 +361,21 @@ export const AverageDefinitionsEntry: MessageFns = { const message = createBaseAverageDefinitionsEntry(); message.mu = (object.mu !== undefined && object.mu !== null) ? AverageDefinitionsAllStats.fromPartial(object.mu) - : createBaseAverageDefinitionsAllStats(); + : undefined; message.sigma = (object.sigma !== undefined && object.sigma !== null) ? AverageDefinitionsAllStats.fromPartial(object.sigma) - : createBaseAverageDefinitionsAllStats(); + : undefined; message.r = (object.r !== undefined && object.r !== null) ? AverageDefinitionsAllStats.fromPartial(object.r) - : createBaseAverageDefinitionsAllStats(); + : undefined; message.samples = (object.samples !== undefined && object.samples !== null) ? Samples.fromPartial(object.samples) - : createBaseSamples(); + : undefined; return message; }, }; -export function createBaseAverageDefinitionsAllStats(): AverageDefinitionsAllStats { +function createBaseAverageDefinitionsAllStats(): AverageDefinitionsAllStats { return { battles: 0, capture_points: 0, @@ -461,7 +459,7 @@ export const AverageDefinitionsAllStats: MessageFns decode(input: BinaryReader | Uint8Array, length?: number): AverageDefinitionsAllStats { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseAverageDefinitionsAllStats(); while (reader.pos < end) { const tag = reader.uint32(); @@ -621,34 +619,60 @@ export const AverageDefinitionsAllStats: MessageFns fromJSON(object: any): AverageDefinitionsAllStats { return { - battles: globalThis.Number(assertSet("AverageDefinitionsAllStats.battles", object.battles)), - capture_points: globalThis.Number(assertSet("AverageDefinitionsAllStats.capture_points", object.capture_points)), - damage_dealt: globalThis.Number(assertSet("AverageDefinitionsAllStats.damage_dealt", object.damage_dealt)), - damage_received: globalThis.Number( - assertSet("AverageDefinitionsAllStats.damage_received", object.damage_received), - ), - dropped_capture_points: globalThis.Number( - assertSet("AverageDefinitionsAllStats.dropped_capture_points", object.dropped_capture_points), - ), - frags: globalThis.Number(assertSet("AverageDefinitionsAllStats.frags", object.frags)), - frags8p: globalThis.Number(assertSet("AverageDefinitionsAllStats.frags8p", object.frags8p)), - hits: globalThis.Number(assertSet("AverageDefinitionsAllStats.hits", object.hits)), - losses: globalThis.Number(assertSet("AverageDefinitionsAllStats.losses", object.losses)), - max_frags: globalThis.Number(assertSet("AverageDefinitionsAllStats.max_frags", object.max_frags)), - max_xp: globalThis.Number(assertSet("AverageDefinitionsAllStats.max_xp", object.max_xp)), - shots: globalThis.Number(assertSet("AverageDefinitionsAllStats.shots", object.shots)), - spotted: globalThis.Number(assertSet("AverageDefinitionsAllStats.spotted", object.spotted)), - survived_battles: globalThis.Number( - assertSet("AverageDefinitionsAllStats.survived_battles", object.survived_battles), - ), - win_and_survived: globalThis.Number( - assertSet("AverageDefinitionsAllStats.win_and_survived", object.win_and_survived), - ), - wins: globalThis.Number(assertSet("AverageDefinitionsAllStats.wins", object.wins)), - xp: globalThis.Number(assertSet("AverageDefinitionsAllStats.xp", object.xp)), - battle_life_time: globalThis.Number( - assertSet("AverageDefinitionsAllStats.battle_life_time", object.battle_life_time), - ), + battles: isSet(object.battles) ? globalThis.Number(object.battles) : 0, + capture_points: isSet(object.capturePoints) + ? globalThis.Number(object.capturePoints) + : isSet(object.capture_points) + ? globalThis.Number(object.capture_points) + : 0, + damage_dealt: isSet(object.damageDealt) + ? globalThis.Number(object.damageDealt) + : isSet(object.damage_dealt) + ? globalThis.Number(object.damage_dealt) + : 0, + damage_received: isSet(object.damageReceived) + ? globalThis.Number(object.damageReceived) + : isSet(object.damage_received) + ? globalThis.Number(object.damage_received) + : 0, + dropped_capture_points: isSet(object.droppedCapturePoints) + ? globalThis.Number(object.droppedCapturePoints) + : isSet(object.dropped_capture_points) + ? globalThis.Number(object.dropped_capture_points) + : 0, + frags: isSet(object.frags) ? globalThis.Number(object.frags) : 0, + frags8p: isSet(object.frags8p) ? globalThis.Number(object.frags8p) : 0, + hits: isSet(object.hits) ? globalThis.Number(object.hits) : 0, + losses: isSet(object.losses) ? globalThis.Number(object.losses) : 0, + max_frags: isSet(object.maxFrags) + ? globalThis.Number(object.maxFrags) + : isSet(object.max_frags) + ? globalThis.Number(object.max_frags) + : 0, + max_xp: isSet(object.maxXp) + ? globalThis.Number(object.maxXp) + : isSet(object.max_xp) + ? globalThis.Number(object.max_xp) + : 0, + shots: isSet(object.shots) ? globalThis.Number(object.shots) : 0, + spotted: isSet(object.spotted) ? globalThis.Number(object.spotted) : 0, + survived_battles: isSet(object.survivedBattles) + ? globalThis.Number(object.survivedBattles) + : isSet(object.survived_battles) + ? globalThis.Number(object.survived_battles) + : 0, + win_and_survived: isSet(object.winAndSurvived) + ? globalThis.Number(object.winAndSurvived) + : isSet(object.win_and_survived) + ? globalThis.Number(object.win_and_survived) + : 0, + wins: isSet(object.wins) ? globalThis.Number(object.wins) : 0, + xp: isSet(object.xp) ? globalThis.Number(object.xp) : 0, + battle_life_time: isSet(object.battleLifeTime) + ? globalThis.Number(object.battleLifeTime) + : isSet(object.battle_life_time) + ? globalThis.Number(object.battle_life_time) + : 0, }; }, @@ -658,16 +682,16 @@ export const AverageDefinitionsAllStats: MessageFns obj.battles = message.battles; } if (message.capture_points !== 0) { - obj.capture_points = message.capture_points; + obj.capturePoints = message.capture_points; } if (message.damage_dealt !== 0) { - obj.damage_dealt = message.damage_dealt; + obj.damageDealt = message.damage_dealt; } if (message.damage_received !== 0) { - obj.damage_received = message.damage_received; + obj.damageReceived = message.damage_received; } if (message.dropped_capture_points !== 0) { - obj.dropped_capture_points = message.dropped_capture_points; + obj.droppedCapturePoints = message.dropped_capture_points; } if (message.frags !== 0) { obj.frags = message.frags; @@ -682,10 +706,10 @@ export const AverageDefinitionsAllStats: MessageFns obj.losses = message.losses; } if (message.max_frags !== 0) { - obj.max_frags = message.max_frags; + obj.maxFrags = message.max_frags; } if (message.max_xp !== 0) { - obj.max_xp = message.max_xp; + obj.maxXp = message.max_xp; } if (message.shots !== 0) { obj.shots = message.shots; @@ -694,10 +718,10 @@ export const AverageDefinitionsAllStats: MessageFns obj.spotted = message.spotted; } if (message.survived_battles !== 0) { - obj.survived_battles = message.survived_battles; + obj.survivedBattles = message.survived_battles; } if (message.win_and_survived !== 0) { - obj.win_and_survived = message.win_and_survived; + obj.winAndSurvived = message.win_and_survived; } if (message.wins !== 0) { obj.wins = message.wins; @@ -706,7 +730,7 @@ export const AverageDefinitionsAllStats: MessageFns obj.xp = message.xp; } if (message.battle_life_time !== 0) { - obj.battle_life_time = message.battle_life_time; + obj.battleLifeTime = message.battle_life_time; } return obj; }, @@ -738,7 +762,7 @@ export const AverageDefinitionsAllStats: MessageFns }, }; -export function createBaseSamples(): Samples { +function createBaseSamples(): Samples { return { d_1: 0, d_7: 0, d_30: 0, d_60: 0, d_90: 0, d_120: 0, total: 0 }; } @@ -770,7 +794,7 @@ export const Samples: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): Samples { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseSamples(); while (reader.pos < end) { const tag = reader.uint32(); @@ -842,35 +866,39 @@ export const Samples: MessageFns = { fromJSON(object: any): Samples { return { - d_1: globalThis.Number(assertSet("Samples.d_1", object.d_1)), - d_7: globalThis.Number(assertSet("Samples.d_7", object.d_7)), - d_30: globalThis.Number(assertSet("Samples.d_30", object.d_30)), - d_60: globalThis.Number(assertSet("Samples.d_60", object.d_60)), - d_90: globalThis.Number(assertSet("Samples.d_90", object.d_90)), - d_120: globalThis.Number(assertSet("Samples.d_120", object.d_120)), - total: globalThis.Number(assertSet("Samples.total", object.total)), + d_1: isSet(object.d1) ? globalThis.Number(object.d1) : isSet(object.d_1) ? globalThis.Number(object.d_1) : 0, + d_7: isSet(object.d7) ? globalThis.Number(object.d7) : isSet(object.d_7) ? globalThis.Number(object.d_7) : 0, + d_30: isSet(object.d30) ? globalThis.Number(object.d30) : isSet(object.d_30) ? globalThis.Number(object.d_30) : 0, + d_60: isSet(object.d60) ? globalThis.Number(object.d60) : isSet(object.d_60) ? globalThis.Number(object.d_60) : 0, + d_90: isSet(object.d90) ? globalThis.Number(object.d90) : isSet(object.d_90) ? globalThis.Number(object.d_90) : 0, + d_120: isSet(object.d120) + ? globalThis.Number(object.d120) + : isSet(object.d_120) + ? globalThis.Number(object.d_120) + : 0, + total: isSet(object.total) ? globalThis.Number(object.total) : 0, }; }, toJSON(message: Samples): unknown { const obj: any = {}; if (message.d_1 !== 0) { - obj.d_1 = Math.round(message.d_1); + obj.d1 = Math.round(message.d_1); } if (message.d_7 !== 0) { - obj.d_7 = Math.round(message.d_7); + obj.d7 = Math.round(message.d_7); } if (message.d_30 !== 0) { - obj.d_30 = Math.round(message.d_30); + obj.d30 = Math.round(message.d_30); } if (message.d_60 !== 0) { - obj.d_60 = Math.round(message.d_60); + obj.d60 = Math.round(message.d_60); } if (message.d_90 !== 0) { - obj.d_90 = Math.round(message.d_90); + obj.d90 = Math.round(message.d_90); } if (message.d_120 !== 0) { - obj.d_120 = Math.round(message.d_120); + obj.d120 = Math.round(message.d_120); } if (message.total !== 0) { obj.total = Math.round(message.total); @@ -926,14 +954,6 @@ function isSet(value: any): boolean { return value !== null && value !== undefined; } -function assertSet(field: string, value: T | undefined): T { - if (!isSet(value)) { - throw new TypeError(`Required field ${field} is not set`); - } - - return value as T; -} - export interface MessageFns { encode(message: T, writer?: BinaryWriter): BinaryWriter; decode(input: BinaryReader | Uint8Array, length?: number): T; diff --git a/packages/core/src/protos/camouflage_definitions.proto b/packages/core/src/protos/camouflage_definitions.proto index bfcfd5a7a..b3b9bbbac 100644 --- a/packages/core/src/protos/camouflage_definitions.proto +++ b/packages/core/src/protos/camouflage_definitions.proto @@ -2,15 +2,15 @@ syntax = "proto2"; package blitzkit; -import "packages/core/src/protos/i18n.proto"; +import "i18n.proto"; message CamouflageDefinitions { map camouflages = 1; } message Camouflage { - required uint32 id = 1; - required I18nString name = 2; - optional I18nString tank_name = 3; + required uint32 id = 1; + required I18nString name = 2; + optional I18nString tank_name = 3; optional I18nString tank_name_full = 4; } \ No newline at end of file diff --git a/packages/core/src/protos/camouflage_definitions.ts b/packages/core/src/protos/camouflage_definitions.ts index 49336ed41..a7776e39f 100644 --- a/packages/core/src/protos/camouflage_definitions.ts +++ b/packages/core/src/protos/camouflage_definitions.ts @@ -1,14 +1,14 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.2.2 +// protoc-gen-ts_proto v2.11.2 // protoc v5.28.2 -// source: packages/core/src/protos/camouflage_definitions.proto +// source: camouflage_definitions.proto /* eslint-disable */ -import { BinaryReader, BinaryWriter } from '@bufbuild/protobuf/wire'; -import { createBaseI18nString, I18nString } from './i18n'; +import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; +import { I18nString } from "./i18n"; -export const protobufPackage = 'blitzkit'; +export const protobufPackage = "blitzkit"; export interface CamouflageDefinitions { camouflages: { [key: number]: Camouflage }; @@ -21,36 +21,26 @@ export interface CamouflageDefinitions_CamouflagesEntry { export interface Camouflage { id: number; - name: I18nString; - tank_name?: I18nString; - tank_name_full?: I18nString; + name: I18nString | undefined; + tank_name?: I18nString | undefined; + tank_name_full?: I18nString | undefined; } -export function createBaseCamouflageDefinitions(): CamouflageDefinitions { +function createBaseCamouflageDefinitions(): CamouflageDefinitions { return { camouflages: {} }; } export const CamouflageDefinitions: MessageFns = { - encode( - message: CamouflageDefinitions, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { - Object.entries(message.camouflages).forEach(([key, value]) => { - CamouflageDefinitions_CamouflagesEntry.encode( - { key: key as any, value }, - writer.uint32(10).fork(), - ).join(); + encode(message: CamouflageDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + globalThis.Object.entries(message.camouflages).forEach(([key, value]: [string, Camouflage]) => { + CamouflageDefinitions_CamouflagesEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join(); }); return writer; }, - decode( - input: BinaryReader | Uint8Array, - length?: number, - ): CamouflageDefinitions { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + decode(input: BinaryReader | Uint8Array, length?: number): CamouflageDefinitions { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseCamouflageDefinitions(); while (reader.pos < end) { const tag = reader.uint32(); @@ -60,10 +50,7 @@ export const CamouflageDefinitions: MessageFns = { break; } - const entry1 = CamouflageDefinitions_CamouflagesEntry.decode( - reader, - reader.uint32(), - ); + const entry1 = CamouflageDefinitions_CamouflagesEntry.decode(reader, reader.uint32()); if (entry1.value !== undefined) { message.camouflages[entry1.key] = entry1.value; } @@ -81,12 +68,13 @@ export const CamouflageDefinitions: MessageFns = { fromJSON(object: any): CamouflageDefinitions { return { camouflages: isObject(object.camouflages) - ? Object.entries(object.camouflages).reduce<{ - [key: number]: Camouflage; - }>((acc, [key, value]) => { + ? (globalThis.Object.entries(object.camouflages) as [string, any][]).reduce( + (acc: { [key: number]: Camouflage }, [key, value]: [string, any]) => { acc[globalThis.Number(key)] = Camouflage.fromJSON(value); return acc; - }, {}) + }, + {}, + ) : {}, }; }, @@ -94,7 +82,7 @@ export const CamouflageDefinitions: MessageFns = { toJSON(message: CamouflageDefinitions): unknown { const obj: any = {}; if (message.camouflages) { - const entries = Object.entries(message.camouflages); + const entries = globalThis.Object.entries(message.camouflages) as [string, Camouflage][]; if (entries.length > 0) { obj.camouflages = {}; entries.forEach(([k, v]) => { @@ -105,141 +93,112 @@ export const CamouflageDefinitions: MessageFns = { return obj; }, - create, I>>( - base?: I, - ): CamouflageDefinitions { + create, I>>(base?: I): CamouflageDefinitions { return CamouflageDefinitions.fromPartial(base ?? ({} as any)); }, - fromPartial, I>>( - object: I, - ): CamouflageDefinitions { + fromPartial, I>>(object: I): CamouflageDefinitions { const message = createBaseCamouflageDefinitions(); - message.camouflages = Object.entries(object.camouflages ?? {}).reduce<{ - [key: number]: Camouflage; - }>((acc, [key, value]) => { - if (value !== undefined) { - acc[globalThis.Number(key)] = Camouflage.fromPartial(value); - } - return acc; - }, {}); + message.camouflages = (globalThis.Object.entries(object.camouflages ?? {}) as [string, Camouflage][]).reduce( + (acc: { [key: number]: Camouflage }, [key, value]: [string, Camouflage]) => { + if (value !== undefined) { + acc[globalThis.Number(key)] = Camouflage.fromPartial(value); + } + return acc; + }, + {}, + ); return message; }, }; -export function createBaseCamouflageDefinitions_CamouflagesEntry(): CamouflageDefinitions_CamouflagesEntry { - return { key: 0, value: createBaseCamouflage() }; +function createBaseCamouflageDefinitions_CamouflagesEntry(): CamouflageDefinitions_CamouflagesEntry { + return { key: 0, value: undefined }; } -export const CamouflageDefinitions_CamouflagesEntry: MessageFns = - { - encode( - message: CamouflageDefinitions_CamouflagesEntry, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { - if (message.key !== undefined) { - writer.uint32(8).uint32(message.key); - } - if (message.value !== undefined) { - Camouflage.encode(message.value, writer.uint32(18).fork()).join(); - } - return writer; - }, +export const CamouflageDefinitions_CamouflagesEntry: MessageFns = { + encode(message: CamouflageDefinitions_CamouflagesEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.key !== 0) { + writer.uint32(8).uint32(message.key); + } + if (message.value !== undefined) { + Camouflage.encode(message.value, writer.uint32(18).fork()).join(); + } + return writer; + }, - decode( - input: BinaryReader | Uint8Array, - length?: number, - ): CamouflageDefinitions_CamouflagesEntry { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseCamouflageDefinitions_CamouflagesEntry(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (tag !== 8) { - break; - } - - message.key = reader.uint32(); - continue; + decode(input: BinaryReader | Uint8Array, length?: number): CamouflageDefinitions_CamouflagesEntry { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + const end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseCamouflageDefinitions_CamouflagesEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; } - case 2: { - if (tag !== 18) { - break; - } - message.value = Camouflage.decode(reader, reader.uint32()); - continue; + message.key = reader.uint32(); + continue; + } + case 2: { + if (tag !== 18) { + break; } + + message.value = Camouflage.decode(reader, reader.uint32()); + continue; } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skip(tag & 7); } - return message; - }, - - fromJSON(object: any): CamouflageDefinitions_CamouflagesEntry { - return { - key: globalThis.Number( - assertSet('CamouflageDefinitions_CamouflagesEntry.key', object.key), - ), - value: Camouflage.fromJSON( - assertSet( - 'CamouflageDefinitions_CamouflagesEntry.value', - object.value, - ), - ), - }; - }, - - toJSON(message: CamouflageDefinitions_CamouflagesEntry): unknown { - const obj: any = {}; - if (message.key !== undefined) { - obj.key = Math.round(message.key); + if ((tag & 7) === 4 || tag === 0) { + break; } - if (message.value !== undefined) { - obj.value = Camouflage.toJSON(message.value); - } - return obj; - }, + reader.skip(tag & 7); + } + return message; + }, - create< - I extends Exact, I>, - >(base?: I): CamouflageDefinitions_CamouflagesEntry { - return CamouflageDefinitions_CamouflagesEntry.fromPartial( - base ?? ({} as any), - ); - }, - fromPartial< - I extends Exact, I>, - >(object: I): CamouflageDefinitions_CamouflagesEntry { - const message = createBaseCamouflageDefinitions_CamouflagesEntry(); - message.key = object.key ?? 0; - message.value = - object.value !== undefined && object.value !== null - ? Camouflage.fromPartial(object.value) - : createBaseCamouflage(); - return message; - }, - }; + fromJSON(object: any): CamouflageDefinitions_CamouflagesEntry { + return { + key: isSet(object.key) ? globalThis.Number(object.key) : 0, + value: isSet(object.value) ? Camouflage.fromJSON(object.value) : undefined, + }; + }, -export function createBaseCamouflage(): Camouflage { - return { - id: 0, - name: createBaseI18nString(), - tank_name: undefined, - tank_name_full: undefined, - }; + toJSON(message: CamouflageDefinitions_CamouflagesEntry): unknown { + const obj: any = {}; + if (message.key !== 0) { + obj.key = Math.round(message.key); + } + if (message.value !== undefined) { + obj.value = Camouflage.toJSON(message.value); + } + return obj; + }, + + create, I>>( + base?: I, + ): CamouflageDefinitions_CamouflagesEntry { + return CamouflageDefinitions_CamouflagesEntry.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>( + object: I, + ): CamouflageDefinitions_CamouflagesEntry { + const message = createBaseCamouflageDefinitions_CamouflagesEntry(); + message.key = object.key ?? 0; + message.value = (object.value !== undefined && object.value !== null) + ? Camouflage.fromPartial(object.value) + : undefined; + return message; + }, +}; + +function createBaseCamouflage(): Camouflage { + return { id: 0, name: undefined, tank_name: undefined, tank_name_full: undefined }; } export const Camouflage: MessageFns = { - encode( - message: Camouflage, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { + encode(message: Camouflage, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.id !== 0) { writer.uint32(8).uint32(message.id); } @@ -250,18 +209,14 @@ export const Camouflage: MessageFns = { I18nString.encode(message.tank_name, writer.uint32(26).fork()).join(); } if (message.tank_name_full !== undefined) { - I18nString.encode( - message.tank_name_full, - writer.uint32(34).fork(), - ).join(); + I18nString.encode(message.tank_name_full, writer.uint32(34).fork()).join(); } return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): Camouflage { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseCamouflage(); while (reader.pos < end) { const tag = reader.uint32(); @@ -309,12 +264,16 @@ export const Camouflage: MessageFns = { fromJSON(object: any): Camouflage { return { - id: globalThis.Number(assertSet('Camouflage.id', object.id)), - name: I18nString.fromJSON(assertSet('Camouflage.name', object.name)), - tank_name: isSet(object.tank_name) + id: isSet(object.id) ? globalThis.Number(object.id) : 0, + name: isSet(object.name) ? I18nString.fromJSON(object.name) : undefined, + tank_name: isSet(object.tankName) + ? I18nString.fromJSON(object.tankName) + : isSet(object.tank_name) ? I18nString.fromJSON(object.tank_name) : undefined, - tank_name_full: isSet(object.tank_name_full) + tank_name_full: isSet(object.tankNameFull) + ? I18nString.fromJSON(object.tankNameFull) + : isSet(object.tank_name_full) ? I18nString.fromJSON(object.tank_name_full) : undefined, }; @@ -329,10 +288,10 @@ export const Camouflage: MessageFns = { obj.name = I18nString.toJSON(message.name); } if (message.tank_name !== undefined) { - obj.tank_name = I18nString.toJSON(message.tank_name); + obj.tankName = I18nString.toJSON(message.tank_name); } if (message.tank_name_full !== undefined) { - obj.tank_name_full = I18nString.toJSON(message.tank_name_full); + obj.tankNameFull = I18nString.toJSON(message.tank_name_full); } return obj; }, @@ -340,71 +299,43 @@ export const Camouflage: MessageFns = { create, I>>(base?: I): Camouflage { return Camouflage.fromPartial(base ?? ({} as any)); }, - fromPartial, I>>( - object: I, - ): Camouflage { + fromPartial, I>>(object: I): Camouflage { const message = createBaseCamouflage(); message.id = object.id ?? 0; - message.name = - object.name !== undefined && object.name !== null - ? I18nString.fromPartial(object.name) - : createBaseI18nString(); - message.tank_name = - object.tank_name !== undefined && object.tank_name !== null - ? I18nString.fromPartial(object.tank_name) - : undefined; - message.tank_name_full = - object.tank_name_full !== undefined && object.tank_name_full !== null - ? I18nString.fromPartial(object.tank_name_full) - : undefined; + message.name = (object.name !== undefined && object.name !== null) + ? I18nString.fromPartial(object.name) + : undefined; + message.tank_name = (object.tank_name !== undefined && object.tank_name !== null) + ? I18nString.fromPartial(object.tank_name) + : undefined; + message.tank_name_full = (object.tank_name_full !== undefined && object.tank_name_full !== null) + ? I18nString.fromPartial(object.tank_name_full) + : undefined; return message; }, }; -type Builtin = - | Date - | Function - | Uint8Array - | string - | number - | boolean - | undefined; +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; -export type DeepPartial = T extends Builtin - ? T - : T extends globalThis.Array - ? globalThis.Array> - : T extends ReadonlyArray - ? ReadonlyArray> - : T extends { $case: string; value: unknown } - ? { $case: T['$case']; value?: DeepPartial } - : T extends {} - ? { [K in keyof T]?: DeepPartial } - : Partial; +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends { $case: string; value: unknown } ? { $case: T["$case"]; value?: DeepPartial } + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; type KeysOfUnion = T extends T ? keyof T : never; -export type Exact = P extends Builtin - ? P - : P & { [K in keyof P]: Exact } & { - [K in Exclude>]: never; - }; +export type Exact = P extends Builtin ? P + : P & { [K in keyof P]: Exact } & { [K in Exclude>]: never }; function isObject(value: any): boolean { - return typeof value === 'object' && value !== null; + return typeof value === "object" && value !== null; } function isSet(value: any): boolean { return value !== null && value !== undefined; } -function assertSet(field: string, value: T | undefined): T { - if (!isSet(value)) { - throw new TypeError(`Required field ${field} is not set`); - } - - return value as T; -} - export interface MessageFns { encode(message: T, writer?: BinaryWriter): BinaryWriter; decode(input: BinaryReader | Uint8Array, length?: number): T; diff --git a/packages/core/src/protos/consumable_definitions.proto b/packages/core/src/protos/consumable_definitions.proto index 0d65daaf3..c07fdd2f8 100644 --- a/packages/core/src/protos/consumable_definitions.proto +++ b/packages/core/src/protos/consumable_definitions.proto @@ -2,28 +2,28 @@ syntax = "proto2"; package blitzkit; -import "packages/core/src/protos/i18n.proto"; +import "i18n.proto"; message ConsumableDefinitions { map consumables = 1; } message Consumable { - required uint32 id = 1; - required I18nString name = 2; - required uint32 cooldown = 3; - optional float duration = 4; - required bool game_mode_exclusive = 5; - repeated ConsumableTankFilter include = 6; - repeated ConsumableTankFilter exclude = 7; + required uint32 id = 1; + required I18nString name = 2; + required uint32 cooldown = 3; + optional float duration = 4; + required bool game_mode_exclusive = 5; + repeated ConsumableTankFilter include = 6; + repeated ConsumableTankFilter exclude = 7; } message ConsumableTankFilter { oneof filter_type { - ConsumableTankTierFilter tiers = 1; - ConsumableTankIdsFilter ids = 2; + ConsumableTankTierFilter tiers = 1; + ConsumableTankIdsFilter ids = 2; ConsumableTankCategoryFilter categories = 3; - ConsumableTankNationFilter nations = 4; + ConsumableTankNationFilter nations = 4; } } diff --git a/packages/core/src/protos/consumable_definitions.ts b/packages/core/src/protos/consumable_definitions.ts index 018255773..c3957b11e 100644 --- a/packages/core/src/protos/consumable_definitions.ts +++ b/packages/core/src/protos/consumable_definitions.ts @@ -1,24 +1,24 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.2.2 +// protoc-gen-ts_proto v2.11.2 // protoc v5.28.2 -// source: packages/core/src/protos/consumable_definitions.proto +// source: consumable_definitions.proto /* eslint-disable */ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; -import { createBaseI18nString, I18nString } from "./i18n"; +import { I18nString } from "./i18n"; export const protobufPackage = "blitzkit"; export enum ConsumableTankCategoryFilterCategory { - CLIP = 0, + CONSUMABLE_TANK_CATEGORY_FILTER_CATEGORY_CLIP = 0, } export function consumableTankCategoryFilterCategoryFromJSON(object: any): ConsumableTankCategoryFilterCategory { switch (object) { case 0: case "CONSUMABLE_TANK_CATEGORY_FILTER_CATEGORY_CLIP": - return ConsumableTankCategoryFilterCategory.CLIP; + return ConsumableTankCategoryFilterCategory.CONSUMABLE_TANK_CATEGORY_FILTER_CATEGORY_CLIP; default: throw new globalThis.Error( "Unrecognized enum value " + object + " for enum ConsumableTankCategoryFilterCategory", @@ -28,7 +28,7 @@ export function consumableTankCategoryFilterCategoryFromJSON(object: any): Consu export function consumableTankCategoryFilterCategoryToJSON(object: ConsumableTankCategoryFilterCategory): string { switch (object) { - case ConsumableTankCategoryFilterCategory.CLIP: + case ConsumableTankCategoryFilterCategory.CONSUMABLE_TANK_CATEGORY_FILTER_CATEGORY_CLIP: return "CONSUMABLE_TANK_CATEGORY_FILTER_CATEGORY_CLIP"; default: throw new globalThis.Error( @@ -48,7 +48,7 @@ export interface ConsumableDefinitions_ConsumablesEntry { export interface Consumable { id: number; - name: I18nString; + name: I18nString | undefined; cooldown: number; duration?: number | undefined; game_mode_exclusive: boolean; @@ -82,13 +82,13 @@ export interface ConsumableTankNationFilter { nations: string[]; } -export function createBaseConsumableDefinitions(): ConsumableDefinitions { +function createBaseConsumableDefinitions(): ConsumableDefinitions { return { consumables: {} }; } export const ConsumableDefinitions: MessageFns = { encode(message: ConsumableDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - Object.entries(message.consumables).forEach(([key, value]) => { + globalThis.Object.entries(message.consumables).forEach(([key, value]: [string, Consumable]) => { ConsumableDefinitions_ConsumablesEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join(); }); return writer; @@ -96,7 +96,7 @@ export const ConsumableDefinitions: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): ConsumableDefinitions { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseConsumableDefinitions(); while (reader.pos < end) { const tag = reader.uint32(); @@ -124,10 +124,13 @@ export const ConsumableDefinitions: MessageFns = { fromJSON(object: any): ConsumableDefinitions { return { consumables: isObject(object.consumables) - ? Object.entries(object.consumables).reduce<{ [key: number]: Consumable }>((acc, [key, value]) => { - acc[globalThis.Number(key)] = Consumable.fromJSON(value); - return acc; - }, {}) + ? (globalThis.Object.entries(object.consumables) as [string, any][]).reduce( + (acc: { [key: number]: Consumable }, [key, value]: [string, any]) => { + acc[globalThis.Number(key)] = Consumable.fromJSON(value); + return acc; + }, + {}, + ) : {}, }; }, @@ -135,7 +138,7 @@ export const ConsumableDefinitions: MessageFns = { toJSON(message: ConsumableDefinitions): unknown { const obj: any = {}; if (message.consumables) { - const entries = Object.entries(message.consumables); + const entries = globalThis.Object.entries(message.consumables) as [string, Consumable][]; if (entries.length > 0) { obj.consumables = {}; entries.forEach(([k, v]) => { @@ -151,8 +154,8 @@ export const ConsumableDefinitions: MessageFns = { }, fromPartial, I>>(object: I): ConsumableDefinitions { const message = createBaseConsumableDefinitions(); - message.consumables = Object.entries(object.consumables ?? {}).reduce<{ [key: number]: Consumable }>( - (acc, [key, value]) => { + message.consumables = (globalThis.Object.entries(object.consumables ?? {}) as [string, Consumable][]).reduce( + (acc: { [key: number]: Consumable }, [key, value]: [string, Consumable]) => { if (value !== undefined) { acc[globalThis.Number(key)] = Consumable.fromPartial(value); } @@ -164,13 +167,13 @@ export const ConsumableDefinitions: MessageFns = { }, }; -export function createBaseConsumableDefinitions_ConsumablesEntry(): ConsumableDefinitions_ConsumablesEntry { - return { key: 0, value: createBaseConsumable() }; +function createBaseConsumableDefinitions_ConsumablesEntry(): ConsumableDefinitions_ConsumablesEntry { + return { key: 0, value: undefined }; } export const ConsumableDefinitions_ConsumablesEntry: MessageFns = { encode(message: ConsumableDefinitions_ConsumablesEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - if (message.key !== undefined) { + if (message.key !== 0) { writer.uint32(8).uint32(message.key); } if (message.value !== undefined) { @@ -181,7 +184,7 @@ export const ConsumableDefinitions_ConsumablesEntry: MessageFns = { @@ -269,7 +264,7 @@ export const Consumable: MessageFns = { if (message.cooldown !== 0) { writer.uint32(24).uint32(message.cooldown); } - if (message.duration !== undefined && message.duration !== undefined) { + if (message.duration !== undefined && message.duration !== 0) { writer.uint32(37).float(message.duration); } if (message.game_mode_exclusive !== false) { @@ -286,7 +281,7 @@ export const Consumable: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): Consumable { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseConsumable(); while (reader.pos < end) { const tag = reader.uint32(); @@ -358,11 +353,15 @@ export const Consumable: MessageFns = { fromJSON(object: any): Consumable { return { - id: globalThis.Number(assertSet("Consumable.id", object.id)), - name: I18nString.fromJSON(assertSet("Consumable.name", object.name)), - cooldown: globalThis.Number(assertSet("Consumable.cooldown", object.cooldown)), - duration: isSet(object.duration) ? globalThis.Number(object.duration) : undefined, - game_mode_exclusive: globalThis.Boolean(assertSet("Consumable.game_mode_exclusive", object.game_mode_exclusive)), + id: isSet(object.id) ? globalThis.Number(object.id) : 0, + name: isSet(object.name) ? I18nString.fromJSON(object.name) : undefined, + cooldown: isSet(object.cooldown) ? globalThis.Number(object.cooldown) : 0, + duration: isSet(object.duration) ? globalThis.Number(object.duration) : 0, + game_mode_exclusive: isSet(object.gameModeExclusive) + ? globalThis.Boolean(object.gameModeExclusive) + : isSet(object.game_mode_exclusive) + ? globalThis.Boolean(object.game_mode_exclusive) + : false, include: globalThis.Array.isArray(object?.include) ? object.include.map((e: any) => ConsumableTankFilter.fromJSON(e)) : [], @@ -383,11 +382,11 @@ export const Consumable: MessageFns = { if (message.cooldown !== 0) { obj.cooldown = Math.round(message.cooldown); } - if (message.duration !== undefined && message.duration !== undefined) { + if (message.duration !== undefined && message.duration !== 0) { obj.duration = message.duration; } if (message.game_mode_exclusive !== false) { - obj.game_mode_exclusive = message.game_mode_exclusive; + obj.gameModeExclusive = message.game_mode_exclusive; } if (message.include?.length) { obj.include = message.include.map((e) => ConsumableTankFilter.toJSON(e)); @@ -406,9 +405,9 @@ export const Consumable: MessageFns = { message.id = object.id ?? 0; message.name = (object.name !== undefined && object.name !== null) ? I18nString.fromPartial(object.name) - : createBaseI18nString(); + : undefined; message.cooldown = object.cooldown ?? 0; - message.duration = object.duration ?? undefined; + message.duration = object.duration ?? 0; message.game_mode_exclusive = object.game_mode_exclusive ?? false; message.include = object.include?.map((e) => ConsumableTankFilter.fromPartial(e)) || []; message.exclude = object.exclude?.map((e) => ConsumableTankFilter.fromPartial(e)) || []; @@ -416,7 +415,7 @@ export const Consumable: MessageFns = { }, }; -export function createBaseConsumableTankFilter(): ConsumableTankFilter { +function createBaseConsumableTankFilter(): ConsumableTankFilter { return { filter_type: undefined }; } @@ -441,7 +440,7 @@ export const ConsumableTankFilter: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): ConsumableTankFilter { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseConsumableTankFilter(); while (reader.pos < end) { const tag = reader.uint32(); @@ -508,14 +507,11 @@ export const ConsumableTankFilter: MessageFns = { const obj: any = {}; if (message.filter_type?.$case === "tiers") { obj.tiers = ConsumableTankTierFilter.toJSON(message.filter_type.value); - } - if (message.filter_type?.$case === "ids") { + } else if (message.filter_type?.$case === "ids") { obj.ids = ConsumableTankIdsFilter.toJSON(message.filter_type.value); - } - if (message.filter_type?.$case === "categories") { + } else if (message.filter_type?.$case === "categories") { obj.categories = ConsumableTankCategoryFilter.toJSON(message.filter_type.value); - } - if (message.filter_type?.$case === "nations") { + } else if (message.filter_type?.$case === "nations") { obj.nations = ConsumableTankNationFilter.toJSON(message.filter_type.value); } return obj; @@ -526,45 +522,46 @@ export const ConsumableTankFilter: MessageFns = { }, fromPartial, I>>(object: I): ConsumableTankFilter { const message = createBaseConsumableTankFilter(); - if ( - object.filter_type?.$case === "tiers" && - object.filter_type?.value !== undefined && - object.filter_type?.value !== null - ) { - message.filter_type = { $case: "tiers", value: ConsumableTankTierFilter.fromPartial(object.filter_type.value) }; - } - if ( - object.filter_type?.$case === "ids" && - object.filter_type?.value !== undefined && - object.filter_type?.value !== null - ) { - message.filter_type = { $case: "ids", value: ConsumableTankIdsFilter.fromPartial(object.filter_type.value) }; - } - if ( - object.filter_type?.$case === "categories" && - object.filter_type?.value !== undefined && - object.filter_type?.value !== null - ) { - message.filter_type = { - $case: "categories", - value: ConsumableTankCategoryFilter.fromPartial(object.filter_type.value), - }; - } - if ( - object.filter_type?.$case === "nations" && - object.filter_type?.value !== undefined && - object.filter_type?.value !== null - ) { - message.filter_type = { - $case: "nations", - value: ConsumableTankNationFilter.fromPartial(object.filter_type.value), - }; + switch (object.filter_type?.$case) { + case "tiers": { + if (object.filter_type?.value !== undefined && object.filter_type?.value !== null) { + message.filter_type = { + $case: "tiers", + value: ConsumableTankTierFilter.fromPartial(object.filter_type.value), + }; + } + break; + } + case "ids": { + if (object.filter_type?.value !== undefined && object.filter_type?.value !== null) { + message.filter_type = { $case: "ids", value: ConsumableTankIdsFilter.fromPartial(object.filter_type.value) }; + } + break; + } + case "categories": { + if (object.filter_type?.value !== undefined && object.filter_type?.value !== null) { + message.filter_type = { + $case: "categories", + value: ConsumableTankCategoryFilter.fromPartial(object.filter_type.value), + }; + } + break; + } + case "nations": { + if (object.filter_type?.value !== undefined && object.filter_type?.value !== null) { + message.filter_type = { + $case: "nations", + value: ConsumableTankNationFilter.fromPartial(object.filter_type.value), + }; + } + break; + } } return message; }, }; -export function createBaseConsumableTankTierFilter(): ConsumableTankTierFilter { +function createBaseConsumableTankTierFilter(): ConsumableTankTierFilter { return { min: 0, max: 0 }; } @@ -581,7 +578,7 @@ export const ConsumableTankTierFilter: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): ConsumableTankTierFilter { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseConsumableTankTierFilter(); while (reader.pos < end) { const tag = reader.uint32(); @@ -613,8 +610,8 @@ export const ConsumableTankTierFilter: MessageFns = { fromJSON(object: any): ConsumableTankTierFilter { return { - min: globalThis.Number(assertSet("ConsumableTankTierFilter.min", object.min)), - max: globalThis.Number(assertSet("ConsumableTankTierFilter.max", object.max)), + min: isSet(object.min) ? globalThis.Number(object.min) : 0, + max: isSet(object.max) ? globalThis.Number(object.max) : 0, }; }, @@ -640,23 +637,21 @@ export const ConsumableTankTierFilter: MessageFns = { }, }; -export function createBaseConsumableTankIdsFilter(): ConsumableTankIdsFilter { +function createBaseConsumableTankIdsFilter(): ConsumableTankIdsFilter { return { ids: [] }; } export const ConsumableTankIdsFilter: MessageFns = { encode(message: ConsumableTankIdsFilter, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - writer.uint32(10).fork(); for (const v of message.ids) { - writer.uint32(v); + writer.uint32(8).uint32(v!); } - writer.join(); return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): ConsumableTankIdsFilter { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseConsumableTankIdsFilter(); while (reader.pos < end) { const tag = reader.uint32(); @@ -710,23 +705,21 @@ export const ConsumableTankIdsFilter: MessageFns = { }, }; -export function createBaseConsumableTankCategoryFilter(): ConsumableTankCategoryFilter { +function createBaseConsumableTankCategoryFilter(): ConsumableTankCategoryFilter { return { categories: [] }; } export const ConsumableTankCategoryFilter: MessageFns = { encode(message: ConsumableTankCategoryFilter, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - writer.uint32(10).fork(); for (const v of message.categories) { - writer.int32(v); + writer.uint32(8).int32(v!); } - writer.join(); return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): ConsumableTankCategoryFilter { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseConsumableTankCategoryFilter(); while (reader.pos < end) { const tag = reader.uint32(); @@ -784,7 +777,7 @@ export const ConsumableTankCategoryFilter: MessageFns decode(input: BinaryReader | Uint8Array, length?: number): ConsumableTankNationFilter { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseConsumableTankNationFilter(); while (reader.pos < end) { const tag = reader.uint32(); @@ -865,14 +858,6 @@ function isSet(value: any): boolean { return value !== null && value !== undefined; } -function assertSet(field: string, value: T | undefined): T { - if (!isSet(value)) { - throw new TypeError(`Required field ${field} is not set`); - } - - return value as T; -} - export interface MessageFns { encode(message: T, writer?: BinaryWriter): BinaryWriter; decode(input: BinaryReader | Uint8Array, length?: number): T; diff --git a/packages/core/src/protos/equipment_definitions.proto b/packages/core/src/protos/equipment_definitions.proto index 536b7c2e0..ba4cf0cb4 100644 --- a/packages/core/src/protos/equipment_definitions.proto +++ b/packages/core/src/protos/equipment_definitions.proto @@ -2,15 +2,15 @@ syntax = "proto2"; package blitzkit; -import "packages/core/src/protos/i18n.proto"; +import "i18n.proto"; message EquipmentDefinitions { - map presets = 1; - map equipments = 2; + map presets = 1; + map equipments = 2; } message Equipment { - required I18nString name = 1; + required I18nString name = 1; required I18nString description = 2; } @@ -19,6 +19,6 @@ message EquipmentPreset { } message EquipmentSlot { - required uint32 left = 1; + required uint32 left = 1; required uint32 right = 2; } \ No newline at end of file diff --git a/packages/core/src/protos/equipment_definitions.ts b/packages/core/src/protos/equipment_definitions.ts index 6125ba29e..8f14ae14a 100644 --- a/packages/core/src/protos/equipment_definitions.ts +++ b/packages/core/src/protos/equipment_definitions.ts @@ -1,12 +1,12 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.2.2 +// protoc-gen-ts_proto v2.11.2 // protoc v5.28.2 -// source: packages/core/src/protos/equipment_definitions.proto +// source: equipment_definitions.proto /* eslint-disable */ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; -import { createBaseI18nString, I18nString } from "./i18n"; +import { I18nString } from "./i18n"; export const protobufPackage = "blitzkit"; @@ -26,8 +26,8 @@ export interface EquipmentDefinitions_EquipmentsEntry { } export interface Equipment { - name: I18nString; - description: I18nString; + name: I18nString | undefined; + description: I18nString | undefined; } export interface EquipmentPreset { @@ -39,16 +39,16 @@ export interface EquipmentSlot { right: number; } -export function createBaseEquipmentDefinitions(): EquipmentDefinitions { +function createBaseEquipmentDefinitions(): EquipmentDefinitions { return { presets: {}, equipments: {} }; } export const EquipmentDefinitions: MessageFns = { encode(message: EquipmentDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - Object.entries(message.presets).forEach(([key, value]) => { + globalThis.Object.entries(message.presets).forEach(([key, value]: [string, EquipmentPreset]) => { EquipmentDefinitions_PresetsEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join(); }); - Object.entries(message.equipments).forEach(([key, value]) => { + globalThis.Object.entries(message.equipments).forEach(([key, value]: [string, Equipment]) => { EquipmentDefinitions_EquipmentsEntry.encode({ key: key as any, value }, writer.uint32(18).fork()).join(); }); return writer; @@ -56,7 +56,7 @@ export const EquipmentDefinitions: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): EquipmentDefinitions { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseEquipmentDefinitions(); while (reader.pos < end) { const tag = reader.uint32(); @@ -95,16 +95,22 @@ export const EquipmentDefinitions: MessageFns = { fromJSON(object: any): EquipmentDefinitions { return { presets: isObject(object.presets) - ? Object.entries(object.presets).reduce<{ [key: string]: EquipmentPreset }>((acc, [key, value]) => { - acc[key] = EquipmentPreset.fromJSON(value); - return acc; - }, {}) + ? (globalThis.Object.entries(object.presets) as [string, any][]).reduce( + (acc: { [key: string]: EquipmentPreset }, [key, value]: [string, any]) => { + acc[key] = EquipmentPreset.fromJSON(value); + return acc; + }, + {}, + ) : {}, equipments: isObject(object.equipments) - ? Object.entries(object.equipments).reduce<{ [key: number]: Equipment }>((acc, [key, value]) => { - acc[globalThis.Number(key)] = Equipment.fromJSON(value); - return acc; - }, {}) + ? (globalThis.Object.entries(object.equipments) as [string, any][]).reduce( + (acc: { [key: number]: Equipment }, [key, value]: [string, any]) => { + acc[globalThis.Number(key)] = Equipment.fromJSON(value); + return acc; + }, + {}, + ) : {}, }; }, @@ -112,7 +118,7 @@ export const EquipmentDefinitions: MessageFns = { toJSON(message: EquipmentDefinitions): unknown { const obj: any = {}; if (message.presets) { - const entries = Object.entries(message.presets); + const entries = globalThis.Object.entries(message.presets) as [string, EquipmentPreset][]; if (entries.length > 0) { obj.presets = {}; entries.forEach(([k, v]) => { @@ -121,7 +127,7 @@ export const EquipmentDefinitions: MessageFns = { } } if (message.equipments) { - const entries = Object.entries(message.equipments); + const entries = globalThis.Object.entries(message.equipments) as [string, Equipment][]; if (entries.length > 0) { obj.equipments = {}; entries.forEach(([k, v]) => { @@ -137,8 +143,8 @@ export const EquipmentDefinitions: MessageFns = { }, fromPartial, I>>(object: I): EquipmentDefinitions { const message = createBaseEquipmentDefinitions(); - message.presets = Object.entries(object.presets ?? {}).reduce<{ [key: string]: EquipmentPreset }>( - (acc, [key, value]) => { + message.presets = (globalThis.Object.entries(object.presets ?? {}) as [string, EquipmentPreset][]).reduce( + (acc: { [key: string]: EquipmentPreset }, [key, value]: [string, EquipmentPreset]) => { if (value !== undefined) { acc[key] = EquipmentPreset.fromPartial(value); } @@ -146,8 +152,8 @@ export const EquipmentDefinitions: MessageFns = { }, {}, ); - message.equipments = Object.entries(object.equipments ?? {}).reduce<{ [key: number]: Equipment }>( - (acc, [key, value]) => { + message.equipments = (globalThis.Object.entries(object.equipments ?? {}) as [string, Equipment][]).reduce( + (acc: { [key: number]: Equipment }, [key, value]: [string, Equipment]) => { if (value !== undefined) { acc[globalThis.Number(key)] = Equipment.fromPartial(value); } @@ -159,13 +165,13 @@ export const EquipmentDefinitions: MessageFns = { }, }; -export function createBaseEquipmentDefinitions_PresetsEntry(): EquipmentDefinitions_PresetsEntry { - return { key: "", value: createBaseEquipmentPreset() }; +function createBaseEquipmentDefinitions_PresetsEntry(): EquipmentDefinitions_PresetsEntry { + return { key: "", value: undefined }; } export const EquipmentDefinitions_PresetsEntry: MessageFns = { encode(message: EquipmentDefinitions_PresetsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - if (message.key !== undefined) { + if (message.key !== "") { writer.uint32(10).string(message.key); } if (message.value !== undefined) { @@ -176,7 +182,7 @@ export const EquipmentDefinitions_PresetsEntry: MessageFns = { encode(message: EquipmentDefinitions_EquipmentsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - if (message.key !== undefined) { + if (message.key !== 0) { writer.uint32(8).uint32(message.key); } if (message.value !== undefined) { @@ -258,7 +264,7 @@ export const EquipmentDefinitions_EquipmentsEntry: MessageFns = { @@ -340,7 +346,7 @@ export const Equipment: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): Equipment { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseEquipment(); while (reader.pos < end) { const tag = reader.uint32(); @@ -372,8 +378,8 @@ export const Equipment: MessageFns = { fromJSON(object: any): Equipment { return { - name: I18nString.fromJSON(assertSet("Equipment.name", object.name)), - description: I18nString.fromJSON(assertSet("Equipment.description", object.description)), + name: isSet(object.name) ? I18nString.fromJSON(object.name) : undefined, + description: isSet(object.description) ? I18nString.fromJSON(object.description) : undefined, }; }, @@ -395,15 +401,15 @@ export const Equipment: MessageFns = { const message = createBaseEquipment(); message.name = (object.name !== undefined && object.name !== null) ? I18nString.fromPartial(object.name) - : createBaseI18nString(); + : undefined; message.description = (object.description !== undefined && object.description !== null) ? I18nString.fromPartial(object.description) - : createBaseI18nString(); + : undefined; return message; }, }; -export function createBaseEquipmentPreset(): EquipmentPreset { +function createBaseEquipmentPreset(): EquipmentPreset { return { slots: [] }; } @@ -417,7 +423,7 @@ export const EquipmentPreset: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): EquipmentPreset { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseEquipmentPreset(); while (reader.pos < end) { const tag = reader.uint32(); @@ -463,7 +469,7 @@ export const EquipmentPreset: MessageFns = { }, }; -export function createBaseEquipmentSlot(): EquipmentSlot { +function createBaseEquipmentSlot(): EquipmentSlot { return { left: 0, right: 0 }; } @@ -480,7 +486,7 @@ export const EquipmentSlot: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): EquipmentSlot { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseEquipmentSlot(); while (reader.pos < end) { const tag = reader.uint32(); @@ -512,8 +518,8 @@ export const EquipmentSlot: MessageFns = { fromJSON(object: any): EquipmentSlot { return { - left: globalThis.Number(assertSet("EquipmentSlot.left", object.left)), - right: globalThis.Number(assertSet("EquipmentSlot.right", object.right)), + left: isSet(object.left) ? globalThis.Number(object.left) : 0, + right: isSet(object.right) ? globalThis.Number(object.right) : 0, }; }, @@ -560,14 +566,6 @@ function isSet(value: any): boolean { return value !== null && value !== undefined; } -function assertSet(field: string, value: T | undefined): T { - if (!isSet(value)) { - throw new TypeError(`Required field ${field} is not set`); - } - - return value as T; -} - export interface MessageFns { encode(message: T, writer?: BinaryWriter): BinaryWriter; decode(input: BinaryReader | Uint8Array, length?: number): T; diff --git a/packages/core/src/protos/gallery.proto b/packages/core/src/protos/gallery.proto index 85e1199dc..a983b6133 100644 --- a/packages/core/src/protos/gallery.proto +++ b/packages/core/src/protos/gallery.proto @@ -2,14 +2,14 @@ syntax = "proto2"; package blitzkit; -import "packages/core/src/protos/i18n.proto"; +import "i18n.proto"; message Gallery { repeated Avatar avatars = 1; } message Avatar { - required string id = 1; - required I18nString name = 2; - required string extension = 3; + required string id = 1; + required I18nString name = 2; + required string extension = 3; } \ No newline at end of file diff --git a/packages/core/src/protos/gallery.ts b/packages/core/src/protos/gallery.ts index e3605a2e4..fe58e48ca 100644 --- a/packages/core/src/protos/gallery.ts +++ b/packages/core/src/protos/gallery.ts @@ -1,12 +1,12 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.2.2 +// protoc-gen-ts_proto v2.11.2 // protoc v5.28.2 -// source: packages/core/src/protos/gallery.proto +// source: gallery.proto /* eslint-disable */ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; -import { createBaseI18nString, I18nString } from "./i18n"; +import { I18nString } from "./i18n"; export const protobufPackage = "blitzkit"; @@ -16,11 +16,11 @@ export interface Gallery { export interface Avatar { id: string; - name: I18nString; + name: I18nString | undefined; extension: string; } -export function createBaseGallery(): Gallery { +function createBaseGallery(): Gallery { return { avatars: [] }; } @@ -34,7 +34,7 @@ export const Gallery: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): Gallery { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseGallery(); while (reader.pos < end) { const tag = reader.uint32(); @@ -80,8 +80,8 @@ export const Gallery: MessageFns = { }, }; -export function createBaseAvatar(): Avatar { - return { id: "", name: createBaseI18nString(), extension: "" }; +function createBaseAvatar(): Avatar { + return { id: "", name: undefined, extension: "" }; } export const Avatar: MessageFns = { @@ -100,7 +100,7 @@ export const Avatar: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): Avatar { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseAvatar(); while (reader.pos < end) { const tag = reader.uint32(); @@ -140,9 +140,9 @@ export const Avatar: MessageFns = { fromJSON(object: any): Avatar { return { - id: globalThis.String(assertSet("Avatar.id", object.id)), - name: I18nString.fromJSON(assertSet("Avatar.name", object.name)), - extension: globalThis.String(assertSet("Avatar.extension", object.extension)), + id: isSet(object.id) ? globalThis.String(object.id) : "", + name: isSet(object.name) ? I18nString.fromJSON(object.name) : undefined, + extension: isSet(object.extension) ? globalThis.String(object.extension) : "", }; }, @@ -168,7 +168,7 @@ export const Avatar: MessageFns = { message.id = object.id ?? ""; message.name = (object.name !== undefined && object.name !== null) ? I18nString.fromPartial(object.name) - : createBaseI18nString(); + : undefined; message.extension = object.extension ?? ""; return message; }, @@ -191,14 +191,6 @@ function isSet(value: any): boolean { return value !== null && value !== undefined; } -function assertSet(field: string, value: T | undefined): T { - if (!isSet(value)) { - throw new TypeError(`Required field ${field} is not set`); - } - - return value as T; -} - export interface MessageFns { encode(message: T, writer?: BinaryWriter): BinaryWriter; decode(input: BinaryReader | Uint8Array, length?: number): T; diff --git a/packages/core/src/protos/game_definitions.proto b/packages/core/src/protos/game_definitions.proto index af8dff450..9b7417a74 100644 --- a/packages/core/src/protos/game_definitions.proto +++ b/packages/core/src/protos/game_definitions.proto @@ -2,13 +2,13 @@ syntax = "proto2"; package blitzkit; -import "packages/core/src/protos/i18n.proto"; +import "i18n.proto"; message GameDefinitions { - required string version = 1; - repeated string nations = 2; - map gameModes = 3; - map roles = 4; + required string version = 1; + repeated string nations = 2; + map gameModes = 3; + map roles = 4; } message GameMode { @@ -16,6 +16,6 @@ message GameMode { } message GameModeRole { - repeated uint32 provisions = 1; + repeated uint32 provisions = 1; repeated uint32 consumables = 2; } \ No newline at end of file diff --git a/packages/core/src/protos/game_definitions.ts b/packages/core/src/protos/game_definitions.ts index d404828cd..91afcb2be 100644 --- a/packages/core/src/protos/game_definitions.ts +++ b/packages/core/src/protos/game_definitions.ts @@ -1,12 +1,12 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.2.2 +// protoc-gen-ts_proto v2.11.2 // protoc v5.28.2 -// source: packages/core/src/protos/game_definitions.proto +// source: game_definitions.proto /* eslint-disable */ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; -import { createBaseI18nString, I18nString } from "./i18n"; +import { I18nString } from "./i18n"; export const protobufPackage = "blitzkit"; @@ -28,7 +28,7 @@ export interface GameDefinitions_RolesEntry { } export interface GameMode { - name: I18nString; + name: I18nString | undefined; } export interface GameModeRole { @@ -36,7 +36,7 @@ export interface GameModeRole { consumables: number[]; } -export function createBaseGameDefinitions(): GameDefinitions { +function createBaseGameDefinitions(): GameDefinitions { return { version: "", nations: [], gameModes: {}, roles: {} }; } @@ -48,10 +48,10 @@ export const GameDefinitions: MessageFns = { for (const v of message.nations) { writer.uint32(18).string(v!); } - Object.entries(message.gameModes).forEach(([key, value]) => { + globalThis.Object.entries(message.gameModes).forEach(([key, value]: [string, GameMode]) => { GameDefinitions_GameModesEntry.encode({ key: key as any, value }, writer.uint32(26).fork()).join(); }); - Object.entries(message.roles).forEach(([key, value]) => { + globalThis.Object.entries(message.roles).forEach(([key, value]: [string, GameModeRole]) => { GameDefinitions_RolesEntry.encode({ key: key as any, value }, writer.uint32(34).fork()).join(); }); return writer; @@ -59,7 +59,7 @@ export const GameDefinitions: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): GameDefinitions { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseGameDefinitions(); while (reader.pos < end) { const tag = reader.uint32(); @@ -113,19 +113,25 @@ export const GameDefinitions: MessageFns = { fromJSON(object: any): GameDefinitions { return { - version: globalThis.String(assertSet("GameDefinitions.version", object.version)), + version: isSet(object.version) ? globalThis.String(object.version) : "", nations: globalThis.Array.isArray(object?.nations) ? object.nations.map((e: any) => globalThis.String(e)) : [], gameModes: isObject(object.gameModes) - ? Object.entries(object.gameModes).reduce<{ [key: number]: GameMode }>((acc, [key, value]) => { - acc[globalThis.Number(key)] = GameMode.fromJSON(value); - return acc; - }, {}) + ? (globalThis.Object.entries(object.gameModes) as [string, any][]).reduce( + (acc: { [key: number]: GameMode }, [key, value]: [string, any]) => { + acc[globalThis.Number(key)] = GameMode.fromJSON(value); + return acc; + }, + {}, + ) : {}, roles: isObject(object.roles) - ? Object.entries(object.roles).reduce<{ [key: number]: GameModeRole }>((acc, [key, value]) => { - acc[globalThis.Number(key)] = GameModeRole.fromJSON(value); - return acc; - }, {}) + ? (globalThis.Object.entries(object.roles) as [string, any][]).reduce( + (acc: { [key: number]: GameModeRole }, [key, value]: [string, any]) => { + acc[globalThis.Number(key)] = GameModeRole.fromJSON(value); + return acc; + }, + {}, + ) : {}, }; }, @@ -139,7 +145,7 @@ export const GameDefinitions: MessageFns = { obj.nations = message.nations; } if (message.gameModes) { - const entries = Object.entries(message.gameModes); + const entries = globalThis.Object.entries(message.gameModes) as [string, GameMode][]; if (entries.length > 0) { obj.gameModes = {}; entries.forEach(([k, v]) => { @@ -148,7 +154,7 @@ export const GameDefinitions: MessageFns = { } } if (message.roles) { - const entries = Object.entries(message.roles); + const entries = globalThis.Object.entries(message.roles) as [string, GameModeRole][]; if (entries.length > 0) { obj.roles = {}; entries.forEach(([k, v]) => { @@ -166,8 +172,8 @@ export const GameDefinitions: MessageFns = { const message = createBaseGameDefinitions(); message.version = object.version ?? ""; message.nations = object.nations?.map((e) => e) || []; - message.gameModes = Object.entries(object.gameModes ?? {}).reduce<{ [key: number]: GameMode }>( - (acc, [key, value]) => { + message.gameModes = (globalThis.Object.entries(object.gameModes ?? {}) as [string, GameMode][]).reduce( + (acc: { [key: number]: GameMode }, [key, value]: [string, GameMode]) => { if (value !== undefined) { acc[globalThis.Number(key)] = GameMode.fromPartial(value); } @@ -175,23 +181,26 @@ export const GameDefinitions: MessageFns = { }, {}, ); - message.roles = Object.entries(object.roles ?? {}).reduce<{ [key: number]: GameModeRole }>((acc, [key, value]) => { - if (value !== undefined) { - acc[globalThis.Number(key)] = GameModeRole.fromPartial(value); - } - return acc; - }, {}); + message.roles = (globalThis.Object.entries(object.roles ?? {}) as [string, GameModeRole][]).reduce( + (acc: { [key: number]: GameModeRole }, [key, value]: [string, GameModeRole]) => { + if (value !== undefined) { + acc[globalThis.Number(key)] = GameModeRole.fromPartial(value); + } + return acc; + }, + {}, + ); return message; }, }; -export function createBaseGameDefinitions_GameModesEntry(): GameDefinitions_GameModesEntry { - return { key: 0, value: createBaseGameMode() }; +function createBaseGameDefinitions_GameModesEntry(): GameDefinitions_GameModesEntry { + return { key: 0, value: undefined }; } export const GameDefinitions_GameModesEntry: MessageFns = { encode(message: GameDefinitions_GameModesEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - if (message.key !== undefined) { + if (message.key !== 0) { writer.uint32(8).uint32(message.key); } if (message.value !== undefined) { @@ -202,7 +211,7 @@ export const GameDefinitions_GameModesEntry: MessageFns = { encode(message: GameDefinitions_RolesEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - if (message.key !== undefined) { + if (message.key !== 0) { writer.uint32(8).uint32(message.key); } if (message.value !== undefined) { @@ -282,7 +291,7 @@ export const GameDefinitions_RolesEntry: MessageFns decode(input: BinaryReader | Uint8Array, length?: number): GameDefinitions_RolesEntry { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseGameDefinitions_RolesEntry(); while (reader.pos < end) { const tag = reader.uint32(); @@ -314,14 +323,14 @@ export const GameDefinitions_RolesEntry: MessageFns fromJSON(object: any): GameDefinitions_RolesEntry { return { - key: globalThis.Number(assertSet("GameDefinitions_RolesEntry.key", object.key)), - value: GameModeRole.fromJSON(assertSet("GameDefinitions_RolesEntry.value", object.value)), + key: isSet(object.key) ? globalThis.Number(object.key) : 0, + value: isSet(object.value) ? GameModeRole.fromJSON(object.value) : undefined, }; }, toJSON(message: GameDefinitions_RolesEntry): unknown { const obj: any = {}; - if (message.key !== undefined) { + if (message.key !== 0) { obj.key = Math.round(message.key); } if (message.value !== undefined) { @@ -338,13 +347,13 @@ export const GameDefinitions_RolesEntry: MessageFns message.key = object.key ?? 0; message.value = (object.value !== undefined && object.value !== null) ? GameModeRole.fromPartial(object.value) - : createBaseGameModeRole(); + : undefined; return message; }, }; -export function createBaseGameMode(): GameMode { - return { name: createBaseI18nString() }; +function createBaseGameMode(): GameMode { + return { name: undefined }; } export const GameMode: MessageFns = { @@ -357,7 +366,7 @@ export const GameMode: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): GameMode { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseGameMode(); while (reader.pos < end) { const tag = reader.uint32(); @@ -380,7 +389,7 @@ export const GameMode: MessageFns = { }, fromJSON(object: any): GameMode { - return { name: I18nString.fromJSON(assertSet("GameMode.name", object.name)) }; + return { name: isSet(object.name) ? I18nString.fromJSON(object.name) : undefined }; }, toJSON(message: GameMode): unknown { @@ -398,33 +407,29 @@ export const GameMode: MessageFns = { const message = createBaseGameMode(); message.name = (object.name !== undefined && object.name !== null) ? I18nString.fromPartial(object.name) - : createBaseI18nString(); + : undefined; return message; }, }; -export function createBaseGameModeRole(): GameModeRole { +function createBaseGameModeRole(): GameModeRole { return { provisions: [], consumables: [] }; } export const GameModeRole: MessageFns = { encode(message: GameModeRole, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - writer.uint32(10).fork(); for (const v of message.provisions) { - writer.uint32(v); + writer.uint32(8).uint32(v!); } - writer.join(); - writer.uint32(18).fork(); for (const v of message.consumables) { - writer.uint32(v); + writer.uint32(16).uint32(v!); } - writer.join(); return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): GameModeRole { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseGameModeRole(); while (reader.pos < end) { const tag = reader.uint32(); @@ -528,14 +533,6 @@ function isSet(value: any): boolean { return value !== null && value !== undefined; } -function assertSet(field: string, value: T | undefined): T { - if (!isSet(value)) { - throw new TypeError(`Required field ${field} is not set`); - } - - return value as T; -} - export interface MessageFns { encode(message: T, writer?: BinaryWriter): BinaryWriter; decode(input: BinaryReader | Uint8Array, length?: number): T; diff --git a/packages/core/src/protos/i18n.ts b/packages/core/src/protos/i18n.ts index 67630c9b9..63fcfbf0d 100644 --- a/packages/core/src/protos/i18n.ts +++ b/packages/core/src/protos/i18n.ts @@ -1,8 +1,8 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.2.2 +// protoc-gen-ts_proto v2.11.2 // protoc v5.28.2 -// source: packages/core/src/protos/i18n.proto +// source: i18n.proto /* eslint-disable */ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; @@ -18,13 +18,13 @@ export interface I18nString_LocalesEntry { value: string; } -export function createBaseI18nString(): I18nString { +function createBaseI18nString(): I18nString { return { locales: {} }; } export const I18nString: MessageFns = { encode(message: I18nString, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - Object.entries(message.locales).forEach(([key, value]) => { + globalThis.Object.entries(message.locales).forEach(([key, value]: [string, string]) => { I18nString_LocalesEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join(); }); return writer; @@ -32,7 +32,7 @@ export const I18nString: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): I18nString { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseI18nString(); while (reader.pos < end) { const tag = reader.uint32(); @@ -60,10 +60,13 @@ export const I18nString: MessageFns = { fromJSON(object: any): I18nString { return { locales: isObject(object.locales) - ? Object.entries(object.locales).reduce<{ [key: string]: string }>((acc, [key, value]) => { - acc[key] = String(value); - return acc; - }, {}) + ? (globalThis.Object.entries(object.locales) as [string, any][]).reduce( + (acc: { [key: string]: string }, [key, value]: [string, any]) => { + acc[key] = globalThis.String(value); + return acc; + }, + {}, + ) : {}, }; }, @@ -71,7 +74,7 @@ export const I18nString: MessageFns = { toJSON(message: I18nString): unknown { const obj: any = {}; if (message.locales) { - const entries = Object.entries(message.locales); + const entries = globalThis.Object.entries(message.locales) as [string, string][]; if (entries.length > 0) { obj.locales = {}; entries.forEach(([k, v]) => { @@ -87,26 +90,29 @@ export const I18nString: MessageFns = { }, fromPartial, I>>(object: I): I18nString { const message = createBaseI18nString(); - message.locales = Object.entries(object.locales ?? {}).reduce<{ [key: string]: string }>((acc, [key, value]) => { - if (value !== undefined) { - acc[key] = globalThis.String(value); - } - return acc; - }, {}); + message.locales = (globalThis.Object.entries(object.locales ?? {}) as [string, string][]).reduce( + (acc: { [key: string]: string }, [key, value]: [string, string]) => { + if (value !== undefined) { + acc[key] = globalThis.String(value); + } + return acc; + }, + {}, + ); return message; }, }; -export function createBaseI18nString_LocalesEntry(): I18nString_LocalesEntry { +function createBaseI18nString_LocalesEntry(): I18nString_LocalesEntry { return { key: "", value: "" }; } export const I18nString_LocalesEntry: MessageFns = { encode(message: I18nString_LocalesEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - if (message.key !== undefined) { + if (message.key !== "") { writer.uint32(10).string(message.key); } - if (message.value !== undefined) { + if (message.value !== "") { writer.uint32(18).string(message.value); } return writer; @@ -114,7 +120,7 @@ export const I18nString_LocalesEntry: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): I18nString_LocalesEntry { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseI18nString_LocalesEntry(); while (reader.pos < end) { const tag = reader.uint32(); @@ -146,17 +152,17 @@ export const I18nString_LocalesEntry: MessageFns = { fromJSON(object: any): I18nString_LocalesEntry { return { - key: globalThis.String(assertSet("I18nString_LocalesEntry.key", object.key)), - value: globalThis.String(assertSet("I18nString_LocalesEntry.value", object.value)), + key: isSet(object.key) ? globalThis.String(object.key) : "", + value: isSet(object.value) ? globalThis.String(object.value) : "", }; }, toJSON(message: I18nString_LocalesEntry): unknown { const obj: any = {}; - if (message.key !== undefined) { + if (message.key !== "") { obj.key = message.key; } - if (message.value !== undefined) { + if (message.value !== "") { obj.value = message.value; } return obj; @@ -194,14 +200,6 @@ function isSet(value: any): boolean { return value !== null && value !== undefined; } -function assertSet(field: string, value: T | undefined): T { - if (!isSet(value)) { - throw new TypeError(`Required field ${field} is not set`); - } - - return value as T; -} - export interface MessageFns { encode(message: T, writer?: BinaryWriter): BinaryWriter; decode(input: BinaryReader | Uint8Array, length?: number): T; diff --git a/packages/core/src/protos/map_definitions.proto b/packages/core/src/protos/map_definitions.proto index 1d67d331a..969970db4 100644 --- a/packages/core/src/protos/map_definitions.proto +++ b/packages/core/src/protos/map_definitions.proto @@ -2,13 +2,13 @@ syntax = "proto2"; package blitzkit; -import "packages/core/src/protos/i18n.proto"; +import "i18n.proto"; message MapDefinitions { map maps = 1; } message MapDefinition { - required uint32 id = 1; + required uint32 id = 1; required I18nString name = 2; } \ No newline at end of file diff --git a/packages/core/src/protos/map_definitions.ts b/packages/core/src/protos/map_definitions.ts index be7dd812b..8590e15b5 100644 --- a/packages/core/src/protos/map_definitions.ts +++ b/packages/core/src/protos/map_definitions.ts @@ -1,12 +1,12 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.2.2 +// protoc-gen-ts_proto v2.11.2 // protoc v5.28.2 -// source: packages/core/src/protos/map_definitions.proto +// source: map_definitions.proto /* eslint-disable */ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; -import { createBaseI18nString, I18nString } from "./i18n"; +import { I18nString } from "./i18n"; export const protobufPackage = "blitzkit"; @@ -21,16 +21,16 @@ export interface MapDefinitions_MapsEntry { export interface MapDefinition { id: number; - name: I18nString; + name: I18nString | undefined; } -export function createBaseMapDefinitions(): MapDefinitions { +function createBaseMapDefinitions(): MapDefinitions { return { maps: {} }; } export const MapDefinitions: MessageFns = { encode(message: MapDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - Object.entries(message.maps).forEach(([key, value]) => { + globalThis.Object.entries(message.maps).forEach(([key, value]: [string, MapDefinition]) => { MapDefinitions_MapsEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join(); }); return writer; @@ -38,7 +38,7 @@ export const MapDefinitions: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): MapDefinitions { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseMapDefinitions(); while (reader.pos < end) { const tag = reader.uint32(); @@ -66,10 +66,13 @@ export const MapDefinitions: MessageFns = { fromJSON(object: any): MapDefinitions { return { maps: isObject(object.maps) - ? Object.entries(object.maps).reduce<{ [key: number]: MapDefinition }>((acc, [key, value]) => { - acc[globalThis.Number(key)] = MapDefinition.fromJSON(value); - return acc; - }, {}) + ? (globalThis.Object.entries(object.maps) as [string, any][]).reduce( + (acc: { [key: number]: MapDefinition }, [key, value]: [string, any]) => { + acc[globalThis.Number(key)] = MapDefinition.fromJSON(value); + return acc; + }, + {}, + ) : {}, }; }, @@ -77,7 +80,7 @@ export const MapDefinitions: MessageFns = { toJSON(message: MapDefinitions): unknown { const obj: any = {}; if (message.maps) { - const entries = Object.entries(message.maps); + const entries = globalThis.Object.entries(message.maps) as [string, MapDefinition][]; if (entries.length > 0) { obj.maps = {}; entries.forEach(([k, v]) => { @@ -93,23 +96,26 @@ export const MapDefinitions: MessageFns = { }, fromPartial, I>>(object: I): MapDefinitions { const message = createBaseMapDefinitions(); - message.maps = Object.entries(object.maps ?? {}).reduce<{ [key: number]: MapDefinition }>((acc, [key, value]) => { - if (value !== undefined) { - acc[globalThis.Number(key)] = MapDefinition.fromPartial(value); - } - return acc; - }, {}); + message.maps = (globalThis.Object.entries(object.maps ?? {}) as [string, MapDefinition][]).reduce( + (acc: { [key: number]: MapDefinition }, [key, value]: [string, MapDefinition]) => { + if (value !== undefined) { + acc[globalThis.Number(key)] = MapDefinition.fromPartial(value); + } + return acc; + }, + {}, + ); return message; }, }; -export function createBaseMapDefinitions_MapsEntry(): MapDefinitions_MapsEntry { - return { key: 0, value: createBaseMapDefinition() }; +function createBaseMapDefinitions_MapsEntry(): MapDefinitions_MapsEntry { + return { key: 0, value: undefined }; } export const MapDefinitions_MapsEntry: MessageFns = { encode(message: MapDefinitions_MapsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - if (message.key !== undefined) { + if (message.key !== 0) { writer.uint32(8).int32(message.key); } if (message.value !== undefined) { @@ -120,7 +126,7 @@ export const MapDefinitions_MapsEntry: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): MapDefinitions_MapsEntry { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseMapDefinitions_MapsEntry(); while (reader.pos < end) { const tag = reader.uint32(); @@ -152,14 +158,14 @@ export const MapDefinitions_MapsEntry: MessageFns = { fromJSON(object: any): MapDefinitions_MapsEntry { return { - key: globalThis.Number(assertSet("MapDefinitions_MapsEntry.key", object.key)), - value: MapDefinition.fromJSON(assertSet("MapDefinitions_MapsEntry.value", object.value)), + key: isSet(object.key) ? globalThis.Number(object.key) : 0, + value: isSet(object.value) ? MapDefinition.fromJSON(object.value) : undefined, }; }, toJSON(message: MapDefinitions_MapsEntry): unknown { const obj: any = {}; - if (message.key !== undefined) { + if (message.key !== 0) { obj.key = Math.round(message.key); } if (message.value !== undefined) { @@ -176,13 +182,13 @@ export const MapDefinitions_MapsEntry: MessageFns = { message.key = object.key ?? 0; message.value = (object.value !== undefined && object.value !== null) ? MapDefinition.fromPartial(object.value) - : createBaseMapDefinition(); + : undefined; return message; }, }; -export function createBaseMapDefinition(): MapDefinition { - return { id: 0, name: createBaseI18nString() }; +function createBaseMapDefinition(): MapDefinition { + return { id: 0, name: undefined }; } export const MapDefinition: MessageFns = { @@ -198,7 +204,7 @@ export const MapDefinition: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): MapDefinition { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseMapDefinition(); while (reader.pos < end) { const tag = reader.uint32(); @@ -230,8 +236,8 @@ export const MapDefinition: MessageFns = { fromJSON(object: any): MapDefinition { return { - id: globalThis.Number(assertSet("MapDefinition.id", object.id)), - name: I18nString.fromJSON(assertSet("MapDefinition.name", object.name)), + id: isSet(object.id) ? globalThis.Number(object.id) : 0, + name: isSet(object.name) ? I18nString.fromJSON(object.name) : undefined, }; }, @@ -254,7 +260,7 @@ export const MapDefinition: MessageFns = { message.id = object.id ?? 0; message.name = (object.name !== undefined && object.name !== null) ? I18nString.fromPartial(object.name) - : createBaseI18nString(); + : undefined; return message; }, }; @@ -280,14 +286,6 @@ function isSet(value: any): boolean { return value !== null && value !== undefined; } -function assertSet(field: string, value: T | undefined): T { - if (!isSet(value)) { - throw new TypeError(`Required field ${field} is not set`); - } - - return value as T; -} - export interface MessageFns { encode(message: T, writer?: BinaryWriter): BinaryWriter; decode(input: BinaryReader | Uint8Array, length?: number): T; diff --git a/packages/core/src/protos/model_definitions.proto b/packages/core/src/protos/model_definitions.proto index 170141c14..242af4c34 100644 --- a/packages/core/src/protos/model_definitions.proto +++ b/packages/core/src/protos/model_definitions.proto @@ -7,17 +7,17 @@ message ModelDefinitions { } message ModelDefinition { - required Armor armor = 1; - required Vector3 turret_origin = 2; - optional InitialTurretRotation initial_turret_rotation = 3; - map turrets = 4; - map tracks = 5; - required BoundingBox bounding_box = 6; + required Armor armor = 1; + required Vector3 turret_origin = 2; + optional InitialTurretRotation initial_turret_rotation = 3; + map turrets = 4; + map tracks = 5; + required BoundingBox bounding_box = 6; } message Armor { map thickness = 1; - repeated uint32 spaced = 2; + repeated uint32 spaced = 2; } message Vector3 { @@ -27,18 +27,18 @@ message Vector3 { } message InitialTurretRotation { - required float yaw = 1; + required float yaw = 1; required float pitch = 2; - required float roll = 3; + required float roll = 3; } message TurretModelDefinition { - required BoundingBox bounding_box = 1; - required Armor armor = 2; - required uint32 model_id = 3; - required Vector3 gun_origin = 4; - map guns = 5; - optional YawLimits yaw = 6; + required BoundingBox bounding_box = 1; + required Armor armor = 2; + required uint32 model_id = 3; + required Vector3 gun_origin = 4; + map guns = 5; + optional YawLimits yaw = 6; } message YawLimits { @@ -52,28 +52,28 @@ message BoundingBox { } message TrackModelDefinition { - required float thickness = 1; - required Vector3 origin = 2; + required float thickness = 1; + required Vector3 origin = 2; } message GunModelDefinition { - required Armor armor = 1; - required float thickness = 2; - required uint32 model_id = 3; - required PitchLimits pitch = 4; - optional float mask = 5; + required Armor armor = 1; + required float thickness = 2; + required uint32 model_id = 3; + required PitchLimits pitch = 4; + optional float mask = 5; } message PitchLimits { - required float min = 1; - required float max = 2; - optional PitchLimitsExtrema front = 3; - optional PitchLimitsExtrema back = 4; - optional float transition = 5; + required float min = 1; + required float max = 2; + optional PitchLimitsExtrema front = 3; + optional PitchLimitsExtrema back = 4; + optional float transition = 5; } message PitchLimitsExtrema { - required float min = 1; - required float max = 2; + required float min = 1; + required float max = 2; required float range = 3; } \ No newline at end of file diff --git a/packages/core/src/protos/model_definitions.ts b/packages/core/src/protos/model_definitions.ts index 21bb114b3..7fdd45a7a 100644 --- a/packages/core/src/protos/model_definitions.ts +++ b/packages/core/src/protos/model_definitions.ts @@ -1,8 +1,8 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.2.2 +// protoc-gen-ts_proto v2.11.2 // protoc v5.28.2 -// source: packages/core/src/protos/model_definitions.proto +// source: model_definitions.proto /* eslint-disable */ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; @@ -19,12 +19,12 @@ export interface ModelDefinitions_ModelsEntry { } export interface ModelDefinition { - armor: Armor; - turret_origin: Vector3; + armor: Armor | undefined; + turret_origin: Vector3 | undefined; initial_turret_rotation?: InitialTurretRotation | undefined; turrets: { [key: number]: TurretModelDefinition }; tracks: { [key: number]: TrackModelDefinition }; - bounding_box: BoundingBox; + bounding_box: BoundingBox | undefined; } export interface ModelDefinition_TurretsEntry { @@ -60,10 +60,10 @@ export interface InitialTurretRotation { } export interface TurretModelDefinition { - bounding_box: BoundingBox; - armor: Armor; + bounding_box: BoundingBox | undefined; + armor: Armor | undefined; model_id: number; - gun_origin: Vector3; + gun_origin: Vector3 | undefined; guns: { [key: number]: GunModelDefinition }; yaw?: YawLimits | undefined; } @@ -79,20 +79,20 @@ export interface YawLimits { } export interface BoundingBox { - min: Vector3; - max: Vector3; + min: Vector3 | undefined; + max: Vector3 | undefined; } export interface TrackModelDefinition { thickness: number; - origin: Vector3; + origin: Vector3 | undefined; } export interface GunModelDefinition { - armor: Armor; + armor: Armor | undefined; thickness: number; model_id: number; - pitch: PitchLimits; + pitch: PitchLimits | undefined; mask?: number | undefined; } @@ -110,13 +110,13 @@ export interface PitchLimitsExtrema { range: number; } -export function createBaseModelDefinitions(): ModelDefinitions { +function createBaseModelDefinitions(): ModelDefinitions { return { models: {} }; } export const ModelDefinitions: MessageFns = { encode(message: ModelDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - Object.entries(message.models).forEach(([key, value]) => { + globalThis.Object.entries(message.models).forEach(([key, value]: [string, ModelDefinition]) => { ModelDefinitions_ModelsEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join(); }); return writer; @@ -124,7 +124,7 @@ export const ModelDefinitions: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): ModelDefinitions { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseModelDefinitions(); while (reader.pos < end) { const tag = reader.uint32(); @@ -152,10 +152,13 @@ export const ModelDefinitions: MessageFns = { fromJSON(object: any): ModelDefinitions { return { models: isObject(object.models) - ? Object.entries(object.models).reduce<{ [key: number]: ModelDefinition }>((acc, [key, value]) => { - acc[globalThis.Number(key)] = ModelDefinition.fromJSON(value); - return acc; - }, {}) + ? (globalThis.Object.entries(object.models) as [string, any][]).reduce( + (acc: { [key: number]: ModelDefinition }, [key, value]: [string, any]) => { + acc[globalThis.Number(key)] = ModelDefinition.fromJSON(value); + return acc; + }, + {}, + ) : {}, }; }, @@ -163,7 +166,7 @@ export const ModelDefinitions: MessageFns = { toJSON(message: ModelDefinitions): unknown { const obj: any = {}; if (message.models) { - const entries = Object.entries(message.models); + const entries = globalThis.Object.entries(message.models) as [string, ModelDefinition][]; if (entries.length > 0) { obj.models = {}; entries.forEach(([k, v]) => { @@ -179,8 +182,8 @@ export const ModelDefinitions: MessageFns = { }, fromPartial, I>>(object: I): ModelDefinitions { const message = createBaseModelDefinitions(); - message.models = Object.entries(object.models ?? {}).reduce<{ [key: number]: ModelDefinition }>( - (acc, [key, value]) => { + message.models = (globalThis.Object.entries(object.models ?? {}) as [string, ModelDefinition][]).reduce( + (acc: { [key: number]: ModelDefinition }, [key, value]: [string, ModelDefinition]) => { if (value !== undefined) { acc[globalThis.Number(key)] = ModelDefinition.fromPartial(value); } @@ -192,13 +195,13 @@ export const ModelDefinitions: MessageFns = { }, }; -export function createBaseModelDefinitions_ModelsEntry(): ModelDefinitions_ModelsEntry { - return { key: 0, value: createBaseModelDefinition() }; +function createBaseModelDefinitions_ModelsEntry(): ModelDefinitions_ModelsEntry { + return { key: 0, value: undefined }; } export const ModelDefinitions_ModelsEntry: MessageFns = { encode(message: ModelDefinitions_ModelsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - if (message.key !== undefined) { + if (message.key !== 0) { writer.uint32(8).uint32(message.key); } if (message.value !== undefined) { @@ -209,7 +212,7 @@ export const ModelDefinitions_ModelsEntry: MessageFns = { if (message.initial_turret_rotation !== undefined) { InitialTurretRotation.encode(message.initial_turret_rotation, writer.uint32(26).fork()).join(); } - Object.entries(message.turrets).forEach(([key, value]) => { + globalThis.Object.entries(message.turrets).forEach(([key, value]: [string, TurretModelDefinition]) => { ModelDefinition_TurretsEntry.encode({ key: key as any, value }, writer.uint32(34).fork()).join(); }); - Object.entries(message.tracks).forEach(([key, value]) => { + globalThis.Object.entries(message.tracks).forEach(([key, value]: [string, TrackModelDefinition]) => { ModelDefinition_TracksEntry.encode({ key: key as any, value }, writer.uint32(42).fork()).join(); }); if (message.bounding_box !== undefined) { @@ -306,7 +309,7 @@ export const ModelDefinition: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): ModelDefinition { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseModelDefinition(); while (reader.pos < end) { const tag = reader.uint32(); @@ -376,24 +379,40 @@ export const ModelDefinition: MessageFns = { fromJSON(object: any): ModelDefinition { return { - armor: Armor.fromJSON(assertSet("ModelDefinition.armor", object.armor)), - turret_origin: Vector3.fromJSON(assertSet("ModelDefinition.turret_origin", object.turret_origin)), - initial_turret_rotation: isSet(object.initial_turret_rotation) + armor: isSet(object.armor) ? Armor.fromJSON(object.armor) : undefined, + turret_origin: isSet(object.turretOrigin) + ? Vector3.fromJSON(object.turretOrigin) + : isSet(object.turret_origin) + ? Vector3.fromJSON(object.turret_origin) + : undefined, + initial_turret_rotation: isSet(object.initialTurretRotation) + ? InitialTurretRotation.fromJSON(object.initialTurretRotation) + : isSet(object.initial_turret_rotation) ? InitialTurretRotation.fromJSON(object.initial_turret_rotation) : undefined, turrets: isObject(object.turrets) - ? Object.entries(object.turrets).reduce<{ [key: number]: TurretModelDefinition }>((acc, [key, value]) => { - acc[globalThis.Number(key)] = TurretModelDefinition.fromJSON(value); - return acc; - }, {}) + ? (globalThis.Object.entries(object.turrets) as [string, any][]).reduce( + (acc: { [key: number]: TurretModelDefinition }, [key, value]: [string, any]) => { + acc[globalThis.Number(key)] = TurretModelDefinition.fromJSON(value); + return acc; + }, + {}, + ) : {}, tracks: isObject(object.tracks) - ? Object.entries(object.tracks).reduce<{ [key: number]: TrackModelDefinition }>((acc, [key, value]) => { - acc[globalThis.Number(key)] = TrackModelDefinition.fromJSON(value); - return acc; - }, {}) + ? (globalThis.Object.entries(object.tracks) as [string, any][]).reduce( + (acc: { [key: number]: TrackModelDefinition }, [key, value]: [string, any]) => { + acc[globalThis.Number(key)] = TrackModelDefinition.fromJSON(value); + return acc; + }, + {}, + ) : {}, - bounding_box: BoundingBox.fromJSON(assertSet("ModelDefinition.bounding_box", object.bounding_box)), + bounding_box: isSet(object.boundingBox) + ? BoundingBox.fromJSON(object.boundingBox) + : isSet(object.bounding_box) + ? BoundingBox.fromJSON(object.bounding_box) + : undefined, }; }, @@ -403,13 +422,13 @@ export const ModelDefinition: MessageFns = { obj.armor = Armor.toJSON(message.armor); } if (message.turret_origin !== undefined) { - obj.turret_origin = Vector3.toJSON(message.turret_origin); + obj.turretOrigin = Vector3.toJSON(message.turret_origin); } if (message.initial_turret_rotation !== undefined) { - obj.initial_turret_rotation = InitialTurretRotation.toJSON(message.initial_turret_rotation); + obj.initialTurretRotation = InitialTurretRotation.toJSON(message.initial_turret_rotation); } if (message.turrets) { - const entries = Object.entries(message.turrets); + const entries = globalThis.Object.entries(message.turrets) as [string, TurretModelDefinition][]; if (entries.length > 0) { obj.turrets = {}; entries.forEach(([k, v]) => { @@ -418,7 +437,7 @@ export const ModelDefinition: MessageFns = { } } if (message.tracks) { - const entries = Object.entries(message.tracks); + const entries = globalThis.Object.entries(message.tracks) as [string, TrackModelDefinition][]; if (entries.length > 0) { obj.tracks = {}; entries.forEach(([k, v]) => { @@ -427,7 +446,7 @@ export const ModelDefinition: MessageFns = { } } if (message.bounding_box !== undefined) { - obj.bounding_box = BoundingBox.toJSON(message.bounding_box); + obj.boundingBox = BoundingBox.toJSON(message.bounding_box); } return obj; }, @@ -437,18 +456,16 @@ export const ModelDefinition: MessageFns = { }, fromPartial, I>>(object: I): ModelDefinition { const message = createBaseModelDefinition(); - message.armor = (object.armor !== undefined && object.armor !== null) - ? Armor.fromPartial(object.armor) - : createBaseArmor(); + message.armor = (object.armor !== undefined && object.armor !== null) ? Armor.fromPartial(object.armor) : undefined; message.turret_origin = (object.turret_origin !== undefined && object.turret_origin !== null) ? Vector3.fromPartial(object.turret_origin) - : createBaseVector3(); + : undefined; message.initial_turret_rotation = (object.initial_turret_rotation !== undefined && object.initial_turret_rotation !== null) ? InitialTurretRotation.fromPartial(object.initial_turret_rotation) : undefined; - message.turrets = Object.entries(object.turrets ?? {}).reduce<{ [key: number]: TurretModelDefinition }>( - (acc, [key, value]) => { + message.turrets = (globalThis.Object.entries(object.turrets ?? {}) as [string, TurretModelDefinition][]).reduce( + (acc: { [key: number]: TurretModelDefinition }, [key, value]: [string, TurretModelDefinition]) => { if (value !== undefined) { acc[globalThis.Number(key)] = TurretModelDefinition.fromPartial(value); } @@ -456,8 +473,8 @@ export const ModelDefinition: MessageFns = { }, {}, ); - message.tracks = Object.entries(object.tracks ?? {}).reduce<{ [key: number]: TrackModelDefinition }>( - (acc, [key, value]) => { + message.tracks = (globalThis.Object.entries(object.tracks ?? {}) as [string, TrackModelDefinition][]).reduce( + (acc: { [key: number]: TrackModelDefinition }, [key, value]: [string, TrackModelDefinition]) => { if (value !== undefined) { acc[globalThis.Number(key)] = TrackModelDefinition.fromPartial(value); } @@ -467,18 +484,18 @@ export const ModelDefinition: MessageFns = { ); message.bounding_box = (object.bounding_box !== undefined && object.bounding_box !== null) ? BoundingBox.fromPartial(object.bounding_box) - : createBaseBoundingBox(); + : undefined; return message; }, }; -export function createBaseModelDefinition_TurretsEntry(): ModelDefinition_TurretsEntry { - return { key: 0, value: createBaseTurretModelDefinition() }; +function createBaseModelDefinition_TurretsEntry(): ModelDefinition_TurretsEntry { + return { key: 0, value: undefined }; } export const ModelDefinition_TurretsEntry: MessageFns = { encode(message: ModelDefinition_TurretsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - if (message.key !== undefined) { + if (message.key !== 0) { writer.uint32(8).uint32(message.key); } if (message.value !== undefined) { @@ -489,7 +506,7 @@ export const ModelDefinition_TurretsEntry: MessageFns = { encode(message: ModelDefinition_TracksEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - if (message.key !== undefined) { + if (message.key !== 0) { writer.uint32(8).uint32(message.key); } if (message.value !== undefined) { @@ -567,7 +584,7 @@ export const ModelDefinition_TracksEntry: MessageFns = { encode(message: Armor, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - Object.entries(message.thickness).forEach(([key, value]) => { + globalThis.Object.entries(message.thickness).forEach(([key, value]: [string, number]) => { Armor_ThicknessEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join(); }); - writer.uint32(18).fork(); for (const v of message.spaced) { - writer.uint32(v); + writer.uint32(16).uint32(v!); } - writer.join(); return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): Armor { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseArmor(); while (reader.pos < end) { const tag = reader.uint32(); @@ -693,10 +708,13 @@ export const Armor: MessageFns = { fromJSON(object: any): Armor { return { thickness: isObject(object.thickness) - ? Object.entries(object.thickness).reduce<{ [key: number]: number }>((acc, [key, value]) => { - acc[globalThis.Number(key)] = Number(value); - return acc; - }, {}) + ? (globalThis.Object.entries(object.thickness) as [string, any][]).reduce( + (acc: { [key: number]: number }, [key, value]: [string, any]) => { + acc[globalThis.Number(key)] = globalThis.Number(value); + return acc; + }, + {}, + ) : {}, spaced: globalThis.Array.isArray(object?.spaced) ? object.spaced.map((e: any) => globalThis.Number(e)) : [], }; @@ -705,7 +723,7 @@ export const Armor: MessageFns = { toJSON(message: Armor): unknown { const obj: any = {}; if (message.thickness) { - const entries = Object.entries(message.thickness); + const entries = globalThis.Object.entries(message.thickness) as [string, number][]; if (entries.length > 0) { obj.thickness = {}; entries.forEach(([k, v]) => { @@ -724,8 +742,8 @@ export const Armor: MessageFns = { }, fromPartial, I>>(object: I): Armor { const message = createBaseArmor(); - message.thickness = Object.entries(object.thickness ?? {}).reduce<{ [key: number]: number }>( - (acc, [key, value]) => { + message.thickness = (globalThis.Object.entries(object.thickness ?? {}) as [string, number][]).reduce( + (acc: { [key: number]: number }, [key, value]: [string, number]) => { if (value !== undefined) { acc[globalThis.Number(key)] = globalThis.Number(value); } @@ -738,16 +756,16 @@ export const Armor: MessageFns = { }, }; -export function createBaseArmor_ThicknessEntry(): Armor_ThicknessEntry { +function createBaseArmor_ThicknessEntry(): Armor_ThicknessEntry { return { key: 0, value: 0 }; } export const Armor_ThicknessEntry: MessageFns = { encode(message: Armor_ThicknessEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - if (message.key !== undefined) { + if (message.key !== 0) { writer.uint32(8).uint32(message.key); } - if (message.value !== undefined) { + if (message.value !== 0) { writer.uint32(21).float(message.value); } return writer; @@ -755,7 +773,7 @@ export const Armor_ThicknessEntry: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): Armor_ThicknessEntry { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseArmor_ThicknessEntry(); while (reader.pos < end) { const tag = reader.uint32(); @@ -787,17 +805,17 @@ export const Armor_ThicknessEntry: MessageFns = { fromJSON(object: any): Armor_ThicknessEntry { return { - key: globalThis.Number(assertSet("Armor_ThicknessEntry.key", object.key)), - value: globalThis.Number(assertSet("Armor_ThicknessEntry.value", object.value)), + key: isSet(object.key) ? globalThis.Number(object.key) : 0, + value: isSet(object.value) ? globalThis.Number(object.value) : 0, }; }, toJSON(message: Armor_ThicknessEntry): unknown { const obj: any = {}; - if (message.key !== undefined) { + if (message.key !== 0) { obj.key = Math.round(message.key); } - if (message.value !== undefined) { + if (message.value !== 0) { obj.value = message.value; } return obj; @@ -814,7 +832,7 @@ export const Armor_ThicknessEntry: MessageFns = { }, }; -export function createBaseVector3(): Vector3 { +function createBaseVector3(): Vector3 { return { x: 0, y: 0, z: 0 }; } @@ -834,7 +852,7 @@ export const Vector3: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): Vector3 { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseVector3(); while (reader.pos < end) { const tag = reader.uint32(); @@ -874,9 +892,9 @@ export const Vector3: MessageFns = { fromJSON(object: any): Vector3 { return { - x: globalThis.Number(assertSet("Vector3.x", object.x)), - y: globalThis.Number(assertSet("Vector3.y", object.y)), - z: globalThis.Number(assertSet("Vector3.z", object.z)), + x: isSet(object.x) ? globalThis.Number(object.x) : 0, + y: isSet(object.y) ? globalThis.Number(object.y) : 0, + z: isSet(object.z) ? globalThis.Number(object.z) : 0, }; }, @@ -906,7 +924,7 @@ export const Vector3: MessageFns = { }, }; -export function createBaseInitialTurretRotation(): InitialTurretRotation { +function createBaseInitialTurretRotation(): InitialTurretRotation { return { yaw: 0, pitch: 0, roll: 0 }; } @@ -926,7 +944,7 @@ export const InitialTurretRotation: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): InitialTurretRotation { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseInitialTurretRotation(); while (reader.pos < end) { const tag = reader.uint32(); @@ -966,9 +984,9 @@ export const InitialTurretRotation: MessageFns = { fromJSON(object: any): InitialTurretRotation { return { - yaw: globalThis.Number(assertSet("InitialTurretRotation.yaw", object.yaw)), - pitch: globalThis.Number(assertSet("InitialTurretRotation.pitch", object.pitch)), - roll: globalThis.Number(assertSet("InitialTurretRotation.roll", object.roll)), + yaw: isSet(object.yaw) ? globalThis.Number(object.yaw) : 0, + pitch: isSet(object.pitch) ? globalThis.Number(object.pitch) : 0, + roll: isSet(object.roll) ? globalThis.Number(object.roll) : 0, }; }, @@ -998,15 +1016,8 @@ export const InitialTurretRotation: MessageFns = { }, }; -export function createBaseTurretModelDefinition(): TurretModelDefinition { - return { - bounding_box: createBaseBoundingBox(), - armor: createBaseArmor(), - model_id: 0, - gun_origin: createBaseVector3(), - guns: {}, - yaw: undefined, - }; +function createBaseTurretModelDefinition(): TurretModelDefinition { + return { bounding_box: undefined, armor: undefined, model_id: 0, gun_origin: undefined, guns: {}, yaw: undefined }; } export const TurretModelDefinition: MessageFns = { @@ -1023,7 +1034,7 @@ export const TurretModelDefinition: MessageFns = { if (message.gun_origin !== undefined) { Vector3.encode(message.gun_origin, writer.uint32(34).fork()).join(); } - Object.entries(message.guns).forEach(([key, value]) => { + globalThis.Object.entries(message.guns).forEach(([key, value]: [string, GunModelDefinition]) => { TurretModelDefinition_GunsEntry.encode({ key: key as any, value }, writer.uint32(42).fork()).join(); }); if (message.yaw !== undefined) { @@ -1034,7 +1045,7 @@ export const TurretModelDefinition: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): TurretModelDefinition { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseTurretModelDefinition(); while (reader.pos < end) { const tag = reader.uint32(); @@ -1101,15 +1112,30 @@ export const TurretModelDefinition: MessageFns = { fromJSON(object: any): TurretModelDefinition { return { - bounding_box: BoundingBox.fromJSON(assertSet("TurretModelDefinition.bounding_box", object.bounding_box)), - armor: Armor.fromJSON(assertSet("TurretModelDefinition.armor", object.armor)), - model_id: globalThis.Number(assertSet("TurretModelDefinition.model_id", object.model_id)), - gun_origin: Vector3.fromJSON(assertSet("TurretModelDefinition.gun_origin", object.gun_origin)), + bounding_box: isSet(object.boundingBox) + ? BoundingBox.fromJSON(object.boundingBox) + : isSet(object.bounding_box) + ? BoundingBox.fromJSON(object.bounding_box) + : undefined, + armor: isSet(object.armor) ? Armor.fromJSON(object.armor) : undefined, + model_id: isSet(object.modelId) + ? globalThis.Number(object.modelId) + : isSet(object.model_id) + ? globalThis.Number(object.model_id) + : 0, + gun_origin: isSet(object.gunOrigin) + ? Vector3.fromJSON(object.gunOrigin) + : isSet(object.gun_origin) + ? Vector3.fromJSON(object.gun_origin) + : undefined, guns: isObject(object.guns) - ? Object.entries(object.guns).reduce<{ [key: number]: GunModelDefinition }>((acc, [key, value]) => { - acc[globalThis.Number(key)] = GunModelDefinition.fromJSON(value); - return acc; - }, {}) + ? (globalThis.Object.entries(object.guns) as [string, any][]).reduce( + (acc: { [key: number]: GunModelDefinition }, [key, value]: [string, any]) => { + acc[globalThis.Number(key)] = GunModelDefinition.fromJSON(value); + return acc; + }, + {}, + ) : {}, yaw: isSet(object.yaw) ? YawLimits.fromJSON(object.yaw) : undefined, }; @@ -1118,19 +1144,19 @@ export const TurretModelDefinition: MessageFns = { toJSON(message: TurretModelDefinition): unknown { const obj: any = {}; if (message.bounding_box !== undefined) { - obj.bounding_box = BoundingBox.toJSON(message.bounding_box); + obj.boundingBox = BoundingBox.toJSON(message.bounding_box); } if (message.armor !== undefined) { obj.armor = Armor.toJSON(message.armor); } if (message.model_id !== 0) { - obj.model_id = Math.round(message.model_id); + obj.modelId = Math.round(message.model_id); } if (message.gun_origin !== undefined) { - obj.gun_origin = Vector3.toJSON(message.gun_origin); + obj.gunOrigin = Vector3.toJSON(message.gun_origin); } if (message.guns) { - const entries = Object.entries(message.guns); + const entries = globalThis.Object.entries(message.guns) as [string, GunModelDefinition][]; if (entries.length > 0) { obj.guns = {}; entries.forEach(([k, v]) => { @@ -1151,16 +1177,14 @@ export const TurretModelDefinition: MessageFns = { const message = createBaseTurretModelDefinition(); message.bounding_box = (object.bounding_box !== undefined && object.bounding_box !== null) ? BoundingBox.fromPartial(object.bounding_box) - : createBaseBoundingBox(); - message.armor = (object.armor !== undefined && object.armor !== null) - ? Armor.fromPartial(object.armor) - : createBaseArmor(); + : undefined; + message.armor = (object.armor !== undefined && object.armor !== null) ? Armor.fromPartial(object.armor) : undefined; message.model_id = object.model_id ?? 0; message.gun_origin = (object.gun_origin !== undefined && object.gun_origin !== null) ? Vector3.fromPartial(object.gun_origin) - : createBaseVector3(); - message.guns = Object.entries(object.guns ?? {}).reduce<{ [key: number]: GunModelDefinition }>( - (acc, [key, value]) => { + : undefined; + message.guns = (globalThis.Object.entries(object.guns ?? {}) as [string, GunModelDefinition][]).reduce( + (acc: { [key: number]: GunModelDefinition }, [key, value]: [string, GunModelDefinition]) => { if (value !== undefined) { acc[globalThis.Number(key)] = GunModelDefinition.fromPartial(value); } @@ -1173,13 +1197,13 @@ export const TurretModelDefinition: MessageFns = { }, }; -export function createBaseTurretModelDefinition_GunsEntry(): TurretModelDefinition_GunsEntry { - return { key: 0, value: createBaseGunModelDefinition() }; +function createBaseTurretModelDefinition_GunsEntry(): TurretModelDefinition_GunsEntry { + return { key: 0, value: undefined }; } export const TurretModelDefinition_GunsEntry: MessageFns = { encode(message: TurretModelDefinition_GunsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - if (message.key !== undefined) { + if (message.key !== 0) { writer.uint32(8).uint32(message.key); } if (message.value !== undefined) { @@ -1190,7 +1214,7 @@ export const TurretModelDefinition_GunsEntry: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): YawLimits { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseYawLimits(); while (reader.pos < end) { const tag = reader.uint32(); @@ -1302,8 +1326,8 @@ export const YawLimits: MessageFns = { fromJSON(object: any): YawLimits { return { - min: globalThis.Number(assertSet("YawLimits.min", object.min)), - max: globalThis.Number(assertSet("YawLimits.max", object.max)), + min: isSet(object.min) ? globalThis.Number(object.min) : 0, + max: isSet(object.max) ? globalThis.Number(object.max) : 0, }; }, @@ -1329,8 +1353,8 @@ export const YawLimits: MessageFns = { }, }; -export function createBaseBoundingBox(): BoundingBox { - return { min: createBaseVector3(), max: createBaseVector3() }; +function createBaseBoundingBox(): BoundingBox { + return { min: undefined, max: undefined }; } export const BoundingBox: MessageFns = { @@ -1346,7 +1370,7 @@ export const BoundingBox: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): BoundingBox { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseBoundingBox(); while (reader.pos < end) { const tag = reader.uint32(); @@ -1378,8 +1402,8 @@ export const BoundingBox: MessageFns = { fromJSON(object: any): BoundingBox { return { - min: Vector3.fromJSON(assertSet("BoundingBox.min", object.min)), - max: Vector3.fromJSON(assertSet("BoundingBox.max", object.max)), + min: isSet(object.min) ? Vector3.fromJSON(object.min) : undefined, + max: isSet(object.max) ? Vector3.fromJSON(object.max) : undefined, }; }, @@ -1399,18 +1423,14 @@ export const BoundingBox: MessageFns = { }, fromPartial, I>>(object: I): BoundingBox { const message = createBaseBoundingBox(); - message.min = (object.min !== undefined && object.min !== null) - ? Vector3.fromPartial(object.min) - : createBaseVector3(); - message.max = (object.max !== undefined && object.max !== null) - ? Vector3.fromPartial(object.max) - : createBaseVector3(); + message.min = (object.min !== undefined && object.min !== null) ? Vector3.fromPartial(object.min) : undefined; + message.max = (object.max !== undefined && object.max !== null) ? Vector3.fromPartial(object.max) : undefined; return message; }, }; -export function createBaseTrackModelDefinition(): TrackModelDefinition { - return { thickness: 0, origin: createBaseVector3() }; +function createBaseTrackModelDefinition(): TrackModelDefinition { + return { thickness: 0, origin: undefined }; } export const TrackModelDefinition: MessageFns = { @@ -1426,7 +1446,7 @@ export const TrackModelDefinition: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): TrackModelDefinition { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseTrackModelDefinition(); while (reader.pos < end) { const tag = reader.uint32(); @@ -1458,8 +1478,8 @@ export const TrackModelDefinition: MessageFns = { fromJSON(object: any): TrackModelDefinition { return { - thickness: globalThis.Number(assertSet("TrackModelDefinition.thickness", object.thickness)), - origin: Vector3.fromJSON(assertSet("TrackModelDefinition.origin", object.origin)), + thickness: isSet(object.thickness) ? globalThis.Number(object.thickness) : 0, + origin: isSet(object.origin) ? Vector3.fromJSON(object.origin) : undefined, }; }, @@ -1482,13 +1502,13 @@ export const TrackModelDefinition: MessageFns = { message.thickness = object.thickness ?? 0; message.origin = (object.origin !== undefined && object.origin !== null) ? Vector3.fromPartial(object.origin) - : createBaseVector3(); + : undefined; return message; }, }; -export function createBaseGunModelDefinition(): GunModelDefinition { - return { armor: createBaseArmor(), thickness: 0, model_id: 0, pitch: createBasePitchLimits(), mask: undefined }; +function createBaseGunModelDefinition(): GunModelDefinition { + return { armor: undefined, thickness: 0, model_id: 0, pitch: undefined, mask: 0 }; } export const GunModelDefinition: MessageFns = { @@ -1505,7 +1525,7 @@ export const GunModelDefinition: MessageFns = { if (message.pitch !== undefined) { PitchLimits.encode(message.pitch, writer.uint32(34).fork()).join(); } - if (message.mask !== undefined && message.mask !== undefined) { + if (message.mask !== undefined && message.mask !== 0) { writer.uint32(45).float(message.mask); } return writer; @@ -1513,7 +1533,7 @@ export const GunModelDefinition: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): GunModelDefinition { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseGunModelDefinition(); while (reader.pos < end) { const tag = reader.uint32(); @@ -1569,11 +1589,15 @@ export const GunModelDefinition: MessageFns = { fromJSON(object: any): GunModelDefinition { return { - armor: Armor.fromJSON(assertSet("GunModelDefinition.armor", object.armor)), - thickness: globalThis.Number(assertSet("GunModelDefinition.thickness", object.thickness)), - model_id: globalThis.Number(assertSet("GunModelDefinition.model_id", object.model_id)), - pitch: PitchLimits.fromJSON(assertSet("GunModelDefinition.pitch", object.pitch)), - mask: isSet(object.mask) ? globalThis.Number(object.mask) : undefined, + armor: isSet(object.armor) ? Armor.fromJSON(object.armor) : undefined, + thickness: isSet(object.thickness) ? globalThis.Number(object.thickness) : 0, + model_id: isSet(object.modelId) + ? globalThis.Number(object.modelId) + : isSet(object.model_id) + ? globalThis.Number(object.model_id) + : 0, + pitch: isSet(object.pitch) ? PitchLimits.fromJSON(object.pitch) : undefined, + mask: isSet(object.mask) ? globalThis.Number(object.mask) : 0, }; }, @@ -1586,12 +1610,12 @@ export const GunModelDefinition: MessageFns = { obj.thickness = message.thickness; } if (message.model_id !== 0) { - obj.model_id = Math.round(message.model_id); + obj.modelId = Math.round(message.model_id); } if (message.pitch !== undefined) { obj.pitch = PitchLimits.toJSON(message.pitch); } - if (message.mask !== undefined && message.mask !== undefined) { + if (message.mask !== undefined && message.mask !== 0) { obj.mask = message.mask; } return obj; @@ -1602,21 +1626,19 @@ export const GunModelDefinition: MessageFns = { }, fromPartial, I>>(object: I): GunModelDefinition { const message = createBaseGunModelDefinition(); - message.armor = (object.armor !== undefined && object.armor !== null) - ? Armor.fromPartial(object.armor) - : createBaseArmor(); + message.armor = (object.armor !== undefined && object.armor !== null) ? Armor.fromPartial(object.armor) : undefined; message.thickness = object.thickness ?? 0; message.model_id = object.model_id ?? 0; message.pitch = (object.pitch !== undefined && object.pitch !== null) ? PitchLimits.fromPartial(object.pitch) - : createBasePitchLimits(); - message.mask = object.mask ?? undefined; + : undefined; + message.mask = object.mask ?? 0; return message; }, }; -export function createBasePitchLimits(): PitchLimits { - return { min: 0, max: 0, front: undefined, back: undefined, transition: undefined }; +function createBasePitchLimits(): PitchLimits { + return { min: 0, max: 0, front: undefined, back: undefined, transition: 0 }; } export const PitchLimits: MessageFns = { @@ -1633,7 +1655,7 @@ export const PitchLimits: MessageFns = { if (message.back !== undefined) { PitchLimitsExtrema.encode(message.back, writer.uint32(34).fork()).join(); } - if (message.transition !== undefined && message.transition !== undefined) { + if (message.transition !== undefined && message.transition !== 0) { writer.uint32(45).float(message.transition); } return writer; @@ -1641,7 +1663,7 @@ export const PitchLimits: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): PitchLimits { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBasePitchLimits(); while (reader.pos < end) { const tag = reader.uint32(); @@ -1697,11 +1719,11 @@ export const PitchLimits: MessageFns = { fromJSON(object: any): PitchLimits { return { - min: globalThis.Number(assertSet("PitchLimits.min", object.min)), - max: globalThis.Number(assertSet("PitchLimits.max", object.max)), + min: isSet(object.min) ? globalThis.Number(object.min) : 0, + max: isSet(object.max) ? globalThis.Number(object.max) : 0, front: isSet(object.front) ? PitchLimitsExtrema.fromJSON(object.front) : undefined, back: isSet(object.back) ? PitchLimitsExtrema.fromJSON(object.back) : undefined, - transition: isSet(object.transition) ? globalThis.Number(object.transition) : undefined, + transition: isSet(object.transition) ? globalThis.Number(object.transition) : 0, }; }, @@ -1719,7 +1741,7 @@ export const PitchLimits: MessageFns = { if (message.back !== undefined) { obj.back = PitchLimitsExtrema.toJSON(message.back); } - if (message.transition !== undefined && message.transition !== undefined) { + if (message.transition !== undefined && message.transition !== 0) { obj.transition = message.transition; } return obj; @@ -1738,12 +1760,12 @@ export const PitchLimits: MessageFns = { message.back = (object.back !== undefined && object.back !== null) ? PitchLimitsExtrema.fromPartial(object.back) : undefined; - message.transition = object.transition ?? undefined; + message.transition = object.transition ?? 0; return message; }, }; -export function createBasePitchLimitsExtrema(): PitchLimitsExtrema { +function createBasePitchLimitsExtrema(): PitchLimitsExtrema { return { min: 0, max: 0, range: 0 }; } @@ -1763,7 +1785,7 @@ export const PitchLimitsExtrema: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): PitchLimitsExtrema { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBasePitchLimitsExtrema(); while (reader.pos < end) { const tag = reader.uint32(); @@ -1803,9 +1825,9 @@ export const PitchLimitsExtrema: MessageFns = { fromJSON(object: any): PitchLimitsExtrema { return { - min: globalThis.Number(assertSet("PitchLimitsExtrema.min", object.min)), - max: globalThis.Number(assertSet("PitchLimitsExtrema.max", object.max)), - range: globalThis.Number(assertSet("PitchLimitsExtrema.range", object.range)), + min: isSet(object.min) ? globalThis.Number(object.min) : 0, + max: isSet(object.max) ? globalThis.Number(object.max) : 0, + range: isSet(object.range) ? globalThis.Number(object.range) : 0, }; }, @@ -1856,14 +1878,6 @@ function isSet(value: any): boolean { return value !== null && value !== undefined; } -function assertSet(field: string, value: T | undefined): T { - if (!isSet(value)) { - throw new TypeError(`Required field ${field} is not set`); - } - - return value as T; -} - export interface MessageFns { encode(message: T, writer?: BinaryWriter): BinaryWriter; decode(input: BinaryReader | Uint8Array, length?: number): T; diff --git a/packages/core/src/protos/popular_tanks.proto b/packages/core/src/protos/popular_tanks.proto index d4e127a67..68a3cef36 100644 --- a/packages/core/src/protos/popular_tanks.proto +++ b/packages/core/src/protos/popular_tanks.proto @@ -7,6 +7,6 @@ message PopularTanks { } message PopularTank { - required uint32 id = 1; + required uint32 id = 1; required uint32 views = 2; // views in the last 7 days } \ No newline at end of file diff --git a/packages/core/src/protos/popular_tanks.ts b/packages/core/src/protos/popular_tanks.ts index 6e145b999..be64b0052 100644 --- a/packages/core/src/protos/popular_tanks.ts +++ b/packages/core/src/protos/popular_tanks.ts @@ -1,8 +1,8 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.2.2 +// protoc-gen-ts_proto v2.11.2 // protoc v5.28.2 -// source: packages/core/src/protos/popular_tanks.proto +// source: popular_tanks.proto /* eslint-disable */ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; @@ -19,7 +19,7 @@ export interface PopularTank { views: number; } -export function createBasePopularTanks(): PopularTanks { +function createBasePopularTanks(): PopularTanks { return { tanks: [] }; } @@ -33,7 +33,7 @@ export const PopularTanks: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): PopularTanks { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBasePopularTanks(); while (reader.pos < end) { const tag = reader.uint32(); @@ -79,7 +79,7 @@ export const PopularTanks: MessageFns = { }, }; -export function createBasePopularTank(): PopularTank { +function createBasePopularTank(): PopularTank { return { id: 0, views: 0 }; } @@ -96,7 +96,7 @@ export const PopularTank: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): PopularTank { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBasePopularTank(); while (reader.pos < end) { const tag = reader.uint32(); @@ -128,8 +128,8 @@ export const PopularTank: MessageFns = { fromJSON(object: any): PopularTank { return { - id: globalThis.Number(assertSet("PopularTank.id", object.id)), - views: globalThis.Number(assertSet("PopularTank.views", object.views)), + id: isSet(object.id) ? globalThis.Number(object.id) : 0, + views: isSet(object.views) ? globalThis.Number(object.views) : 0, }; }, @@ -172,14 +172,6 @@ function isSet(value: any): boolean { return value !== null && value !== undefined; } -function assertSet(field: string, value: T | undefined): T { - if (!isSet(value)) { - throw new TypeError(`Required field ${field} is not set`); - } - - return value as T; -} - export interface MessageFns { encode(message: T, writer?: BinaryWriter): BinaryWriter; decode(input: BinaryReader | Uint8Array, length?: number): T; diff --git a/packages/core/src/protos/provision_definitions.proto b/packages/core/src/protos/provision_definitions.proto index 655949553..51629b370 100644 --- a/packages/core/src/protos/provision_definitions.proto +++ b/packages/core/src/protos/provision_definitions.proto @@ -2,18 +2,18 @@ syntax = "proto2"; package blitzkit; -import "packages/core/src/protos/consumable_definitions.proto"; -import "packages/core/src/protos/i18n.proto"; +import "consumable_definitions.proto"; +import "i18n.proto"; message ProvisionDefinitions { map provisions = 1; } message Provision { - required uint32 id = 1; - required I18nString name = 2; - optional float crew = 3; - required bool game_mode_exclusive = 5; - repeated ConsumableTankFilter include = 6; - repeated ConsumableTankFilter exclude = 7; + required uint32 id = 1; + required I18nString name = 2; + optional float crew = 3; + required bool game_mode_exclusive = 5; + repeated ConsumableTankFilter include = 6; + repeated ConsumableTankFilter exclude = 7; } \ No newline at end of file diff --git a/packages/core/src/protos/provision_definitions.ts b/packages/core/src/protos/provision_definitions.ts index a5d97e27a..7baea8f18 100644 --- a/packages/core/src/protos/provision_definitions.ts +++ b/packages/core/src/protos/provision_definitions.ts @@ -1,13 +1,13 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.2.2 +// protoc-gen-ts_proto v2.11.2 // protoc v5.28.2 -// source: packages/core/src/protos/provision_definitions.proto +// source: provision_definitions.proto /* eslint-disable */ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; import { ConsumableTankFilter } from "./consumable_definitions"; -import { createBaseI18nString, I18nString } from "./i18n"; +import { I18nString } from "./i18n"; export const protobufPackage = "blitzkit"; @@ -22,20 +22,20 @@ export interface ProvisionDefinitions_ProvisionsEntry { export interface Provision { id: number; - name: I18nString; + name: I18nString | undefined; crew?: number | undefined; game_mode_exclusive: boolean; include: ConsumableTankFilter[]; exclude: ConsumableTankFilter[]; } -export function createBaseProvisionDefinitions(): ProvisionDefinitions { +function createBaseProvisionDefinitions(): ProvisionDefinitions { return { provisions: {} }; } export const ProvisionDefinitions: MessageFns = { encode(message: ProvisionDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - Object.entries(message.provisions).forEach(([key, value]) => { + globalThis.Object.entries(message.provisions).forEach(([key, value]: [string, Provision]) => { ProvisionDefinitions_ProvisionsEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join(); }); return writer; @@ -43,7 +43,7 @@ export const ProvisionDefinitions: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): ProvisionDefinitions { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseProvisionDefinitions(); while (reader.pos < end) { const tag = reader.uint32(); @@ -71,10 +71,13 @@ export const ProvisionDefinitions: MessageFns = { fromJSON(object: any): ProvisionDefinitions { return { provisions: isObject(object.provisions) - ? Object.entries(object.provisions).reduce<{ [key: number]: Provision }>((acc, [key, value]) => { - acc[globalThis.Number(key)] = Provision.fromJSON(value); - return acc; - }, {}) + ? (globalThis.Object.entries(object.provisions) as [string, any][]).reduce( + (acc: { [key: number]: Provision }, [key, value]: [string, any]) => { + acc[globalThis.Number(key)] = Provision.fromJSON(value); + return acc; + }, + {}, + ) : {}, }; }, @@ -82,7 +85,7 @@ export const ProvisionDefinitions: MessageFns = { toJSON(message: ProvisionDefinitions): unknown { const obj: any = {}; if (message.provisions) { - const entries = Object.entries(message.provisions); + const entries = globalThis.Object.entries(message.provisions) as [string, Provision][]; if (entries.length > 0) { obj.provisions = {}; entries.forEach(([k, v]) => { @@ -98,8 +101,8 @@ export const ProvisionDefinitions: MessageFns = { }, fromPartial, I>>(object: I): ProvisionDefinitions { const message = createBaseProvisionDefinitions(); - message.provisions = Object.entries(object.provisions ?? {}).reduce<{ [key: number]: Provision }>( - (acc, [key, value]) => { + message.provisions = (globalThis.Object.entries(object.provisions ?? {}) as [string, Provision][]).reduce( + (acc: { [key: number]: Provision }, [key, value]: [string, Provision]) => { if (value !== undefined) { acc[globalThis.Number(key)] = Provision.fromPartial(value); } @@ -111,13 +114,13 @@ export const ProvisionDefinitions: MessageFns = { }, }; -export function createBaseProvisionDefinitions_ProvisionsEntry(): ProvisionDefinitions_ProvisionsEntry { - return { key: 0, value: createBaseProvision() }; +function createBaseProvisionDefinitions_ProvisionsEntry(): ProvisionDefinitions_ProvisionsEntry { + return { key: 0, value: undefined }; } export const ProvisionDefinitions_ProvisionsEntry: MessageFns = { encode(message: ProvisionDefinitions_ProvisionsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - if (message.key !== undefined) { + if (message.key !== 0) { writer.uint32(8).uint32(message.key); } if (message.value !== undefined) { @@ -128,7 +131,7 @@ export const ProvisionDefinitions_ProvisionsEntry: MessageFns = { @@ -205,7 +208,7 @@ export const Provision: MessageFns = { if (message.name !== undefined) { I18nString.encode(message.name, writer.uint32(18).fork()).join(); } - if (message.crew !== undefined && message.crew !== undefined) { + if (message.crew !== undefined && message.crew !== 0) { writer.uint32(29).float(message.crew); } if (message.game_mode_exclusive !== false) { @@ -222,7 +225,7 @@ export const Provision: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): Provision { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseProvision(); while (reader.pos < end) { const tag = reader.uint32(); @@ -286,10 +289,14 @@ export const Provision: MessageFns = { fromJSON(object: any): Provision { return { - id: globalThis.Number(assertSet("Provision.id", object.id)), - name: I18nString.fromJSON(assertSet("Provision.name", object.name)), - crew: isSet(object.crew) ? globalThis.Number(object.crew) : undefined, - game_mode_exclusive: globalThis.Boolean(assertSet("Provision.game_mode_exclusive", object.game_mode_exclusive)), + id: isSet(object.id) ? globalThis.Number(object.id) : 0, + name: isSet(object.name) ? I18nString.fromJSON(object.name) : undefined, + crew: isSet(object.crew) ? globalThis.Number(object.crew) : 0, + game_mode_exclusive: isSet(object.gameModeExclusive) + ? globalThis.Boolean(object.gameModeExclusive) + : isSet(object.game_mode_exclusive) + ? globalThis.Boolean(object.game_mode_exclusive) + : false, include: globalThis.Array.isArray(object?.include) ? object.include.map((e: any) => ConsumableTankFilter.fromJSON(e)) : [], @@ -307,11 +314,11 @@ export const Provision: MessageFns = { if (message.name !== undefined) { obj.name = I18nString.toJSON(message.name); } - if (message.crew !== undefined && message.crew !== undefined) { + if (message.crew !== undefined && message.crew !== 0) { obj.crew = message.crew; } if (message.game_mode_exclusive !== false) { - obj.game_mode_exclusive = message.game_mode_exclusive; + obj.gameModeExclusive = message.game_mode_exclusive; } if (message.include?.length) { obj.include = message.include.map((e) => ConsumableTankFilter.toJSON(e)); @@ -330,8 +337,8 @@ export const Provision: MessageFns = { message.id = object.id ?? 0; message.name = (object.name !== undefined && object.name !== null) ? I18nString.fromPartial(object.name) - : createBaseI18nString(); - message.crew = object.crew ?? undefined; + : undefined; + message.crew = object.crew ?? 0; message.game_mode_exclusive = object.game_mode_exclusive ?? false; message.include = object.include?.map((e) => ConsumableTankFilter.fromPartial(e)) || []; message.exclude = object.exclude?.map((e) => ConsumableTankFilter.fromPartial(e)) || []; @@ -360,14 +367,6 @@ function isSet(value: any): boolean { return value !== null && value !== undefined; } -function assertSet(field: string, value: T | undefined): T { - if (!isSet(value)) { - throw new TypeError(`Required field ${field} is not set`); - } - - return value as T; -} - export interface MessageFns { encode(message: T, writer?: BinaryWriter): BinaryWriter; decode(input: BinaryReader | Uint8Array, length?: number): T; diff --git a/packages/core/src/protos/rating_leaderboard.proto b/packages/core/src/protos/rating_leaderboard.proto index ee504c090..05a943d4a 100644 --- a/packages/core/src/protos/rating_leaderboard.proto +++ b/packages/core/src/protos/rating_leaderboard.proto @@ -14,7 +14,7 @@ message RatingLeaderboardV1 { } message RatingLeaderboardEntryV1 { - required uint32 id = 1; + required uint32 id = 1; required uint32 score = 2; } @@ -23,11 +23,11 @@ message RatingLeaderboardV2 { } message RatingLeaderboardEntryV2 { - required uint32 id = 1; - required uint32 score = 2; - required uint32 battles = 3; - required uint32 wins = 4; + required uint32 id = 1; + required uint32 score = 2; + required uint32 battles = 3; + required uint32 wins = 4; required uint32 survived = 5; - required uint32 damage = 6; - required uint32 kills = 7; + required uint32 damage = 6; + required uint32 kills = 7; } \ No newline at end of file diff --git a/packages/core/src/protos/rating_leaderboard.ts b/packages/core/src/protos/rating_leaderboard.ts index e04684674..dce0d903e 100644 --- a/packages/core/src/protos/rating_leaderboard.ts +++ b/packages/core/src/protos/rating_leaderboard.ts @@ -1,8 +1,8 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.2.2 +// protoc-gen-ts_proto v2.11.2 // protoc v5.28.2 -// source: packages/core/src/protos/rating_leaderboard.proto +// source: rating_leaderboard.proto /* eslint-disable */ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; @@ -36,7 +36,7 @@ export interface RatingLeaderboardEntryV2 { kills: number; } -export function createBaseRatingLeaderboard(): RatingLeaderboard { +function createBaseRatingLeaderboard(): RatingLeaderboard { return { version: undefined }; } @@ -55,7 +55,7 @@ export const RatingLeaderboard: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): RatingLeaderboard { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseRatingLeaderboard(); while (reader.pos < end) { const tag = reader.uint32(); @@ -99,8 +99,7 @@ export const RatingLeaderboard: MessageFns = { const obj: any = {}; if (message.version?.$case === "v1") { obj.v1 = RatingLeaderboardV1.toJSON(message.version.value); - } - if (message.version?.$case === "v2") { + } else if (message.version?.$case === "v2") { obj.v2 = RatingLeaderboardV2.toJSON(message.version.value); } return obj; @@ -111,17 +110,25 @@ export const RatingLeaderboard: MessageFns = { }, fromPartial, I>>(object: I): RatingLeaderboard { const message = createBaseRatingLeaderboard(); - if (object.version?.$case === "v1" && object.version?.value !== undefined && object.version?.value !== null) { - message.version = { $case: "v1", value: RatingLeaderboardV1.fromPartial(object.version.value) }; - } - if (object.version?.$case === "v2" && object.version?.value !== undefined && object.version?.value !== null) { - message.version = { $case: "v2", value: RatingLeaderboardV2.fromPartial(object.version.value) }; + switch (object.version?.$case) { + case "v1": { + if (object.version?.value !== undefined && object.version?.value !== null) { + message.version = { $case: "v1", value: RatingLeaderboardV1.fromPartial(object.version.value) }; + } + break; + } + case "v2": { + if (object.version?.value !== undefined && object.version?.value !== null) { + message.version = { $case: "v2", value: RatingLeaderboardV2.fromPartial(object.version.value) }; + } + break; + } } return message; }, }; -export function createBaseRatingLeaderboardV1(): RatingLeaderboardV1 { +function createBaseRatingLeaderboardV1(): RatingLeaderboardV1 { return { entries: [] }; } @@ -135,7 +142,7 @@ export const RatingLeaderboardV1: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): RatingLeaderboardV1 { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseRatingLeaderboardV1(); while (reader.pos < end) { const tag = reader.uint32(); @@ -183,7 +190,7 @@ export const RatingLeaderboardV1: MessageFns = { }, }; -export function createBaseRatingLeaderboardEntryV1(): RatingLeaderboardEntryV1 { +function createBaseRatingLeaderboardEntryV1(): RatingLeaderboardEntryV1 { return { id: 0, score: 0 }; } @@ -200,7 +207,7 @@ export const RatingLeaderboardEntryV1: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): RatingLeaderboardEntryV1 { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseRatingLeaderboardEntryV1(); while (reader.pos < end) { const tag = reader.uint32(); @@ -232,8 +239,8 @@ export const RatingLeaderboardEntryV1: MessageFns = { fromJSON(object: any): RatingLeaderboardEntryV1 { return { - id: globalThis.Number(assertSet("RatingLeaderboardEntryV1.id", object.id)), - score: globalThis.Number(assertSet("RatingLeaderboardEntryV1.score", object.score)), + id: isSet(object.id) ? globalThis.Number(object.id) : 0, + score: isSet(object.score) ? globalThis.Number(object.score) : 0, }; }, @@ -259,7 +266,7 @@ export const RatingLeaderboardEntryV1: MessageFns = { }, }; -export function createBaseRatingLeaderboardV2(): RatingLeaderboardV2 { +function createBaseRatingLeaderboardV2(): RatingLeaderboardV2 { return { entries: [] }; } @@ -273,7 +280,7 @@ export const RatingLeaderboardV2: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): RatingLeaderboardV2 { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseRatingLeaderboardV2(); while (reader.pos < end) { const tag = reader.uint32(); @@ -321,7 +328,7 @@ export const RatingLeaderboardV2: MessageFns = { }, }; -export function createBaseRatingLeaderboardEntryV2(): RatingLeaderboardEntryV2 { +function createBaseRatingLeaderboardEntryV2(): RatingLeaderboardEntryV2 { return { id: 0, score: 0, battles: 0, wins: 0, survived: 0, damage: 0, kills: 0 }; } @@ -353,7 +360,7 @@ export const RatingLeaderboardEntryV2: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): RatingLeaderboardEntryV2 { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseRatingLeaderboardEntryV2(); while (reader.pos < end) { const tag = reader.uint32(); @@ -425,13 +432,13 @@ export const RatingLeaderboardEntryV2: MessageFns = { fromJSON(object: any): RatingLeaderboardEntryV2 { return { - id: globalThis.Number(assertSet("RatingLeaderboardEntryV2.id", object.id)), - score: globalThis.Number(assertSet("RatingLeaderboardEntryV2.score", object.score)), - battles: globalThis.Number(assertSet("RatingLeaderboardEntryV2.battles", object.battles)), - wins: globalThis.Number(assertSet("RatingLeaderboardEntryV2.wins", object.wins)), - survived: globalThis.Number(assertSet("RatingLeaderboardEntryV2.survived", object.survived)), - damage: globalThis.Number(assertSet("RatingLeaderboardEntryV2.damage", object.damage)), - kills: globalThis.Number(assertSet("RatingLeaderboardEntryV2.kills", object.kills)), + id: isSet(object.id) ? globalThis.Number(object.id) : 0, + score: isSet(object.score) ? globalThis.Number(object.score) : 0, + battles: isSet(object.battles) ? globalThis.Number(object.battles) : 0, + wins: isSet(object.wins) ? globalThis.Number(object.wins) : 0, + survived: isSet(object.survived) ? globalThis.Number(object.survived) : 0, + damage: isSet(object.damage) ? globalThis.Number(object.damage) : 0, + kills: isSet(object.kills) ? globalThis.Number(object.kills) : 0, }; }, @@ -494,14 +501,6 @@ function isSet(value: any): boolean { return value !== null && value !== undefined; } -function assertSet(field: string, value: T | undefined): T { - if (!isSet(value)) { - throw new TypeError(`Required field ${field} is not set`); - } - - return value as T; -} - export interface MessageFns { encode(message: T, writer?: BinaryWriter): BinaryWriter; decode(input: BinaryReader | Uint8Array, length?: number): T; diff --git a/packages/core/src/protos/reviews.proto b/packages/core/src/protos/reviews.proto index 2ad85ed16..d6577b6cb 100644 --- a/packages/core/src/protos/reviews.proto +++ b/packages/core/src/protos/reviews.proto @@ -8,10 +8,10 @@ message Reviews { message Review { required float last_updated = 1; - repeated Video videos = 2; + repeated Video videos = 2; } message Video { - required string id = 1; + required string id = 1; required string author = 2; } \ No newline at end of file diff --git a/packages/core/src/protos/reviews.ts b/packages/core/src/protos/reviews.ts index d8eba8bdb..57a9a7bc3 100644 --- a/packages/core/src/protos/reviews.ts +++ b/packages/core/src/protos/reviews.ts @@ -1,8 +1,8 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.2.2 +// protoc-gen-ts_proto v2.11.2 // protoc v5.28.2 -// source: packages/core/src/protos/reviews.proto +// source: reviews.proto /* eslint-disable */ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; @@ -28,13 +28,13 @@ export interface Video { author: string; } -export function createBaseReviews(): Reviews { +function createBaseReviews(): Reviews { return { reviews: {} }; } export const Reviews: MessageFns = { encode(message: Reviews, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - Object.entries(message.reviews).forEach(([key, value]) => { + globalThis.Object.entries(message.reviews).forEach(([key, value]: [string, Review]) => { Reviews_ReviewsEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join(); }); return writer; @@ -42,7 +42,7 @@ export const Reviews: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): Reviews { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseReviews(); while (reader.pos < end) { const tag = reader.uint32(); @@ -70,10 +70,13 @@ export const Reviews: MessageFns = { fromJSON(object: any): Reviews { return { reviews: isObject(object.reviews) - ? Object.entries(object.reviews).reduce<{ [key: number]: Review }>((acc, [key, value]) => { - acc[globalThis.Number(key)] = Review.fromJSON(value); - return acc; - }, {}) + ? (globalThis.Object.entries(object.reviews) as [string, any][]).reduce( + (acc: { [key: number]: Review }, [key, value]: [string, any]) => { + acc[globalThis.Number(key)] = Review.fromJSON(value); + return acc; + }, + {}, + ) : {}, }; }, @@ -81,7 +84,7 @@ export const Reviews: MessageFns = { toJSON(message: Reviews): unknown { const obj: any = {}; if (message.reviews) { - const entries = Object.entries(message.reviews); + const entries = globalThis.Object.entries(message.reviews) as [string, Review][]; if (entries.length > 0) { obj.reviews = {}; entries.forEach(([k, v]) => { @@ -97,23 +100,26 @@ export const Reviews: MessageFns = { }, fromPartial, I>>(object: I): Reviews { const message = createBaseReviews(); - message.reviews = Object.entries(object.reviews ?? {}).reduce<{ [key: number]: Review }>((acc, [key, value]) => { - if (value !== undefined) { - acc[globalThis.Number(key)] = Review.fromPartial(value); - } - return acc; - }, {}); + message.reviews = (globalThis.Object.entries(object.reviews ?? {}) as [string, Review][]).reduce( + (acc: { [key: number]: Review }, [key, value]: [string, Review]) => { + if (value !== undefined) { + acc[globalThis.Number(key)] = Review.fromPartial(value); + } + return acc; + }, + {}, + ); return message; }, }; -export function createBaseReviews_ReviewsEntry(): Reviews_ReviewsEntry { - return { key: 0, value: createBaseReview() }; +function createBaseReviews_ReviewsEntry(): Reviews_ReviewsEntry { + return { key: 0, value: undefined }; } export const Reviews_ReviewsEntry: MessageFns = { encode(message: Reviews_ReviewsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - if (message.key !== undefined) { + if (message.key !== 0) { writer.uint32(8).uint32(message.key); } if (message.value !== undefined) { @@ -124,7 +130,7 @@ export const Reviews_ReviewsEntry: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): Reviews_ReviewsEntry { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseReviews_ReviewsEntry(); while (reader.pos < end) { const tag = reader.uint32(); @@ -156,14 +162,14 @@ export const Reviews_ReviewsEntry: MessageFns = { fromJSON(object: any): Reviews_ReviewsEntry { return { - key: globalThis.Number(assertSet("Reviews_ReviewsEntry.key", object.key)), - value: Review.fromJSON(assertSet("Reviews_ReviewsEntry.value", object.value)), + key: isSet(object.key) ? globalThis.Number(object.key) : 0, + value: isSet(object.value) ? Review.fromJSON(object.value) : undefined, }; }, toJSON(message: Reviews_ReviewsEntry): unknown { const obj: any = {}; - if (message.key !== undefined) { + if (message.key !== 0) { obj.key = Math.round(message.key); } if (message.value !== undefined) { @@ -180,12 +186,12 @@ export const Reviews_ReviewsEntry: MessageFns = { message.key = object.key ?? 0; message.value = (object.value !== undefined && object.value !== null) ? Review.fromPartial(object.value) - : createBaseReview(); + : undefined; return message; }, }; -export function createBaseReview(): Review { +function createBaseReview(): Review { return { last_updated: 0, videos: [] }; } @@ -202,7 +208,7 @@ export const Review: MessageFns = { decode(input: BinaryReader | Uint8Array, length?: number): Review { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; + const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseReview(); while (reader.pos < end) { const tag = reader.uint32(); @@ -234,7 +240,11 @@ export const Review: MessageFns = { fromJSON(object: any): Review { return { - last_updated: globalThis.Number(assertSet("Review.last_updated", object.last_updated)), + last_updated: isSet(object.lastUpdated) + ? globalThis.Number(object.lastUpdated) + : isSet(object.last_updated) + ? globalThis.Number(object.last_updated) + : 0, videos: globalThis.Array.isArray(object?.videos) ? object.videos.map((e: any) => Video.fromJSON(e)) : [], }; }, @@ -242,7 +252,7 @@ export const Review: MessageFns = { toJSON(message: Review): unknown { const obj: any = {}; if (message.last_updated !== 0) { - obj.last_updated = message.last_updated; + obj.lastUpdated = message.last_updated; } if (message.videos?.length) { obj.videos = message.videos.map((e) => Video.toJSON(e)); @@ -261,7 +271,7 @@ export const Review: MessageFns = { }, }; -export function createBaseVideo(): Video { +function createBaseVideo(): Video { return { id: "", author: "" }; } @@ -278,7 +288,7 @@ export const Video: MessageFns