From a8dc271e0a58ddbfb036991b31bf8909948566fe Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Wed, 21 May 2025 13:24:02 -0500 Subject: [PATCH] feat: update to imported base creators --- .gitignore | 3 +- bun.lockb | Bin 450105 -> 450480 bytes package.json | 1 + .../core/src/protos/average_definitions.ts | 12 +- .../core/src/protos/camouflage_definitions.ts | 10 +- .../core/src/protos/consumable_definitions.ts | 20 +- .../core/src/protos/equipment_definitions.ts | 18 +- packages/core/src/protos/gallery.ts | 92 +- packages/core/src/protos/game_definitions.ts | 16 +- packages/core/src/protos/i18n.ts | 2 +- packages/core/src/protos/map_definitions.ts | 10 +- packages/core/src/protos/model_definitions.ts | 42 +- packages/core/src/protos/popular_tanks.ts | 4 +- .../core/src/protos/provision_definitions.ts | 10 +- .../core/src/protos/rating_leaderboard.ts | 10 +- packages/core/src/protos/reviews.ts | 10 +- packages/core/src/protos/skill_definitions.ts | 10 +- packages/core/src/protos/tank_definitions.ts | 2392 +++++++---------- 18 files changed, 1032 insertions(+), 1630 deletions(-) diff --git a/.gitignore b/.gitignore index 87a643861..abd77cc70 100644 --- a/.gitignore +++ b/.gitignore @@ -22,8 +22,7 @@ depots public/sitemap* /firebase.json target -# packages/core/src/protos/* -# !packages/core/src/protos/*.proto +# packages/core/src/protos/*.ts /.vercel /.astro .vercel diff --git a/bun.lockb b/bun.lockb index 543a1e0608512a22d53ce5ebe1a2279fb4217ba8..68a3b11e7b5eb7cfb53985153d9d9fd9eaf15bea 100644 GIT binary patch delta 90448 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 MsNcT-Gi%i=0D)iT5C8xG delta 89858 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
kW6iN;!9k%3K{KWdvhoDTvm)6+Q-2j?R139k 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 Jw>I?!dg_e!rsMzs diff --git a/package.json b/package.json index 81dc525a0..30dbbe6d9 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "dependencies": { "googleapis": "^144.0.0", "lodash-es": "^4.17.21", + "protobufjs": "^7.5.2", "quicklime": "^1.2.0", "sharp": "^0.33.5" }, diff --git a/packages/core/src/protos/average_definitions.ts b/packages/core/src/protos/average_definitions.ts index 507678f6d..1b75b45d3 100644 --- a/packages/core/src/protos/average_definitions.ts +++ b/packages/core/src/protos/average_definitions.ts @@ -58,7 +58,7 @@ export interface Samples { total: number; } -function createBaseAverageDefinitions(): AverageDefinitions { +export function createBaseAverageDefinitions(): AverageDefinitions { return { averages: {}, samples: createBaseSamples(), time: 0 }; } @@ -174,7 +174,7 @@ export const AverageDefinitions: MessageFns = { }, }; -function createBaseAverageDefinitions_AveragesEntry(): AverageDefinitions_AveragesEntry { +export function createBaseAverageDefinitions_AveragesEntry(): AverageDefinitions_AveragesEntry { return { key: 0, value: createBaseAverageDefinitionsEntry() }; } @@ -251,12 +251,12 @@ export const AverageDefinitions_AveragesEntry: MessageFns = { }, }; -function createBaseAverageDefinitionsAllStats(): AverageDefinitionsAllStats { +export function createBaseAverageDefinitionsAllStats(): AverageDefinitionsAllStats { return { battles: 0, capture_points: 0, @@ -738,7 +738,7 @@ export const AverageDefinitionsAllStats: MessageFns }, }; -function createBaseSamples(): Samples { +export function createBaseSamples(): Samples { return { d_1: 0, d_7: 0, d_30: 0, d_60: 0, d_90: 0, d_120: 0, total: 0 }; } diff --git a/packages/core/src/protos/camouflage_definitions.ts b/packages/core/src/protos/camouflage_definitions.ts index 02d3e846d..1533bfd11 100644 --- a/packages/core/src/protos/camouflage_definitions.ts +++ b/packages/core/src/protos/camouflage_definitions.ts @@ -6,7 +6,7 @@ /* eslint-disable */ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; -import { I18nString, createBaseI18nString } from "./i18n"; +import { createBaseI18nString, I18nString } from "./i18n"; export const protobufPackage = "blitzkit"; @@ -26,7 +26,7 @@ export interface Camouflage { tank_name_full?: I18nString | undefined; } -function createBaseCamouflageDefinitions(): CamouflageDefinitions { +export function createBaseCamouflageDefinitions(): CamouflageDefinitions { return { camouflages: {} }; } @@ -108,7 +108,7 @@ export const CamouflageDefinitions: MessageFns = { }, }; -function createBaseCamouflageDefinitions_CamouflagesEntry(): CamouflageDefinitions_CamouflagesEntry { +export function createBaseCamouflageDefinitions_CamouflagesEntry(): CamouflageDefinitions_CamouflagesEntry { return { key: 0, value: createBaseCamouflage() }; } @@ -185,12 +185,12 @@ export const CamouflageDefinitions_CamouflagesEntry: MessageFns = { }, }; -function createBaseConsumableDefinitions_ConsumablesEntry(): ConsumableDefinitions_ConsumablesEntry { +export function createBaseConsumableDefinitions_ConsumablesEntry(): ConsumableDefinitions_ConsumablesEntry { return { key: 0, value: createBaseConsumable() }; } @@ -241,12 +241,12 @@ export const ConsumableDefinitions_ConsumablesEntry: MessageFns = { }, }; -function createBaseConsumableTankFilter(): ConsumableTankFilter { +export function createBaseConsumableTankFilter(): ConsumableTankFilter { return { filter_type: undefined }; } @@ -564,7 +564,7 @@ export const ConsumableTankFilter: MessageFns = { }, }; -function createBaseConsumableTankTierFilter(): ConsumableTankTierFilter { +export function createBaseConsumableTankTierFilter(): ConsumableTankTierFilter { return { min: 0, max: 0 }; } @@ -640,7 +640,7 @@ export const ConsumableTankTierFilter: MessageFns = { }, }; -function createBaseConsumableTankIdsFilter(): ConsumableTankIdsFilter { +export function createBaseConsumableTankIdsFilter(): ConsumableTankIdsFilter { return { ids: [] }; } @@ -710,7 +710,7 @@ export const ConsumableTankIdsFilter: MessageFns = { }, }; -function createBaseConsumableTankCategoryFilter(): ConsumableTankCategoryFilter { +export function createBaseConsumableTankCategoryFilter(): ConsumableTankCategoryFilter { return { categories: [] }; } @@ -784,7 +784,7 @@ export const ConsumableTankCategoryFilter: MessageFns = { }, }; -function createBaseEquipmentDefinitions_PresetsEntry(): EquipmentDefinitions_PresetsEntry { +export function createBaseEquipmentDefinitions_PresetsEntry(): EquipmentDefinitions_PresetsEntry { return { key: "", value: createBaseEquipmentPreset() }; } @@ -236,12 +236,12 @@ export const EquipmentDefinitions_PresetsEntry: MessageFns = { }, }; -function createBaseEquipmentPreset(): EquipmentPreset { +export function createBaseEquipmentPreset(): EquipmentPreset { return { slots: [] }; } @@ -463,7 +463,7 @@ export const EquipmentPreset: MessageFns = { }, }; -function createBaseEquipmentSlot(): EquipmentSlot { +export function createBaseEquipmentSlot(): EquipmentSlot { return { left: 0, right: 0 }; } diff --git a/packages/core/src/protos/gallery.ts b/packages/core/src/protos/gallery.ts index 1771d299a..e3605a2e4 100644 --- a/packages/core/src/protos/gallery.ts +++ b/packages/core/src/protos/gallery.ts @@ -5,10 +5,10 @@ // source: packages/core/src/protos/gallery.proto /* eslint-disable */ -import { BinaryReader, BinaryWriter } from '@bufbuild/protobuf/wire'; -import { I18nString, createBaseI18nString } from './i18n'; +import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; +import { createBaseI18nString, I18nString } from "./i18n"; -export const protobufPackage = 'blitzkit'; +export const protobufPackage = "blitzkit"; export interface Gallery { avatars: Avatar[]; @@ -20,15 +20,12 @@ export interface Avatar { extension: string; } -function createBaseGallery(): Gallery { +export function createBaseGallery(): Gallery { return { avatars: [] }; } export const Gallery: MessageFns = { - encode( - message: Gallery, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { + encode(message: Gallery, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { for (const v of message.avatars) { Avatar.encode(v!, writer.uint32(10).fork()).join(); } @@ -36,8 +33,7 @@ export const Gallery: MessageFns = { }, decode(input: BinaryReader | Uint8Array, length?: number): Gallery { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseGallery(); while (reader.pos < end) { @@ -62,9 +58,7 @@ export const Gallery: MessageFns = { fromJSON(object: any): Gallery { return { - avatars: globalThis.Array.isArray(object?.avatars) - ? object.avatars.map((e: any) => Avatar.fromJSON(e)) - : [], + avatars: globalThis.Array.isArray(object?.avatars) ? object.avatars.map((e: any) => Avatar.fromJSON(e)) : [], }; }, @@ -86,30 +80,26 @@ export const Gallery: MessageFns = { }, }; -function createBaseAvatar(): Avatar { - return { id: '', name: createBaseI18nString(), extension: '' }; +export function createBaseAvatar(): Avatar { + return { id: "", name: createBaseI18nString(), extension: "" }; } export const Avatar: MessageFns = { - encode( - message: Avatar, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { - if (message.id !== '') { + encode(message: Avatar, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.id !== "") { writer.uint32(10).string(message.id); } if (message.name !== undefined) { I18nString.encode(message.name, writer.uint32(18).fork()).join(); } - if (message.extension !== '') { + if (message.extension !== "") { writer.uint32(26).string(message.extension); } return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): Avatar { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseAvatar(); while (reader.pos < end) { @@ -150,23 +140,21 @@ 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: globalThis.String(assertSet("Avatar.id", object.id)), + name: I18nString.fromJSON(assertSet("Avatar.name", object.name)), + extension: globalThis.String(assertSet("Avatar.extension", object.extension)), }; }, toJSON(message: Avatar): unknown { const obj: any = {}; - if (message.id !== '') { + if (message.id !== "") { obj.id = message.id; } if (message.name !== undefined) { obj.name = I18nString.toJSON(message.name); } - if (message.extension !== '') { + if (message.extension !== "") { obj.extension = message.extension; } return obj; @@ -177,43 +165,27 @@ export const Avatar: MessageFns = { }, fromPartial, I>>(object: I): Avatar { const message = createBaseAvatar(); - message.id = object.id ?? ''; - message.name = - object.name !== undefined && object.name !== null - ? I18nString.fromPartial(object.name) - : createBaseI18nString(); - message.extension = object.extension ?? ''; + message.id = object.id ?? ""; + message.name = (object.name !== undefined && object.name !== null) + ? I18nString.fromPartial(object.name) + : createBaseI18nString(); + message.extension = object.extension ?? ""; 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 isSet(value: any): boolean { return value !== null && value !== undefined; diff --git a/packages/core/src/protos/game_definitions.ts b/packages/core/src/protos/game_definitions.ts index 5cfe6cf12..d404828cd 100644 --- a/packages/core/src/protos/game_definitions.ts +++ b/packages/core/src/protos/game_definitions.ts @@ -6,7 +6,7 @@ /* eslint-disable */ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; -import { I18nString, createBaseI18nString } from "./i18n"; +import { createBaseI18nString, I18nString } from "./i18n"; export const protobufPackage = "blitzkit"; @@ -36,7 +36,7 @@ export interface GameModeRole { consumables: number[]; } -function createBaseGameDefinitions(): GameDefinitions { +export function createBaseGameDefinitions(): GameDefinitions { return { version: "", nations: [], gameModes: {}, roles: {} }; } @@ -185,7 +185,7 @@ export const GameDefinitions: MessageFns = { }, }; -function createBaseGameDefinitions_GameModesEntry(): GameDefinitions_GameModesEntry { +export function createBaseGameDefinitions_GameModesEntry(): GameDefinitions_GameModesEntry { return { key: 0, value: createBaseGameMode() }; } @@ -260,12 +260,12 @@ export const GameDefinitions_GameModesEntry: MessageFns message.key = object.key ?? 0; message.value = (object.value !== undefined && object.value !== null) ? GameModeRole.fromPartial(object.value) - : undefined; + : createBaseGameModeRole(); return message; }, }; -function createBaseGameMode(): GameMode { +export function createBaseGameMode(): GameMode { return { name: createBaseI18nString() }; } @@ -403,7 +403,7 @@ export const GameMode: MessageFns = { }, }; -function createBaseGameModeRole(): GameModeRole { +export function createBaseGameModeRole(): GameModeRole { return { provisions: [], consumables: [] }; } diff --git a/packages/core/src/protos/i18n.ts b/packages/core/src/protos/i18n.ts index ceea83dc8..67630c9b9 100644 --- a/packages/core/src/protos/i18n.ts +++ b/packages/core/src/protos/i18n.ts @@ -97,7 +97,7 @@ export const I18nString: MessageFns = { }, }; -function createBaseI18nString_LocalesEntry(): I18nString_LocalesEntry { +export function createBaseI18nString_LocalesEntry(): I18nString_LocalesEntry { return { key: "", value: "" }; } diff --git a/packages/core/src/protos/map_definitions.ts b/packages/core/src/protos/map_definitions.ts index 08b505919..be7dd812b 100644 --- a/packages/core/src/protos/map_definitions.ts +++ b/packages/core/src/protos/map_definitions.ts @@ -6,7 +6,7 @@ /* eslint-disable */ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; -import { I18nString, createBaseI18nString } from "./i18n"; +import { createBaseI18nString, I18nString } from "./i18n"; export const protobufPackage = "blitzkit"; @@ -24,7 +24,7 @@ export interface MapDefinition { name: I18nString; } -function createBaseMapDefinitions(): MapDefinitions { +export function createBaseMapDefinitions(): MapDefinitions { return { maps: {} }; } @@ -103,7 +103,7 @@ export const MapDefinitions: MessageFns = { }, }; -function createBaseMapDefinitions_MapsEntry(): MapDefinitions_MapsEntry { +export function createBaseMapDefinitions_MapsEntry(): MapDefinitions_MapsEntry { return { key: 0, value: createBaseMapDefinition() }; } @@ -176,12 +176,12 @@ export const MapDefinitions_MapsEntry: MessageFns = { message.key = object.key ?? 0; message.value = (object.value !== undefined && object.value !== null) ? MapDefinition.fromPartial(object.value) - : undefined; + : createBaseMapDefinition(); return message; }, }; -function createBaseMapDefinition(): MapDefinition { +export function createBaseMapDefinition(): MapDefinition { return { id: 0, name: createBaseI18nString() }; } diff --git a/packages/core/src/protos/model_definitions.ts b/packages/core/src/protos/model_definitions.ts index 3adb2b49a..21bb114b3 100644 --- a/packages/core/src/protos/model_definitions.ts +++ b/packages/core/src/protos/model_definitions.ts @@ -110,7 +110,7 @@ export interface PitchLimitsExtrema { range: number; } -function createBaseModelDefinitions(): ModelDefinitions { +export function createBaseModelDefinitions(): ModelDefinitions { return { models: {} }; } @@ -192,7 +192,7 @@ export const ModelDefinitions: MessageFns = { }, }; -function createBaseModelDefinitions_ModelsEntry(): ModelDefinitions_ModelsEntry { +export function createBaseModelDefinitions_ModelsEntry(): ModelDefinitions_ModelsEntry { return { key: 0, value: createBaseModelDefinition() }; } @@ -265,12 +265,12 @@ export const ModelDefinitions_ModelsEntry: MessageFns = { }, }; -function createBaseModelDefinition_TurretsEntry(): ModelDefinition_TurretsEntry { +export function createBaseModelDefinition_TurretsEntry(): ModelDefinition_TurretsEntry { return { key: 0, value: createBaseTurretModelDefinition() }; } @@ -545,12 +545,12 @@ export const ModelDefinition_TurretsEntry: MessageFns = { }, }; -function createBaseArmor_ThicknessEntry(): Armor_ThicknessEntry { +export function createBaseArmor_ThicknessEntry(): Armor_ThicknessEntry { return { key: 0, value: 0 }; } @@ -814,7 +814,7 @@ export const Armor_ThicknessEntry: MessageFns = { }, }; -function createBaseVector3(): Vector3 { +export function createBaseVector3(): Vector3 { return { x: 0, y: 0, z: 0 }; } @@ -906,7 +906,7 @@ export const Vector3: MessageFns = { }, }; -function createBaseInitialTurretRotation(): InitialTurretRotation { +export function createBaseInitialTurretRotation(): InitialTurretRotation { return { yaw: 0, pitch: 0, roll: 0 }; } @@ -998,7 +998,7 @@ export const InitialTurretRotation: MessageFns = { }, }; -function createBaseTurretModelDefinition(): TurretModelDefinition { +export function createBaseTurretModelDefinition(): TurretModelDefinition { return { bounding_box: createBaseBoundingBox(), armor: createBaseArmor(), @@ -1173,7 +1173,7 @@ export const TurretModelDefinition: MessageFns = { }, }; -function createBaseTurretModelDefinition_GunsEntry(): TurretModelDefinition_GunsEntry { +export function createBaseTurretModelDefinition_GunsEntry(): TurretModelDefinition_GunsEntry { return { key: 0, value: createBaseGunModelDefinition() }; } @@ -1248,12 +1248,12 @@ export const TurretModelDefinition_GunsEntry: MessageFns = { }, }; -function createBaseBoundingBox(): BoundingBox { +export function createBaseBoundingBox(): BoundingBox { return { min: createBaseVector3(), max: createBaseVector3() }; } @@ -1409,7 +1409,7 @@ export const BoundingBox: MessageFns = { }, }; -function createBaseTrackModelDefinition(): TrackModelDefinition { +export function createBaseTrackModelDefinition(): TrackModelDefinition { return { thickness: 0, origin: createBaseVector3() }; } @@ -1487,7 +1487,7 @@ export const TrackModelDefinition: MessageFns = { }, }; -function createBaseGunModelDefinition(): GunModelDefinition { +export function createBaseGunModelDefinition(): GunModelDefinition { return { armor: createBaseArmor(), thickness: 0, model_id: 0, pitch: createBasePitchLimits(), mask: undefined }; } @@ -1615,7 +1615,7 @@ export const GunModelDefinition: MessageFns = { }, }; -function createBasePitchLimits(): PitchLimits { +export function createBasePitchLimits(): PitchLimits { return { min: 0, max: 0, front: undefined, back: undefined, transition: undefined }; } @@ -1743,7 +1743,7 @@ export const PitchLimits: MessageFns = { }, }; -function createBasePitchLimitsExtrema(): PitchLimitsExtrema { +export function createBasePitchLimitsExtrema(): PitchLimitsExtrema { return { min: 0, max: 0, range: 0 }; } diff --git a/packages/core/src/protos/popular_tanks.ts b/packages/core/src/protos/popular_tanks.ts index 1112efb65..6e145b999 100644 --- a/packages/core/src/protos/popular_tanks.ts +++ b/packages/core/src/protos/popular_tanks.ts @@ -19,7 +19,7 @@ export interface PopularTank { views: number; } -function createBasePopularTanks(): PopularTanks { +export function createBasePopularTanks(): PopularTanks { return { tanks: [] }; } @@ -79,7 +79,7 @@ export const PopularTanks: MessageFns = { }, }; -function createBasePopularTank(): PopularTank { +export function createBasePopularTank(): PopularTank { return { id: 0, views: 0 }; } diff --git a/packages/core/src/protos/provision_definitions.ts b/packages/core/src/protos/provision_definitions.ts index 3fc9a5e41..a5d97e27a 100644 --- a/packages/core/src/protos/provision_definitions.ts +++ b/packages/core/src/protos/provision_definitions.ts @@ -7,7 +7,7 @@ /* eslint-disable */ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; import { ConsumableTankFilter } from "./consumable_definitions"; -import { I18nString, createBaseI18nString } from "./i18n"; +import { createBaseI18nString, I18nString } from "./i18n"; export const protobufPackage = "blitzkit"; @@ -29,7 +29,7 @@ export interface Provision { exclude: ConsumableTankFilter[]; } -function createBaseProvisionDefinitions(): ProvisionDefinitions { +export function createBaseProvisionDefinitions(): ProvisionDefinitions { return { provisions: {} }; } @@ -111,7 +111,7 @@ export const ProvisionDefinitions: MessageFns = { }, }; -function createBaseProvisionDefinitions_ProvisionsEntry(): ProvisionDefinitions_ProvisionsEntry { +export function createBaseProvisionDefinitions_ProvisionsEntry(): ProvisionDefinitions_ProvisionsEntry { return { key: 0, value: createBaseProvision() }; } @@ -188,12 +188,12 @@ export const ProvisionDefinitions_ProvisionsEntry: MessageFns = { }, }; -function createBaseRatingLeaderboardV1(): RatingLeaderboardV1 { +export function createBaseRatingLeaderboardV1(): RatingLeaderboardV1 { return { entries: [] }; } @@ -183,7 +183,7 @@ export const RatingLeaderboardV1: MessageFns = { }, }; -function createBaseRatingLeaderboardEntryV1(): RatingLeaderboardEntryV1 { +export function createBaseRatingLeaderboardEntryV1(): RatingLeaderboardEntryV1 { return { id: 0, score: 0 }; } @@ -259,7 +259,7 @@ export const RatingLeaderboardEntryV1: MessageFns = { }, }; -function createBaseRatingLeaderboardV2(): RatingLeaderboardV2 { +export function createBaseRatingLeaderboardV2(): RatingLeaderboardV2 { return { entries: [] }; } @@ -321,7 +321,7 @@ export const RatingLeaderboardV2: MessageFns = { }, }; -function createBaseRatingLeaderboardEntryV2(): RatingLeaderboardEntryV2 { +export function createBaseRatingLeaderboardEntryV2(): RatingLeaderboardEntryV2 { return { id: 0, score: 0, battles: 0, wins: 0, survived: 0, damage: 0, kills: 0 }; } diff --git a/packages/core/src/protos/reviews.ts b/packages/core/src/protos/reviews.ts index 4081dafb5..d8eba8bdb 100644 --- a/packages/core/src/protos/reviews.ts +++ b/packages/core/src/protos/reviews.ts @@ -28,7 +28,7 @@ export interface Video { author: string; } -function createBaseReviews(): Reviews { +export function createBaseReviews(): Reviews { return { reviews: {} }; } @@ -107,7 +107,7 @@ export const Reviews: MessageFns = { }, }; -function createBaseReviews_ReviewsEntry(): Reviews_ReviewsEntry { +export function createBaseReviews_ReviewsEntry(): Reviews_ReviewsEntry { return { key: 0, value: createBaseReview() }; } @@ -180,12 +180,12 @@ export const Reviews_ReviewsEntry: MessageFns = { message.key = object.key ?? 0; message.value = (object.value !== undefined && object.value !== null) ? Review.fromPartial(object.value) - : undefined; + : createBaseReview(); return message; }, }; -function createBaseReview(): Review { +export function createBaseReview(): Review { return { last_updated: 0, videos: [] }; } @@ -261,7 +261,7 @@ export const Review: MessageFns = { }, }; -function createBaseVideo(): Video { +export function createBaseVideo(): Video { return { id: "", author: "" }; } diff --git a/packages/core/src/protos/skill_definitions.ts b/packages/core/src/protos/skill_definitions.ts index e59372ba3..f5c7b77e4 100644 --- a/packages/core/src/protos/skill_definitions.ts +++ b/packages/core/src/protos/skill_definitions.ts @@ -23,7 +23,7 @@ export interface Skill { skills: string[]; } -function createBaseSkillDefinitions(): SkillDefinitions { +export function createBaseSkillDefinitions(): SkillDefinitions { return { classes: {} }; } @@ -102,7 +102,7 @@ export const SkillDefinitions: MessageFns = { }, }; -function createBaseSkillDefinitions_ClassesEntry(): SkillDefinitions_ClassesEntry { +export function createBaseSkillDefinitions_ClassesEntry(): SkillDefinitions_ClassesEntry { return { key: 0, value: createBaseSkill() }; } @@ -175,12 +175,14 @@ export const SkillDefinitions_ClassesEntry: MessageFns = { - encode( - message: TankDefinitions, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { + encode(message: TankDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { Object.entries(message.tanks).forEach(([key, value]) => { - TankDefinitions_TanksEntry.encode( - { key: key as any, value }, - writer.uint32(10).fork(), - ).join(); + TankDefinitions_TanksEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join(); }); return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): TankDefinitions { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseTankDefinitions(); while (reader.pos < end) { @@ -503,10 +472,7 @@ export const TankDefinitions: MessageFns = { break; } - const entry1 = TankDefinitions_TanksEntry.decode( - reader, - reader.uint32(), - ); + const entry1 = TankDefinitions_TanksEntry.decode(reader, reader.uint32()); if (entry1.value !== undefined) { message.tanks[entry1.key] = entry1.value; } @@ -524,12 +490,10 @@ export const TankDefinitions: MessageFns = { fromJSON(object: any): TankDefinitions { return { tanks: isObject(object.tanks) - ? Object.entries(object.tanks).reduce<{ - [key: number]: TankDefinition; - }>((acc, [key, value]) => { - acc[globalThis.Number(key)] = TankDefinition.fromJSON(value); - return acc; - }, {}) + ? Object.entries(object.tanks).reduce<{ [key: number]: TankDefinition }>((acc, [key, value]) => { + acc[globalThis.Number(key)] = TankDefinition.fromJSON(value); + return acc; + }, {}) : {}, }; }, @@ -548,126 +512,106 @@ export const TankDefinitions: MessageFns = { return obj; }, - create, I>>( - base?: I, - ): TankDefinitions { + create, I>>(base?: I): TankDefinitions { return TankDefinitions.fromPartial(base ?? ({} as any)); }, - fromPartial, I>>( - object: I, - ): TankDefinitions { + fromPartial, I>>(object: I): TankDefinitions { const message = createBaseTankDefinitions(); - message.tanks = Object.entries(object.tanks ?? {}).reduce<{ - [key: number]: TankDefinition; - }>((acc, [key, value]) => { - if (value !== undefined) { - acc[globalThis.Number(key)] = TankDefinition.fromPartial(value); - } - return acc; - }, {}); + message.tanks = Object.entries(object.tanks ?? {}).reduce<{ [key: number]: TankDefinition }>( + (acc, [key, value]) => { + if (value !== undefined) { + acc[globalThis.Number(key)] = TankDefinition.fromPartial(value); + } + return acc; + }, + {}, + ); return message; }, }; -function createBaseTankDefinitions_TanksEntry(): TankDefinitions_TanksEntry { +export function createBaseTankDefinitions_TanksEntry(): TankDefinitions_TanksEntry { return { key: 0, value: createBaseTankDefinition() }; } -export const TankDefinitions_TanksEntry: MessageFns = - { - encode( - message: TankDefinitions_TanksEntry, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { - if (message.key !== undefined) { - writer.uint32(8).uint32(message.key); - } - if (message.value !== undefined) { - TankDefinition.encode(message.value, writer.uint32(18).fork()).join(); - } - return writer; - }, +export const TankDefinitions_TanksEntry: MessageFns = { + encode(message: TankDefinitions_TanksEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.key !== undefined) { + writer.uint32(8).uint32(message.key); + } + if (message.value !== undefined) { + TankDefinition.encode(message.value, writer.uint32(18).fork()).join(); + } + return writer; + }, - decode( - input: BinaryReader | Uint8Array, - length?: number, - ): TankDefinitions_TanksEntry { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseTankDefinitions_TanksEntry(); - 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): TankDefinitions_TanksEntry { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseTankDefinitions_TanksEntry(); + 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 = TankDefinition.decode(reader, reader.uint32()); - continue; + message.key = reader.uint32(); + continue; + } + case 2: { + if (tag !== 18) { + break; } + + message.value = TankDefinition.decode(reader, reader.uint32()); + continue; } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skip(tag & 7); } - return message; - }, - - fromJSON(object: any): TankDefinitions_TanksEntry { - return { - key: globalThis.Number( - assertSet('TankDefinitions_TanksEntry.key', object.key), - ), - value: TankDefinition.fromJSON( - assertSet('TankDefinitions_TanksEntry.value', object.value), - ), - }; - }, - - toJSON(message: TankDefinitions_TanksEntry): 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 = TankDefinition.toJSON(message.value); - } - return obj; - }, + reader.skip(tag & 7); + } + return message; + }, - create, I>>( - base?: I, - ): TankDefinitions_TanksEntry { - return TankDefinitions_TanksEntry.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>( - object: I, - ): TankDefinitions_TanksEntry { - const message = createBaseTankDefinitions_TanksEntry(); - message.key = object.key ?? 0; - message.value = - object.value !== undefined && object.value !== null - ? TankDefinition.fromPartial(object.value) - : undefined; - return message; - }, - }; + fromJSON(object: any): TankDefinitions_TanksEntry { + return { + key: globalThis.Number(assertSet("TankDefinitions_TanksEntry.key", object.key)), + value: TankDefinition.fromJSON(assertSet("TankDefinitions_TanksEntry.value", object.value)), + }; + }, -function createBaseTankDefinition(): TankDefinition { + toJSON(message: TankDefinitions_TanksEntry): unknown { + const obj: any = {}; + if (message.key !== undefined) { + obj.key = Math.round(message.key); + } + if (message.value !== undefined) { + obj.value = TankDefinition.toJSON(message.value); + } + return obj; + }, + + create, I>>(base?: I): TankDefinitions_TanksEntry { + return TankDefinitions_TanksEntry.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): TankDefinitions_TanksEntry { + const message = createBaseTankDefinitions_TanksEntry(); + message.key = object.key ?? 0; + message.value = (object.value !== undefined && object.value !== null) + ? TankDefinition.fromPartial(object.value) + : createBaseTankDefinition(); + return message; + }, +}; + +export function createBaseTankDefinition(): TankDefinition { return { id: 0, - slug: '', + slug: "", roles: {}, fixed_camouflage: false, camouflages: [], @@ -675,7 +619,7 @@ function createBaseTankDefinition(): TankDefinition { successors: [], crew: [], health: 0, - nation: '', + nation: "", name: createBaseI18nString(), type: 0, max_consumables: 0, @@ -694,27 +638,21 @@ function createBaseTankDefinition(): TankDefinition { camouflage_still: 0, camouflage_moving: 0, camouflage_onFire: 0, - equipment_preset: '', + equipment_preset: "", weight: 0, }; } export const TankDefinition: MessageFns = { - encode( - message: TankDefinition, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { + encode(message: TankDefinition, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.id !== 0) { writer.uint32(8).uint32(message.id); } - if (message.slug !== '') { + if (message.slug !== "") { writer.uint32(18).string(message.slug); } Object.entries(message.roles).forEach(([key, value]) => { - TankDefinition_RolesEntry.encode( - { key: key as any, value }, - writer.uint32(26).fork(), - ).join(); + TankDefinition_RolesEntry.encode({ key: key as any, value }, writer.uint32(26).fork()).join(); }); if (message.fixed_camouflage !== false) { writer.uint32(40).bool(message.fixed_camouflage); @@ -740,7 +678,7 @@ export const TankDefinition: MessageFns = { if (message.health !== 0) { writer.uint32(80).uint32(message.health); } - if (message.nation !== '') { + if (message.nation !== "") { writer.uint32(90).string(message.nation); } if (message.name !== undefined) { @@ -780,10 +718,7 @@ export const TankDefinition: MessageFns = { TankPrice.encode(message.price, writer.uint32(186).fork()).join(); } if (message.research_cost !== undefined) { - ResearchCost.encode( - message.research_cost, - writer.uint32(194).fork(), - ).join(); + ResearchCost.encode(message.research_cost, writer.uint32(194).fork()).join(); } if (message.speed_forwards !== 0) { writer.uint32(205).float(message.speed_forwards); @@ -800,7 +735,7 @@ export const TankDefinition: MessageFns = { if (message.camouflage_onFire !== 0) { writer.uint32(237).float(message.camouflage_onFire); } - if (message.equipment_preset !== '') { + if (message.equipment_preset !== "") { writer.uint32(242).string(message.equipment_preset); } if (message.weight !== 0) { @@ -810,8 +745,7 @@ export const TankDefinition: MessageFns = { }, decode(input: BinaryReader | Uint8Array, length?: number): TankDefinition { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseTankDefinition(); while (reader.pos < end) { @@ -838,10 +772,7 @@ export const TankDefinition: MessageFns = { break; } - const entry3 = TankDefinition_RolesEntry.decode( - reader, - reader.uint32(), - ); + const entry3 = TankDefinition_RolesEntry.decode(reader, reader.uint32()); if (entry3.value !== undefined) { message.roles[entry3.key] = entry3.value; } @@ -1002,9 +933,7 @@ export const TankDefinition: MessageFns = { break; } - message.turrets.push( - TurretDefinition.decode(reader, reader.uint32()), - ); + message.turrets.push(TurretDefinition.decode(reader, reader.uint32())); continue; } case 21: { @@ -1012,9 +941,7 @@ export const TankDefinition: MessageFns = { break; } - message.engines.push( - EngineDefinition.decode(reader, reader.uint32()), - ); + message.engines.push(EngineDefinition.decode(reader, reader.uint32())); continue; } case 22: { @@ -1108,20 +1035,15 @@ export const TankDefinition: MessageFns = { fromJSON(object: any): TankDefinition { return { - id: globalThis.Number(assertSet('TankDefinition.id', object.id)), - slug: globalThis.String(assertSet('TankDefinition.slug', object.slug)), + id: globalThis.Number(assertSet("TankDefinition.id", object.id)), + slug: globalThis.String(assertSet("TankDefinition.slug", object.slug)), roles: isObject(object.roles) - ? Object.entries(object.roles).reduce<{ [key: number]: number }>( - (acc, [key, value]) => { - acc[globalThis.Number(key)] = Number(value); - return acc; - }, - {}, - ) + ? Object.entries(object.roles).reduce<{ [key: number]: number }>((acc, [key, value]) => { + acc[globalThis.Number(key)] = Number(value); + return acc; + }, {}) : {}, - fixed_camouflage: globalThis.Boolean( - assertSet('TankDefinition.fixed_camouflage', object.fixed_camouflage), - ), + fixed_camouflage: globalThis.Boolean(assertSet("TankDefinition.fixed_camouflage", object.fixed_camouflage)), camouflages: globalThis.Array.isArray(object?.camouflages) ? object.camouflages.map((e: any) => globalThis.Number(e)) : [], @@ -1134,28 +1056,16 @@ export const TankDefinition: MessageFns = { crew: globalThis.Array.isArray(object?.crew) ? object.crew.map((e: any) => Crew.fromJSON(e)) : [], - health: globalThis.Number( - assertSet('TankDefinition.health', object.health), - ), - nation: globalThis.String( - assertSet('TankDefinition.nation', object.nation), - ), - name: I18nString.fromJSON(assertSet('TankDefinition.name', object.name)), - type: tankTypeFromJSON(assertSet('TankDefinition.type', object.type)), - max_consumables: globalThis.Number( - assertSet('TankDefinition.max_consumables', object.max_consumables), - ), - max_provisions: globalThis.Number( - assertSet('TankDefinition.max_provisions', object.max_provisions), - ), - tier: globalThis.Number(assertSet('TankDefinition.tier', object.tier)), - class: tankClassFromJSON(assertSet('TankDefinition.class', object.class)), - testing: globalThis.Boolean( - assertSet('TankDefinition.testing', object.testing), - ), - deprecated: globalThis.Boolean( - assertSet('TankDefinition.deprecated', object.deprecated), - ), + health: globalThis.Number(assertSet("TankDefinition.health", object.health)), + nation: globalThis.String(assertSet("TankDefinition.nation", object.nation)), + name: I18nString.fromJSON(assertSet("TankDefinition.name", object.name)), + type: tankTypeFromJSON(assertSet("TankDefinition.type", object.type)), + max_consumables: globalThis.Number(assertSet("TankDefinition.max_consumables", object.max_consumables)), + max_provisions: globalThis.Number(assertSet("TankDefinition.max_provisions", object.max_provisions)), + tier: globalThis.Number(assertSet("TankDefinition.tier", object.tier)), + class: tankClassFromJSON(assertSet("TankDefinition.class", object.class)), + testing: globalThis.Boolean(assertSet("TankDefinition.testing", object.testing)), + deprecated: globalThis.Boolean(assertSet("TankDefinition.deprecated", object.deprecated)), turrets: globalThis.Array.isArray(object?.turrets) ? object.turrets.map((e: any) => TurretDefinition.fromJSON(e)) : [], @@ -1165,33 +1075,15 @@ export const TankDefinition: MessageFns = { tracks: globalThis.Array.isArray(object?.tracks) ? object.tracks.map((e: any) => TrackDefinition.fromJSON(e)) : [], - price: TankPrice.fromJSON( - assertSet('TankDefinition.price', object.price), - ), - research_cost: isSet(object.research_cost) - ? ResearchCost.fromJSON(object.research_cost) - : undefined, - speed_forwards: globalThis.Number( - assertSet('TankDefinition.speed_forwards', object.speed_forwards), - ), - speed_backwards: globalThis.Number( - assertSet('TankDefinition.speed_backwards', object.speed_backwards), - ), - camouflage_still: globalThis.Number( - assertSet('TankDefinition.camouflage_still', object.camouflage_still), - ), - camouflage_moving: globalThis.Number( - assertSet('TankDefinition.camouflage_moving', object.camouflage_moving), - ), - camouflage_onFire: globalThis.Number( - assertSet('TankDefinition.camouflage_onFire', object.camouflage_onFire), - ), - equipment_preset: globalThis.String( - assertSet('TankDefinition.equipment_preset', object.equipment_preset), - ), - weight: globalThis.Number( - assertSet('TankDefinition.weight', object.weight), - ), + price: TankPrice.fromJSON(assertSet("TankDefinition.price", object.price)), + research_cost: isSet(object.research_cost) ? ResearchCost.fromJSON(object.research_cost) : undefined, + speed_forwards: globalThis.Number(assertSet("TankDefinition.speed_forwards", object.speed_forwards)), + speed_backwards: globalThis.Number(assertSet("TankDefinition.speed_backwards", object.speed_backwards)), + camouflage_still: globalThis.Number(assertSet("TankDefinition.camouflage_still", object.camouflage_still)), + camouflage_moving: globalThis.Number(assertSet("TankDefinition.camouflage_moving", object.camouflage_moving)), + camouflage_onFire: globalThis.Number(assertSet("TankDefinition.camouflage_onFire", object.camouflage_onFire)), + equipment_preset: globalThis.String(assertSet("TankDefinition.equipment_preset", object.equipment_preset)), + weight: globalThis.Number(assertSet("TankDefinition.weight", object.weight)), }; }, @@ -1200,7 +1092,7 @@ export const TankDefinition: MessageFns = { if (message.id !== 0) { obj.id = Math.round(message.id); } - if (message.slug !== '') { + if (message.slug !== "") { obj.slug = message.slug; } if (message.roles) { @@ -1230,7 +1122,7 @@ export const TankDefinition: MessageFns = { if (message.health !== 0) { obj.health = Math.round(message.health); } - if (message.nation !== '') { + if (message.nation !== "") { obj.nation = message.nation; } if (message.name !== undefined) { @@ -1287,7 +1179,7 @@ export const TankDefinition: MessageFns = { if (message.camouflage_onFire !== 0) { obj.camouflage_onFire = message.camouflage_onFire; } - if (message.equipment_preset !== '') { + if (message.equipment_preset !== "") { obj.equipment_preset = message.equipment_preset; } if (message.weight !== 0) { @@ -1296,20 +1188,14 @@ export const TankDefinition: MessageFns = { return obj; }, - create, I>>( - base?: I, - ): TankDefinition { + create, I>>(base?: I): TankDefinition { return TankDefinition.fromPartial(base ?? ({} as any)); }, - fromPartial, I>>( - object: I, - ): TankDefinition { + fromPartial, I>>(object: I): TankDefinition { const message = createBaseTankDefinition(); message.id = object.id ?? 0; - message.slug = object.slug ?? ''; - message.roles = Object.entries(object.roles ?? {}).reduce<{ - [key: number]: number; - }>((acc, [key, value]) => { + message.slug = object.slug ?? ""; + message.roles = Object.entries(object.roles ?? {}).reduce<{ [key: number]: number }>((acc, [key, value]) => { if (value !== undefined) { acc[globalThis.Number(key)] = globalThis.Number(value); } @@ -1321,11 +1207,10 @@ export const TankDefinition: MessageFns = { message.successors = object.successors?.map((e) => e) || []; message.crew = object.crew?.map((e) => Crew.fromPartial(e)) || []; message.health = object.health ?? 0; - message.nation = object.nation ?? ''; - message.name = - object.name !== undefined && object.name !== null - ? I18nString.fromPartial(object.name) - : createBaseI18nString(); + message.nation = object.nation ?? ""; + message.name = (object.name !== undefined && object.name !== null) + ? I18nString.fromPartial(object.name) + : createBaseI18nString(); message.type = object.type ?? 0; message.max_consumables = object.max_consumables ?? 0; message.max_provisions = object.max_provisions ?? 0; @@ -1333,149 +1218,121 @@ export const TankDefinition: MessageFns = { message.class = object.class ?? 0; message.testing = object.testing ?? false; message.deprecated = object.deprecated ?? false; - message.turrets = - object.turrets?.map((e) => TurretDefinition.fromPartial(e)) || []; - message.engines = - object.engines?.map((e) => EngineDefinition.fromPartial(e)) || []; - message.tracks = - object.tracks?.map((e) => TrackDefinition.fromPartial(e)) || []; - message.price = - object.price !== undefined && object.price !== null - ? TankPrice.fromPartial(object.price) - : createBaseTankPrice(); - message.research_cost = - object.research_cost !== undefined && object.research_cost !== null - ? ResearchCost.fromPartial(object.research_cost) - : undefined; + message.turrets = object.turrets?.map((e) => TurretDefinition.fromPartial(e)) || []; + message.engines = object.engines?.map((e) => EngineDefinition.fromPartial(e)) || []; + message.tracks = object.tracks?.map((e) => TrackDefinition.fromPartial(e)) || []; + message.price = (object.price !== undefined && object.price !== null) + ? TankPrice.fromPartial(object.price) + : createBaseTankPrice(); + message.research_cost = (object.research_cost !== undefined && object.research_cost !== null) + ? ResearchCost.fromPartial(object.research_cost) + : undefined; message.speed_forwards = object.speed_forwards ?? 0; message.speed_backwards = object.speed_backwards ?? 0; message.camouflage_still = object.camouflage_still ?? 0; message.camouflage_moving = object.camouflage_moving ?? 0; message.camouflage_onFire = object.camouflage_onFire ?? 0; - message.equipment_preset = object.equipment_preset ?? ''; + message.equipment_preset = object.equipment_preset ?? ""; message.weight = object.weight ?? 0; return message; }, }; -function createBaseTankDefinition_RolesEntry(): TankDefinition_RolesEntry { +export function createBaseTankDefinition_RolesEntry(): TankDefinition_RolesEntry { return { key: 0, value: 0 }; } -export const TankDefinition_RolesEntry: MessageFns = - { - encode( - message: TankDefinition_RolesEntry, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { - if (message.key !== undefined) { - writer.uint32(8).uint32(message.key); - } - if (message.value !== undefined) { - writer.uint32(16).uint32(message.value); - } - return writer; - }, +export const TankDefinition_RolesEntry: MessageFns = { + encode(message: TankDefinition_RolesEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.key !== undefined) { + writer.uint32(8).uint32(message.key); + } + if (message.value !== undefined) { + writer.uint32(16).uint32(message.value); + } + return writer; + }, - decode( - input: BinaryReader | Uint8Array, - length?: number, - ): TankDefinition_RolesEntry { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseTankDefinition_RolesEntry(); - 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): TankDefinition_RolesEntry { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseTankDefinition_RolesEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; } - case 2: { - if (tag !== 16) { - break; - } - message.value = reader.uint32(); - continue; + message.key = reader.uint32(); + continue; + } + case 2: { + if (tag !== 16) { + break; } + + message.value = reader.uint32(); + continue; } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skip(tag & 7); } - return message; - }, - - fromJSON(object: any): TankDefinition_RolesEntry { - return { - key: globalThis.Number( - assertSet('TankDefinition_RolesEntry.key', object.key), - ), - value: globalThis.Number( - assertSet('TankDefinition_RolesEntry.value', object.value), - ), - }; - }, - - toJSON(message: TankDefinition_RolesEntry): 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 = Math.round(message.value); - } - return obj; - }, + reader.skip(tag & 7); + } + return message; + }, - create, I>>( - base?: I, - ): TankDefinition_RolesEntry { - return TankDefinition_RolesEntry.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>( - object: I, - ): TankDefinition_RolesEntry { - const message = createBaseTankDefinition_RolesEntry(); - message.key = object.key ?? 0; - message.value = object.value ?? 0; - return message; - }, - }; + fromJSON(object: any): TankDefinition_RolesEntry { + return { + key: globalThis.Number(assertSet("TankDefinition_RolesEntry.key", object.key)), + value: globalThis.Number(assertSet("TankDefinition_RolesEntry.value", object.value)), + }; + }, -function createBaseResearchCost(): ResearchCost { + toJSON(message: TankDefinition_RolesEntry): unknown { + const obj: any = {}; + if (message.key !== undefined) { + obj.key = Math.round(message.key); + } + if (message.value !== undefined) { + obj.value = Math.round(message.value); + } + return obj; + }, + + create, I>>(base?: I): TankDefinition_RolesEntry { + return TankDefinition_RolesEntry.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): TankDefinition_RolesEntry { + const message = createBaseTankDefinition_RolesEntry(); + message.key = object.key ?? 0; + message.value = object.value ?? 0; + return message; + }, +}; + +export function createBaseResearchCost(): ResearchCost { return { research_cost_type: undefined }; } export const ResearchCost: MessageFns = { - encode( - message: ResearchCost, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { + encode(message: ResearchCost, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { switch (message.research_cost_type?.$case) { - case 'xp': + case "xp": writer.uint32(8).uint32(message.research_cost_type.value); break; - case 'seasonal_tokens': - ResearchCostSeasonalTokens.encode( - message.research_cost_type.value, - writer.uint32(18).fork(), - ).join(); + case "seasonal_tokens": + ResearchCostSeasonalTokens.encode(message.research_cost_type.value, writer.uint32(18).fork()).join(); break; } return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): ResearchCost { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseResearchCost(); while (reader.pos < end) { @@ -1486,7 +1343,7 @@ export const ResearchCost: MessageFns = { break; } - message.research_cost_type = { $case: 'xp', value: reader.uint32() }; + message.research_cost_type = { $case: "xp", value: reader.uint32() }; continue; } case 2: { @@ -1495,7 +1352,7 @@ export const ResearchCost: MessageFns = { } message.research_cost_type = { - $case: 'seasonal_tokens', + $case: "seasonal_tokens", value: ResearchCostSeasonalTokens.decode(reader, reader.uint32()), }; continue; @@ -1512,167 +1369,132 @@ export const ResearchCost: MessageFns = { fromJSON(object: any): ResearchCost { return { research_cost_type: isSet(object.xp) - ? { $case: 'xp', value: globalThis.Number(object.xp) } + ? { $case: "xp", value: globalThis.Number(object.xp) } : isSet(object.seasonal_tokens) - ? { - $case: 'seasonal_tokens', - value: ResearchCostSeasonalTokens.fromJSON( - object.seasonal_tokens, - ), - } - : undefined, + ? { $case: "seasonal_tokens", value: ResearchCostSeasonalTokens.fromJSON(object.seasonal_tokens) } + : undefined, }; }, toJSON(message: ResearchCost): unknown { const obj: any = {}; - if (message.research_cost_type?.$case === 'xp') { + if (message.research_cost_type?.$case === "xp") { obj.xp = Math.round(message.research_cost_type.value); } - if (message.research_cost_type?.$case === 'seasonal_tokens') { - obj.seasonal_tokens = ResearchCostSeasonalTokens.toJSON( - message.research_cost_type.value, - ); + if (message.research_cost_type?.$case === "seasonal_tokens") { + obj.seasonal_tokens = ResearchCostSeasonalTokens.toJSON(message.research_cost_type.value); } return obj; }, - create, I>>( - base?: I, - ): ResearchCost { + create, I>>(base?: I): ResearchCost { return ResearchCost.fromPartial(base ?? ({} as any)); }, - fromPartial, I>>( - object: I, - ): ResearchCost { + fromPartial, I>>(object: I): ResearchCost { const message = createBaseResearchCost(); if ( - object.research_cost_type?.$case === 'xp' && + object.research_cost_type?.$case === "xp" && object.research_cost_type?.value !== undefined && object.research_cost_type?.value !== null ) { - message.research_cost_type = { - $case: 'xp', - value: object.research_cost_type.value, - }; + message.research_cost_type = { $case: "xp", value: object.research_cost_type.value }; } if ( - object.research_cost_type?.$case === 'seasonal_tokens' && + object.research_cost_type?.$case === "seasonal_tokens" && object.research_cost_type?.value !== undefined && object.research_cost_type?.value !== null ) { message.research_cost_type = { - $case: 'seasonal_tokens', - value: ResearchCostSeasonalTokens.fromPartial( - object.research_cost_type.value, - ), + $case: "seasonal_tokens", + value: ResearchCostSeasonalTokens.fromPartial(object.research_cost_type.value), }; } return message; }, }; -function createBaseResearchCostSeasonalTokens(): ResearchCostSeasonalTokens { +export function createBaseResearchCostSeasonalTokens(): ResearchCostSeasonalTokens { return { season: 0, tokens: 0 }; } -export const ResearchCostSeasonalTokens: MessageFns = - { - encode( - message: ResearchCostSeasonalTokens, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { - if (message.season !== 0) { - writer.uint32(8).uint32(message.season); - } - if (message.tokens !== 0) { - writer.uint32(16).uint32(message.tokens); - } - return writer; - }, +export const ResearchCostSeasonalTokens: MessageFns = { + encode(message: ResearchCostSeasonalTokens, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.season !== 0) { + writer.uint32(8).uint32(message.season); + } + if (message.tokens !== 0) { + writer.uint32(16).uint32(message.tokens); + } + return writer; + }, - decode( - input: BinaryReader | Uint8Array, - length?: number, - ): ResearchCostSeasonalTokens { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseResearchCostSeasonalTokens(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (tag !== 8) { - break; - } - - message.season = reader.uint32(); - continue; + decode(input: BinaryReader | Uint8Array, length?: number): ResearchCostSeasonalTokens { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseResearchCostSeasonalTokens(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; } - case 2: { - if (tag !== 16) { - break; - } - message.tokens = reader.uint32(); - continue; + message.season = reader.uint32(); + continue; + } + case 2: { + if (tag !== 16) { + break; } + + message.tokens = reader.uint32(); + continue; } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skip(tag & 7); } - return message; - }, - - fromJSON(object: any): ResearchCostSeasonalTokens { - return { - season: globalThis.Number( - assertSet('ResearchCostSeasonalTokens.season', object.season), - ), - tokens: globalThis.Number( - assertSet('ResearchCostSeasonalTokens.tokens', object.tokens), - ), - }; - }, - - toJSON(message: ResearchCostSeasonalTokens): unknown { - const obj: any = {}; - if (message.season !== 0) { - obj.season = Math.round(message.season); + if ((tag & 7) === 4 || tag === 0) { + break; } - if (message.tokens !== 0) { - obj.tokens = Math.round(message.tokens); - } - return obj; - }, + reader.skip(tag & 7); + } + return message; + }, - create, I>>( - base?: I, - ): ResearchCostSeasonalTokens { - return ResearchCostSeasonalTokens.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>( - object: I, - ): ResearchCostSeasonalTokens { - const message = createBaseResearchCostSeasonalTokens(); - message.season = object.season ?? 0; - message.tokens = object.tokens ?? 0; - return message; - }, - }; + fromJSON(object: any): ResearchCostSeasonalTokens { + return { + season: globalThis.Number(assertSet("ResearchCostSeasonalTokens.season", object.season)), + tokens: globalThis.Number(assertSet("ResearchCostSeasonalTokens.tokens", object.tokens)), + }; + }, -function createBaseTankPrice(): TankPrice { + toJSON(message: ResearchCostSeasonalTokens): unknown { + const obj: any = {}; + if (message.season !== 0) { + obj.season = Math.round(message.season); + } + if (message.tokens !== 0) { + obj.tokens = Math.round(message.tokens); + } + return obj; + }, + + create, I>>(base?: I): ResearchCostSeasonalTokens { + return ResearchCostSeasonalTokens.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): ResearchCostSeasonalTokens { + const message = createBaseResearchCostSeasonalTokens(); + message.season = object.season ?? 0; + message.tokens = object.tokens ?? 0; + return message; + }, +}; + +export function createBaseTankPrice(): TankPrice { return { type: 0, value: 0 }; } export const TankPrice: MessageFns = { - encode( - message: TankPrice, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { + encode(message: TankPrice, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.type !== 0) { writer.uint32(8).int32(message.type); } @@ -1683,8 +1505,7 @@ export const TankPrice: MessageFns = { }, decode(input: BinaryReader | Uint8Array, length?: number): TankPrice { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseTankPrice(); while (reader.pos < end) { @@ -1717,8 +1538,8 @@ export const TankPrice: MessageFns = { fromJSON(object: any): TankPrice { return { - type: tankPriceTypeFromJSON(assertSet('TankPrice.type', object.type)), - value: globalThis.Number(assertSet('TankPrice.value', object.value)), + type: tankPriceTypeFromJSON(assertSet("TankPrice.type", object.type)), + value: globalThis.Number(assertSet("TankPrice.value", object.value)), }; }, @@ -1736,9 +1557,7 @@ export const TankPrice: MessageFns = { create, I>>(base?: I): TankPrice { return TankPrice.fromPartial(base ?? ({} as any)); }, - fromPartial, I>>( - object: I, - ): TankPrice { + fromPartial, I>>(object: I): TankPrice { const message = createBaseTankPrice(); message.type = object.type ?? 0; message.value = object.value ?? 0; @@ -1746,7 +1565,7 @@ export const TankPrice: MessageFns = { }, }; -function createBaseTrackDefinition(): TrackDefinition { +export function createBaseTrackDefinition(): TrackDefinition { return { id: 0, tier: 0, @@ -1764,10 +1583,7 @@ function createBaseTrackDefinition(): TrackDefinition { } export const TrackDefinition: MessageFns = { - encode( - message: TrackDefinition, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { + encode(message: TrackDefinition, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.id !== 0) { writer.uint32(8).uint32(message.id); } @@ -1784,10 +1600,7 @@ export const TrackDefinition: MessageFns = { writer.uint32(45).float(message.traverse_speed); } if (message.research_cost !== undefined) { - ResearchCost.encode( - message.research_cost, - writer.uint32(50).fork(), - ).join(); + ResearchCost.encode(message.research_cost, writer.uint32(50).fork()).join(); } if (message.dispersion_move !== 0) { writer.uint32(61).float(message.dispersion_move); @@ -1811,8 +1624,7 @@ export const TrackDefinition: MessageFns = { }, decode(input: BinaryReader | Uint8Array, length?: number): TrackDefinition { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseTrackDefinition(); while (reader.pos < end) { @@ -1925,42 +1737,20 @@ export const TrackDefinition: MessageFns = { fromJSON(object: any): TrackDefinition { return { - id: globalThis.Number(assertSet('TrackDefinition.id', object.id)), - tier: globalThis.Number(assertSet('TrackDefinition.tier', object.tier)), - name: I18nString.fromJSON(assertSet('TrackDefinition.name', object.name)), - weight: globalThis.Number( - assertSet('TrackDefinition.weight', object.weight), - ), - traverse_speed: globalThis.Number( - assertSet('TrackDefinition.traverse_speed', object.traverse_speed), - ), - research_cost: isSet(object.research_cost) - ? ResearchCost.fromJSON(object.research_cost) - : undefined, - dispersion_move: globalThis.Number( - assertSet('TrackDefinition.dispersion_move', object.dispersion_move), - ), + id: globalThis.Number(assertSet("TrackDefinition.id", object.id)), + tier: globalThis.Number(assertSet("TrackDefinition.tier", object.tier)), + name: I18nString.fromJSON(assertSet("TrackDefinition.name", object.name)), + weight: globalThis.Number(assertSet("TrackDefinition.weight", object.weight)), + traverse_speed: globalThis.Number(assertSet("TrackDefinition.traverse_speed", object.traverse_speed)), + research_cost: isSet(object.research_cost) ? ResearchCost.fromJSON(object.research_cost) : undefined, + dispersion_move: globalThis.Number(assertSet("TrackDefinition.dispersion_move", object.dispersion_move)), dispersion_traverse: globalThis.Number( - assertSet( - 'TrackDefinition.dispersion_traverse', - object.dispersion_traverse, - ), + assertSet("TrackDefinition.dispersion_traverse", object.dispersion_traverse), ), - resistance_hard: globalThis.Number( - assertSet('TrackDefinition.resistance_hard', object.resistance_hard), - ), - resistance_medium: globalThis.Number( - assertSet( - 'TrackDefinition.resistance_medium', - object.resistance_medium, - ), - ), - resistance_soft: globalThis.Number( - assertSet('TrackDefinition.resistance_soft', object.resistance_soft), - ), - unlocks: globalThis.Array.isArray(object?.unlocks) - ? object.unlocks.map((e: any) => Unlock.fromJSON(e)) - : [], + resistance_hard: globalThis.Number(assertSet("TrackDefinition.resistance_hard", object.resistance_hard)), + resistance_medium: globalThis.Number(assertSet("TrackDefinition.resistance_medium", object.resistance_medium)), + resistance_soft: globalThis.Number(assertSet("TrackDefinition.resistance_soft", object.resistance_soft)), + unlocks: globalThis.Array.isArray(object?.unlocks) ? object.unlocks.map((e: any) => Unlock.fromJSON(e)) : [], }; }, @@ -2005,27 +1795,21 @@ export const TrackDefinition: MessageFns = { return obj; }, - create, I>>( - base?: I, - ): TrackDefinition { + create, I>>(base?: I): TrackDefinition { return TrackDefinition.fromPartial(base ?? ({} as any)); }, - fromPartial, I>>( - object: I, - ): TrackDefinition { + fromPartial, I>>(object: I): TrackDefinition { const message = createBaseTrackDefinition(); message.id = object.id ?? 0; message.tier = object.tier ?? 0; - message.name = - object.name !== undefined && object.name !== null - ? I18nString.fromPartial(object.name) - : createBaseI18nString(); + message.name = (object.name !== undefined && object.name !== null) + ? I18nString.fromPartial(object.name) + : createBaseI18nString(); message.weight = object.weight ?? 0; message.traverse_speed = object.traverse_speed ?? 0; - message.research_cost = - object.research_cost !== undefined && object.research_cost !== null - ? ResearchCost.fromPartial(object.research_cost) - : undefined; + message.research_cost = (object.research_cost !== undefined && object.research_cost !== null) + ? ResearchCost.fromPartial(object.research_cost) + : undefined; message.dispersion_move = object.dispersion_move ?? 0; message.dispersion_traverse = object.dispersion_traverse ?? 0; message.resistance_hard = object.resistance_hard ?? 0; @@ -2036,7 +1820,7 @@ export const TrackDefinition: MessageFns = { }, }; -function createBaseEngineDefinition(): EngineDefinition { +export function createBaseEngineDefinition(): EngineDefinition { return { id: 0, name: createBaseI18nString(), @@ -2050,10 +1834,7 @@ function createBaseEngineDefinition(): EngineDefinition { } export const EngineDefinition: MessageFns = { - encode( - message: EngineDefinition, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { + encode(message: EngineDefinition, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.id !== 0) { writer.uint32(8).uint32(message.id); } @@ -2061,10 +1842,7 @@ export const EngineDefinition: MessageFns = { I18nString.encode(message.name, writer.uint32(18).fork()).join(); } if (message.research_cost !== undefined) { - ResearchCost.encode( - message.research_cost, - writer.uint32(26).fork(), - ).join(); + ResearchCost.encode(message.research_cost, writer.uint32(26).fork()).join(); } if (message.tier !== 0) { writer.uint32(32).uint32(message.tier); @@ -2085,8 +1863,7 @@ export const EngineDefinition: MessageFns = { }, decode(input: BinaryReader | Uint8Array, length?: number): EngineDefinition { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseEngineDefinition(); while (reader.pos < end) { @@ -2167,26 +1944,14 @@ export const EngineDefinition: MessageFns = { fromJSON(object: any): EngineDefinition { return { - id: globalThis.Number(assertSet('EngineDefinition.id', object.id)), - name: I18nString.fromJSON( - assertSet('EngineDefinition.name', object.name), - ), - research_cost: isSet(object.research_cost) - ? ResearchCost.fromJSON(object.research_cost) - : undefined, - tier: globalThis.Number(assertSet('EngineDefinition.tier', object.tier)), - fire_chance: globalThis.Number( - assertSet('EngineDefinition.fire_chance', object.fire_chance), - ), - power: globalThis.Number( - assertSet('EngineDefinition.power', object.power), - ), - weight: globalThis.Number( - assertSet('EngineDefinition.weight', object.weight), - ), - unlocks: globalThis.Array.isArray(object?.unlocks) - ? object.unlocks.map((e: any) => Unlock.fromJSON(e)) - : [], + id: globalThis.Number(assertSet("EngineDefinition.id", object.id)), + name: I18nString.fromJSON(assertSet("EngineDefinition.name", object.name)), + research_cost: isSet(object.research_cost) ? ResearchCost.fromJSON(object.research_cost) : undefined, + tier: globalThis.Number(assertSet("EngineDefinition.tier", object.tier)), + fire_chance: globalThis.Number(assertSet("EngineDefinition.fire_chance", object.fire_chance)), + power: globalThis.Number(assertSet("EngineDefinition.power", object.power)), + weight: globalThis.Number(assertSet("EngineDefinition.weight", object.weight)), + unlocks: globalThis.Array.isArray(object?.unlocks) ? object.unlocks.map((e: any) => Unlock.fromJSON(e)) : [], }; }, @@ -2219,24 +1984,18 @@ export const EngineDefinition: MessageFns = { return obj; }, - create, I>>( - base?: I, - ): EngineDefinition { + create, I>>(base?: I): EngineDefinition { return EngineDefinition.fromPartial(base ?? ({} as any)); }, - fromPartial, I>>( - object: I, - ): EngineDefinition { + fromPartial, I>>(object: I): EngineDefinition { const message = createBaseEngineDefinition(); message.id = object.id ?? 0; - message.name = - object.name !== undefined && object.name !== null - ? I18nString.fromPartial(object.name) - : createBaseI18nString(); - message.research_cost = - object.research_cost !== undefined && object.research_cost !== null - ? ResearchCost.fromPartial(object.research_cost) - : undefined; + message.name = (object.name !== undefined && object.name !== null) + ? I18nString.fromPartial(object.name) + : createBaseI18nString(); + message.research_cost = (object.research_cost !== undefined && object.research_cost !== null) + ? ResearchCost.fromPartial(object.research_cost) + : undefined; message.tier = object.tier ?? 0; message.fire_chance = object.fire_chance ?? 0; message.power = object.power ?? 0; @@ -2246,7 +2005,7 @@ export const EngineDefinition: MessageFns = { }, }; -function createBaseTurretDefinition(): TurretDefinition { +export function createBaseTurretDefinition(): TurretDefinition { return { id: 0, health: 0, @@ -2262,10 +2021,7 @@ function createBaseTurretDefinition(): TurretDefinition { } export const TurretDefinition: MessageFns = { - encode( - message: TurretDefinition, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { + encode(message: TurretDefinition, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.id !== 0) { writer.uint32(8).uint32(message.id); } @@ -2279,10 +2035,7 @@ export const TurretDefinition: MessageFns = { writer.uint32(37).float(message.traverse_speed); } if (message.research_cost !== undefined) { - ResearchCost.encode( - message.research_cost, - writer.uint32(42).fork(), - ).join(); + ResearchCost.encode(message.research_cost, writer.uint32(42).fork()).join(); } if (message.name !== undefined) { I18nString.encode(message.name, writer.uint32(50).fork()).join(); @@ -2303,8 +2056,7 @@ export const TurretDefinition: MessageFns = { }, decode(input: BinaryReader | Uint8Array, length?: number): TurretDefinition { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseTurretDefinition(); while (reader.pos < end) { @@ -2401,32 +2153,16 @@ export const TurretDefinition: MessageFns = { fromJSON(object: any): TurretDefinition { return { - id: globalThis.Number(assertSet('TurretDefinition.id', object.id)), - health: globalThis.Number( - assertSet('TurretDefinition.health', object.health), - ), - view_range: globalThis.Number( - assertSet('TurretDefinition.view_range', object.view_range), - ), - traverse_speed: globalThis.Number( - assertSet('TurretDefinition.traverse_speed', object.traverse_speed), - ), - research_cost: isSet(object.research_cost) - ? ResearchCost.fromJSON(object.research_cost) - : undefined, - name: I18nString.fromJSON( - assertSet('TurretDefinition.name', object.name), - ), - tier: globalThis.Number(assertSet('TurretDefinition.tier', object.tier)), - weight: globalThis.Number( - assertSet('TurretDefinition.weight', object.weight), - ), - guns: globalThis.Array.isArray(object?.guns) - ? object.guns.map((e: any) => GunDefinition.fromJSON(e)) - : [], - unlocks: globalThis.Array.isArray(object?.unlocks) - ? object.unlocks.map((e: any) => Unlock.fromJSON(e)) - : [], + id: globalThis.Number(assertSet("TurretDefinition.id", object.id)), + health: globalThis.Number(assertSet("TurretDefinition.health", object.health)), + view_range: globalThis.Number(assertSet("TurretDefinition.view_range", object.view_range)), + traverse_speed: globalThis.Number(assertSet("TurretDefinition.traverse_speed", object.traverse_speed)), + research_cost: isSet(object.research_cost) ? ResearchCost.fromJSON(object.research_cost) : undefined, + name: I18nString.fromJSON(assertSet("TurretDefinition.name", object.name)), + tier: globalThis.Number(assertSet("TurretDefinition.tier", object.tier)), + weight: globalThis.Number(assertSet("TurretDefinition.weight", object.weight)), + guns: globalThis.Array.isArray(object?.guns) ? object.guns.map((e: any) => GunDefinition.fromJSON(e)) : [], + unlocks: globalThis.Array.isArray(object?.unlocks) ? object.unlocks.map((e: any) => Unlock.fromJSON(e)) : [], }; }, @@ -2465,27 +2201,21 @@ export const TurretDefinition: MessageFns = { return obj; }, - create, I>>( - base?: I, - ): TurretDefinition { + create, I>>(base?: I): TurretDefinition { return TurretDefinition.fromPartial(base ?? ({} as any)); }, - fromPartial, I>>( - object: I, - ): TurretDefinition { + fromPartial, I>>(object: I): TurretDefinition { const message = createBaseTurretDefinition(); message.id = object.id ?? 0; message.health = object.health ?? 0; message.view_range = object.view_range ?? 0; message.traverse_speed = object.traverse_speed ?? 0; - message.research_cost = - object.research_cost !== undefined && object.research_cost !== null - ? ResearchCost.fromPartial(object.research_cost) - : undefined; - message.name = - object.name !== undefined && object.name !== null - ? I18nString.fromPartial(object.name) - : createBaseI18nString(); + message.research_cost = (object.research_cost !== undefined && object.research_cost !== null) + ? ResearchCost.fromPartial(object.research_cost) + : undefined; + message.name = (object.name !== undefined && object.name !== null) + ? I18nString.fromPartial(object.name) + : createBaseI18nString(); message.tier = object.tier ?? 0; message.weight = object.weight ?? 0; message.guns = object.guns?.map((e) => GunDefinition.fromPartial(e)) || []; @@ -2494,41 +2224,28 @@ export const TurretDefinition: MessageFns = { }, }; -function createBaseGunDefinition(): GunDefinition { +export function createBaseGunDefinition(): GunDefinition { return { gun_type: undefined }; } export const GunDefinition: MessageFns = { - encode( - message: GunDefinition, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { + encode(message: GunDefinition, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { switch (message.gun_type?.$case) { - case 'regular': - GunDefinitionRegular.encode( - message.gun_type.value, - writer.uint32(10).fork(), - ).join(); + case "regular": + GunDefinitionRegular.encode(message.gun_type.value, writer.uint32(10).fork()).join(); break; - case 'auto_loader': - GunDefinitionAutoLoader.encode( - message.gun_type.value, - writer.uint32(18).fork(), - ).join(); + case "auto_loader": + GunDefinitionAutoLoader.encode(message.gun_type.value, writer.uint32(18).fork()).join(); break; - case 'auto_reloader': - GunDefinitionAutoReloader.encode( - message.gun_type.value, - writer.uint32(26).fork(), - ).join(); + case "auto_reloader": + GunDefinitionAutoReloader.encode(message.gun_type.value, writer.uint32(26).fork()).join(); break; } return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): GunDefinition { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseGunDefinition(); while (reader.pos < end) { @@ -2539,10 +2256,7 @@ export const GunDefinition: MessageFns = { break; } - message.gun_type = { - $case: 'regular', - value: GunDefinitionRegular.decode(reader, reader.uint32()), - }; + message.gun_type = { $case: "regular", value: GunDefinitionRegular.decode(reader, reader.uint32()) }; continue; } case 2: { @@ -2550,10 +2264,7 @@ export const GunDefinition: MessageFns = { break; } - message.gun_type = { - $case: 'auto_loader', - value: GunDefinitionAutoLoader.decode(reader, reader.uint32()), - }; + message.gun_type = { $case: "auto_loader", value: GunDefinitionAutoLoader.decode(reader, reader.uint32()) }; continue; } case 3: { @@ -2562,7 +2273,7 @@ export const GunDefinition: MessageFns = { } message.gun_type = { - $case: 'auto_reloader', + $case: "auto_reloader", value: GunDefinitionAutoReloader.decode(reader, reader.uint32()), }; continue; @@ -2579,76 +2290,53 @@ export const GunDefinition: MessageFns = { fromJSON(object: any): GunDefinition { return { gun_type: isSet(object.regular) - ? { - $case: 'regular', - value: GunDefinitionRegular.fromJSON(object.regular), - } + ? { $case: "regular", value: GunDefinitionRegular.fromJSON(object.regular) } : isSet(object.auto_loader) - ? { - $case: 'auto_loader', - value: GunDefinitionAutoLoader.fromJSON(object.auto_loader), - } - : isSet(object.auto_reloader) - ? { - $case: 'auto_reloader', - value: GunDefinitionAutoReloader.fromJSON(object.auto_reloader), - } - : undefined, + ? { $case: "auto_loader", value: GunDefinitionAutoLoader.fromJSON(object.auto_loader) } + : isSet(object.auto_reloader) + ? { $case: "auto_reloader", value: GunDefinitionAutoReloader.fromJSON(object.auto_reloader) } + : undefined, }; }, toJSON(message: GunDefinition): unknown { const obj: any = {}; - if (message.gun_type?.$case === 'regular') { + if (message.gun_type?.$case === "regular") { obj.regular = GunDefinitionRegular.toJSON(message.gun_type.value); } - if (message.gun_type?.$case === 'auto_loader') { + if (message.gun_type?.$case === "auto_loader") { obj.auto_loader = GunDefinitionAutoLoader.toJSON(message.gun_type.value); } - if (message.gun_type?.$case === 'auto_reloader') { - obj.auto_reloader = GunDefinitionAutoReloader.toJSON( - message.gun_type.value, - ); + if (message.gun_type?.$case === "auto_reloader") { + obj.auto_reloader = GunDefinitionAutoReloader.toJSON(message.gun_type.value); } return obj; }, - create, I>>( - base?: I, - ): GunDefinition { + create, I>>(base?: I): GunDefinition { return GunDefinition.fromPartial(base ?? ({} as any)); }, - fromPartial, I>>( - object: I, - ): GunDefinition { + fromPartial, I>>(object: I): GunDefinition { const message = createBaseGunDefinition(); if ( - object.gun_type?.$case === 'regular' && - object.gun_type?.value !== undefined && - object.gun_type?.value !== null + object.gun_type?.$case === "regular" && object.gun_type?.value !== undefined && object.gun_type?.value !== null ) { - message.gun_type = { - $case: 'regular', - value: GunDefinitionRegular.fromPartial(object.gun_type.value), - }; + message.gun_type = { $case: "regular", value: GunDefinitionRegular.fromPartial(object.gun_type.value) }; } if ( - object.gun_type?.$case === 'auto_loader' && + object.gun_type?.$case === "auto_loader" && object.gun_type?.value !== undefined && object.gun_type?.value !== null ) { - message.gun_type = { - $case: 'auto_loader', - value: GunDefinitionAutoLoader.fromPartial(object.gun_type.value), - }; + message.gun_type = { $case: "auto_loader", value: GunDefinitionAutoLoader.fromPartial(object.gun_type.value) }; } if ( - object.gun_type?.$case === 'auto_reloader' && + object.gun_type?.$case === "auto_reloader" && object.gun_type?.value !== undefined && object.gun_type?.value !== null ) { message.gun_type = { - $case: 'auto_reloader', + $case: "auto_reloader", value: GunDefinitionAutoReloader.fromPartial(object.gun_type.value), }; } @@ -2656,36 +2344,23 @@ export const GunDefinition: MessageFns = { }, }; -function createBaseGunDefinitionRegular(): GunDefinitionRegular { - return { - base: createBaseGunDefinitionBase(), - extension: createBaseGunDefinitionRegularProperties(), - }; +export function createBaseGunDefinitionRegular(): GunDefinitionRegular { + return { base: createBaseGunDefinitionBase(), extension: createBaseGunDefinitionRegularProperties() }; } export const GunDefinitionRegular: MessageFns = { - encode( - message: GunDefinitionRegular, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { + encode(message: GunDefinitionRegular, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.base !== undefined) { GunDefinitionBase.encode(message.base, writer.uint32(10).fork()).join(); } if (message.extension !== undefined) { - GunDefinitionRegularProperties.encode( - message.extension, - writer.uint32(18).fork(), - ).join(); + GunDefinitionRegularProperties.encode(message.extension, writer.uint32(18).fork()).join(); } return writer; }, - decode( - input: BinaryReader | Uint8Array, - length?: number, - ): GunDefinitionRegular { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); + decode(input: BinaryReader | Uint8Array, length?: number): GunDefinitionRegular { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseGunDefinitionRegular(); while (reader.pos < end) { @@ -2704,10 +2379,7 @@ export const GunDefinitionRegular: MessageFns = { break; } - message.extension = GunDefinitionRegularProperties.decode( - reader, - reader.uint32(), - ); + message.extension = GunDefinitionRegularProperties.decode(reader, reader.uint32()); continue; } } @@ -2721,12 +2393,8 @@ export const GunDefinitionRegular: MessageFns = { fromJSON(object: any): GunDefinitionRegular { return { - base: GunDefinitionBase.fromJSON( - assertSet('GunDefinitionRegular.base', object.base), - ), - extension: GunDefinitionRegularProperties.fromJSON( - assertSet('GunDefinitionRegular.extension', object.extension), - ), + base: GunDefinitionBase.fromJSON(assertSet("GunDefinitionRegular.base", object.base)), + extension: GunDefinitionRegularProperties.fromJSON(assertSet("GunDefinitionRegular.extension", object.extension)), }; }, @@ -2741,131 +2409,98 @@ export const GunDefinitionRegular: MessageFns = { return obj; }, - create, I>>( - base?: I, - ): GunDefinitionRegular { + create, I>>(base?: I): GunDefinitionRegular { return GunDefinitionRegular.fromPartial(base ?? ({} as any)); }, - fromPartial, I>>( - object: I, - ): GunDefinitionRegular { + fromPartial, I>>(object: I): GunDefinitionRegular { const message = createBaseGunDefinitionRegular(); - message.base = - object.base !== undefined && object.base !== null - ? GunDefinitionBase.fromPartial(object.base) - : createBaseGunDefinitionBase(); - message.extension = - object.extension !== undefined && object.extension !== null - ? GunDefinitionRegularProperties.fromPartial(object.extension) - : createBaseGunDefinitionRegularProperties(); + message.base = (object.base !== undefined && object.base !== null) + ? GunDefinitionBase.fromPartial(object.base) + : createBaseGunDefinitionBase(); + message.extension = (object.extension !== undefined && object.extension !== null) + ? GunDefinitionRegularProperties.fromPartial(object.extension) + : createBaseGunDefinitionRegularProperties(); return message; }, }; -function createBaseGunDefinitionRegularProperties(): GunDefinitionRegularProperties { +export function createBaseGunDefinitionRegularProperties(): GunDefinitionRegularProperties { return { reload: 0 }; } -export const GunDefinitionRegularProperties: MessageFns = - { - encode( - message: GunDefinitionRegularProperties, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { - if (message.reload !== 0) { - writer.uint32(13).float(message.reload); - } - return writer; - }, - - decode( - input: BinaryReader | Uint8Array, - length?: number, - ): GunDefinitionRegularProperties { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGunDefinitionRegularProperties(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (tag !== 13) { - break; - } - - message.reload = reader.float(); - continue; - } - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skip(tag & 7); - } - return message; - }, - - fromJSON(object: any): GunDefinitionRegularProperties { - return { - reload: globalThis.Number( - assertSet('GunDefinitionRegularProperties.reload', object.reload), - ), - }; - }, - - toJSON(message: GunDefinitionRegularProperties): unknown { - const obj: any = {}; - if (message.reload !== 0) { - obj.reload = message.reload; - } - return obj; - }, - - create, I>>( - base?: I, - ): GunDefinitionRegularProperties { - return GunDefinitionRegularProperties.fromPartial(base ?? ({} as any)); - }, - fromPartial< - I extends Exact, I>, - >(object: I): GunDefinitionRegularProperties { - const message = createBaseGunDefinitionRegularProperties(); - message.reload = object.reload ?? 0; - return message; - }, - }; - -function createBaseGunDefinitionAutoLoader(): GunDefinitionAutoLoader { - return { - base: createBaseGunDefinitionBase(), - extension: createBaseGunDefinitionAutoLoaderProperties(), - }; -} - -export const GunDefinitionAutoLoader: MessageFns = { - encode( - message: GunDefinitionAutoLoader, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { - if (message.base !== undefined) { - GunDefinitionBase.encode(message.base, writer.uint32(10).fork()).join(); - } - if (message.extension !== undefined) { - GunDefinitionAutoLoaderProperties.encode( - message.extension, - writer.uint32(18).fork(), - ).join(); +export const GunDefinitionRegularProperties: MessageFns = { + encode(message: GunDefinitionRegularProperties, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.reload !== 0) { + writer.uint32(13).float(message.reload); } return writer; }, - decode( - input: BinaryReader | Uint8Array, - length?: number, - ): GunDefinitionAutoLoader { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); + decode(input: BinaryReader | Uint8Array, length?: number): GunDefinitionRegularProperties { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGunDefinitionRegularProperties(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 13) { + break; + } + + message.reload = reader.float(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): GunDefinitionRegularProperties { + return { reload: globalThis.Number(assertSet("GunDefinitionRegularProperties.reload", object.reload)) }; + }, + + toJSON(message: GunDefinitionRegularProperties): unknown { + const obj: any = {}; + if (message.reload !== 0) { + obj.reload = message.reload; + } + return obj; + }, + + create, I>>(base?: I): GunDefinitionRegularProperties { + return GunDefinitionRegularProperties.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>( + object: I, + ): GunDefinitionRegularProperties { + const message = createBaseGunDefinitionRegularProperties(); + message.reload = object.reload ?? 0; + return message; + }, +}; + +export function createBaseGunDefinitionAutoLoader(): GunDefinitionAutoLoader { + return { base: createBaseGunDefinitionBase(), extension: createBaseGunDefinitionAutoLoaderProperties() }; +} + +export const GunDefinitionAutoLoader: MessageFns = { + encode(message: GunDefinitionAutoLoader, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.base !== undefined) { + GunDefinitionBase.encode(message.base, writer.uint32(10).fork()).join(); + } + if (message.extension !== undefined) { + GunDefinitionAutoLoaderProperties.encode(message.extension, writer.uint32(18).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): GunDefinitionAutoLoader { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseGunDefinitionAutoLoader(); while (reader.pos < end) { @@ -2884,10 +2519,7 @@ export const GunDefinitionAutoLoader: MessageFns = { break; } - message.extension = GunDefinitionAutoLoaderProperties.decode( - reader, - reader.uint32(), - ); + message.extension = GunDefinitionAutoLoaderProperties.decode(reader, reader.uint32()); continue; } } @@ -2901,11 +2533,9 @@ export const GunDefinitionAutoLoader: MessageFns = { fromJSON(object: any): GunDefinitionAutoLoader { return { - base: GunDefinitionBase.fromJSON( - assertSet('GunDefinitionAutoLoader.base', object.base), - ), + base: GunDefinitionBase.fromJSON(assertSet("GunDefinitionAutoLoader.base", object.base)), extension: GunDefinitionAutoLoaderProperties.fromJSON( - assertSet('GunDefinitionAutoLoader.extension', object.extension), + assertSet("GunDefinitionAutoLoader.extension", object.extension), ), }; }, @@ -2916,393 +2546,315 @@ export const GunDefinitionAutoLoader: MessageFns = { obj.base = GunDefinitionBase.toJSON(message.base); } if (message.extension !== undefined) { - obj.extension = GunDefinitionAutoLoaderProperties.toJSON( - message.extension, - ); + obj.extension = GunDefinitionAutoLoaderProperties.toJSON(message.extension); } return obj; }, - create, I>>( - base?: I, - ): GunDefinitionAutoLoader { + create, I>>(base?: I): GunDefinitionAutoLoader { return GunDefinitionAutoLoader.fromPartial(base ?? ({} as any)); }, - fromPartial, I>>( - object: I, - ): GunDefinitionAutoLoader { + fromPartial, I>>(object: I): GunDefinitionAutoLoader { const message = createBaseGunDefinitionAutoLoader(); - message.base = - object.base !== undefined && object.base !== null - ? GunDefinitionBase.fromPartial(object.base) - : createBaseGunDefinitionBase(); - message.extension = - object.extension !== undefined && object.extension !== null - ? GunDefinitionAutoLoaderProperties.fromPartial(object.extension) - : createBaseGunDefinitionAutoLoaderProperties(); + message.base = (object.base !== undefined && object.base !== null) + ? GunDefinitionBase.fromPartial(object.base) + : createBaseGunDefinitionBase(); + message.extension = (object.extension !== undefined && object.extension !== null) + ? GunDefinitionAutoLoaderProperties.fromPartial(object.extension) + : createBaseGunDefinitionAutoLoaderProperties(); return message; }, }; -function createBaseGunDefinitionAutoLoaderProperties(): GunDefinitionAutoLoaderProperties { +export function createBaseGunDefinitionAutoLoaderProperties(): GunDefinitionAutoLoaderProperties { return { clip_reload: 0, intra_clip: 0, shell_count: 0 }; } -export const GunDefinitionAutoLoaderProperties: MessageFns = - { - encode( - message: GunDefinitionAutoLoaderProperties, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { - if (message.clip_reload !== 0) { - writer.uint32(13).float(message.clip_reload); - } - if (message.intra_clip !== 0) { - writer.uint32(21).float(message.intra_clip); - } - if (message.shell_count !== 0) { - writer.uint32(29).float(message.shell_count); - } - return writer; - }, +export const GunDefinitionAutoLoaderProperties: MessageFns = { + encode(message: GunDefinitionAutoLoaderProperties, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.clip_reload !== 0) { + writer.uint32(13).float(message.clip_reload); + } + if (message.intra_clip !== 0) { + writer.uint32(21).float(message.intra_clip); + } + if (message.shell_count !== 0) { + writer.uint32(29).float(message.shell_count); + } + return writer; + }, - decode( - input: BinaryReader | Uint8Array, - length?: number, - ): GunDefinitionAutoLoaderProperties { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGunDefinitionAutoLoaderProperties(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (tag !== 13) { - break; - } - - message.clip_reload = reader.float(); - continue; + decode(input: BinaryReader | Uint8Array, length?: number): GunDefinitionAutoLoaderProperties { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGunDefinitionAutoLoaderProperties(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 13) { + break; } - case 2: { - if (tag !== 21) { - break; - } - message.intra_clip = reader.float(); - continue; - } - case 3: { - if (tag !== 29) { - break; - } - - message.shell_count = reader.float(); - continue; - } + message.clip_reload = reader.float(); + continue; } - if ((tag & 7) === 4 || tag === 0) { - break; + case 2: { + if (tag !== 21) { + break; + } + + message.intra_clip = reader.float(); + continue; } - reader.skip(tag & 7); - } - return message; - }, + case 3: { + if (tag !== 29) { + break; + } - fromJSON(object: any): GunDefinitionAutoLoaderProperties { - return { - clip_reload: globalThis.Number( - assertSet( - 'GunDefinitionAutoLoaderProperties.clip_reload', - object.clip_reload, - ), - ), - intra_clip: globalThis.Number( - assertSet( - 'GunDefinitionAutoLoaderProperties.intra_clip', - object.intra_clip, - ), - ), - shell_count: globalThis.Number( - assertSet( - 'GunDefinitionAutoLoaderProperties.shell_count', - object.shell_count, - ), - ), - }; - }, - - toJSON(message: GunDefinitionAutoLoaderProperties): unknown { - const obj: any = {}; - if (message.clip_reload !== 0) { - obj.clip_reload = message.clip_reload; + message.shell_count = reader.float(); + continue; + } } - if (message.intra_clip !== 0) { - obj.intra_clip = message.intra_clip; + if ((tag & 7) === 4 || tag === 0) { + break; } - if (message.shell_count !== 0) { - obj.shell_count = message.shell_count; - } - return obj; - }, + reader.skip(tag & 7); + } + return message; + }, - create, I>>( - base?: I, - ): GunDefinitionAutoLoaderProperties { - return GunDefinitionAutoLoaderProperties.fromPartial(base ?? ({} as any)); - }, - fromPartial< - I extends Exact, I>, - >(object: I): GunDefinitionAutoLoaderProperties { - const message = createBaseGunDefinitionAutoLoaderProperties(); - message.clip_reload = object.clip_reload ?? 0; - message.intra_clip = object.intra_clip ?? 0; - message.shell_count = object.shell_count ?? 0; - return message; - }, - }; + fromJSON(object: any): GunDefinitionAutoLoaderProperties { + return { + clip_reload: globalThis.Number(assertSet("GunDefinitionAutoLoaderProperties.clip_reload", object.clip_reload)), + intra_clip: globalThis.Number(assertSet("GunDefinitionAutoLoaderProperties.intra_clip", object.intra_clip)), + shell_count: globalThis.Number(assertSet("GunDefinitionAutoLoaderProperties.shell_count", object.shell_count)), + }; + }, -function createBaseGunDefinitionAutoReloader(): GunDefinitionAutoReloader { - return { - base: createBaseGunDefinitionBase(), - extension: createBaseGunDefinitionAutoReloaderProperties(), - }; + toJSON(message: GunDefinitionAutoLoaderProperties): unknown { + const obj: any = {}; + if (message.clip_reload !== 0) { + obj.clip_reload = message.clip_reload; + } + if (message.intra_clip !== 0) { + obj.intra_clip = message.intra_clip; + } + if (message.shell_count !== 0) { + obj.shell_count = message.shell_count; + } + return obj; + }, + + create, I>>( + base?: I, + ): GunDefinitionAutoLoaderProperties { + return GunDefinitionAutoLoaderProperties.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>( + object: I, + ): GunDefinitionAutoLoaderProperties { + const message = createBaseGunDefinitionAutoLoaderProperties(); + message.clip_reload = object.clip_reload ?? 0; + message.intra_clip = object.intra_clip ?? 0; + message.shell_count = object.shell_count ?? 0; + return message; + }, +}; + +export function createBaseGunDefinitionAutoReloader(): GunDefinitionAutoReloader { + return { base: createBaseGunDefinitionBase(), extension: createBaseGunDefinitionAutoReloaderProperties() }; } -export const GunDefinitionAutoReloader: MessageFns = - { - encode( - message: GunDefinitionAutoReloader, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { - if (message.base !== undefined) { - GunDefinitionBase.encode(message.base, writer.uint32(10).fork()).join(); - } - if (message.extension !== undefined) { - GunDefinitionAutoReloaderProperties.encode( - message.extension, - writer.uint32(18).fork(), - ).join(); - } - return writer; - }, +export const GunDefinitionAutoReloader: MessageFns = { + encode(message: GunDefinitionAutoReloader, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.base !== undefined) { + GunDefinitionBase.encode(message.base, writer.uint32(10).fork()).join(); + } + if (message.extension !== undefined) { + GunDefinitionAutoReloaderProperties.encode(message.extension, writer.uint32(18).fork()).join(); + } + return writer; + }, - decode( - input: BinaryReader | Uint8Array, - length?: number, - ): GunDefinitionAutoReloader { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGunDefinitionAutoReloader(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (tag !== 10) { - break; - } - - message.base = GunDefinitionBase.decode(reader, reader.uint32()); - continue; + decode(input: BinaryReader | Uint8Array, length?: number): GunDefinitionAutoReloader { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGunDefinitionAutoReloader(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; } - case 2: { - if (tag !== 18) { - break; - } - message.extension = GunDefinitionAutoReloaderProperties.decode( - reader, - reader.uint32(), - ); - continue; + message.base = GunDefinitionBase.decode(reader, reader.uint32()); + continue; + } + case 2: { + if (tag !== 18) { + break; } + + message.extension = GunDefinitionAutoReloaderProperties.decode(reader, reader.uint32()); + continue; } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skip(tag & 7); } - return message; - }, - - fromJSON(object: any): GunDefinitionAutoReloader { - return { - base: GunDefinitionBase.fromJSON( - assertSet('GunDefinitionAutoReloader.base', object.base), - ), - extension: GunDefinitionAutoReloaderProperties.fromJSON( - assertSet('GunDefinitionAutoReloader.extension', object.extension), - ), - }; - }, - - toJSON(message: GunDefinitionAutoReloader): unknown { - const obj: any = {}; - if (message.base !== undefined) { - obj.base = GunDefinitionBase.toJSON(message.base); + if ((tag & 7) === 4 || tag === 0) { + break; } - if (message.extension !== undefined) { - obj.extension = GunDefinitionAutoReloaderProperties.toJSON( - message.extension, - ); - } - return obj; - }, + reader.skip(tag & 7); + } + return message; + }, - create, I>>( - base?: I, - ): GunDefinitionAutoReloader { - return GunDefinitionAutoReloader.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>( - object: I, - ): GunDefinitionAutoReloader { - const message = createBaseGunDefinitionAutoReloader(); - message.base = - object.base !== undefined && object.base !== null - ? GunDefinitionBase.fromPartial(object.base) - : createBaseGunDefinitionBase(); - message.extension = - object.extension !== undefined && object.extension !== null - ? GunDefinitionAutoReloaderProperties.fromPartial(object.extension) - : createBaseGunDefinitionAutoReloaderProperties(); - return message; - }, - }; + fromJSON(object: any): GunDefinitionAutoReloader { + return { + base: GunDefinitionBase.fromJSON(assertSet("GunDefinitionAutoReloader.base", object.base)), + extension: GunDefinitionAutoReloaderProperties.fromJSON( + assertSet("GunDefinitionAutoReloader.extension", object.extension), + ), + }; + }, -function createBaseGunDefinitionAutoReloaderProperties(): GunDefinitionAutoReloaderProperties { + toJSON(message: GunDefinitionAutoReloader): unknown { + const obj: any = {}; + if (message.base !== undefined) { + obj.base = GunDefinitionBase.toJSON(message.base); + } + if (message.extension !== undefined) { + obj.extension = GunDefinitionAutoReloaderProperties.toJSON(message.extension); + } + return obj; + }, + + create, I>>(base?: I): GunDefinitionAutoReloader { + return GunDefinitionAutoReloader.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): GunDefinitionAutoReloader { + const message = createBaseGunDefinitionAutoReloader(); + message.base = (object.base !== undefined && object.base !== null) + ? GunDefinitionBase.fromPartial(object.base) + : createBaseGunDefinitionBase(); + message.extension = (object.extension !== undefined && object.extension !== null) + ? GunDefinitionAutoReloaderProperties.fromPartial(object.extension) + : createBaseGunDefinitionAutoReloaderProperties(); + return message; + }, +}; + +export function createBaseGunDefinitionAutoReloaderProperties(): GunDefinitionAutoReloaderProperties { return { shell_reloads: [], intra_clip: 0, shell_count: 0 }; } -export const GunDefinitionAutoReloaderProperties: MessageFns = - { - encode( - message: GunDefinitionAutoReloaderProperties, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { - writer.uint32(10).fork(); - for (const v of message.shell_reloads) { - writer.float(v); - } - writer.join(); - if (message.intra_clip !== 0) { - writer.uint32(21).float(message.intra_clip); - } - if (message.shell_count !== 0) { - writer.uint32(29).float(message.shell_count); - } - return writer; - }, +export const GunDefinitionAutoReloaderProperties: MessageFns = { + encode(message: GunDefinitionAutoReloaderProperties, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + writer.uint32(10).fork(); + for (const v of message.shell_reloads) { + writer.float(v); + } + writer.join(); + if (message.intra_clip !== 0) { + writer.uint32(21).float(message.intra_clip); + } + if (message.shell_count !== 0) { + writer.uint32(29).float(message.shell_count); + } + return writer; + }, - decode( - input: BinaryReader | Uint8Array, - length?: number, - ): GunDefinitionAutoReloaderProperties { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGunDefinitionAutoReloaderProperties(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (tag === 13) { + decode(input: BinaryReader | Uint8Array, length?: number): GunDefinitionAutoReloaderProperties { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGunDefinitionAutoReloaderProperties(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag === 13) { + message.shell_reloads.push(reader.float()); + + continue; + } + + if (tag === 10) { + const end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) { message.shell_reloads.push(reader.float()); - - continue; } - if (tag === 10) { - const end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) { - message.shell_reloads.push(reader.float()); - } - - continue; - } - - break; - } - case 2: { - if (tag !== 21) { - break; - } - - message.intra_clip = reader.float(); continue; } - case 3: { - if (tag !== 29) { - break; - } - message.shell_count = reader.float(); - continue; - } - } - if ((tag & 7) === 4 || tag === 0) { break; } - reader.skip(tag & 7); - } - return message; - }, + case 2: { + if (tag !== 21) { + break; + } - fromJSON(object: any): GunDefinitionAutoReloaderProperties { - return { - shell_reloads: globalThis.Array.isArray(object?.shell_reloads) - ? object.shell_reloads.map((e: any) => globalThis.Number(e)) - : [], - intra_clip: globalThis.Number( - assertSet( - 'GunDefinitionAutoReloaderProperties.intra_clip', - object.intra_clip, - ), - ), - shell_count: globalThis.Number( - assertSet( - 'GunDefinitionAutoReloaderProperties.shell_count', - object.shell_count, - ), - ), - }; - }, + message.intra_clip = reader.float(); + continue; + } + case 3: { + if (tag !== 29) { + break; + } - toJSON(message: GunDefinitionAutoReloaderProperties): unknown { - const obj: any = {}; - if (message.shell_reloads?.length) { - obj.shell_reloads = message.shell_reloads; + message.shell_count = reader.float(); + continue; + } } - if (message.intra_clip !== 0) { - obj.intra_clip = message.intra_clip; + if ((tag & 7) === 4 || tag === 0) { + break; } - if (message.shell_count !== 0) { - obj.shell_count = message.shell_count; - } - return obj; - }, + reader.skip(tag & 7); + } + return message; + }, - create< - I extends Exact, I>, - >(base?: I): GunDefinitionAutoReloaderProperties { - return GunDefinitionAutoReloaderProperties.fromPartial( - base ?? ({} as any), - ); - }, - fromPartial< - I extends Exact, I>, - >(object: I): GunDefinitionAutoReloaderProperties { - const message = createBaseGunDefinitionAutoReloaderProperties(); - message.shell_reloads = object.shell_reloads?.map((e) => e) || []; - message.intra_clip = object.intra_clip ?? 0; - message.shell_count = object.shell_count ?? 0; - return message; - }, - }; + fromJSON(object: any): GunDefinitionAutoReloaderProperties { + return { + shell_reloads: globalThis.Array.isArray(object?.shell_reloads) + ? object.shell_reloads.map((e: any) => globalThis.Number(e)) + : [], + intra_clip: globalThis.Number(assertSet("GunDefinitionAutoReloaderProperties.intra_clip", object.intra_clip)), + shell_count: globalThis.Number(assertSet("GunDefinitionAutoReloaderProperties.shell_count", object.shell_count)), + }; + }, -function createBaseGunDefinitionBase(): GunDefinitionBase { + toJSON(message: GunDefinitionAutoReloaderProperties): unknown { + const obj: any = {}; + if (message.shell_reloads?.length) { + obj.shell_reloads = message.shell_reloads; + } + if (message.intra_clip !== 0) { + obj.intra_clip = message.intra_clip; + } + if (message.shell_count !== 0) { + obj.shell_count = message.shell_count; + } + return obj; + }, + + create, I>>( + base?: I, + ): GunDefinitionAutoReloaderProperties { + return GunDefinitionAutoReloaderProperties.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>( + object: I, + ): GunDefinitionAutoReloaderProperties { + const message = createBaseGunDefinitionAutoReloaderProperties(); + message.shell_reloads = object.shell_reloads?.map((e) => e) || []; + message.intra_clip = object.intra_clip ?? 0; + message.shell_count = object.shell_count ?? 0; + return message; + }, +}; + +export function createBaseGunDefinitionBase(): GunDefinitionBase { return { id: 0, rotation_speed: 0, @@ -3323,10 +2875,7 @@ function createBaseGunDefinitionBase(): GunDefinitionBase { } export const GunDefinitionBase: MessageFns = { - encode( - message: GunDefinitionBase, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { + encode(message: GunDefinitionBase, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.id !== 0) { writer.uint32(8).uint32(message.id); } @@ -3334,10 +2883,7 @@ export const GunDefinitionBase: MessageFns = { writer.uint32(21).float(message.rotation_speed); } if (message.research_cost !== undefined) { - ResearchCost.encode( - message.research_cost, - writer.uint32(26).fork(), - ).join(); + ResearchCost.encode(message.research_cost, writer.uint32(26).fork()).join(); } if (message.weight !== 0) { writer.uint32(32).uint32(message.weight); @@ -3379,8 +2925,7 @@ export const GunDefinitionBase: MessageFns = { }, decode(input: BinaryReader | Uint8Array, length?: number): GunDefinitionBase { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseGunDefinitionBase(); while (reader.pos < end) { @@ -3517,53 +3062,27 @@ export const GunDefinitionBase: MessageFns = { fromJSON(object: any): GunDefinitionBase { return { - id: globalThis.Number(assertSet('GunDefinitionBase.id', object.id)), - rotation_speed: globalThis.Number( - assertSet('GunDefinitionBase.rotation_speed', object.rotation_speed), - ), - research_cost: isSet(object.research_cost) - ? ResearchCost.fromJSON(object.research_cost) - : undefined, - weight: globalThis.Number( - assertSet('GunDefinitionBase.weight', object.weight), - ), - name: I18nString.fromJSON( - assertSet('GunDefinitionBase.name', object.name), - ), - tier: globalThis.Number(assertSet('GunDefinitionBase.tier', object.tier)), + id: globalThis.Number(assertSet("GunDefinitionBase.id", object.id)), + rotation_speed: globalThis.Number(assertSet("GunDefinitionBase.rotation_speed", object.rotation_speed)), + research_cost: isSet(object.research_cost) ? ResearchCost.fromJSON(object.research_cost) : undefined, + weight: globalThis.Number(assertSet("GunDefinitionBase.weight", object.weight)), + name: I18nString.fromJSON(assertSet("GunDefinitionBase.name", object.name)), + tier: globalThis.Number(assertSet("GunDefinitionBase.tier", object.tier)), shells: globalThis.Array.isArray(object?.shells) ? object.shells.map((e: any) => ShellDefinition.fromJSON(e)) : [], - camouflage_loss: globalThis.Number( - assertSet('GunDefinitionBase.camouflage_loss', object.camouflage_loss), - ), - aim_time: globalThis.Number( - assertSet('GunDefinitionBase.aim_time', object.aim_time), - ), - dispersion_base: globalThis.Number( - assertSet('GunDefinitionBase.dispersion_base', object.dispersion_base), - ), + camouflage_loss: globalThis.Number(assertSet("GunDefinitionBase.camouflage_loss", object.camouflage_loss)), + aim_time: globalThis.Number(assertSet("GunDefinitionBase.aim_time", object.aim_time)), + dispersion_base: globalThis.Number(assertSet("GunDefinitionBase.dispersion_base", object.dispersion_base)), dispersion_traverse: globalThis.Number( - assertSet( - 'GunDefinitionBase.dispersion_traverse', - object.dispersion_traverse, - ), - ), - dispersion_shot: globalThis.Number( - assertSet('GunDefinitionBase.dispersion_shot', object.dispersion_shot), + assertSet("GunDefinitionBase.dispersion_traverse", object.dispersion_traverse), ), + dispersion_shot: globalThis.Number(assertSet("GunDefinitionBase.dispersion_shot", object.dispersion_shot)), dispersion_damaged: globalThis.Number( - assertSet( - 'GunDefinitionBase.dispersion_damaged', - object.dispersion_damaged, - ), - ), - unlocks: globalThis.Array.isArray(object?.unlocks) - ? object.unlocks.map((e: any) => Unlock.fromJSON(e)) - : [], - shell_capacity: globalThis.Number( - assertSet('GunDefinitionBase.shell_capacity', object.shell_capacity), + assertSet("GunDefinitionBase.dispersion_damaged", object.dispersion_damaged), ), + unlocks: globalThis.Array.isArray(object?.unlocks) ? object.unlocks.map((e: any) => Unlock.fromJSON(e)) : [], + shell_capacity: globalThis.Number(assertSet("GunDefinitionBase.shell_capacity", object.shell_capacity)), }; }, @@ -3617,29 +3136,22 @@ export const GunDefinitionBase: MessageFns = { return obj; }, - create, I>>( - base?: I, - ): GunDefinitionBase { + create, I>>(base?: I): GunDefinitionBase { return GunDefinitionBase.fromPartial(base ?? ({} as any)); }, - fromPartial, I>>( - object: I, - ): GunDefinitionBase { + fromPartial, I>>(object: I): GunDefinitionBase { const message = createBaseGunDefinitionBase(); message.id = object.id ?? 0; message.rotation_speed = object.rotation_speed ?? 0; - message.research_cost = - object.research_cost !== undefined && object.research_cost !== null - ? ResearchCost.fromPartial(object.research_cost) - : undefined; + message.research_cost = (object.research_cost !== undefined && object.research_cost !== null) + ? ResearchCost.fromPartial(object.research_cost) + : undefined; message.weight = object.weight ?? 0; - message.name = - object.name !== undefined && object.name !== null - ? I18nString.fromPartial(object.name) - : createBaseI18nString(); + message.name = (object.name !== undefined && object.name !== null) + ? I18nString.fromPartial(object.name) + : createBaseI18nString(); message.tier = object.tier ?? 0; - message.shells = - object.shells?.map((e) => ShellDefinition.fromPartial(e)) || []; + message.shells = object.shells?.map((e) => ShellDefinition.fromPartial(e)) || []; message.camouflage_loss = object.camouflage_loss ?? 0; message.aim_time = object.aim_time ?? 0; message.dispersion_base = object.dispersion_base ?? 0; @@ -3652,7 +3164,7 @@ export const GunDefinitionBase: MessageFns = { }, }; -function createBaseShellDefinition(): ShellDefinition { +export function createBaseShellDefinition(): ShellDefinition { return { id: 0, name: createBaseI18nString(), @@ -3660,7 +3172,7 @@ function createBaseShellDefinition(): ShellDefinition { armor_damage: 0, module_damage: 0, caliber: 0, - icon: '', + icon: "", penetration: createBaseShellPenetration(), type: 0, normalization: undefined, @@ -3671,10 +3183,7 @@ function createBaseShellDefinition(): ShellDefinition { } export const ShellDefinition: MessageFns = { - encode( - message: ShellDefinition, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { + encode(message: ShellDefinition, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.id !== 0) { writer.uint32(8).uint32(message.id); } @@ -3693,31 +3202,22 @@ export const ShellDefinition: MessageFns = { if (message.caliber !== 0) { writer.uint32(53).float(message.caliber); } - if (message.icon !== '') { + if (message.icon !== "") { writer.uint32(58).string(message.icon); } if (message.penetration !== undefined) { - ShellPenetration.encode( - message.penetration, - writer.uint32(66).fork(), - ).join(); + ShellPenetration.encode(message.penetration, writer.uint32(66).fork()).join(); } if (message.type !== 0) { writer.uint32(72).int32(message.type); } - if ( - message.normalization !== undefined && - message.normalization !== undefined - ) { + if (message.normalization !== undefined && message.normalization !== undefined) { writer.uint32(85).float(message.normalization); } if (message.ricochet !== undefined && message.ricochet !== undefined) { writer.uint32(93).float(message.ricochet); } - if ( - message.explosion_radius !== undefined && - message.explosion_radius !== undefined - ) { + if (message.explosion_radius !== undefined && message.explosion_radius !== undefined) { writer.uint32(101).float(message.explosion_radius); } if (message.range !== 0) { @@ -3727,8 +3227,7 @@ export const ShellDefinition: MessageFns = { }, decode(input: BinaryReader | Uint8Array, length?: number): ShellDefinition { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseShellDefinition(); while (reader.pos < end) { @@ -3795,10 +3294,7 @@ export const ShellDefinition: MessageFns = { break; } - message.penetration = ShellPenetration.decode( - reader, - reader.uint32(), - ); + message.penetration = ShellPenetration.decode(reader, reader.uint32()); continue; } case 9: { @@ -3852,37 +3348,19 @@ export const ShellDefinition: MessageFns = { fromJSON(object: any): ShellDefinition { return { - id: globalThis.Number(assertSet('ShellDefinition.id', object.id)), - name: I18nString.fromJSON(assertSet('ShellDefinition.name', object.name)), - velocity: globalThis.Number( - assertSet('ShellDefinition.velocity', object.velocity), - ), - armor_damage: globalThis.Number( - assertSet('ShellDefinition.armor_damage', object.armor_damage), - ), - module_damage: globalThis.Number( - assertSet('ShellDefinition.module_damage', object.module_damage), - ), - caliber: globalThis.Number( - assertSet('ShellDefinition.caliber', object.caliber), - ), - icon: globalThis.String(assertSet('ShellDefinition.icon', object.icon)), - penetration: ShellPenetration.fromJSON( - assertSet('ShellDefinition.penetration', object.penetration), - ), - type: shellTypeFromJSON(assertSet('ShellDefinition.type', object.type)), - normalization: isSet(object.normalization) - ? globalThis.Number(object.normalization) - : undefined, - ricochet: isSet(object.ricochet) - ? globalThis.Number(object.ricochet) - : undefined, - explosion_radius: isSet(object.explosion_radius) - ? globalThis.Number(object.explosion_radius) - : undefined, - range: globalThis.Number( - assertSet('ShellDefinition.range', object.range), - ), + id: globalThis.Number(assertSet("ShellDefinition.id", object.id)), + name: I18nString.fromJSON(assertSet("ShellDefinition.name", object.name)), + velocity: globalThis.Number(assertSet("ShellDefinition.velocity", object.velocity)), + armor_damage: globalThis.Number(assertSet("ShellDefinition.armor_damage", object.armor_damage)), + module_damage: globalThis.Number(assertSet("ShellDefinition.module_damage", object.module_damage)), + caliber: globalThis.Number(assertSet("ShellDefinition.caliber", object.caliber)), + icon: globalThis.String(assertSet("ShellDefinition.icon", object.icon)), + penetration: ShellPenetration.fromJSON(assertSet("ShellDefinition.penetration", object.penetration)), + type: shellTypeFromJSON(assertSet("ShellDefinition.type", object.type)), + normalization: isSet(object.normalization) ? globalThis.Number(object.normalization) : undefined, + ricochet: isSet(object.ricochet) ? globalThis.Number(object.ricochet) : undefined, + explosion_radius: isSet(object.explosion_radius) ? globalThis.Number(object.explosion_radius) : undefined, + range: globalThis.Number(assertSet("ShellDefinition.range", object.range)), }; }, @@ -3906,7 +3384,7 @@ export const ShellDefinition: MessageFns = { if (message.caliber !== 0) { obj.caliber = message.caliber; } - if (message.icon !== '') { + if (message.icon !== "") { obj.icon = message.icon; } if (message.penetration !== undefined) { @@ -3915,19 +3393,13 @@ export const ShellDefinition: MessageFns = { if (message.type !== 0) { obj.type = shellTypeToJSON(message.type); } - if ( - message.normalization !== undefined && - message.normalization !== undefined - ) { + if (message.normalization !== undefined && message.normalization !== undefined) { obj.normalization = message.normalization; } if (message.ricochet !== undefined && message.ricochet !== undefined) { obj.ricochet = message.ricochet; } - if ( - message.explosion_radius !== undefined && - message.explosion_radius !== undefined - ) { + if (message.explosion_radius !== undefined && message.explosion_radius !== undefined) { obj.explosion_radius = message.explosion_radius; } if (message.range !== 0) { @@ -3936,29 +3408,23 @@ export const ShellDefinition: MessageFns = { return obj; }, - create, I>>( - base?: I, - ): ShellDefinition { + create, I>>(base?: I): ShellDefinition { return ShellDefinition.fromPartial(base ?? ({} as any)); }, - fromPartial, I>>( - object: I, - ): ShellDefinition { + fromPartial, I>>(object: I): ShellDefinition { const message = createBaseShellDefinition(); message.id = object.id ?? 0; - message.name = - object.name !== undefined && object.name !== null - ? I18nString.fromPartial(object.name) - : createBaseI18nString(); + message.name = (object.name !== undefined && object.name !== null) + ? I18nString.fromPartial(object.name) + : createBaseI18nString(); message.velocity = object.velocity ?? 0; message.armor_damage = object.armor_damage ?? 0; message.module_damage = object.module_damage ?? 0; message.caliber = object.caliber ?? 0; - message.icon = object.icon ?? ''; - message.penetration = - object.penetration !== undefined && object.penetration !== null - ? ShellPenetration.fromPartial(object.penetration) - : createBaseShellPenetration(); + message.icon = object.icon ?? ""; + message.penetration = (object.penetration !== undefined && object.penetration !== null) + ? ShellPenetration.fromPartial(object.penetration) + : createBaseShellPenetration(); message.type = object.type ?? 0; message.normalization = object.normalization ?? undefined; message.ricochet = object.ricochet ?? undefined; @@ -3968,15 +3434,12 @@ export const ShellDefinition: MessageFns = { }, }; -function createBaseShellPenetration(): ShellPenetration { +export function createBaseShellPenetration(): ShellPenetration { return { near: 0, far: 0 }; } export const ShellPenetration: MessageFns = { - encode( - message: ShellPenetration, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { + encode(message: ShellPenetration, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.near !== 0) { writer.uint32(13).float(message.near); } @@ -3987,8 +3450,7 @@ export const ShellPenetration: MessageFns = { }, decode(input: BinaryReader | Uint8Array, length?: number): ShellPenetration { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseShellPenetration(); while (reader.pos < end) { @@ -4021,8 +3483,8 @@ export const ShellPenetration: MessageFns = { fromJSON(object: any): ShellPenetration { return { - near: globalThis.Number(assertSet('ShellPenetration.near', object.near)), - far: globalThis.Number(assertSet('ShellPenetration.far', object.far)), + near: globalThis.Number(assertSet("ShellPenetration.near", object.near)), + far: globalThis.Number(assertSet("ShellPenetration.far", object.far)), }; }, @@ -4037,14 +3499,10 @@ export const ShellPenetration: MessageFns = { return obj; }, - create, I>>( - base?: I, - ): ShellPenetration { + create, I>>(base?: I): ShellPenetration { return ShellPenetration.fromPartial(base ?? ({} as any)); }, - fromPartial, I>>( - object: I, - ): ShellPenetration { + fromPartial, I>>(object: I): ShellPenetration { const message = createBaseShellPenetration(); message.near = object.near ?? 0; message.far = object.far ?? 0; @@ -4052,15 +3510,12 @@ export const ShellPenetration: MessageFns = { }, }; -function createBaseUnlock(): Unlock { +export function createBaseUnlock(): Unlock { return { id: 0, type: 0, cost: createBaseUnlockCost() }; } export const Unlock: MessageFns = { - encode( - message: Unlock, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { + encode(message: Unlock, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.id !== 0) { writer.uint32(8).int32(message.id); } @@ -4074,8 +3529,7 @@ export const Unlock: MessageFns = { }, decode(input: BinaryReader | Uint8Array, length?: number): Unlock { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseUnlock(); while (reader.pos < end) { @@ -4116,9 +3570,9 @@ export const Unlock: MessageFns = { fromJSON(object: any): Unlock { return { - id: globalThis.Number(assertSet('Unlock.id', object.id)), - type: moduleTypeFromJSON(assertSet('Unlock.type', object.type)), - cost: UnlockCost.fromJSON(assertSet('Unlock.cost', object.cost)), + id: globalThis.Number(assertSet("Unlock.id", object.id)), + type: moduleTypeFromJSON(assertSet("Unlock.type", object.type)), + cost: UnlockCost.fromJSON(assertSet("Unlock.cost", object.cost)), }; }, @@ -4143,24 +3597,20 @@ export const Unlock: MessageFns = { const message = createBaseUnlock(); message.id = object.id ?? 0; message.type = object.type ?? 0; - message.cost = - object.cost !== undefined && object.cost !== null - ? UnlockCost.fromPartial(object.cost) - : createBaseUnlockCost(); + message.cost = (object.cost !== undefined && object.cost !== null) + ? UnlockCost.fromPartial(object.cost) + : createBaseUnlockCost(); return message; }, }; -function createBaseUnlockCost(): UnlockCost { - return { type: '', value: 0 }; +export function createBaseUnlockCost(): UnlockCost { + return { type: "", value: 0 }; } export const UnlockCost: MessageFns = { - encode( - message: UnlockCost, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { - if (message.type !== '') { + encode(message: UnlockCost, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.type !== "") { writer.uint32(10).string(message.type); } if (message.value !== 0) { @@ -4170,8 +3620,7 @@ export const UnlockCost: MessageFns = { }, decode(input: BinaryReader | Uint8Array, length?: number): UnlockCost { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseUnlockCost(); while (reader.pos < end) { @@ -4204,14 +3653,14 @@ export const UnlockCost: MessageFns = { fromJSON(object: any): UnlockCost { return { - type: globalThis.String(assertSet('UnlockCost.type', object.type)), - value: globalThis.Number(assertSet('UnlockCost.value', object.value)), + type: globalThis.String(assertSet("UnlockCost.type", object.type)), + value: globalThis.Number(assertSet("UnlockCost.value", object.value)), }; }, toJSON(message: UnlockCost): unknown { const obj: any = {}; - if (message.type !== '') { + if (message.type !== "") { obj.type = message.type; } if (message.value !== 0) { @@ -4223,25 +3672,20 @@ export const UnlockCost: MessageFns = { create, I>>(base?: I): UnlockCost { return UnlockCost.fromPartial(base ?? ({} as any)); }, - fromPartial, I>>( - object: I, - ): UnlockCost { + fromPartial, I>>(object: I): UnlockCost { const message = createBaseUnlockCost(); - message.type = object.type ?? ''; + message.type = object.type ?? ""; message.value = object.value ?? 0; return message; }, }; -function createBaseCrew(): Crew { +export function createBaseCrew(): Crew { return { type: 0, count: 0, substitute: [] }; } export const Crew: MessageFns = { - encode( - message: Crew, - writer: BinaryWriter = new BinaryWriter(), - ): BinaryWriter { + encode(message: Crew, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.type !== 0) { writer.uint32(8).int32(message.type); } @@ -4257,8 +3701,7 @@ export const Crew: MessageFns = { }, decode(input: BinaryReader | Uint8Array, length?: number): Crew { - const reader = - input instanceof BinaryReader ? input : new BinaryReader(input); + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseCrew(); while (reader.pos < end) { @@ -4309,8 +3752,8 @@ export const Crew: MessageFns = { fromJSON(object: any): Crew { return { - type: crewTypeFromJSON(assertSet('Crew.type', object.type)), - count: globalThis.Number(assertSet('Crew.count', object.count)), + type: crewTypeFromJSON(assertSet("Crew.type", object.type)), + count: globalThis.Number(assertSet("Crew.count", object.count)), substitute: globalThis.Array.isArray(object?.substitute) ? object.substitute.map((e: any) => crewTypeFromJSON(e)) : [], @@ -4343,36 +3786,21 @@ export const Crew: MessageFns = { }, }; -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 {