diff --git a/.gitignore b/.gitignore index 8001e0ea2..7f6d29158 100644 --- a/.gitignore +++ b/.gitignore @@ -22,5 +22,5 @@ depots public/sitemap* /firebase.json target -packages/core/src/protos/* -!packages/core/src/protos/*.proto +# packages/core/src/protos/* +# !packages/core/src/protos/*.proto diff --git a/package.json b/package.json index 714e24dd2..c42e5b359 100644 --- a/package.json +++ b/package.json @@ -9,11 +9,10 @@ "packages/*" ], "scripts": { - "installclis": "apt install -y protobuf-compiler", "build:assets": "bun --filter=@blitzkit/scripts run build:assets", "build:averages": "bun --filter=@blitzkit/scripts run build:averages", "build:bot": "rm -rf dist/bot && mkdir -p dist/bot/prisma && bun build src/index.ts src/workers/bot.ts src/workers/render.ts --outdir dist/bot --target=bun --splitting --sourcemap=inline --external sharp && cp -R src/lang dist/bot/lang && prisma generate && cp prisma/schema.prisma dist/bot/prisma/schema.prisma && cp -R node_modules/prisma/*.node dist/bot/prisma && cd dist/bot && bun init -y && bun add sharp", - "build:website": "prisma generate && bun build:protos && cd packages/website && bun run build && cd ../..", + "build:website": "prisma generate && cd packages/website && bun run build && cd ../..", "build:sitemap": "bun scripts/sitemap.ts", "build:docs": "vitepress build docs", "build:ratingleaderboard": "bun --script scripts/buildRatingLeaderboard.ts", diff --git a/packages/core/src/protos/average_definitions.ts b/packages/core/src/protos/average_definitions.ts new file mode 100644 index 000000000..507678f6d --- /dev/null +++ b/packages/core/src/protos/average_definitions.ts @@ -0,0 +1,944 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v2.2.2 +// protoc v5.28.2 +// source: packages/core/src/protos/average_definitions.proto + +/* eslint-disable */ +import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; + +export const protobufPackage = "blitzkit"; + +export interface AverageDefinitions { + averages: { [key: number]: AverageDefinitionsEntry }; + samples: Samples; + time: number; +} + +export interface AverageDefinitions_AveragesEntry { + key: number; + value: AverageDefinitionsEntry | undefined; +} + +export interface AverageDefinitionsEntry { + mu: AverageDefinitionsAllStats; + sigma: AverageDefinitionsAllStats; + r: AverageDefinitionsAllStats; + samples: Samples; +} + +export interface AverageDefinitionsAllStats { + battles: number; + capture_points: number; + damage_dealt: number; + damage_received: number; + dropped_capture_points: number; + frags: number; + frags8p: number; + hits: number; + losses: number; + max_frags: number; + max_xp: number; + shots: number; + spotted: number; + survived_battles: number; + win_and_survived: number; + wins: number; + xp: number; + battle_life_time: number; +} + +export interface Samples { + d_1: number; + d_7: number; + d_30: number; + d_60: number; + d_90: number; + d_120: number; + total: number; +} + +function createBaseAverageDefinitions(): AverageDefinitions { + return { averages: {}, samples: createBaseSamples(), time: 0 }; +} + +export const AverageDefinitions: MessageFns = { + encode(message: AverageDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + Object.entries(message.averages).forEach(([key, value]) => { + AverageDefinitions_AveragesEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join(); + }); + if (message.samples !== undefined) { + Samples.encode(message.samples, writer.uint32(18).fork()).join(); + } + if (message.time !== 0) { + writer.uint32(24).uint64(message.time); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): AverageDefinitions { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseAverageDefinitions(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + const entry1 = AverageDefinitions_AveragesEntry.decode(reader, reader.uint32()); + if (entry1.value !== undefined) { + message.averages[entry1.key] = entry1.value; + } + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.samples = Samples.decode(reader, reader.uint32()); + continue; + } + case 3: { + if (tag !== 24) { + break; + } + + message.time = longToNumber(reader.uint64()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): AverageDefinitions { + return { + averages: isObject(object.averages) + ? Object.entries(object.averages).reduce<{ [key: number]: AverageDefinitionsEntry }>((acc, [key, value]) => { + acc[globalThis.Number(key)] = AverageDefinitionsEntry.fromJSON(value); + return acc; + }, {}) + : {}, + samples: Samples.fromJSON(assertSet("AverageDefinitions.samples", object.samples)), + time: globalThis.Number(assertSet("AverageDefinitions.time", object.time)), + }; + }, + + toJSON(message: AverageDefinitions): unknown { + const obj: any = {}; + if (message.averages) { + const entries = Object.entries(message.averages); + if (entries.length > 0) { + obj.averages = {}; + entries.forEach(([k, v]) => { + obj.averages[k] = AverageDefinitionsEntry.toJSON(v); + }); + } + } + if (message.samples !== undefined) { + obj.samples = Samples.toJSON(message.samples); + } + if (message.time !== 0) { + obj.time = Math.round(message.time); + } + return obj; + }, + + create, I>>(base?: I): AverageDefinitions { + return AverageDefinitions.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): AverageDefinitions { + const message = createBaseAverageDefinitions(); + message.averages = Object.entries(object.averages ?? {}).reduce<{ [key: number]: AverageDefinitionsEntry }>( + (acc, [key, value]) => { + if (value !== undefined) { + acc[globalThis.Number(key)] = AverageDefinitionsEntry.fromPartial(value); + } + return acc; + }, + {}, + ); + message.samples = (object.samples !== undefined && object.samples !== null) + ? Samples.fromPartial(object.samples) + : createBaseSamples(); + message.time = object.time ?? 0; + return message; + }, +}; + +function createBaseAverageDefinitions_AveragesEntry(): AverageDefinitions_AveragesEntry { + return { key: 0, value: createBaseAverageDefinitionsEntry() }; +} + +export const AverageDefinitions_AveragesEntry: MessageFns = { + encode(message: AverageDefinitions_AveragesEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.key !== undefined) { + writer.uint32(8).uint32(message.key); + } + if (message.value !== undefined) { + AverageDefinitionsEntry.encode(message.value, writer.uint32(18).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): AverageDefinitions_AveragesEntry { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseAverageDefinitions_AveragesEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + + message.key = reader.uint32(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.value = AverageDefinitionsEntry.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): AverageDefinitions_AveragesEntry { + return { + key: globalThis.Number(assertSet("AverageDefinitions_AveragesEntry.key", object.key)), + value: AverageDefinitionsEntry.fromJSON(assertSet("AverageDefinitions_AveragesEntry.value", object.value)), + }; + }, + + toJSON(message: AverageDefinitions_AveragesEntry): unknown { + const obj: any = {}; + if (message.key !== undefined) { + obj.key = Math.round(message.key); + } + if (message.value !== undefined) { + obj.value = AverageDefinitionsEntry.toJSON(message.value); + } + return obj; + }, + + create, I>>( + base?: I, + ): AverageDefinitions_AveragesEntry { + return AverageDefinitions_AveragesEntry.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>( + object: I, + ): AverageDefinitions_AveragesEntry { + const message = createBaseAverageDefinitions_AveragesEntry(); + message.key = object.key ?? 0; + message.value = (object.value !== undefined && object.value !== null) + ? AverageDefinitionsEntry.fromPartial(object.value) + : undefined; + return message; + }, +}; + +function createBaseAverageDefinitionsEntry(): AverageDefinitionsEntry { + return { + mu: createBaseAverageDefinitionsAllStats(), + sigma: createBaseAverageDefinitionsAllStats(), + r: createBaseAverageDefinitionsAllStats(), + samples: createBaseSamples(), + }; +} + +export const AverageDefinitionsEntry: MessageFns = { + encode(message: AverageDefinitionsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.mu !== undefined) { + AverageDefinitionsAllStats.encode(message.mu, writer.uint32(10).fork()).join(); + } + if (message.sigma !== undefined) { + AverageDefinitionsAllStats.encode(message.sigma, writer.uint32(18).fork()).join(); + } + if (message.r !== undefined) { + AverageDefinitionsAllStats.encode(message.r, writer.uint32(26).fork()).join(); + } + if (message.samples !== undefined) { + Samples.encode(message.samples, writer.uint32(34).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): AverageDefinitionsEntry { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseAverageDefinitionsEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + message.mu = AverageDefinitionsAllStats.decode(reader, reader.uint32()); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.sigma = AverageDefinitionsAllStats.decode(reader, reader.uint32()); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + + message.r = AverageDefinitionsAllStats.decode(reader, reader.uint32()); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + + message.samples = Samples.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): AverageDefinitionsEntry { + return { + mu: AverageDefinitionsAllStats.fromJSON(assertSet("AverageDefinitionsEntry.mu", object.mu)), + sigma: AverageDefinitionsAllStats.fromJSON(assertSet("AverageDefinitionsEntry.sigma", object.sigma)), + r: AverageDefinitionsAllStats.fromJSON(assertSet("AverageDefinitionsEntry.r", object.r)), + samples: Samples.fromJSON(assertSet("AverageDefinitionsEntry.samples", object.samples)), + }; + }, + + toJSON(message: AverageDefinitionsEntry): unknown { + const obj: any = {}; + if (message.mu !== undefined) { + obj.mu = AverageDefinitionsAllStats.toJSON(message.mu); + } + if (message.sigma !== undefined) { + obj.sigma = AverageDefinitionsAllStats.toJSON(message.sigma); + } + if (message.r !== undefined) { + obj.r = AverageDefinitionsAllStats.toJSON(message.r); + } + if (message.samples !== undefined) { + obj.samples = Samples.toJSON(message.samples); + } + return obj; + }, + + create, I>>(base?: I): AverageDefinitionsEntry { + return AverageDefinitionsEntry.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): AverageDefinitionsEntry { + const message = createBaseAverageDefinitionsEntry(); + message.mu = (object.mu !== undefined && object.mu !== null) + ? AverageDefinitionsAllStats.fromPartial(object.mu) + : createBaseAverageDefinitionsAllStats(); + message.sigma = (object.sigma !== undefined && object.sigma !== null) + ? AverageDefinitionsAllStats.fromPartial(object.sigma) + : createBaseAverageDefinitionsAllStats(); + message.r = (object.r !== undefined && object.r !== null) + ? AverageDefinitionsAllStats.fromPartial(object.r) + : createBaseAverageDefinitionsAllStats(); + message.samples = (object.samples !== undefined && object.samples !== null) + ? Samples.fromPartial(object.samples) + : createBaseSamples(); + return message; + }, +}; + +function createBaseAverageDefinitionsAllStats(): AverageDefinitionsAllStats { + return { + battles: 0, + capture_points: 0, + damage_dealt: 0, + damage_received: 0, + dropped_capture_points: 0, + frags: 0, + frags8p: 0, + hits: 0, + losses: 0, + max_frags: 0, + max_xp: 0, + shots: 0, + spotted: 0, + survived_battles: 0, + win_and_survived: 0, + wins: 0, + xp: 0, + battle_life_time: 0, + }; +} + +export const AverageDefinitionsAllStats: MessageFns = { + encode(message: AverageDefinitionsAllStats, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.battles !== 0) { + writer.uint32(13).float(message.battles); + } + if (message.capture_points !== 0) { + writer.uint32(21).float(message.capture_points); + } + if (message.damage_dealt !== 0) { + writer.uint32(29).float(message.damage_dealt); + } + if (message.damage_received !== 0) { + writer.uint32(37).float(message.damage_received); + } + if (message.dropped_capture_points !== 0) { + writer.uint32(45).float(message.dropped_capture_points); + } + if (message.frags !== 0) { + writer.uint32(53).float(message.frags); + } + if (message.frags8p !== 0) { + writer.uint32(61).float(message.frags8p); + } + if (message.hits !== 0) { + writer.uint32(69).float(message.hits); + } + if (message.losses !== 0) { + writer.uint32(77).float(message.losses); + } + if (message.max_frags !== 0) { + writer.uint32(85).float(message.max_frags); + } + if (message.max_xp !== 0) { + writer.uint32(93).float(message.max_xp); + } + if (message.shots !== 0) { + writer.uint32(101).float(message.shots); + } + if (message.spotted !== 0) { + writer.uint32(109).float(message.spotted); + } + if (message.survived_battles !== 0) { + writer.uint32(117).float(message.survived_battles); + } + if (message.win_and_survived !== 0) { + writer.uint32(125).float(message.win_and_survived); + } + if (message.wins !== 0) { + writer.uint32(133).float(message.wins); + } + if (message.xp !== 0) { + writer.uint32(141).float(message.xp); + } + if (message.battle_life_time !== 0) { + writer.uint32(149).float(message.battle_life_time); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): AverageDefinitionsAllStats { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseAverageDefinitionsAllStats(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 13) { + break; + } + + message.battles = reader.float(); + continue; + } + case 2: { + if (tag !== 21) { + break; + } + + message.capture_points = reader.float(); + continue; + } + case 3: { + if (tag !== 29) { + break; + } + + message.damage_dealt = reader.float(); + continue; + } + case 4: { + if (tag !== 37) { + break; + } + + message.damage_received = reader.float(); + continue; + } + case 5: { + if (tag !== 45) { + break; + } + + message.dropped_capture_points = reader.float(); + continue; + } + case 6: { + if (tag !== 53) { + break; + } + + message.frags = reader.float(); + continue; + } + case 7: { + if (tag !== 61) { + break; + } + + message.frags8p = reader.float(); + continue; + } + case 8: { + if (tag !== 69) { + break; + } + + message.hits = reader.float(); + continue; + } + case 9: { + if (tag !== 77) { + break; + } + + message.losses = reader.float(); + continue; + } + case 10: { + if (tag !== 85) { + break; + } + + message.max_frags = reader.float(); + continue; + } + case 11: { + if (tag !== 93) { + break; + } + + message.max_xp = reader.float(); + continue; + } + case 12: { + if (tag !== 101) { + break; + } + + message.shots = reader.float(); + continue; + } + case 13: { + if (tag !== 109) { + break; + } + + message.spotted = reader.float(); + continue; + } + case 14: { + if (tag !== 117) { + break; + } + + message.survived_battles = reader.float(); + continue; + } + case 15: { + if (tag !== 125) { + break; + } + + message.win_and_survived = reader.float(); + continue; + } + case 16: { + if (tag !== 133) { + break; + } + + message.wins = reader.float(); + continue; + } + case 17: { + if (tag !== 141) { + break; + } + + message.xp = reader.float(); + continue; + } + case 18: { + if (tag !== 149) { + break; + } + + message.battle_life_time = reader.float(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): AverageDefinitionsAllStats { + return { + battles: globalThis.Number(assertSet("AverageDefinitionsAllStats.battles", object.battles)), + capture_points: globalThis.Number(assertSet("AverageDefinitionsAllStats.capture_points", object.capture_points)), + damage_dealt: globalThis.Number(assertSet("AverageDefinitionsAllStats.damage_dealt", object.damage_dealt)), + damage_received: globalThis.Number( + assertSet("AverageDefinitionsAllStats.damage_received", object.damage_received), + ), + dropped_capture_points: globalThis.Number( + assertSet("AverageDefinitionsAllStats.dropped_capture_points", object.dropped_capture_points), + ), + frags: globalThis.Number(assertSet("AverageDefinitionsAllStats.frags", object.frags)), + frags8p: globalThis.Number(assertSet("AverageDefinitionsAllStats.frags8p", object.frags8p)), + hits: globalThis.Number(assertSet("AverageDefinitionsAllStats.hits", object.hits)), + losses: globalThis.Number(assertSet("AverageDefinitionsAllStats.losses", object.losses)), + max_frags: globalThis.Number(assertSet("AverageDefinitionsAllStats.max_frags", object.max_frags)), + max_xp: globalThis.Number(assertSet("AverageDefinitionsAllStats.max_xp", object.max_xp)), + shots: globalThis.Number(assertSet("AverageDefinitionsAllStats.shots", object.shots)), + spotted: globalThis.Number(assertSet("AverageDefinitionsAllStats.spotted", object.spotted)), + survived_battles: globalThis.Number( + assertSet("AverageDefinitionsAllStats.survived_battles", object.survived_battles), + ), + win_and_survived: globalThis.Number( + assertSet("AverageDefinitionsAllStats.win_and_survived", object.win_and_survived), + ), + wins: globalThis.Number(assertSet("AverageDefinitionsAllStats.wins", object.wins)), + xp: globalThis.Number(assertSet("AverageDefinitionsAllStats.xp", object.xp)), + battle_life_time: globalThis.Number( + assertSet("AverageDefinitionsAllStats.battle_life_time", object.battle_life_time), + ), + }; + }, + + toJSON(message: AverageDefinitionsAllStats): unknown { + const obj: any = {}; + if (message.battles !== 0) { + obj.battles = message.battles; + } + if (message.capture_points !== 0) { + obj.capture_points = message.capture_points; + } + if (message.damage_dealt !== 0) { + obj.damage_dealt = message.damage_dealt; + } + if (message.damage_received !== 0) { + obj.damage_received = message.damage_received; + } + if (message.dropped_capture_points !== 0) { + obj.dropped_capture_points = message.dropped_capture_points; + } + if (message.frags !== 0) { + obj.frags = message.frags; + } + if (message.frags8p !== 0) { + obj.frags8p = message.frags8p; + } + if (message.hits !== 0) { + obj.hits = message.hits; + } + if (message.losses !== 0) { + obj.losses = message.losses; + } + if (message.max_frags !== 0) { + obj.max_frags = message.max_frags; + } + if (message.max_xp !== 0) { + obj.max_xp = message.max_xp; + } + if (message.shots !== 0) { + obj.shots = message.shots; + } + if (message.spotted !== 0) { + obj.spotted = message.spotted; + } + if (message.survived_battles !== 0) { + obj.survived_battles = message.survived_battles; + } + if (message.win_and_survived !== 0) { + obj.win_and_survived = message.win_and_survived; + } + if (message.wins !== 0) { + obj.wins = message.wins; + } + if (message.xp !== 0) { + obj.xp = message.xp; + } + if (message.battle_life_time !== 0) { + obj.battle_life_time = message.battle_life_time; + } + return obj; + }, + + create, I>>(base?: I): AverageDefinitionsAllStats { + return AverageDefinitionsAllStats.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): AverageDefinitionsAllStats { + const message = createBaseAverageDefinitionsAllStats(); + message.battles = object.battles ?? 0; + message.capture_points = object.capture_points ?? 0; + message.damage_dealt = object.damage_dealt ?? 0; + message.damage_received = object.damage_received ?? 0; + message.dropped_capture_points = object.dropped_capture_points ?? 0; + message.frags = object.frags ?? 0; + message.frags8p = object.frags8p ?? 0; + message.hits = object.hits ?? 0; + message.losses = object.losses ?? 0; + message.max_frags = object.max_frags ?? 0; + message.max_xp = object.max_xp ?? 0; + message.shots = object.shots ?? 0; + message.spotted = object.spotted ?? 0; + message.survived_battles = object.survived_battles ?? 0; + message.win_and_survived = object.win_and_survived ?? 0; + message.wins = object.wins ?? 0; + message.xp = object.xp ?? 0; + message.battle_life_time = object.battle_life_time ?? 0; + return message; + }, +}; + +function createBaseSamples(): Samples { + return { d_1: 0, d_7: 0, d_30: 0, d_60: 0, d_90: 0, d_120: 0, total: 0 }; +} + +export const Samples: MessageFns = { + encode(message: Samples, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.d_1 !== 0) { + writer.uint32(8).uint32(message.d_1); + } + if (message.d_7 !== 0) { + writer.uint32(16).uint32(message.d_7); + } + if (message.d_30 !== 0) { + writer.uint32(24).uint32(message.d_30); + } + if (message.d_60 !== 0) { + writer.uint32(32).uint32(message.d_60); + } + if (message.d_90 !== 0) { + writer.uint32(40).uint32(message.d_90); + } + if (message.d_120 !== 0) { + writer.uint32(48).uint32(message.d_120); + } + if (message.total !== 0) { + writer.uint32(56).uint32(message.total); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): Samples { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseSamples(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + + message.d_1 = reader.uint32(); + continue; + } + case 2: { + if (tag !== 16) { + break; + } + + message.d_7 = reader.uint32(); + continue; + } + case 3: { + if (tag !== 24) { + break; + } + + message.d_30 = reader.uint32(); + continue; + } + case 4: { + if (tag !== 32) { + break; + } + + message.d_60 = reader.uint32(); + continue; + } + case 5: { + if (tag !== 40) { + break; + } + + message.d_90 = reader.uint32(); + continue; + } + case 6: { + if (tag !== 48) { + break; + } + + message.d_120 = reader.uint32(); + continue; + } + case 7: { + if (tag !== 56) { + break; + } + + message.total = reader.uint32(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): Samples { + return { + d_1: globalThis.Number(assertSet("Samples.d_1", object.d_1)), + d_7: globalThis.Number(assertSet("Samples.d_7", object.d_7)), + d_30: globalThis.Number(assertSet("Samples.d_30", object.d_30)), + d_60: globalThis.Number(assertSet("Samples.d_60", object.d_60)), + d_90: globalThis.Number(assertSet("Samples.d_90", object.d_90)), + d_120: globalThis.Number(assertSet("Samples.d_120", object.d_120)), + total: globalThis.Number(assertSet("Samples.total", object.total)), + }; + }, + + toJSON(message: Samples): unknown { + const obj: any = {}; + if (message.d_1 !== 0) { + obj.d_1 = Math.round(message.d_1); + } + if (message.d_7 !== 0) { + obj.d_7 = Math.round(message.d_7); + } + if (message.d_30 !== 0) { + obj.d_30 = Math.round(message.d_30); + } + if (message.d_60 !== 0) { + obj.d_60 = Math.round(message.d_60); + } + if (message.d_90 !== 0) { + obj.d_90 = Math.round(message.d_90); + } + if (message.d_120 !== 0) { + obj.d_120 = Math.round(message.d_120); + } + if (message.total !== 0) { + obj.total = Math.round(message.total); + } + return obj; + }, + + create, I>>(base?: I): Samples { + return Samples.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): Samples { + const message = createBaseSamples(); + message.d_1 = object.d_1 ?? 0; + message.d_7 = object.d_7 ?? 0; + message.d_30 = object.d_30 ?? 0; + message.d_60 = object.d_60 ?? 0; + message.d_90 = object.d_90 ?? 0; + message.d_120 = object.d_120 ?? 0; + message.total = object.total ?? 0; + return message; + }, +}; + +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; + +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 }; + +function longToNumber(int64: { toString(): string }): number { + const num = globalThis.Number(int64.toString()); + if (num > globalThis.Number.MAX_SAFE_INTEGER) { + throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); + } + if (num < globalThis.Number.MIN_SAFE_INTEGER) { + throw new globalThis.Error("Value is smaller than Number.MIN_SAFE_INTEGER"); + } + return num; +} + +function isObject(value: any): boolean { + return typeof value === "object" && value !== null; +} + +function isSet(value: any): boolean { + return value !== null && value !== undefined; +} + +function assertSet(field: string, value: T | undefined): T { + if (!isSet(value)) { + throw new TypeError(`Required field ${field} is not set`); + } + + return value as T; +} + +export interface MessageFns { + encode(message: T, writer?: BinaryWriter): BinaryWriter; + decode(input: BinaryReader | Uint8Array, length?: number): T; + fromJSON(object: any): T; + toJSON(message: T): unknown; + create, I>>(base?: I): T; + fromPartial, I>>(object: I): T; +} diff --git a/packages/core/src/protos/camouflage_definitions.ts b/packages/core/src/protos/camouflage_definitions.ts new file mode 100644 index 000000000..1399490b5 --- /dev/null +++ b/packages/core/src/protos/camouflage_definitions.ts @@ -0,0 +1,336 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v2.2.2 +// protoc v5.28.2 +// source: packages/core/src/protos/camouflage_definitions.proto + +/* eslint-disable */ +import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; + +export const protobufPackage = "blitzkit"; + +export interface CamouflageDefinitions { + camouflages: { [key: number]: Camouflage }; +} + +export interface CamouflageDefinitions_CamouflagesEntry { + key: number; + value: Camouflage | undefined; +} + +export interface Camouflage { + id: number; + name: string; + tank_name?: string | undefined; + tank_name_full?: string | undefined; +} + +function createBaseCamouflageDefinitions(): CamouflageDefinitions { + return { camouflages: {} }; +} + +export const CamouflageDefinitions: MessageFns = { + encode(message: CamouflageDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + Object.entries(message.camouflages).forEach(([key, value]) => { + CamouflageDefinitions_CamouflagesEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join(); + }); + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): CamouflageDefinitions { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseCamouflageDefinitions(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + const entry1 = CamouflageDefinitions_CamouflagesEntry.decode(reader, reader.uint32()); + if (entry1.value !== undefined) { + message.camouflages[entry1.key] = entry1.value; + } + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): CamouflageDefinitions { + return { + camouflages: isObject(object.camouflages) + ? Object.entries(object.camouflages).reduce<{ [key: number]: Camouflage }>((acc, [key, value]) => { + acc[globalThis.Number(key)] = Camouflage.fromJSON(value); + return acc; + }, {}) + : {}, + }; + }, + + toJSON(message: CamouflageDefinitions): unknown { + const obj: any = {}; + if (message.camouflages) { + const entries = Object.entries(message.camouflages); + if (entries.length > 0) { + obj.camouflages = {}; + entries.forEach(([k, v]) => { + obj.camouflages[k] = Camouflage.toJSON(v); + }); + } + } + return obj; + }, + + create, I>>(base?: I): CamouflageDefinitions { + return CamouflageDefinitions.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): CamouflageDefinitions { + const message = createBaseCamouflageDefinitions(); + message.camouflages = Object.entries(object.camouflages ?? {}).reduce<{ [key: number]: Camouflage }>( + (acc, [key, value]) => { + if (value !== undefined) { + acc[globalThis.Number(key)] = Camouflage.fromPartial(value); + } + return acc; + }, + {}, + ); + return message; + }, +}; + +function createBaseCamouflageDefinitions_CamouflagesEntry(): CamouflageDefinitions_CamouflagesEntry { + return { key: 0, value: createBaseCamouflage() }; +} + +export const CamouflageDefinitions_CamouflagesEntry: MessageFns = { + encode(message: CamouflageDefinitions_CamouflagesEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.key !== undefined) { + writer.uint32(8).uint32(message.key); + } + if (message.value !== undefined) { + Camouflage.encode(message.value, writer.uint32(18).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): CamouflageDefinitions_CamouflagesEntry { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseCamouflageDefinitions_CamouflagesEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + + message.key = reader.uint32(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.value = Camouflage.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): CamouflageDefinitions_CamouflagesEntry { + return { + key: globalThis.Number(assertSet("CamouflageDefinitions_CamouflagesEntry.key", object.key)), + value: Camouflage.fromJSON(assertSet("CamouflageDefinitions_CamouflagesEntry.value", object.value)), + }; + }, + + toJSON(message: CamouflageDefinitions_CamouflagesEntry): unknown { + const obj: any = {}; + if (message.key !== undefined) { + obj.key = Math.round(message.key); + } + if (message.value !== undefined) { + obj.value = Camouflage.toJSON(message.value); + } + return obj; + }, + + create, I>>( + base?: I, + ): CamouflageDefinitions_CamouflagesEntry { + return CamouflageDefinitions_CamouflagesEntry.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>( + object: I, + ): CamouflageDefinitions_CamouflagesEntry { + const message = createBaseCamouflageDefinitions_CamouflagesEntry(); + message.key = object.key ?? 0; + message.value = (object.value !== undefined && object.value !== null) + ? Camouflage.fromPartial(object.value) + : undefined; + return message; + }, +}; + +function createBaseCamouflage(): Camouflage { + return { id: 0, name: "", tank_name: undefined, tank_name_full: undefined }; +} + +export const Camouflage: MessageFns = { + encode(message: Camouflage, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.id !== 0) { + writer.uint32(8).uint32(message.id); + } + if (message.name !== "") { + writer.uint32(18).string(message.name); + } + if (message.tank_name !== undefined && message.tank_name !== undefined) { + writer.uint32(26).string(message.tank_name); + } + if (message.tank_name_full !== undefined && message.tank_name_full !== undefined) { + writer.uint32(34).string(message.tank_name_full); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): Camouflage { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseCamouflage(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + + message.id = reader.uint32(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.name = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + + message.tank_name = reader.string(); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + + message.tank_name_full = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): Camouflage { + return { + id: globalThis.Number(assertSet("Camouflage.id", object.id)), + name: globalThis.String(assertSet("Camouflage.name", object.name)), + tank_name: isSet(object.tank_name) ? globalThis.String(object.tank_name) : undefined, + tank_name_full: isSet(object.tank_name_full) ? globalThis.String(object.tank_name_full) : undefined, + }; + }, + + toJSON(message: Camouflage): unknown { + const obj: any = {}; + if (message.id !== 0) { + obj.id = Math.round(message.id); + } + if (message.name !== "") { + obj.name = message.name; + } + if (message.tank_name !== undefined && message.tank_name !== undefined) { + obj.tank_name = message.tank_name; + } + if (message.tank_name_full !== undefined && message.tank_name_full !== undefined) { + obj.tank_name_full = message.tank_name_full; + } + return obj; + }, + + create, I>>(base?: I): Camouflage { + return Camouflage.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): Camouflage { + const message = createBaseCamouflage(); + message.id = object.id ?? 0; + message.name = object.name ?? ""; + message.tank_name = object.tank_name ?? undefined; + message.tank_name_full = object.tank_name_full ?? undefined; + return message; + }, +}; + +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; + +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 }; + +function isObject(value: any): boolean { + return typeof value === "object" && value !== null; +} + +function isSet(value: any): boolean { + return value !== null && value !== undefined; +} + +function assertSet(field: string, value: T | undefined): T { + if (!isSet(value)) { + throw new TypeError(`Required field ${field} is not set`); + } + + return value as T; +} + +export interface MessageFns { + encode(message: T, writer?: BinaryWriter): BinaryWriter; + decode(input: BinaryReader | Uint8Array, length?: number): T; + fromJSON(object: any): T; + toJSON(message: T): unknown; + create, I>>(base?: I): T; + fromPartial, I>>(object: I): T; +} diff --git a/packages/core/src/protos/consumable_definitions.ts b/packages/core/src/protos/consumable_definitions.ts new file mode 100644 index 000000000..9923a358a --- /dev/null +++ b/packages/core/src/protos/consumable_definitions.ts @@ -0,0 +1,873 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v2.2.2 +// protoc v5.28.2 +// source: packages/core/src/protos/consumable_definitions.proto + +/* eslint-disable */ +import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; +import { Tier, tierFromJSON, tierToJSON } from "./tank_definitions"; + +export const protobufPackage = "blitzkit"; + +export enum ConsumableTankCategoryFilterCategory { + CLIP = 0, +} + +export function consumableTankCategoryFilterCategoryFromJSON(object: any): ConsumableTankCategoryFilterCategory { + switch (object) { + case 0: + case "CONSUMABLE_TANK_CATEGORY_FILTER_CATEGORY_CLIP": + return ConsumableTankCategoryFilterCategory.CLIP; + default: + throw new globalThis.Error( + "Unrecognized enum value " + object + " for enum ConsumableTankCategoryFilterCategory", + ); + } +} + +export function consumableTankCategoryFilterCategoryToJSON(object: ConsumableTankCategoryFilterCategory): string { + switch (object) { + case ConsumableTankCategoryFilterCategory.CLIP: + return "CONSUMABLE_TANK_CATEGORY_FILTER_CATEGORY_CLIP"; + default: + throw new globalThis.Error( + "Unrecognized enum value " + object + " for enum ConsumableTankCategoryFilterCategory", + ); + } +} + +export interface ConsumableDefinitions { + consumables: { [key: number]: Consumable }; +} + +export interface ConsumableDefinitions_ConsumablesEntry { + key: number; + value: Consumable | undefined; +} + +export interface Consumable { + id: number; + name: string; + cooldown: number; + duration?: number | undefined; + game_mode_exclusive: boolean; + include: ConsumableTankFilter[]; + exclude: ConsumableTankFilter[]; +} + +export interface ConsumableTankFilter { + filter_type?: + | { $case: "tiers"; value: ConsumableTankTierFilter } + | { $case: "ids"; value: ConsumableTankIdsFilter } + | { $case: "categories"; value: ConsumableTankCategoryFilter } + | { $case: "nations"; value: ConsumableTankNationFilter } + | undefined; +} + +export interface ConsumableTankTierFilter { + min: Tier; + max: Tier; +} + +export interface ConsumableTankIdsFilter { + ids: number[]; +} + +export interface ConsumableTankCategoryFilter { + categories: ConsumableTankCategoryFilterCategory[]; +} + +export interface ConsumableTankNationFilter { + nations: string[]; +} + +function createBaseConsumableDefinitions(): ConsumableDefinitions { + return { consumables: {} }; +} + +export const ConsumableDefinitions: MessageFns = { + encode(message: ConsumableDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + Object.entries(message.consumables).forEach(([key, value]) => { + ConsumableDefinitions_ConsumablesEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join(); + }); + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): ConsumableDefinitions { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseConsumableDefinitions(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + const entry1 = ConsumableDefinitions_ConsumablesEntry.decode(reader, reader.uint32()); + if (entry1.value !== undefined) { + message.consumables[entry1.key] = entry1.value; + } + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): ConsumableDefinitions { + return { + consumables: isObject(object.consumables) + ? Object.entries(object.consumables).reduce<{ [key: number]: Consumable }>((acc, [key, value]) => { + acc[globalThis.Number(key)] = Consumable.fromJSON(value); + return acc; + }, {}) + : {}, + }; + }, + + toJSON(message: ConsumableDefinitions): unknown { + const obj: any = {}; + if (message.consumables) { + const entries = Object.entries(message.consumables); + if (entries.length > 0) { + obj.consumables = {}; + entries.forEach(([k, v]) => { + obj.consumables[k] = Consumable.toJSON(v); + }); + } + } + return obj; + }, + + create, I>>(base?: I): ConsumableDefinitions { + return ConsumableDefinitions.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): ConsumableDefinitions { + const message = createBaseConsumableDefinitions(); + message.consumables = Object.entries(object.consumables ?? {}).reduce<{ [key: number]: Consumable }>( + (acc, [key, value]) => { + if (value !== undefined) { + acc[globalThis.Number(key)] = Consumable.fromPartial(value); + } + return acc; + }, + {}, + ); + return message; + }, +}; + +function createBaseConsumableDefinitions_ConsumablesEntry(): ConsumableDefinitions_ConsumablesEntry { + return { key: 0, value: createBaseConsumable() }; +} + +export const ConsumableDefinitions_ConsumablesEntry: MessageFns = { + encode(message: ConsumableDefinitions_ConsumablesEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.key !== undefined) { + writer.uint32(8).uint32(message.key); + } + if (message.value !== undefined) { + Consumable.encode(message.value, writer.uint32(18).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): ConsumableDefinitions_ConsumablesEntry { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseConsumableDefinitions_ConsumablesEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + + message.key = reader.uint32(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.value = Consumable.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): ConsumableDefinitions_ConsumablesEntry { + return { + key: globalThis.Number(assertSet("ConsumableDefinitions_ConsumablesEntry.key", object.key)), + value: Consumable.fromJSON(assertSet("ConsumableDefinitions_ConsumablesEntry.value", object.value)), + }; + }, + + toJSON(message: ConsumableDefinitions_ConsumablesEntry): unknown { + const obj: any = {}; + if (message.key !== undefined) { + obj.key = Math.round(message.key); + } + if (message.value !== undefined) { + obj.value = Consumable.toJSON(message.value); + } + return obj; + }, + + create, I>>( + base?: I, + ): ConsumableDefinitions_ConsumablesEntry { + return ConsumableDefinitions_ConsumablesEntry.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>( + object: I, + ): ConsumableDefinitions_ConsumablesEntry { + const message = createBaseConsumableDefinitions_ConsumablesEntry(); + message.key = object.key ?? 0; + message.value = (object.value !== undefined && object.value !== null) + ? Consumable.fromPartial(object.value) + : undefined; + return message; + }, +}; + +function createBaseConsumable(): Consumable { + return { id: 0, name: "", cooldown: 0, duration: undefined, game_mode_exclusive: false, include: [], exclude: [] }; +} + +export const Consumable: MessageFns = { + encode(message: Consumable, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.id !== 0) { + writer.uint32(8).uint32(message.id); + } + if (message.name !== "") { + writer.uint32(18).string(message.name); + } + if (message.cooldown !== 0) { + writer.uint32(24).uint32(message.cooldown); + } + if (message.duration !== undefined && message.duration !== undefined) { + writer.uint32(37).float(message.duration); + } + if (message.game_mode_exclusive !== false) { + writer.uint32(40).bool(message.game_mode_exclusive); + } + for (const v of message.include) { + ConsumableTankFilter.encode(v!, writer.uint32(50).fork()).join(); + } + for (const v of message.exclude) { + ConsumableTankFilter.encode(v!, writer.uint32(58).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): Consumable { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseConsumable(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + + message.id = reader.uint32(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.name = reader.string(); + continue; + } + case 3: { + if (tag !== 24) { + break; + } + + message.cooldown = reader.uint32(); + continue; + } + case 4: { + if (tag !== 37) { + break; + } + + message.duration = reader.float(); + continue; + } + case 5: { + if (tag !== 40) { + break; + } + + message.game_mode_exclusive = reader.bool(); + continue; + } + case 6: { + if (tag !== 50) { + break; + } + + message.include.push(ConsumableTankFilter.decode(reader, reader.uint32())); + continue; + } + case 7: { + if (tag !== 58) { + break; + } + + message.exclude.push(ConsumableTankFilter.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): Consumable { + return { + id: globalThis.Number(assertSet("Consumable.id", object.id)), + name: globalThis.String(assertSet("Consumable.name", object.name)), + cooldown: globalThis.Number(assertSet("Consumable.cooldown", object.cooldown)), + duration: isSet(object.duration) ? globalThis.Number(object.duration) : undefined, + game_mode_exclusive: globalThis.Boolean(assertSet("Consumable.game_mode_exclusive", object.game_mode_exclusive)), + include: globalThis.Array.isArray(object?.include) + ? object.include.map((e: any) => ConsumableTankFilter.fromJSON(e)) + : [], + exclude: globalThis.Array.isArray(object?.exclude) + ? object.exclude.map((e: any) => ConsumableTankFilter.fromJSON(e)) + : [], + }; + }, + + toJSON(message: Consumable): unknown { + const obj: any = {}; + if (message.id !== 0) { + obj.id = Math.round(message.id); + } + if (message.name !== "") { + obj.name = message.name; + } + if (message.cooldown !== 0) { + obj.cooldown = Math.round(message.cooldown); + } + if (message.duration !== undefined && message.duration !== undefined) { + obj.duration = message.duration; + } + if (message.game_mode_exclusive !== false) { + obj.game_mode_exclusive = message.game_mode_exclusive; + } + if (message.include?.length) { + obj.include = message.include.map((e) => ConsumableTankFilter.toJSON(e)); + } + if (message.exclude?.length) { + obj.exclude = message.exclude.map((e) => ConsumableTankFilter.toJSON(e)); + } + return obj; + }, + + create, I>>(base?: I): Consumable { + return Consumable.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): Consumable { + const message = createBaseConsumable(); + message.id = object.id ?? 0; + message.name = object.name ?? ""; + message.cooldown = object.cooldown ?? 0; + message.duration = object.duration ?? undefined; + message.game_mode_exclusive = object.game_mode_exclusive ?? false; + message.include = object.include?.map((e) => ConsumableTankFilter.fromPartial(e)) || []; + message.exclude = object.exclude?.map((e) => ConsumableTankFilter.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseConsumableTankFilter(): ConsumableTankFilter { + return { filter_type: undefined }; +} + +export const ConsumableTankFilter: MessageFns = { + encode(message: ConsumableTankFilter, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + switch (message.filter_type?.$case) { + case "tiers": + ConsumableTankTierFilter.encode(message.filter_type.value, writer.uint32(10).fork()).join(); + break; + case "ids": + ConsumableTankIdsFilter.encode(message.filter_type.value, writer.uint32(18).fork()).join(); + break; + case "categories": + ConsumableTankCategoryFilter.encode(message.filter_type.value, writer.uint32(26).fork()).join(); + break; + case "nations": + ConsumableTankNationFilter.encode(message.filter_type.value, writer.uint32(34).fork()).join(); + break; + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): ConsumableTankFilter { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseConsumableTankFilter(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + message.filter_type = { $case: "tiers", value: ConsumableTankTierFilter.decode(reader, reader.uint32()) }; + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.filter_type = { $case: "ids", value: ConsumableTankIdsFilter.decode(reader, reader.uint32()) }; + continue; + } + case 3: { + if (tag !== 26) { + break; + } + + message.filter_type = { + $case: "categories", + value: ConsumableTankCategoryFilter.decode(reader, reader.uint32()), + }; + continue; + } + case 4: { + if (tag !== 34) { + break; + } + + message.filter_type = { $case: "nations", value: ConsumableTankNationFilter.decode(reader, reader.uint32()) }; + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): ConsumableTankFilter { + return { + filter_type: isSet(object.tiers) + ? { $case: "tiers", value: ConsumableTankTierFilter.fromJSON(object.tiers) } + : isSet(object.ids) + ? { $case: "ids", value: ConsumableTankIdsFilter.fromJSON(object.ids) } + : isSet(object.categories) + ? { $case: "categories", value: ConsumableTankCategoryFilter.fromJSON(object.categories) } + : isSet(object.nations) + ? { $case: "nations", value: ConsumableTankNationFilter.fromJSON(object.nations) } + : undefined, + }; + }, + + toJSON(message: ConsumableTankFilter): unknown { + const obj: any = {}; + if (message.filter_type?.$case === "tiers") { + obj.tiers = ConsumableTankTierFilter.toJSON(message.filter_type.value); + } + if (message.filter_type?.$case === "ids") { + obj.ids = ConsumableTankIdsFilter.toJSON(message.filter_type.value); + } + if (message.filter_type?.$case === "categories") { + obj.categories = ConsumableTankCategoryFilter.toJSON(message.filter_type.value); + } + if (message.filter_type?.$case === "nations") { + obj.nations = ConsumableTankNationFilter.toJSON(message.filter_type.value); + } + return obj; + }, + + create, I>>(base?: I): ConsumableTankFilter { + return ConsumableTankFilter.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): ConsumableTankFilter { + const message = createBaseConsumableTankFilter(); + if ( + object.filter_type?.$case === "tiers" && + object.filter_type?.value !== undefined && + object.filter_type?.value !== null + ) { + message.filter_type = { $case: "tiers", value: ConsumableTankTierFilter.fromPartial(object.filter_type.value) }; + } + if ( + object.filter_type?.$case === "ids" && + object.filter_type?.value !== undefined && + object.filter_type?.value !== null + ) { + message.filter_type = { $case: "ids", value: ConsumableTankIdsFilter.fromPartial(object.filter_type.value) }; + } + if ( + object.filter_type?.$case === "categories" && + object.filter_type?.value !== undefined && + object.filter_type?.value !== null + ) { + message.filter_type = { + $case: "categories", + value: ConsumableTankCategoryFilter.fromPartial(object.filter_type.value), + }; + } + if ( + object.filter_type?.$case === "nations" && + object.filter_type?.value !== undefined && + object.filter_type?.value !== null + ) { + message.filter_type = { + $case: "nations", + value: ConsumableTankNationFilter.fromPartial(object.filter_type.value), + }; + } + return message; + }, +}; + +function createBaseConsumableTankTierFilter(): ConsumableTankTierFilter { + return { min: 0, max: 0 }; +} + +export const ConsumableTankTierFilter: MessageFns = { + encode(message: ConsumableTankTierFilter, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.min !== 0) { + writer.uint32(8).int32(message.min); + } + if (message.max !== 0) { + writer.uint32(16).int32(message.max); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): ConsumableTankTierFilter { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseConsumableTankTierFilter(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + + message.min = reader.int32() as any; + continue; + } + case 2: { + if (tag !== 16) { + break; + } + + message.max = reader.int32() as any; + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): ConsumableTankTierFilter { + return { + min: tierFromJSON(assertSet("ConsumableTankTierFilter.min", object.min)), + max: tierFromJSON(assertSet("ConsumableTankTierFilter.max", object.max)), + }; + }, + + toJSON(message: ConsumableTankTierFilter): unknown { + const obj: any = {}; + if (message.min !== 0) { + obj.min = tierToJSON(message.min); + } + if (message.max !== 0) { + obj.max = tierToJSON(message.max); + } + return obj; + }, + + create, I>>(base?: I): ConsumableTankTierFilter { + return ConsumableTankTierFilter.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): ConsumableTankTierFilter { + const message = createBaseConsumableTankTierFilter(); + message.min = object.min ?? 0; + message.max = object.max ?? 0; + return message; + }, +}; + +function createBaseConsumableTankIdsFilter(): ConsumableTankIdsFilter { + return { ids: [] }; +} + +export const ConsumableTankIdsFilter: MessageFns = { + encode(message: ConsumableTankIdsFilter, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + writer.uint32(10).fork(); + for (const v of message.ids) { + writer.uint32(v); + } + writer.join(); + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): ConsumableTankIdsFilter { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseConsumableTankIdsFilter(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag === 8) { + message.ids.push(reader.uint32()); + + continue; + } + + if (tag === 10) { + const end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) { + message.ids.push(reader.uint32()); + } + + continue; + } + + break; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): ConsumableTankIdsFilter { + return { ids: globalThis.Array.isArray(object?.ids) ? object.ids.map((e: any) => globalThis.Number(e)) : [] }; + }, + + toJSON(message: ConsumableTankIdsFilter): unknown { + const obj: any = {}; + if (message.ids?.length) { + obj.ids = message.ids.map((e) => Math.round(e)); + } + return obj; + }, + + create, I>>(base?: I): ConsumableTankIdsFilter { + return ConsumableTankIdsFilter.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): ConsumableTankIdsFilter { + const message = createBaseConsumableTankIdsFilter(); + message.ids = object.ids?.map((e) => e) || []; + return message; + }, +}; + +function createBaseConsumableTankCategoryFilter(): ConsumableTankCategoryFilter { + return { categories: [] }; +} + +export const ConsumableTankCategoryFilter: MessageFns = { + encode(message: ConsumableTankCategoryFilter, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + writer.uint32(10).fork(); + for (const v of message.categories) { + writer.int32(v); + } + writer.join(); + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): ConsumableTankCategoryFilter { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseConsumableTankCategoryFilter(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag === 8) { + message.categories.push(reader.int32() as any); + + continue; + } + + if (tag === 10) { + const end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) { + message.categories.push(reader.int32() as any); + } + + continue; + } + + break; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): ConsumableTankCategoryFilter { + return { + categories: globalThis.Array.isArray(object?.categories) + ? object.categories.map((e: any) => consumableTankCategoryFilterCategoryFromJSON(e)) + : [], + }; + }, + + toJSON(message: ConsumableTankCategoryFilter): unknown { + const obj: any = {}; + if (message.categories?.length) { + obj.categories = message.categories.map((e) => consumableTankCategoryFilterCategoryToJSON(e)); + } + return obj; + }, + + create, I>>(base?: I): ConsumableTankCategoryFilter { + return ConsumableTankCategoryFilter.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): ConsumableTankCategoryFilter { + const message = createBaseConsumableTankCategoryFilter(); + message.categories = object.categories?.map((e) => e) || []; + return message; + }, +}; + +function createBaseConsumableTankNationFilter(): ConsumableTankNationFilter { + return { nations: [] }; +} + +export const ConsumableTankNationFilter: MessageFns = { + encode(message: ConsumableTankNationFilter, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + for (const v of message.nations) { + writer.uint32(10).string(v!); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): ConsumableTankNationFilter { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseConsumableTankNationFilter(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + message.nations.push(reader.string()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): ConsumableTankNationFilter { + return { + nations: globalThis.Array.isArray(object?.nations) ? object.nations.map((e: any) => globalThis.String(e)) : [], + }; + }, + + toJSON(message: ConsumableTankNationFilter): unknown { + const obj: any = {}; + if (message.nations?.length) { + obj.nations = message.nations; + } + return obj; + }, + + create, I>>(base?: I): ConsumableTankNationFilter { + return ConsumableTankNationFilter.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): ConsumableTankNationFilter { + const message = createBaseConsumableTankNationFilter(); + message.nations = object.nations?.map((e) => e) || []; + return message; + }, +}; + +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; + +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 }; + +function isObject(value: any): boolean { + return typeof value === "object" && value !== null; +} + +function isSet(value: any): boolean { + return value !== null && value !== undefined; +} + +function assertSet(field: string, value: T | undefined): T { + if (!isSet(value)) { + throw new TypeError(`Required field ${field} is not set`); + } + + return value as T; +} + +export interface MessageFns { + encode(message: T, writer?: BinaryWriter): BinaryWriter; + decode(input: BinaryReader | Uint8Array, length?: number): T; + fromJSON(object: any): T; + toJSON(message: T): unknown; + create, I>>(base?: I): T; + fromPartial, I>>(object: I): T; +} diff --git a/packages/core/src/protos/equipment_definitions.ts b/packages/core/src/protos/equipment_definitions.ts new file mode 100644 index 000000000..aaec6db7c --- /dev/null +++ b/packages/core/src/protos/equipment_definitions.ts @@ -0,0 +1,573 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v2.2.2 +// protoc v5.28.2 +// source: packages/core/src/protos/equipment_definitions.proto + +/* eslint-disable */ +import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; + +export const protobufPackage = "blitzkit"; + +export interface EquipmentDefinitions { + presets: { [key: string]: EquipmentPreset }; + equipments: { [key: number]: Equipment }; +} + +export interface EquipmentDefinitions_PresetsEntry { + key: string; + value: EquipmentPreset | undefined; +} + +export interface EquipmentDefinitions_EquipmentsEntry { + key: number; + value: Equipment | undefined; +} + +export interface Equipment { + name: string; + description: string; +} + +export interface EquipmentPreset { + slots: EquipmentSlot[]; +} + +export interface EquipmentSlot { + left: number; + right: number; +} + +function createBaseEquipmentDefinitions(): EquipmentDefinitions { + return { presets: {}, equipments: {} }; +} + +export const EquipmentDefinitions: MessageFns = { + encode(message: EquipmentDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + Object.entries(message.presets).forEach(([key, value]) => { + EquipmentDefinitions_PresetsEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join(); + }); + Object.entries(message.equipments).forEach(([key, value]) => { + EquipmentDefinitions_EquipmentsEntry.encode({ key: key as any, value }, writer.uint32(18).fork()).join(); + }); + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): EquipmentDefinitions { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseEquipmentDefinitions(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + const entry1 = EquipmentDefinitions_PresetsEntry.decode(reader, reader.uint32()); + if (entry1.value !== undefined) { + message.presets[entry1.key] = entry1.value; + } + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + const entry2 = EquipmentDefinitions_EquipmentsEntry.decode(reader, reader.uint32()); + if (entry2.value !== undefined) { + message.equipments[entry2.key] = entry2.value; + } + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): EquipmentDefinitions { + return { + presets: isObject(object.presets) + ? Object.entries(object.presets).reduce<{ [key: string]: EquipmentPreset }>((acc, [key, value]) => { + acc[key] = EquipmentPreset.fromJSON(value); + return acc; + }, {}) + : {}, + equipments: isObject(object.equipments) + ? Object.entries(object.equipments).reduce<{ [key: number]: Equipment }>((acc, [key, value]) => { + acc[globalThis.Number(key)] = Equipment.fromJSON(value); + return acc; + }, {}) + : {}, + }; + }, + + toJSON(message: EquipmentDefinitions): unknown { + const obj: any = {}; + if (message.presets) { + const entries = Object.entries(message.presets); + if (entries.length > 0) { + obj.presets = {}; + entries.forEach(([k, v]) => { + obj.presets[k] = EquipmentPreset.toJSON(v); + }); + } + } + if (message.equipments) { + const entries = Object.entries(message.equipments); + if (entries.length > 0) { + obj.equipments = {}; + entries.forEach(([k, v]) => { + obj.equipments[k] = Equipment.toJSON(v); + }); + } + } + return obj; + }, + + create, I>>(base?: I): EquipmentDefinitions { + return EquipmentDefinitions.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): EquipmentDefinitions { + const message = createBaseEquipmentDefinitions(); + message.presets = Object.entries(object.presets ?? {}).reduce<{ [key: string]: EquipmentPreset }>( + (acc, [key, value]) => { + if (value !== undefined) { + acc[key] = EquipmentPreset.fromPartial(value); + } + return acc; + }, + {}, + ); + message.equipments = Object.entries(object.equipments ?? {}).reduce<{ [key: number]: Equipment }>( + (acc, [key, value]) => { + if (value !== undefined) { + acc[globalThis.Number(key)] = Equipment.fromPartial(value); + } + return acc; + }, + {}, + ); + return message; + }, +}; + +function createBaseEquipmentDefinitions_PresetsEntry(): EquipmentDefinitions_PresetsEntry { + return { key: "", value: createBaseEquipmentPreset() }; +} + +export const EquipmentDefinitions_PresetsEntry: MessageFns = { + encode(message: EquipmentDefinitions_PresetsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.key !== undefined) { + writer.uint32(10).string(message.key); + } + if (message.value !== undefined) { + EquipmentPreset.encode(message.value, writer.uint32(18).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): EquipmentDefinitions_PresetsEntry { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseEquipmentDefinitions_PresetsEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + message.key = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.value = EquipmentPreset.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): EquipmentDefinitions_PresetsEntry { + return { + key: globalThis.String(assertSet("EquipmentDefinitions_PresetsEntry.key", object.key)), + value: EquipmentPreset.fromJSON(assertSet("EquipmentDefinitions_PresetsEntry.value", object.value)), + }; + }, + + toJSON(message: EquipmentDefinitions_PresetsEntry): unknown { + const obj: any = {}; + if (message.key !== undefined) { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = EquipmentPreset.toJSON(message.value); + } + return obj; + }, + + create, I>>( + base?: I, + ): EquipmentDefinitions_PresetsEntry { + return EquipmentDefinitions_PresetsEntry.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>( + object: I, + ): EquipmentDefinitions_PresetsEntry { + const message = createBaseEquipmentDefinitions_PresetsEntry(); + message.key = object.key ?? ""; + message.value = (object.value !== undefined && object.value !== null) + ? EquipmentPreset.fromPartial(object.value) + : undefined; + return message; + }, +}; + +function createBaseEquipmentDefinitions_EquipmentsEntry(): EquipmentDefinitions_EquipmentsEntry { + return { key: 0, value: createBaseEquipment() }; +} + +export const EquipmentDefinitions_EquipmentsEntry: MessageFns = { + encode(message: EquipmentDefinitions_EquipmentsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.key !== undefined) { + writer.uint32(8).uint32(message.key); + } + if (message.value !== undefined) { + Equipment.encode(message.value, writer.uint32(18).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): EquipmentDefinitions_EquipmentsEntry { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseEquipmentDefinitions_EquipmentsEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + + message.key = reader.uint32(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.value = Equipment.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): EquipmentDefinitions_EquipmentsEntry { + return { + key: globalThis.Number(assertSet("EquipmentDefinitions_EquipmentsEntry.key", object.key)), + value: Equipment.fromJSON(assertSet("EquipmentDefinitions_EquipmentsEntry.value", object.value)), + }; + }, + + toJSON(message: EquipmentDefinitions_EquipmentsEntry): unknown { + const obj: any = {}; + if (message.key !== undefined) { + obj.key = Math.round(message.key); + } + if (message.value !== undefined) { + obj.value = Equipment.toJSON(message.value); + } + return obj; + }, + + create, I>>( + base?: I, + ): EquipmentDefinitions_EquipmentsEntry { + return EquipmentDefinitions_EquipmentsEntry.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>( + object: I, + ): EquipmentDefinitions_EquipmentsEntry { + const message = createBaseEquipmentDefinitions_EquipmentsEntry(); + message.key = object.key ?? 0; + message.value = (object.value !== undefined && object.value !== null) + ? Equipment.fromPartial(object.value) + : undefined; + return message; + }, +}; + +function createBaseEquipment(): Equipment { + return { name: "", description: "" }; +} + +export const Equipment: MessageFns = { + encode(message: Equipment, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.description !== "") { + writer.uint32(18).string(message.description); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): Equipment { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseEquipment(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.description = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): Equipment { + return { + name: globalThis.String(assertSet("Equipment.name", object.name)), + description: globalThis.String(assertSet("Equipment.description", object.description)), + }; + }, + + toJSON(message: Equipment): unknown { + const obj: any = {}; + if (message.name !== "") { + obj.name = message.name; + } + if (message.description !== "") { + obj.description = message.description; + } + return obj; + }, + + create, I>>(base?: I): Equipment { + return Equipment.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): Equipment { + const message = createBaseEquipment(); + message.name = object.name ?? ""; + message.description = object.description ?? ""; + return message; + }, +}; + +function createBaseEquipmentPreset(): EquipmentPreset { + return { slots: [] }; +} + +export const EquipmentPreset: MessageFns = { + encode(message: EquipmentPreset, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + for (const v of message.slots) { + EquipmentSlot.encode(v!, writer.uint32(10).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): EquipmentPreset { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseEquipmentPreset(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + message.slots.push(EquipmentSlot.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): EquipmentPreset { + return { + slots: globalThis.Array.isArray(object?.slots) ? object.slots.map((e: any) => EquipmentSlot.fromJSON(e)) : [], + }; + }, + + toJSON(message: EquipmentPreset): unknown { + const obj: any = {}; + if (message.slots?.length) { + obj.slots = message.slots.map((e) => EquipmentSlot.toJSON(e)); + } + return obj; + }, + + create, I>>(base?: I): EquipmentPreset { + return EquipmentPreset.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): EquipmentPreset { + const message = createBaseEquipmentPreset(); + message.slots = object.slots?.map((e) => EquipmentSlot.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseEquipmentSlot(): EquipmentSlot { + return { left: 0, right: 0 }; +} + +export const EquipmentSlot: MessageFns = { + encode(message: EquipmentSlot, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.left !== 0) { + writer.uint32(8).uint32(message.left); + } + if (message.right !== 0) { + writer.uint32(16).uint32(message.right); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): EquipmentSlot { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseEquipmentSlot(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + + message.left = reader.uint32(); + continue; + } + case 2: { + if (tag !== 16) { + break; + } + + message.right = reader.uint32(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): EquipmentSlot { + return { + left: globalThis.Number(assertSet("EquipmentSlot.left", object.left)), + right: globalThis.Number(assertSet("EquipmentSlot.right", object.right)), + }; + }, + + toJSON(message: EquipmentSlot): unknown { + const obj: any = {}; + if (message.left !== 0) { + obj.left = Math.round(message.left); + } + if (message.right !== 0) { + obj.right = Math.round(message.right); + } + return obj; + }, + + create, I>>(base?: I): EquipmentSlot { + return EquipmentSlot.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): EquipmentSlot { + const message = createBaseEquipmentSlot(); + message.left = object.left ?? 0; + message.right = object.right ?? 0; + return message; + }, +}; + +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; + +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 }; + +function isObject(value: any): boolean { + return typeof value === "object" && value !== null; +} + +function isSet(value: any): boolean { + return value !== null && value !== undefined; +} + +function assertSet(field: string, value: T | undefined): T { + if (!isSet(value)) { + throw new TypeError(`Required field ${field} is not set`); + } + + return value as T; +} + +export interface MessageFns { + encode(message: T, writer?: BinaryWriter): BinaryWriter; + decode(input: BinaryReader | Uint8Array, length?: number): T; + fromJSON(object: any): T; + toJSON(message: T): unknown; + create, I>>(base?: I): T; + fromPartial, I>>(object: I): T; +} diff --git a/packages/core/src/protos/game_definitions.ts b/packages/core/src/protos/game_definitions.ts new file mode 100644 index 000000000..3d6b5e93d --- /dev/null +++ b/packages/core/src/protos/game_definitions.ts @@ -0,0 +1,543 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v2.2.2 +// protoc v5.28.2 +// source: packages/core/src/protos/game_definitions.proto + +/* eslint-disable */ +import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; + +export const protobufPackage = "blitzkit"; + +export interface GameDefinitions { + version: string; + nations: string[]; + gameModes: { [key: number]: GameMode }; + roles: { [key: number]: GameModeRole }; +} + +export interface GameDefinitions_GameModesEntry { + key: number; + value: GameMode | undefined; +} + +export interface GameDefinitions_RolesEntry { + key: number; + value: GameModeRole | undefined; +} + +export interface GameMode { + name: string; +} + +export interface GameModeRole { + provisions: number[]; + consumables: number[]; +} + +function createBaseGameDefinitions(): GameDefinitions { + return { version: "", nations: [], gameModes: {}, roles: {} }; +} + +export const GameDefinitions: MessageFns = { + encode(message: GameDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.version !== "") { + writer.uint32(10).string(message.version); + } + for (const v of message.nations) { + writer.uint32(18).string(v!); + } + Object.entries(message.gameModes).forEach(([key, value]) => { + GameDefinitions_GameModesEntry.encode({ key: key as any, value }, writer.uint32(26).fork()).join(); + }); + Object.entries(message.roles).forEach(([key, value]) => { + GameDefinitions_RolesEntry.encode({ key: key as any, value }, writer.uint32(34).fork()).join(); + }); + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): GameDefinitions { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGameDefinitions(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + message.version = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.nations.push(reader.string()); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + + const entry3 = GameDefinitions_GameModesEntry.decode(reader, reader.uint32()); + if (entry3.value !== undefined) { + message.gameModes[entry3.key] = entry3.value; + } + continue; + } + case 4: { + if (tag !== 34) { + break; + } + + const entry4 = GameDefinitions_RolesEntry.decode(reader, reader.uint32()); + if (entry4.value !== undefined) { + message.roles[entry4.key] = entry4.value; + } + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): GameDefinitions { + return { + version: globalThis.String(assertSet("GameDefinitions.version", object.version)), + nations: globalThis.Array.isArray(object?.nations) ? object.nations.map((e: any) => globalThis.String(e)) : [], + gameModes: isObject(object.gameModes) + ? Object.entries(object.gameModes).reduce<{ [key: number]: GameMode }>((acc, [key, value]) => { + acc[globalThis.Number(key)] = GameMode.fromJSON(value); + return acc; + }, {}) + : {}, + roles: isObject(object.roles) + ? Object.entries(object.roles).reduce<{ [key: number]: GameModeRole }>((acc, [key, value]) => { + acc[globalThis.Number(key)] = GameModeRole.fromJSON(value); + return acc; + }, {}) + : {}, + }; + }, + + toJSON(message: GameDefinitions): unknown { + const obj: any = {}; + if (message.version !== "") { + obj.version = message.version; + } + if (message.nations?.length) { + obj.nations = message.nations; + } + if (message.gameModes) { + const entries = Object.entries(message.gameModes); + if (entries.length > 0) { + obj.gameModes = {}; + entries.forEach(([k, v]) => { + obj.gameModes[k] = GameMode.toJSON(v); + }); + } + } + if (message.roles) { + const entries = Object.entries(message.roles); + if (entries.length > 0) { + obj.roles = {}; + entries.forEach(([k, v]) => { + obj.roles[k] = GameModeRole.toJSON(v); + }); + } + } + return obj; + }, + + create, I>>(base?: I): GameDefinitions { + return GameDefinitions.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): GameDefinitions { + const message = createBaseGameDefinitions(); + message.version = object.version ?? ""; + message.nations = object.nations?.map((e) => e) || []; + message.gameModes = Object.entries(object.gameModes ?? {}).reduce<{ [key: number]: GameMode }>( + (acc, [key, value]) => { + if (value !== undefined) { + acc[globalThis.Number(key)] = GameMode.fromPartial(value); + } + return acc; + }, + {}, + ); + message.roles = Object.entries(object.roles ?? {}).reduce<{ [key: number]: GameModeRole }>((acc, [key, value]) => { + if (value !== undefined) { + acc[globalThis.Number(key)] = GameModeRole.fromPartial(value); + } + return acc; + }, {}); + return message; + }, +}; + +function createBaseGameDefinitions_GameModesEntry(): GameDefinitions_GameModesEntry { + return { key: 0, value: createBaseGameMode() }; +} + +export const GameDefinitions_GameModesEntry: MessageFns = { + encode(message: GameDefinitions_GameModesEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.key !== undefined) { + writer.uint32(8).uint32(message.key); + } + if (message.value !== undefined) { + GameMode.encode(message.value, writer.uint32(18).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): GameDefinitions_GameModesEntry { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGameDefinitions_GameModesEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + + message.key = reader.uint32(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.value = GameMode.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): GameDefinitions_GameModesEntry { + return { + key: globalThis.Number(assertSet("GameDefinitions_GameModesEntry.key", object.key)), + value: GameMode.fromJSON(assertSet("GameDefinitions_GameModesEntry.value", object.value)), + }; + }, + + toJSON(message: GameDefinitions_GameModesEntry): unknown { + const obj: any = {}; + if (message.key !== undefined) { + obj.key = Math.round(message.key); + } + if (message.value !== undefined) { + obj.value = GameMode.toJSON(message.value); + } + return obj; + }, + + create, I>>(base?: I): GameDefinitions_GameModesEntry { + return GameDefinitions_GameModesEntry.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>( + object: I, + ): GameDefinitions_GameModesEntry { + const message = createBaseGameDefinitions_GameModesEntry(); + message.key = object.key ?? 0; + message.value = (object.value !== undefined && object.value !== null) + ? GameMode.fromPartial(object.value) + : undefined; + return message; + }, +}; + +function createBaseGameDefinitions_RolesEntry(): GameDefinitions_RolesEntry { + return { key: 0, value: createBaseGameModeRole() }; +} + +export const GameDefinitions_RolesEntry: MessageFns = { + encode(message: GameDefinitions_RolesEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.key !== undefined) { + writer.uint32(8).uint32(message.key); + } + if (message.value !== undefined) { + GameModeRole.encode(message.value, writer.uint32(18).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): GameDefinitions_RolesEntry { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGameDefinitions_RolesEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + + message.key = reader.uint32(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.value = GameModeRole.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): GameDefinitions_RolesEntry { + return { + key: globalThis.Number(assertSet("GameDefinitions_RolesEntry.key", object.key)), + value: GameModeRole.fromJSON(assertSet("GameDefinitions_RolesEntry.value", object.value)), + }; + }, + + toJSON(message: GameDefinitions_RolesEntry): unknown { + const obj: any = {}; + if (message.key !== undefined) { + obj.key = Math.round(message.key); + } + if (message.value !== undefined) { + obj.value = GameModeRole.toJSON(message.value); + } + return obj; + }, + + create, I>>(base?: I): GameDefinitions_RolesEntry { + return GameDefinitions_RolesEntry.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): GameDefinitions_RolesEntry { + const message = createBaseGameDefinitions_RolesEntry(); + message.key = object.key ?? 0; + message.value = (object.value !== undefined && object.value !== null) + ? GameModeRole.fromPartial(object.value) + : undefined; + return message; + }, +}; + +function createBaseGameMode(): GameMode { + return { name: "" }; +} + +export const GameMode: MessageFns = { + encode(message: GameMode, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): GameMode { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGameMode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): GameMode { + return { name: globalThis.String(assertSet("GameMode.name", object.name)) }; + }, + + toJSON(message: GameMode): unknown { + const obj: any = {}; + if (message.name !== "") { + obj.name = message.name; + } + return obj; + }, + + create, I>>(base?: I): GameMode { + return GameMode.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): GameMode { + const message = createBaseGameMode(); + message.name = object.name ?? ""; + return message; + }, +}; + +function createBaseGameModeRole(): GameModeRole { + return { provisions: [], consumables: [] }; +} + +export const GameModeRole: MessageFns = { + encode(message: GameModeRole, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + writer.uint32(10).fork(); + for (const v of message.provisions) { + writer.uint32(v); + } + writer.join(); + writer.uint32(18).fork(); + for (const v of message.consumables) { + writer.uint32(v); + } + writer.join(); + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): GameModeRole { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGameModeRole(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag === 8) { + message.provisions.push(reader.uint32()); + + continue; + } + + if (tag === 10) { + const end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) { + message.provisions.push(reader.uint32()); + } + + continue; + } + + break; + } + case 2: { + if (tag === 16) { + message.consumables.push(reader.uint32()); + + continue; + } + + if (tag === 18) { + const end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) { + message.consumables.push(reader.uint32()); + } + + continue; + } + + break; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): GameModeRole { + return { + provisions: globalThis.Array.isArray(object?.provisions) + ? object.provisions.map((e: any) => globalThis.Number(e)) + : [], + consumables: globalThis.Array.isArray(object?.consumables) + ? object.consumables.map((e: any) => globalThis.Number(e)) + : [], + }; + }, + + toJSON(message: GameModeRole): unknown { + const obj: any = {}; + if (message.provisions?.length) { + obj.provisions = message.provisions.map((e) => Math.round(e)); + } + if (message.consumables?.length) { + obj.consumables = message.consumables.map((e) => Math.round(e)); + } + return obj; + }, + + create, I>>(base?: I): GameModeRole { + return GameModeRole.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): GameModeRole { + const message = createBaseGameModeRole(); + message.provisions = object.provisions?.map((e) => e) || []; + message.consumables = object.consumables?.map((e) => e) || []; + return message; + }, +}; + +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; + +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 }; + +function isObject(value: any): boolean { + return typeof value === "object" && value !== null; +} + +function isSet(value: any): boolean { + return value !== null && value !== undefined; +} + +function assertSet(field: string, value: T | undefined): T { + if (!isSet(value)) { + throw new TypeError(`Required field ${field} is not set`); + } + + return value as T; +} + +export interface MessageFns { + encode(message: T, writer?: BinaryWriter): BinaryWriter; + decode(input: BinaryReader | Uint8Array, length?: number): T; + fromJSON(object: any): T; + toJSON(message: T): unknown; + create, I>>(base?: I): T; + fromPartial, I>>(object: I): T; +} diff --git a/packages/core/src/protos/index.ts b/packages/core/src/protos/index.ts new file mode 100644 index 000000000..8f8085d62 --- /dev/null +++ b/packages/core/src/protos/index.ts @@ -0,0 +1,12 @@ +// @ts-nocheck +export * from './average_definitions.ts'; +export * from './camouflage_definitions.ts'; +export * from './consumable_definitions.ts'; +export * from './equipment_definitions.ts'; +export * from './game_definitions.ts'; +export * from './map_definitions.ts'; +export * from './model_definitions.ts'; +export * from './provision_definitions.ts'; +export * from './reviews.ts'; +export * from './skill_definitions.ts'; +export * from './tank_definitions.ts'; \ No newline at end of file diff --git a/packages/core/src/protos/map_definitions.ts b/packages/core/src/protos/map_definitions.ts new file mode 100644 index 000000000..4485541a6 --- /dev/null +++ b/packages/core/src/protos/map_definitions.ts @@ -0,0 +1,295 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v2.2.2 +// protoc v5.28.2 +// source: packages/core/src/protos/map_definitions.proto + +/* eslint-disable */ +import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; + +export const protobufPackage = "blitzkit"; + +export interface MapDefinitions { + maps: { [key: number]: MapDefinition }; +} + +export interface MapDefinitions_MapsEntry { + key: number; + value: MapDefinition | undefined; +} + +export interface MapDefinition { + id: number; + name: string; +} + +function createBaseMapDefinitions(): MapDefinitions { + return { maps: {} }; +} + +export const MapDefinitions: MessageFns = { + encode(message: MapDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + Object.entries(message.maps).forEach(([key, value]) => { + MapDefinitions_MapsEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join(); + }); + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): MapDefinitions { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseMapDefinitions(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + const entry1 = MapDefinitions_MapsEntry.decode(reader, reader.uint32()); + if (entry1.value !== undefined) { + message.maps[entry1.key] = entry1.value; + } + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): MapDefinitions { + return { + maps: isObject(object.maps) + ? Object.entries(object.maps).reduce<{ [key: number]: MapDefinition }>((acc, [key, value]) => { + acc[globalThis.Number(key)] = MapDefinition.fromJSON(value); + return acc; + }, {}) + : {}, + }; + }, + + toJSON(message: MapDefinitions): unknown { + const obj: any = {}; + if (message.maps) { + const entries = Object.entries(message.maps); + if (entries.length > 0) { + obj.maps = {}; + entries.forEach(([k, v]) => { + obj.maps[k] = MapDefinition.toJSON(v); + }); + } + } + return obj; + }, + + create, I>>(base?: I): MapDefinitions { + return MapDefinitions.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): MapDefinitions { + const message = createBaseMapDefinitions(); + message.maps = Object.entries(object.maps ?? {}).reduce<{ [key: number]: MapDefinition }>((acc, [key, value]) => { + if (value !== undefined) { + acc[globalThis.Number(key)] = MapDefinition.fromPartial(value); + } + return acc; + }, {}); + return message; + }, +}; + +function createBaseMapDefinitions_MapsEntry(): MapDefinitions_MapsEntry { + return { key: 0, value: createBaseMapDefinition() }; +} + +export const MapDefinitions_MapsEntry: MessageFns = { + encode(message: MapDefinitions_MapsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.key !== undefined) { + writer.uint32(8).int32(message.key); + } + if (message.value !== undefined) { + MapDefinition.encode(message.value, writer.uint32(18).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): MapDefinitions_MapsEntry { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseMapDefinitions_MapsEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + + message.key = reader.int32(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.value = MapDefinition.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): MapDefinitions_MapsEntry { + return { + key: globalThis.Number(assertSet("MapDefinitions_MapsEntry.key", object.key)), + value: MapDefinition.fromJSON(assertSet("MapDefinitions_MapsEntry.value", object.value)), + }; + }, + + toJSON(message: MapDefinitions_MapsEntry): unknown { + const obj: any = {}; + if (message.key !== undefined) { + obj.key = Math.round(message.key); + } + if (message.value !== undefined) { + obj.value = MapDefinition.toJSON(message.value); + } + return obj; + }, + + create, I>>(base?: I): MapDefinitions_MapsEntry { + return MapDefinitions_MapsEntry.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): MapDefinitions_MapsEntry { + const message = createBaseMapDefinitions_MapsEntry(); + message.key = object.key ?? 0; + message.value = (object.value !== undefined && object.value !== null) + ? MapDefinition.fromPartial(object.value) + : undefined; + return message; + }, +}; + +function createBaseMapDefinition(): MapDefinition { + return { id: 0, name: "" }; +} + +export const MapDefinition: MessageFns = { + encode(message: MapDefinition, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.id !== 0) { + writer.uint32(8).uint32(message.id); + } + if (message.name !== "") { + writer.uint32(18).string(message.name); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): MapDefinition { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseMapDefinition(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + + message.id = reader.uint32(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): MapDefinition { + return { + id: globalThis.Number(assertSet("MapDefinition.id", object.id)), + name: globalThis.String(assertSet("MapDefinition.name", object.name)), + }; + }, + + toJSON(message: MapDefinition): unknown { + const obj: any = {}; + if (message.id !== 0) { + obj.id = Math.round(message.id); + } + if (message.name !== "") { + obj.name = message.name; + } + return obj; + }, + + create, I>>(base?: I): MapDefinition { + return MapDefinition.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): MapDefinition { + const message = createBaseMapDefinition(); + message.id = object.id ?? 0; + message.name = object.name ?? ""; + return message; + }, +}; + +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; + +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 }; + +function isObject(value: any): boolean { + return typeof value === "object" && value !== null; +} + +function isSet(value: any): boolean { + return value !== null && value !== undefined; +} + +function assertSet(field: string, value: T | undefined): T { + if (!isSet(value)) { + throw new TypeError(`Required field ${field} is not set`); + } + + return value as T; +} + +export interface MessageFns { + encode(message: T, writer?: BinaryWriter): BinaryWriter; + decode(input: BinaryReader | Uint8Array, length?: number): T; + fromJSON(object: any): T; + toJSON(message: T): unknown; + create, I>>(base?: I): T; + fromPartial, I>>(object: I): T; +} diff --git a/packages/core/src/protos/model_definitions.ts b/packages/core/src/protos/model_definitions.ts new file mode 100644 index 000000000..3adb2b49a --- /dev/null +++ b/packages/core/src/protos/model_definitions.ts @@ -0,0 +1,1874 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v2.2.2 +// protoc v5.28.2 +// source: packages/core/src/protos/model_definitions.proto + +/* eslint-disable */ +import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; + +export const protobufPackage = "blitzkit"; + +export interface ModelDefinitions { + models: { [key: number]: ModelDefinition }; +} + +export interface ModelDefinitions_ModelsEntry { + key: number; + value: ModelDefinition | undefined; +} + +export interface ModelDefinition { + armor: Armor; + turret_origin: Vector3; + initial_turret_rotation?: InitialTurretRotation | undefined; + turrets: { [key: number]: TurretModelDefinition }; + tracks: { [key: number]: TrackModelDefinition }; + bounding_box: BoundingBox; +} + +export interface ModelDefinition_TurretsEntry { + key: number; + value: TurretModelDefinition | undefined; +} + +export interface ModelDefinition_TracksEntry { + key: number; + value: TrackModelDefinition | undefined; +} + +export interface Armor { + thickness: { [key: number]: number }; + spaced: number[]; +} + +export interface Armor_ThicknessEntry { + key: number; + value: number; +} + +export interface Vector3 { + x: number; + y: number; + z: number; +} + +export interface InitialTurretRotation { + yaw: number; + pitch: number; + roll: number; +} + +export interface TurretModelDefinition { + bounding_box: BoundingBox; + armor: Armor; + model_id: number; + gun_origin: Vector3; + guns: { [key: number]: GunModelDefinition }; + yaw?: YawLimits | undefined; +} + +export interface TurretModelDefinition_GunsEntry { + key: number; + value: GunModelDefinition | undefined; +} + +export interface YawLimits { + min: number; + max: number; +} + +export interface BoundingBox { + min: Vector3; + max: Vector3; +} + +export interface TrackModelDefinition { + thickness: number; + origin: Vector3; +} + +export interface GunModelDefinition { + armor: Armor; + thickness: number; + model_id: number; + pitch: PitchLimits; + mask?: number | undefined; +} + +export interface PitchLimits { + min: number; + max: number; + front?: PitchLimitsExtrema | undefined; + back?: PitchLimitsExtrema | undefined; + transition?: number | undefined; +} + +export interface PitchLimitsExtrema { + min: number; + max: number; + range: number; +} + +function createBaseModelDefinitions(): ModelDefinitions { + return { models: {} }; +} + +export const ModelDefinitions: MessageFns = { + encode(message: ModelDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + Object.entries(message.models).forEach(([key, value]) => { + ModelDefinitions_ModelsEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join(); + }); + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): ModelDefinitions { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseModelDefinitions(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + const entry1 = ModelDefinitions_ModelsEntry.decode(reader, reader.uint32()); + if (entry1.value !== undefined) { + message.models[entry1.key] = entry1.value; + } + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): ModelDefinitions { + return { + models: isObject(object.models) + ? Object.entries(object.models).reduce<{ [key: number]: ModelDefinition }>((acc, [key, value]) => { + acc[globalThis.Number(key)] = ModelDefinition.fromJSON(value); + return acc; + }, {}) + : {}, + }; + }, + + toJSON(message: ModelDefinitions): unknown { + const obj: any = {}; + if (message.models) { + const entries = Object.entries(message.models); + if (entries.length > 0) { + obj.models = {}; + entries.forEach(([k, v]) => { + obj.models[k] = ModelDefinition.toJSON(v); + }); + } + } + return obj; + }, + + create, I>>(base?: I): ModelDefinitions { + return ModelDefinitions.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): ModelDefinitions { + const message = createBaseModelDefinitions(); + message.models = Object.entries(object.models ?? {}).reduce<{ [key: number]: ModelDefinition }>( + (acc, [key, value]) => { + if (value !== undefined) { + acc[globalThis.Number(key)] = ModelDefinition.fromPartial(value); + } + return acc; + }, + {}, + ); + return message; + }, +}; + +function createBaseModelDefinitions_ModelsEntry(): ModelDefinitions_ModelsEntry { + return { key: 0, value: createBaseModelDefinition() }; +} + +export const ModelDefinitions_ModelsEntry: MessageFns = { + encode(message: ModelDefinitions_ModelsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.key !== undefined) { + writer.uint32(8).uint32(message.key); + } + if (message.value !== undefined) { + ModelDefinition.encode(message.value, writer.uint32(18).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): ModelDefinitions_ModelsEntry { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseModelDefinitions_ModelsEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + + message.key = reader.uint32(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.value = ModelDefinition.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): ModelDefinitions_ModelsEntry { + return { + key: globalThis.Number(assertSet("ModelDefinitions_ModelsEntry.key", object.key)), + value: ModelDefinition.fromJSON(assertSet("ModelDefinitions_ModelsEntry.value", object.value)), + }; + }, + + toJSON(message: ModelDefinitions_ModelsEntry): unknown { + const obj: any = {}; + if (message.key !== undefined) { + obj.key = Math.round(message.key); + } + if (message.value !== undefined) { + obj.value = ModelDefinition.toJSON(message.value); + } + return obj; + }, + + create, I>>(base?: I): ModelDefinitions_ModelsEntry { + return ModelDefinitions_ModelsEntry.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): ModelDefinitions_ModelsEntry { + const message = createBaseModelDefinitions_ModelsEntry(); + message.key = object.key ?? 0; + message.value = (object.value !== undefined && object.value !== null) + ? ModelDefinition.fromPartial(object.value) + : undefined; + return message; + }, +}; + +function createBaseModelDefinition(): ModelDefinition { + return { + armor: createBaseArmor(), + turret_origin: createBaseVector3(), + initial_turret_rotation: undefined, + turrets: {}, + tracks: {}, + bounding_box: createBaseBoundingBox(), + }; +} + +export const ModelDefinition: MessageFns = { + encode(message: ModelDefinition, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.armor !== undefined) { + Armor.encode(message.armor, writer.uint32(10).fork()).join(); + } + if (message.turret_origin !== undefined) { + Vector3.encode(message.turret_origin, writer.uint32(18).fork()).join(); + } + if (message.initial_turret_rotation !== undefined) { + InitialTurretRotation.encode(message.initial_turret_rotation, writer.uint32(26).fork()).join(); + } + Object.entries(message.turrets).forEach(([key, value]) => { + ModelDefinition_TurretsEntry.encode({ key: key as any, value }, writer.uint32(34).fork()).join(); + }); + Object.entries(message.tracks).forEach(([key, value]) => { + ModelDefinition_TracksEntry.encode({ key: key as any, value }, writer.uint32(42).fork()).join(); + }); + if (message.bounding_box !== undefined) { + BoundingBox.encode(message.bounding_box, writer.uint32(50).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): ModelDefinition { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseModelDefinition(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + message.armor = Armor.decode(reader, reader.uint32()); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.turret_origin = Vector3.decode(reader, reader.uint32()); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + + message.initial_turret_rotation = InitialTurretRotation.decode(reader, reader.uint32()); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + + const entry4 = ModelDefinition_TurretsEntry.decode(reader, reader.uint32()); + if (entry4.value !== undefined) { + message.turrets[entry4.key] = entry4.value; + } + continue; + } + case 5: { + if (tag !== 42) { + break; + } + + const entry5 = ModelDefinition_TracksEntry.decode(reader, reader.uint32()); + if (entry5.value !== undefined) { + message.tracks[entry5.key] = entry5.value; + } + continue; + } + case 6: { + if (tag !== 50) { + break; + } + + message.bounding_box = BoundingBox.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): ModelDefinition { + return { + armor: Armor.fromJSON(assertSet("ModelDefinition.armor", object.armor)), + turret_origin: Vector3.fromJSON(assertSet("ModelDefinition.turret_origin", object.turret_origin)), + initial_turret_rotation: isSet(object.initial_turret_rotation) + ? InitialTurretRotation.fromJSON(object.initial_turret_rotation) + : undefined, + turrets: isObject(object.turrets) + ? Object.entries(object.turrets).reduce<{ [key: number]: TurretModelDefinition }>((acc, [key, value]) => { + acc[globalThis.Number(key)] = TurretModelDefinition.fromJSON(value); + return acc; + }, {}) + : {}, + tracks: isObject(object.tracks) + ? Object.entries(object.tracks).reduce<{ [key: number]: TrackModelDefinition }>((acc, [key, value]) => { + acc[globalThis.Number(key)] = TrackModelDefinition.fromJSON(value); + return acc; + }, {}) + : {}, + bounding_box: BoundingBox.fromJSON(assertSet("ModelDefinition.bounding_box", object.bounding_box)), + }; + }, + + toJSON(message: ModelDefinition): unknown { + const obj: any = {}; + if (message.armor !== undefined) { + obj.armor = Armor.toJSON(message.armor); + } + if (message.turret_origin !== undefined) { + obj.turret_origin = Vector3.toJSON(message.turret_origin); + } + if (message.initial_turret_rotation !== undefined) { + obj.initial_turret_rotation = InitialTurretRotation.toJSON(message.initial_turret_rotation); + } + if (message.turrets) { + const entries = Object.entries(message.turrets); + if (entries.length > 0) { + obj.turrets = {}; + entries.forEach(([k, v]) => { + obj.turrets[k] = TurretModelDefinition.toJSON(v); + }); + } + } + if (message.tracks) { + const entries = Object.entries(message.tracks); + if (entries.length > 0) { + obj.tracks = {}; + entries.forEach(([k, v]) => { + obj.tracks[k] = TrackModelDefinition.toJSON(v); + }); + } + } + if (message.bounding_box !== undefined) { + obj.bounding_box = BoundingBox.toJSON(message.bounding_box); + } + return obj; + }, + + create, I>>(base?: I): ModelDefinition { + return ModelDefinition.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): ModelDefinition { + const message = createBaseModelDefinition(); + message.armor = (object.armor !== undefined && object.armor !== null) + ? Armor.fromPartial(object.armor) + : createBaseArmor(); + message.turret_origin = (object.turret_origin !== undefined && object.turret_origin !== null) + ? Vector3.fromPartial(object.turret_origin) + : createBaseVector3(); + message.initial_turret_rotation = + (object.initial_turret_rotation !== undefined && object.initial_turret_rotation !== null) + ? InitialTurretRotation.fromPartial(object.initial_turret_rotation) + : undefined; + message.turrets = Object.entries(object.turrets ?? {}).reduce<{ [key: number]: TurretModelDefinition }>( + (acc, [key, value]) => { + if (value !== undefined) { + acc[globalThis.Number(key)] = TurretModelDefinition.fromPartial(value); + } + return acc; + }, + {}, + ); + message.tracks = Object.entries(object.tracks ?? {}).reduce<{ [key: number]: TrackModelDefinition }>( + (acc, [key, value]) => { + if (value !== undefined) { + acc[globalThis.Number(key)] = TrackModelDefinition.fromPartial(value); + } + return acc; + }, + {}, + ); + message.bounding_box = (object.bounding_box !== undefined && object.bounding_box !== null) + ? BoundingBox.fromPartial(object.bounding_box) + : createBaseBoundingBox(); + return message; + }, +}; + +function createBaseModelDefinition_TurretsEntry(): ModelDefinition_TurretsEntry { + return { key: 0, value: createBaseTurretModelDefinition() }; +} + +export const ModelDefinition_TurretsEntry: MessageFns = { + encode(message: ModelDefinition_TurretsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.key !== undefined) { + writer.uint32(8).uint32(message.key); + } + if (message.value !== undefined) { + TurretModelDefinition.encode(message.value, writer.uint32(18).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): ModelDefinition_TurretsEntry { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseModelDefinition_TurretsEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + + message.key = reader.uint32(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.value = TurretModelDefinition.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): ModelDefinition_TurretsEntry { + return { + key: globalThis.Number(assertSet("ModelDefinition_TurretsEntry.key", object.key)), + value: TurretModelDefinition.fromJSON(assertSet("ModelDefinition_TurretsEntry.value", object.value)), + }; + }, + + toJSON(message: ModelDefinition_TurretsEntry): unknown { + const obj: any = {}; + if (message.key !== undefined) { + obj.key = Math.round(message.key); + } + if (message.value !== undefined) { + obj.value = TurretModelDefinition.toJSON(message.value); + } + return obj; + }, + + create, I>>(base?: I): ModelDefinition_TurretsEntry { + return ModelDefinition_TurretsEntry.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): ModelDefinition_TurretsEntry { + const message = createBaseModelDefinition_TurretsEntry(); + message.key = object.key ?? 0; + message.value = (object.value !== undefined && object.value !== null) + ? TurretModelDefinition.fromPartial(object.value) + : undefined; + return message; + }, +}; + +function createBaseModelDefinition_TracksEntry(): ModelDefinition_TracksEntry { + return { key: 0, value: createBaseTrackModelDefinition() }; +} + +export const ModelDefinition_TracksEntry: MessageFns = { + encode(message: ModelDefinition_TracksEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.key !== undefined) { + writer.uint32(8).uint32(message.key); + } + if (message.value !== undefined) { + TrackModelDefinition.encode(message.value, writer.uint32(18).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): ModelDefinition_TracksEntry { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseModelDefinition_TracksEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + + message.key = reader.uint32(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.value = TrackModelDefinition.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): ModelDefinition_TracksEntry { + return { + key: globalThis.Number(assertSet("ModelDefinition_TracksEntry.key", object.key)), + value: TrackModelDefinition.fromJSON(assertSet("ModelDefinition_TracksEntry.value", object.value)), + }; + }, + + toJSON(message: ModelDefinition_TracksEntry): unknown { + const obj: any = {}; + if (message.key !== undefined) { + obj.key = Math.round(message.key); + } + if (message.value !== undefined) { + obj.value = TrackModelDefinition.toJSON(message.value); + } + return obj; + }, + + create, I>>(base?: I): ModelDefinition_TracksEntry { + return ModelDefinition_TracksEntry.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): ModelDefinition_TracksEntry { + const message = createBaseModelDefinition_TracksEntry(); + message.key = object.key ?? 0; + message.value = (object.value !== undefined && object.value !== null) + ? TrackModelDefinition.fromPartial(object.value) + : undefined; + return message; + }, +}; + +function createBaseArmor(): Armor { + return { thickness: {}, spaced: [] }; +} + +export const Armor: MessageFns = { + encode(message: Armor, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + Object.entries(message.thickness).forEach(([key, value]) => { + Armor_ThicknessEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join(); + }); + writer.uint32(18).fork(); + for (const v of message.spaced) { + writer.uint32(v); + } + writer.join(); + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): Armor { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseArmor(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + const entry1 = Armor_ThicknessEntry.decode(reader, reader.uint32()); + if (entry1.value !== undefined) { + message.thickness[entry1.key] = entry1.value; + } + continue; + } + case 2: { + if (tag === 16) { + message.spaced.push(reader.uint32()); + + continue; + } + + if (tag === 18) { + const end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) { + message.spaced.push(reader.uint32()); + } + + continue; + } + + break; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): Armor { + return { + thickness: isObject(object.thickness) + ? Object.entries(object.thickness).reduce<{ [key: number]: number }>((acc, [key, value]) => { + acc[globalThis.Number(key)] = Number(value); + return acc; + }, {}) + : {}, + spaced: globalThis.Array.isArray(object?.spaced) ? object.spaced.map((e: any) => globalThis.Number(e)) : [], + }; + }, + + toJSON(message: Armor): unknown { + const obj: any = {}; + if (message.thickness) { + const entries = Object.entries(message.thickness); + if (entries.length > 0) { + obj.thickness = {}; + entries.forEach(([k, v]) => { + obj.thickness[k] = v; + }); + } + } + if (message.spaced?.length) { + obj.spaced = message.spaced.map((e) => Math.round(e)); + } + return obj; + }, + + create, I>>(base?: I): Armor { + return Armor.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): Armor { + const message = createBaseArmor(); + message.thickness = Object.entries(object.thickness ?? {}).reduce<{ [key: number]: number }>( + (acc, [key, value]) => { + if (value !== undefined) { + acc[globalThis.Number(key)] = globalThis.Number(value); + } + return acc; + }, + {}, + ); + message.spaced = object.spaced?.map((e) => e) || []; + return message; + }, +}; + +function createBaseArmor_ThicknessEntry(): Armor_ThicknessEntry { + return { key: 0, value: 0 }; +} + +export const Armor_ThicknessEntry: MessageFns = { + encode(message: Armor_ThicknessEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.key !== undefined) { + writer.uint32(8).uint32(message.key); + } + if (message.value !== undefined) { + writer.uint32(21).float(message.value); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): Armor_ThicknessEntry { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseArmor_ThicknessEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + + message.key = reader.uint32(); + continue; + } + case 2: { + if (tag !== 21) { + break; + } + + message.value = reader.float(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): Armor_ThicknessEntry { + return { + key: globalThis.Number(assertSet("Armor_ThicknessEntry.key", object.key)), + value: globalThis.Number(assertSet("Armor_ThicknessEntry.value", object.value)), + }; + }, + + toJSON(message: Armor_ThicknessEntry): unknown { + const obj: any = {}; + if (message.key !== undefined) { + obj.key = Math.round(message.key); + } + if (message.value !== undefined) { + obj.value = message.value; + } + return obj; + }, + + create, I>>(base?: I): Armor_ThicknessEntry { + return Armor_ThicknessEntry.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): Armor_ThicknessEntry { + const message = createBaseArmor_ThicknessEntry(); + message.key = object.key ?? 0; + message.value = object.value ?? 0; + return message; + }, +}; + +function createBaseVector3(): Vector3 { + return { x: 0, y: 0, z: 0 }; +} + +export const Vector3: MessageFns = { + encode(message: Vector3, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.x !== 0) { + writer.uint32(13).float(message.x); + } + if (message.y !== 0) { + writer.uint32(21).float(message.y); + } + if (message.z !== 0) { + writer.uint32(29).float(message.z); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): Vector3 { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseVector3(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 13) { + break; + } + + message.x = reader.float(); + continue; + } + case 2: { + if (tag !== 21) { + break; + } + + message.y = reader.float(); + continue; + } + case 3: { + if (tag !== 29) { + break; + } + + message.z = reader.float(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): Vector3 { + return { + x: globalThis.Number(assertSet("Vector3.x", object.x)), + y: globalThis.Number(assertSet("Vector3.y", object.y)), + z: globalThis.Number(assertSet("Vector3.z", object.z)), + }; + }, + + toJSON(message: Vector3): unknown { + const obj: any = {}; + if (message.x !== 0) { + obj.x = message.x; + } + if (message.y !== 0) { + obj.y = message.y; + } + if (message.z !== 0) { + obj.z = message.z; + } + return obj; + }, + + create, I>>(base?: I): Vector3 { + return Vector3.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): Vector3 { + const message = createBaseVector3(); + message.x = object.x ?? 0; + message.y = object.y ?? 0; + message.z = object.z ?? 0; + return message; + }, +}; + +function createBaseInitialTurretRotation(): InitialTurretRotation { + return { yaw: 0, pitch: 0, roll: 0 }; +} + +export const InitialTurretRotation: MessageFns = { + encode(message: InitialTurretRotation, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.yaw !== 0) { + writer.uint32(13).float(message.yaw); + } + if (message.pitch !== 0) { + writer.uint32(21).float(message.pitch); + } + if (message.roll !== 0) { + writer.uint32(29).float(message.roll); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): InitialTurretRotation { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseInitialTurretRotation(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 13) { + break; + } + + message.yaw = reader.float(); + continue; + } + case 2: { + if (tag !== 21) { + break; + } + + message.pitch = reader.float(); + continue; + } + case 3: { + if (tag !== 29) { + break; + } + + message.roll = reader.float(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): InitialTurretRotation { + return { + yaw: globalThis.Number(assertSet("InitialTurretRotation.yaw", object.yaw)), + pitch: globalThis.Number(assertSet("InitialTurretRotation.pitch", object.pitch)), + roll: globalThis.Number(assertSet("InitialTurretRotation.roll", object.roll)), + }; + }, + + toJSON(message: InitialTurretRotation): unknown { + const obj: any = {}; + if (message.yaw !== 0) { + obj.yaw = message.yaw; + } + if (message.pitch !== 0) { + obj.pitch = message.pitch; + } + if (message.roll !== 0) { + obj.roll = message.roll; + } + return obj; + }, + + create, I>>(base?: I): InitialTurretRotation { + return InitialTurretRotation.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): InitialTurretRotation { + const message = createBaseInitialTurretRotation(); + message.yaw = object.yaw ?? 0; + message.pitch = object.pitch ?? 0; + message.roll = object.roll ?? 0; + return message; + }, +}; + +function createBaseTurretModelDefinition(): TurretModelDefinition { + return { + bounding_box: createBaseBoundingBox(), + armor: createBaseArmor(), + model_id: 0, + gun_origin: createBaseVector3(), + guns: {}, + yaw: undefined, + }; +} + +export const TurretModelDefinition: MessageFns = { + encode(message: TurretModelDefinition, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.bounding_box !== undefined) { + BoundingBox.encode(message.bounding_box, writer.uint32(10).fork()).join(); + } + if (message.armor !== undefined) { + Armor.encode(message.armor, writer.uint32(18).fork()).join(); + } + if (message.model_id !== 0) { + writer.uint32(24).uint32(message.model_id); + } + if (message.gun_origin !== undefined) { + Vector3.encode(message.gun_origin, writer.uint32(34).fork()).join(); + } + Object.entries(message.guns).forEach(([key, value]) => { + TurretModelDefinition_GunsEntry.encode({ key: key as any, value }, writer.uint32(42).fork()).join(); + }); + if (message.yaw !== undefined) { + YawLimits.encode(message.yaw, writer.uint32(50).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): TurretModelDefinition { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseTurretModelDefinition(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + message.bounding_box = BoundingBox.decode(reader, reader.uint32()); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.armor = Armor.decode(reader, reader.uint32()); + continue; + } + case 3: { + if (tag !== 24) { + break; + } + + message.model_id = reader.uint32(); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + + message.gun_origin = Vector3.decode(reader, reader.uint32()); + continue; + } + case 5: { + if (tag !== 42) { + break; + } + + const entry5 = TurretModelDefinition_GunsEntry.decode(reader, reader.uint32()); + if (entry5.value !== undefined) { + message.guns[entry5.key] = entry5.value; + } + continue; + } + case 6: { + if (tag !== 50) { + break; + } + + message.yaw = YawLimits.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): TurretModelDefinition { + return { + bounding_box: BoundingBox.fromJSON(assertSet("TurretModelDefinition.bounding_box", object.bounding_box)), + armor: Armor.fromJSON(assertSet("TurretModelDefinition.armor", object.armor)), + model_id: globalThis.Number(assertSet("TurretModelDefinition.model_id", object.model_id)), + gun_origin: Vector3.fromJSON(assertSet("TurretModelDefinition.gun_origin", object.gun_origin)), + guns: isObject(object.guns) + ? Object.entries(object.guns).reduce<{ [key: number]: GunModelDefinition }>((acc, [key, value]) => { + acc[globalThis.Number(key)] = GunModelDefinition.fromJSON(value); + return acc; + }, {}) + : {}, + yaw: isSet(object.yaw) ? YawLimits.fromJSON(object.yaw) : undefined, + }; + }, + + toJSON(message: TurretModelDefinition): unknown { + const obj: any = {}; + if (message.bounding_box !== undefined) { + obj.bounding_box = BoundingBox.toJSON(message.bounding_box); + } + if (message.armor !== undefined) { + obj.armor = Armor.toJSON(message.armor); + } + if (message.model_id !== 0) { + obj.model_id = Math.round(message.model_id); + } + if (message.gun_origin !== undefined) { + obj.gun_origin = Vector3.toJSON(message.gun_origin); + } + if (message.guns) { + const entries = Object.entries(message.guns); + if (entries.length > 0) { + obj.guns = {}; + entries.forEach(([k, v]) => { + obj.guns[k] = GunModelDefinition.toJSON(v); + }); + } + } + if (message.yaw !== undefined) { + obj.yaw = YawLimits.toJSON(message.yaw); + } + return obj; + }, + + create, I>>(base?: I): TurretModelDefinition { + return TurretModelDefinition.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): TurretModelDefinition { + const message = createBaseTurretModelDefinition(); + message.bounding_box = (object.bounding_box !== undefined && object.bounding_box !== null) + ? BoundingBox.fromPartial(object.bounding_box) + : createBaseBoundingBox(); + message.armor = (object.armor !== undefined && object.armor !== null) + ? Armor.fromPartial(object.armor) + : createBaseArmor(); + message.model_id = object.model_id ?? 0; + message.gun_origin = (object.gun_origin !== undefined && object.gun_origin !== null) + ? Vector3.fromPartial(object.gun_origin) + : createBaseVector3(); + message.guns = Object.entries(object.guns ?? {}).reduce<{ [key: number]: GunModelDefinition }>( + (acc, [key, value]) => { + if (value !== undefined) { + acc[globalThis.Number(key)] = GunModelDefinition.fromPartial(value); + } + return acc; + }, + {}, + ); + message.yaw = (object.yaw !== undefined && object.yaw !== null) ? YawLimits.fromPartial(object.yaw) : undefined; + return message; + }, +}; + +function createBaseTurretModelDefinition_GunsEntry(): TurretModelDefinition_GunsEntry { + return { key: 0, value: createBaseGunModelDefinition() }; +} + +export const TurretModelDefinition_GunsEntry: MessageFns = { + encode(message: TurretModelDefinition_GunsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.key !== undefined) { + writer.uint32(8).uint32(message.key); + } + if (message.value !== undefined) { + GunModelDefinition.encode(message.value, writer.uint32(18).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): TurretModelDefinition_GunsEntry { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseTurretModelDefinition_GunsEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + + message.key = reader.uint32(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.value = GunModelDefinition.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): TurretModelDefinition_GunsEntry { + return { + key: globalThis.Number(assertSet("TurretModelDefinition_GunsEntry.key", object.key)), + value: GunModelDefinition.fromJSON(assertSet("TurretModelDefinition_GunsEntry.value", object.value)), + }; + }, + + toJSON(message: TurretModelDefinition_GunsEntry): unknown { + const obj: any = {}; + if (message.key !== undefined) { + obj.key = Math.round(message.key); + } + if (message.value !== undefined) { + obj.value = GunModelDefinition.toJSON(message.value); + } + return obj; + }, + + create, I>>(base?: I): TurretModelDefinition_GunsEntry { + return TurretModelDefinition_GunsEntry.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>( + object: I, + ): TurretModelDefinition_GunsEntry { + const message = createBaseTurretModelDefinition_GunsEntry(); + message.key = object.key ?? 0; + message.value = (object.value !== undefined && object.value !== null) + ? GunModelDefinition.fromPartial(object.value) + : undefined; + return message; + }, +}; + +function createBaseYawLimits(): YawLimits { + return { min: 0, max: 0 }; +} + +export const YawLimits: MessageFns = { + encode(message: YawLimits, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.min !== 0) { + writer.uint32(13).float(message.min); + } + if (message.max !== 0) { + writer.uint32(21).float(message.max); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): YawLimits { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseYawLimits(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 13) { + break; + } + + message.min = reader.float(); + continue; + } + case 2: { + if (tag !== 21) { + break; + } + + message.max = reader.float(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): YawLimits { + return { + min: globalThis.Number(assertSet("YawLimits.min", object.min)), + max: globalThis.Number(assertSet("YawLimits.max", object.max)), + }; + }, + + toJSON(message: YawLimits): unknown { + const obj: any = {}; + if (message.min !== 0) { + obj.min = message.min; + } + if (message.max !== 0) { + obj.max = message.max; + } + return obj; + }, + + create, I>>(base?: I): YawLimits { + return YawLimits.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): YawLimits { + const message = createBaseYawLimits(); + message.min = object.min ?? 0; + message.max = object.max ?? 0; + return message; + }, +}; + +function createBaseBoundingBox(): BoundingBox { + return { min: createBaseVector3(), max: createBaseVector3() }; +} + +export const BoundingBox: MessageFns = { + encode(message: BoundingBox, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.min !== undefined) { + Vector3.encode(message.min, writer.uint32(10).fork()).join(); + } + if (message.max !== undefined) { + Vector3.encode(message.max, writer.uint32(18).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): BoundingBox { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseBoundingBox(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + message.min = Vector3.decode(reader, reader.uint32()); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.max = Vector3.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): BoundingBox { + return { + min: Vector3.fromJSON(assertSet("BoundingBox.min", object.min)), + max: Vector3.fromJSON(assertSet("BoundingBox.max", object.max)), + }; + }, + + toJSON(message: BoundingBox): unknown { + const obj: any = {}; + if (message.min !== undefined) { + obj.min = Vector3.toJSON(message.min); + } + if (message.max !== undefined) { + obj.max = Vector3.toJSON(message.max); + } + return obj; + }, + + create, I>>(base?: I): BoundingBox { + return BoundingBox.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): BoundingBox { + const message = createBaseBoundingBox(); + message.min = (object.min !== undefined && object.min !== null) + ? Vector3.fromPartial(object.min) + : createBaseVector3(); + message.max = (object.max !== undefined && object.max !== null) + ? Vector3.fromPartial(object.max) + : createBaseVector3(); + return message; + }, +}; + +function createBaseTrackModelDefinition(): TrackModelDefinition { + return { thickness: 0, origin: createBaseVector3() }; +} + +export const TrackModelDefinition: MessageFns = { + encode(message: TrackModelDefinition, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.thickness !== 0) { + writer.uint32(13).float(message.thickness); + } + if (message.origin !== undefined) { + Vector3.encode(message.origin, writer.uint32(18).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): TrackModelDefinition { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseTrackModelDefinition(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 13) { + break; + } + + message.thickness = reader.float(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.origin = Vector3.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): TrackModelDefinition { + return { + thickness: globalThis.Number(assertSet("TrackModelDefinition.thickness", object.thickness)), + origin: Vector3.fromJSON(assertSet("TrackModelDefinition.origin", object.origin)), + }; + }, + + toJSON(message: TrackModelDefinition): unknown { + const obj: any = {}; + if (message.thickness !== 0) { + obj.thickness = message.thickness; + } + if (message.origin !== undefined) { + obj.origin = Vector3.toJSON(message.origin); + } + return obj; + }, + + create, I>>(base?: I): TrackModelDefinition { + return TrackModelDefinition.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): TrackModelDefinition { + const message = createBaseTrackModelDefinition(); + message.thickness = object.thickness ?? 0; + message.origin = (object.origin !== undefined && object.origin !== null) + ? Vector3.fromPartial(object.origin) + : createBaseVector3(); + return message; + }, +}; + +function createBaseGunModelDefinition(): GunModelDefinition { + return { armor: createBaseArmor(), thickness: 0, model_id: 0, pitch: createBasePitchLimits(), mask: undefined }; +} + +export const GunModelDefinition: MessageFns = { + encode(message: GunModelDefinition, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.armor !== undefined) { + Armor.encode(message.armor, writer.uint32(10).fork()).join(); + } + if (message.thickness !== 0) { + writer.uint32(21).float(message.thickness); + } + if (message.model_id !== 0) { + writer.uint32(24).uint32(message.model_id); + } + if (message.pitch !== undefined) { + PitchLimits.encode(message.pitch, writer.uint32(34).fork()).join(); + } + if (message.mask !== undefined && message.mask !== undefined) { + writer.uint32(45).float(message.mask); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): GunModelDefinition { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGunModelDefinition(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + message.armor = Armor.decode(reader, reader.uint32()); + continue; + } + case 2: { + if (tag !== 21) { + break; + } + + message.thickness = reader.float(); + continue; + } + case 3: { + if (tag !== 24) { + break; + } + + message.model_id = reader.uint32(); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + + message.pitch = PitchLimits.decode(reader, reader.uint32()); + continue; + } + case 5: { + if (tag !== 45) { + break; + } + + message.mask = reader.float(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): GunModelDefinition { + return { + armor: Armor.fromJSON(assertSet("GunModelDefinition.armor", object.armor)), + thickness: globalThis.Number(assertSet("GunModelDefinition.thickness", object.thickness)), + model_id: globalThis.Number(assertSet("GunModelDefinition.model_id", object.model_id)), + pitch: PitchLimits.fromJSON(assertSet("GunModelDefinition.pitch", object.pitch)), + mask: isSet(object.mask) ? globalThis.Number(object.mask) : undefined, + }; + }, + + toJSON(message: GunModelDefinition): unknown { + const obj: any = {}; + if (message.armor !== undefined) { + obj.armor = Armor.toJSON(message.armor); + } + if (message.thickness !== 0) { + obj.thickness = message.thickness; + } + if (message.model_id !== 0) { + obj.model_id = Math.round(message.model_id); + } + if (message.pitch !== undefined) { + obj.pitch = PitchLimits.toJSON(message.pitch); + } + if (message.mask !== undefined && message.mask !== undefined) { + obj.mask = message.mask; + } + return obj; + }, + + create, I>>(base?: I): GunModelDefinition { + return GunModelDefinition.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): GunModelDefinition { + const message = createBaseGunModelDefinition(); + message.armor = (object.armor !== undefined && object.armor !== null) + ? Armor.fromPartial(object.armor) + : createBaseArmor(); + message.thickness = object.thickness ?? 0; + message.model_id = object.model_id ?? 0; + message.pitch = (object.pitch !== undefined && object.pitch !== null) + ? PitchLimits.fromPartial(object.pitch) + : createBasePitchLimits(); + message.mask = object.mask ?? undefined; + return message; + }, +}; + +function createBasePitchLimits(): PitchLimits { + return { min: 0, max: 0, front: undefined, back: undefined, transition: undefined }; +} + +export const PitchLimits: MessageFns = { + encode(message: PitchLimits, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.min !== 0) { + writer.uint32(13).float(message.min); + } + if (message.max !== 0) { + writer.uint32(21).float(message.max); + } + if (message.front !== undefined) { + PitchLimitsExtrema.encode(message.front, writer.uint32(26).fork()).join(); + } + if (message.back !== undefined) { + PitchLimitsExtrema.encode(message.back, writer.uint32(34).fork()).join(); + } + if (message.transition !== undefined && message.transition !== undefined) { + writer.uint32(45).float(message.transition); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): PitchLimits { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBasePitchLimits(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 13) { + break; + } + + message.min = reader.float(); + continue; + } + case 2: { + if (tag !== 21) { + break; + } + + message.max = reader.float(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + + message.front = PitchLimitsExtrema.decode(reader, reader.uint32()); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + + message.back = PitchLimitsExtrema.decode(reader, reader.uint32()); + continue; + } + case 5: { + if (tag !== 45) { + break; + } + + message.transition = reader.float(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): PitchLimits { + return { + min: globalThis.Number(assertSet("PitchLimits.min", object.min)), + max: globalThis.Number(assertSet("PitchLimits.max", object.max)), + front: isSet(object.front) ? PitchLimitsExtrema.fromJSON(object.front) : undefined, + back: isSet(object.back) ? PitchLimitsExtrema.fromJSON(object.back) : undefined, + transition: isSet(object.transition) ? globalThis.Number(object.transition) : undefined, + }; + }, + + toJSON(message: PitchLimits): unknown { + const obj: any = {}; + if (message.min !== 0) { + obj.min = message.min; + } + if (message.max !== 0) { + obj.max = message.max; + } + if (message.front !== undefined) { + obj.front = PitchLimitsExtrema.toJSON(message.front); + } + if (message.back !== undefined) { + obj.back = PitchLimitsExtrema.toJSON(message.back); + } + if (message.transition !== undefined && message.transition !== undefined) { + obj.transition = message.transition; + } + return obj; + }, + + create, I>>(base?: I): PitchLimits { + return PitchLimits.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): PitchLimits { + const message = createBasePitchLimits(); + message.min = object.min ?? 0; + message.max = object.max ?? 0; + message.front = (object.front !== undefined && object.front !== null) + ? PitchLimitsExtrema.fromPartial(object.front) + : undefined; + message.back = (object.back !== undefined && object.back !== null) + ? PitchLimitsExtrema.fromPartial(object.back) + : undefined; + message.transition = object.transition ?? undefined; + return message; + }, +}; + +function createBasePitchLimitsExtrema(): PitchLimitsExtrema { + return { min: 0, max: 0, range: 0 }; +} + +export const PitchLimitsExtrema: MessageFns = { + encode(message: PitchLimitsExtrema, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.min !== 0) { + writer.uint32(13).float(message.min); + } + if (message.max !== 0) { + writer.uint32(21).float(message.max); + } + if (message.range !== 0) { + writer.uint32(29).float(message.range); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): PitchLimitsExtrema { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBasePitchLimitsExtrema(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 13) { + break; + } + + message.min = reader.float(); + continue; + } + case 2: { + if (tag !== 21) { + break; + } + + message.max = reader.float(); + continue; + } + case 3: { + if (tag !== 29) { + break; + } + + message.range = reader.float(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): PitchLimitsExtrema { + return { + min: globalThis.Number(assertSet("PitchLimitsExtrema.min", object.min)), + max: globalThis.Number(assertSet("PitchLimitsExtrema.max", object.max)), + range: globalThis.Number(assertSet("PitchLimitsExtrema.range", object.range)), + }; + }, + + toJSON(message: PitchLimitsExtrema): unknown { + const obj: any = {}; + if (message.min !== 0) { + obj.min = message.min; + } + if (message.max !== 0) { + obj.max = message.max; + } + if (message.range !== 0) { + obj.range = message.range; + } + return obj; + }, + + create, I>>(base?: I): PitchLimitsExtrema { + return PitchLimitsExtrema.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): PitchLimitsExtrema { + const message = createBasePitchLimitsExtrema(); + message.min = object.min ?? 0; + message.max = object.max ?? 0; + message.range = object.range ?? 0; + return message; + }, +}; + +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; + +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 }; + +function isObject(value: any): boolean { + return typeof value === "object" && value !== null; +} + +function isSet(value: any): boolean { + return value !== null && value !== undefined; +} + +function assertSet(field: string, value: T | undefined): T { + if (!isSet(value)) { + throw new TypeError(`Required field ${field} is not set`); + } + + return value as T; +} + +export interface MessageFns { + encode(message: T, writer?: BinaryWriter): BinaryWriter; + decode(input: BinaryReader | Uint8Array, length?: number): T; + fromJSON(object: any): T; + toJSON(message: T): unknown; + create, I>>(base?: I): T; + fromPartial, I>>(object: I): T; +} diff --git a/packages/core/src/protos/provision_definitions.ts b/packages/core/src/protos/provision_definitions.ts new file mode 100644 index 000000000..2914a07de --- /dev/null +++ b/packages/core/src/protos/provision_definitions.ts @@ -0,0 +1,375 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v2.2.2 +// protoc v5.28.2 +// source: packages/core/src/protos/provision_definitions.proto + +/* eslint-disable */ +import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; +import { ConsumableTankFilter } from "./consumable_definitions"; + +export const protobufPackage = "blitzkit"; + +export interface ProvisionDefinitions { + provisions: { [key: number]: Provision }; +} + +export interface ProvisionDefinitions_ProvisionsEntry { + key: number; + value: Provision | undefined; +} + +export interface Provision { + id: number; + name: string; + crew?: number | undefined; + game_mode_exclusive: boolean; + include: ConsumableTankFilter[]; + exclude: ConsumableTankFilter[]; +} + +function createBaseProvisionDefinitions(): ProvisionDefinitions { + return { provisions: {} }; +} + +export const ProvisionDefinitions: MessageFns = { + encode(message: ProvisionDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + Object.entries(message.provisions).forEach(([key, value]) => { + ProvisionDefinitions_ProvisionsEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join(); + }); + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): ProvisionDefinitions { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseProvisionDefinitions(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + const entry1 = ProvisionDefinitions_ProvisionsEntry.decode(reader, reader.uint32()); + if (entry1.value !== undefined) { + message.provisions[entry1.key] = entry1.value; + } + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): ProvisionDefinitions { + return { + provisions: isObject(object.provisions) + ? Object.entries(object.provisions).reduce<{ [key: number]: Provision }>((acc, [key, value]) => { + acc[globalThis.Number(key)] = Provision.fromJSON(value); + return acc; + }, {}) + : {}, + }; + }, + + toJSON(message: ProvisionDefinitions): unknown { + const obj: any = {}; + if (message.provisions) { + const entries = Object.entries(message.provisions); + if (entries.length > 0) { + obj.provisions = {}; + entries.forEach(([k, v]) => { + obj.provisions[k] = Provision.toJSON(v); + }); + } + } + return obj; + }, + + create, I>>(base?: I): ProvisionDefinitions { + return ProvisionDefinitions.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): ProvisionDefinitions { + const message = createBaseProvisionDefinitions(); + message.provisions = Object.entries(object.provisions ?? {}).reduce<{ [key: number]: Provision }>( + (acc, [key, value]) => { + if (value !== undefined) { + acc[globalThis.Number(key)] = Provision.fromPartial(value); + } + return acc; + }, + {}, + ); + return message; + }, +}; + +function createBaseProvisionDefinitions_ProvisionsEntry(): ProvisionDefinitions_ProvisionsEntry { + return { key: 0, value: createBaseProvision() }; +} + +export const ProvisionDefinitions_ProvisionsEntry: MessageFns = { + encode(message: ProvisionDefinitions_ProvisionsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.key !== undefined) { + writer.uint32(8).uint32(message.key); + } + if (message.value !== undefined) { + Provision.encode(message.value, writer.uint32(18).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): ProvisionDefinitions_ProvisionsEntry { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseProvisionDefinitions_ProvisionsEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + + message.key = reader.uint32(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.value = Provision.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): ProvisionDefinitions_ProvisionsEntry { + return { + key: globalThis.Number(assertSet("ProvisionDefinitions_ProvisionsEntry.key", object.key)), + value: Provision.fromJSON(assertSet("ProvisionDefinitions_ProvisionsEntry.value", object.value)), + }; + }, + + toJSON(message: ProvisionDefinitions_ProvisionsEntry): unknown { + const obj: any = {}; + if (message.key !== undefined) { + obj.key = Math.round(message.key); + } + if (message.value !== undefined) { + obj.value = Provision.toJSON(message.value); + } + return obj; + }, + + create, I>>( + base?: I, + ): ProvisionDefinitions_ProvisionsEntry { + return ProvisionDefinitions_ProvisionsEntry.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>( + object: I, + ): ProvisionDefinitions_ProvisionsEntry { + const message = createBaseProvisionDefinitions_ProvisionsEntry(); + message.key = object.key ?? 0; + message.value = (object.value !== undefined && object.value !== null) + ? Provision.fromPartial(object.value) + : undefined; + return message; + }, +}; + +function createBaseProvision(): Provision { + return { id: 0, name: "", crew: undefined, game_mode_exclusive: false, include: [], exclude: [] }; +} + +export const Provision: MessageFns = { + encode(message: Provision, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.id !== 0) { + writer.uint32(8).uint32(message.id); + } + if (message.name !== "") { + writer.uint32(18).string(message.name); + } + if (message.crew !== undefined && message.crew !== undefined) { + writer.uint32(29).float(message.crew); + } + if (message.game_mode_exclusive !== false) { + writer.uint32(40).bool(message.game_mode_exclusive); + } + for (const v of message.include) { + ConsumableTankFilter.encode(v!, writer.uint32(50).fork()).join(); + } + for (const v of message.exclude) { + ConsumableTankFilter.encode(v!, writer.uint32(58).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): Provision { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseProvision(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + + message.id = reader.uint32(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.name = reader.string(); + continue; + } + case 3: { + if (tag !== 29) { + break; + } + + message.crew = reader.float(); + continue; + } + case 5: { + if (tag !== 40) { + break; + } + + message.game_mode_exclusive = reader.bool(); + continue; + } + case 6: { + if (tag !== 50) { + break; + } + + message.include.push(ConsumableTankFilter.decode(reader, reader.uint32())); + continue; + } + case 7: { + if (tag !== 58) { + break; + } + + message.exclude.push(ConsumableTankFilter.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): Provision { + return { + id: globalThis.Number(assertSet("Provision.id", object.id)), + name: globalThis.String(assertSet("Provision.name", object.name)), + crew: isSet(object.crew) ? globalThis.Number(object.crew) : undefined, + game_mode_exclusive: globalThis.Boolean(assertSet("Provision.game_mode_exclusive", object.game_mode_exclusive)), + include: globalThis.Array.isArray(object?.include) + ? object.include.map((e: any) => ConsumableTankFilter.fromJSON(e)) + : [], + exclude: globalThis.Array.isArray(object?.exclude) + ? object.exclude.map((e: any) => ConsumableTankFilter.fromJSON(e)) + : [], + }; + }, + + toJSON(message: Provision): unknown { + const obj: any = {}; + if (message.id !== 0) { + obj.id = Math.round(message.id); + } + if (message.name !== "") { + obj.name = message.name; + } + if (message.crew !== undefined && message.crew !== undefined) { + obj.crew = message.crew; + } + if (message.game_mode_exclusive !== false) { + obj.game_mode_exclusive = message.game_mode_exclusive; + } + if (message.include?.length) { + obj.include = message.include.map((e) => ConsumableTankFilter.toJSON(e)); + } + if (message.exclude?.length) { + obj.exclude = message.exclude.map((e) => ConsumableTankFilter.toJSON(e)); + } + return obj; + }, + + create, I>>(base?: I): Provision { + return Provision.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): Provision { + const message = createBaseProvision(); + message.id = object.id ?? 0; + message.name = object.name ?? ""; + message.crew = object.crew ?? undefined; + message.game_mode_exclusive = object.game_mode_exclusive ?? false; + message.include = object.include?.map((e) => ConsumableTankFilter.fromPartial(e)) || []; + message.exclude = object.exclude?.map((e) => ConsumableTankFilter.fromPartial(e)) || []; + return message; + }, +}; + +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; + +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 }; + +function isObject(value: any): boolean { + return typeof value === "object" && value !== null; +} + +function isSet(value: any): boolean { + return value !== null && value !== undefined; +} + +function assertSet(field: string, value: T | undefined): T { + if (!isSet(value)) { + throw new TypeError(`Required field ${field} is not set`); + } + + return value as T; +} + +export interface MessageFns { + encode(message: T, writer?: BinaryWriter): BinaryWriter; + decode(input: BinaryReader | Uint8Array, length?: number): T; + fromJSON(object: any): T; + toJSON(message: T): unknown; + create, I>>(base?: I): T; + fromPartial, I>>(object: I): T; +} diff --git a/packages/core/src/protos/reviews.ts b/packages/core/src/protos/reviews.ts new file mode 100644 index 000000000..4081dafb5 --- /dev/null +++ b/packages/core/src/protos/reviews.ts @@ -0,0 +1,376 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v2.2.2 +// protoc v5.28.2 +// source: packages/core/src/protos/reviews.proto + +/* eslint-disable */ +import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; + +export const protobufPackage = "blitzkit"; + +export interface Reviews { + reviews: { [key: number]: Review }; +} + +export interface Reviews_ReviewsEntry { + key: number; + value: Review | undefined; +} + +export interface Review { + last_updated: number; + videos: Video[]; +} + +export interface Video { + id: string; + author: string; +} + +function createBaseReviews(): Reviews { + return { reviews: {} }; +} + +export const Reviews: MessageFns = { + encode(message: Reviews, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + Object.entries(message.reviews).forEach(([key, value]) => { + Reviews_ReviewsEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join(); + }); + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): Reviews { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseReviews(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + const entry1 = Reviews_ReviewsEntry.decode(reader, reader.uint32()); + if (entry1.value !== undefined) { + message.reviews[entry1.key] = entry1.value; + } + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): Reviews { + return { + reviews: isObject(object.reviews) + ? Object.entries(object.reviews).reduce<{ [key: number]: Review }>((acc, [key, value]) => { + acc[globalThis.Number(key)] = Review.fromJSON(value); + return acc; + }, {}) + : {}, + }; + }, + + toJSON(message: Reviews): unknown { + const obj: any = {}; + if (message.reviews) { + const entries = Object.entries(message.reviews); + if (entries.length > 0) { + obj.reviews = {}; + entries.forEach(([k, v]) => { + obj.reviews[k] = Review.toJSON(v); + }); + } + } + return obj; + }, + + create, I>>(base?: I): Reviews { + return Reviews.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): Reviews { + const message = createBaseReviews(); + message.reviews = Object.entries(object.reviews ?? {}).reduce<{ [key: number]: Review }>((acc, [key, value]) => { + if (value !== undefined) { + acc[globalThis.Number(key)] = Review.fromPartial(value); + } + return acc; + }, {}); + return message; + }, +}; + +function createBaseReviews_ReviewsEntry(): Reviews_ReviewsEntry { + return { key: 0, value: createBaseReview() }; +} + +export const Reviews_ReviewsEntry: MessageFns = { + encode(message: Reviews_ReviewsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.key !== undefined) { + writer.uint32(8).uint32(message.key); + } + if (message.value !== undefined) { + Review.encode(message.value, writer.uint32(18).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): Reviews_ReviewsEntry { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseReviews_ReviewsEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + + message.key = reader.uint32(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.value = Review.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): Reviews_ReviewsEntry { + return { + key: globalThis.Number(assertSet("Reviews_ReviewsEntry.key", object.key)), + value: Review.fromJSON(assertSet("Reviews_ReviewsEntry.value", object.value)), + }; + }, + + toJSON(message: Reviews_ReviewsEntry): unknown { + const obj: any = {}; + if (message.key !== undefined) { + obj.key = Math.round(message.key); + } + if (message.value !== undefined) { + obj.value = Review.toJSON(message.value); + } + return obj; + }, + + create, I>>(base?: I): Reviews_ReviewsEntry { + return Reviews_ReviewsEntry.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): Reviews_ReviewsEntry { + const message = createBaseReviews_ReviewsEntry(); + message.key = object.key ?? 0; + message.value = (object.value !== undefined && object.value !== null) + ? Review.fromPartial(object.value) + : undefined; + return message; + }, +}; + +function createBaseReview(): Review { + return { last_updated: 0, videos: [] }; +} + +export const Review: MessageFns = { + encode(message: Review, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.last_updated !== 0) { + writer.uint32(13).float(message.last_updated); + } + for (const v of message.videos) { + Video.encode(v!, writer.uint32(18).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): Review { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseReview(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 13) { + break; + } + + message.last_updated = reader.float(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.videos.push(Video.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): Review { + return { + last_updated: globalThis.Number(assertSet("Review.last_updated", object.last_updated)), + videos: globalThis.Array.isArray(object?.videos) ? object.videos.map((e: any) => Video.fromJSON(e)) : [], + }; + }, + + toJSON(message: Review): unknown { + const obj: any = {}; + if (message.last_updated !== 0) { + obj.last_updated = message.last_updated; + } + if (message.videos?.length) { + obj.videos = message.videos.map((e) => Video.toJSON(e)); + } + return obj; + }, + + create, I>>(base?: I): Review { + return Review.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): Review { + const message = createBaseReview(); + message.last_updated = object.last_updated ?? 0; + message.videos = object.videos?.map((e) => Video.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseVideo(): Video { + return { id: "", author: "" }; +} + +export const Video: MessageFns