Compare commits

..
1 Commits
Author SHA1 Message Date
tresabhi 1551cfe2b9 add tool 2026-08-13 12:51:17 -05:00
35 changed files with 800 additions and 467 deletions

No files matched your search

-6
View File
@@ -1,6 +0,0 @@
version: 2
updates:
- package-ecosystem: "bun"
directory: "/"
schedule:
interval: "daily"
+1 -8
View File
@@ -139,14 +139,7 @@ jobs:
- name: Trigger deployment
# Deploy if:
# 1. Running cron from main using content from production to target production
# 2. Running manually and targeting non-production
if: >-
${{
github.ref == 'refs/heads/production' ||
(inputs.environment != '' && inputs.environment != 'production')
}}
if: ${{ github.ref == 'refs/heads/production' }}
env:
TOKEN: ${{ secrets.GH_NODE_DEPLOY_TOKEN }}
+34
View File
@@ -5,3 +5,37 @@ Tools for everything and anything, World of Tanks Blitz.
This GitHub repository contains the code for BlitzKit and all its services. If you are here, looking to use BlitzKit, go to https://blitzkit.app/.
If you intend to contribute to the code, note that you may need to check out sensitive, closed-source submodules to locally develop certain aspects of BlitzKit. Communicate with `@tresabhi` on Discord to get started or discuss sensitive content, such as environment variables or submodules.
## Packages
| Package | Title | Source | Memo |
| ------------------------------------ | -------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| [packages/core](packages/core) | | | Mutual internal code shared between all other packages. |
| [packages/i18n](packages/i18n) | | [Crowdin](https://crowdin.com/project/blitzkrieg) | Translations served as JSON shared across all other packages, including some utility code. |
| [packages/scripts](packages/scripts) | | | CLI utilities for the development and deployment of BlitzKit services. |
| [packages/varuna](packages/varuna) | Varuna | [NPM](https://www.npmjs.com/package/varuna) | React and Astro-oriented state management library, awaiting separation from BlitzKit. Unavailable from NPM at this time. |
| [packages/website](packages/website) | BlitzKit | https://blitzkit.app | The BlitzKit website provides a wide range of tools, APIs, and interconnects all other services. |
## Submodules
| Submodule | Title | Source | Memo |
| ------------------------------------------------------ | --------- | ----------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [submodules/blitzkit-closed](packages/blitzkit-closed) | ClosedKit | [blitzkit/closed](https://github.com/blitzkit/closed) | Closed source, sensitive code hidden from the public to prevent bad actors from abusing the game. Discuss with `@tresabhi` on Discord for **special permission** to access. |
## Environment Variables
| Name | Source | BlitzKit Default | Memo |
| ------------------------------------------------------------- | -------------------------------------------------------------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `PUBLIC_WARGAMING_APPLICATION_ID` | [Wargaming Developer's Room](https://developers.wargaming.net/) | | Application ID needed to communicate with Wargaming APIs. |
| `PUBLIC_PROMOTE_OPENTEST` | | `false` | Optional boolean dictating whether the website advertises [the opentest subdomain of BlitzKit](https://opentest.blitzkit.app/). |
| `WOTB_GLOSSARY`, `WOTB_GLOSSARY_DOMAIN`, `WOTB_GLOSSARY_PATH` | | | |
| `PUBLIC_GOOGLE_TAG_MANAGER_ID` | [Google Tag Manager](https://tagmanager.google.com/) | `G-GL2JVHCGPQ` | Google Tag Manager's unique identifier for analytical purposes. |
| `PUBLIC_GOOGLE_ANALYTICS_PROPERTY_ID` | [Google Analytics](https://analytics.google.com/) | `430711767` | Google Analytics' unique property ID for [BlitzKit's apex domain](https://blitzkit.app/) and subdomains. |
| `GOOGLE_APPLICATION_CREDENTIALS` | [Google Cloud](https://cloud.google.com/) | | Google Cloud's API key, primarily used for ranking popular tanks and finding relevant tank review videos in Tankopedia. |
| `PUBLIC_DISCORD_SERVER_ID` | [BlitzKit Discord Server](https://discord.gg/nDt7AjGJQH) | `734786591205359697` | BlitzKit Discord Server's id. |
| `PUBLIC_ASSET_BASE` | [blitzkit/assets](https://github.com/blitzkit/assets) | `https://blitzkit.github.io/assets` | The root domain and path that serves the external assets like tank models and icons. |
| `PUBLIC_GUIDE_WEBSITE` | [GuidesBlitz](https://guidesblitz.com/) | `https://guidesblitz.com` | The website that serves the encyclopedia-like content in BlitzKit. |
| `SERVICING` | | `false` | Wether the website is down for servicing. |
| `GH_TOKEN` | [GitHub Fine-Grained Tokens](https://github.com/settings/personal-access-tokens) | | The GitHub API key used for checking out private submodules and pushing content to the asset repository. |
| `DATABASE_URL` | [CockroachDB](https://www.cockroachlabs.com/) | | The CockroachDB-SQL database URL used to link Wargaming and Discord users. |
| `WOTB_DLC_CDN` | | | |
-3
View File
@@ -1,3 +0,0 @@
# BlitzKit 1.31.2
This update fixes an issue that occurred with Wargaming chose to declare the class of a tank in the game code with a tag that isn't the first in the list.
-3
View File
@@ -1,3 +0,0 @@
# BlitzKit 1.31.3
This update updates BlitzKit to work with the game's new ID system for game modes.
-14
View File
@@ -1,14 +0,0 @@
# BlitzKit 1.31.4
Thank you to [Mark Greene](https://github.com/Hitjack007) for your contributions this update.
## Fixes
- [Mark Greene] BlitzKit Session now properly handles tanks removed from the game
## Technical Fixes
- BlitzKit now handles the new ID system for game-modes in WoTB
- The directory which preview versions of the game are downloaded to are now created properly
- This was the last bug standing in the way of BlitzKit Previews
- Welcome back, BlitzKit Previews!
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "blitzkit",
"version": "1.31.4",
"version": "1.31.1",
"license": "BlitzKit License",
"private": true,
"scripts": {
@@ -50,11 +50,10 @@ export abstract class ServerBlitzKitAPI1 extends ServerBlitzKitAPI0 {
async tankDefinitions() {
const tankDefinitions = TankDefinitions.create();
const gameModeNativeNames: Record<string, string> = {};
const gameModeNativeNames: Record<string, number> = {};
const squadBattleTypeGameModeNativeNameMatches =
this.squadBattleTypeStyles!.Prototypes[0].components.UIDataLocalBindingsComponent.data[1][2].matchAll(
/eGameMode\.(\w+) -> "(battleType\/([a-zA-Z]+))"/g,
/"(\d+)" -> "(battleType\/([a-zA-Z]+))"/g,
);
const gameTypeGameModeNativeNameMatches =
this.gameTypeSelectorStyles!.Prototypes[0].components.UIDataLocalBindingsComponent.data[1][2].matchAll(
@@ -62,7 +61,8 @@ export abstract class ServerBlitzKitAPI1 extends ServerBlitzKitAPI0 {
);
for (const match of squadBattleTypeGameModeNativeNameMatches) {
gameModeNativeNames[match[3]] = match[1];
const id = Number(match[1]);
gameModeNativeNames[match[3]] = id;
}
for (const match of gameTypeGameModeNativeNameMatches) {
@@ -339,17 +339,6 @@ export abstract class ServerBlitzKitAPI1 extends ServerBlitzKitAPI0 {
equalizer = { health, penetration, module_health, damage, armor };
}
const blitzTankClass = tankTags.find(
(tag) => tag in this.blitzTankClassToBlitzkit,
);
if (blitzTankClass === undefined) {
throw new Error(`Unknown tank class for ${nation}:${tankKey}`);
}
const tankClass =
this.blitzTankClassToBlitzkit[blitzTankClass as BlitzTankClass];
tankDefinitions.tanks[tankId] = {
ancestors: [],
successors: [],
@@ -379,7 +368,7 @@ export abstract class ServerBlitzKitAPI1 extends ServerBlitzKitAPI0 {
? TankType.TANK_TYPE_PREMIUM
: TankType.TANK_TYPE_RESEARCHABLE,
tier: tank.level,
class: tankClass,
class: this.blitzTankClassToBlitzkit[tankTags[0] as BlitzTankClass],
testing: tankTags.includes("testTank"),
deprecated: tankTags.includes("deprecated"),
price: tankPrice,
@@ -27,9 +27,9 @@ export abstract class ServerBlitzKitAPI9 extends ServerBlitzKitAPI8 {
).available_nations;
for (const match of this.squadBattleTypeStyles!.Prototypes[0].components.UIDataLocalBindingsComponent.data[1][2].matchAll(
/eGameMode\.(\w+) -> "(battleType\/([a-zA-Z]+))"/g,
/"(\d+)" -> "(battleType\/([a-zA-Z]+))"/g,
)) {
const id = match[1];
const id = Number(match[1]);
const name = this.getString(match[2]);
gameDefinitions.gameModes[id] = {
+81 -40
View File
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.7.7
// protoc v3.19.6
// protoc-gen-ts_proto v2.11.2
// protoc v5.28.2
// source: average_definitions.proto
/* eslint-disable */
@@ -64,7 +64,7 @@ function createBaseAverageDefinitions(): AverageDefinitions {
export const AverageDefinitions: MessageFns<AverageDefinitions> = {
encode(message: AverageDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
Object.entries(message.averages).forEach(([key, value]) => {
globalThis.Object.entries(message.averages).forEach(([key, value]: [string, AverageDefinitionsEntry]) => {
AverageDefinitions_AveragesEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join();
});
if (message.samples !== undefined) {
@@ -122,10 +122,13 @@ export const AverageDefinitions: MessageFns<AverageDefinitions> = {
fromJSON(object: any): AverageDefinitions {
return {
averages: isObject(object.averages)
? Object.entries(object.averages).reduce<{ [key: number]: AverageDefinitionsEntry }>((acc, [key, value]) => {
acc[globalThis.Number(key)] = AverageDefinitionsEntry.fromJSON(value);
return acc;
}, {})
? (globalThis.Object.entries(object.averages) as [string, any][]).reduce(
(acc: { [key: number]: AverageDefinitionsEntry }, [key, value]: [string, any]) => {
acc[globalThis.Number(key)] = AverageDefinitionsEntry.fromJSON(value);
return acc;
},
{},
)
: {},
samples: isSet(object.samples) ? Samples.fromJSON(object.samples) : undefined,
time: isSet(object.time) ? globalThis.Number(object.time) : 0,
@@ -135,7 +138,7 @@ export const AverageDefinitions: MessageFns<AverageDefinitions> = {
toJSON(message: AverageDefinitions): unknown {
const obj: any = {};
if (message.averages) {
const entries = Object.entries(message.averages);
const entries = globalThis.Object.entries(message.averages) as [string, AverageDefinitionsEntry][];
if (entries.length > 0) {
obj.averages = {};
entries.forEach(([k, v]) => {
@@ -157,8 +160,8 @@ export const AverageDefinitions: MessageFns<AverageDefinitions> = {
},
fromPartial<I extends Exact<DeepPartial<AverageDefinitions>, I>>(object: I): AverageDefinitions {
const message = createBaseAverageDefinitions();
message.averages = Object.entries(object.averages ?? {}).reduce<{ [key: number]: AverageDefinitionsEntry }>(
(acc, [key, value]) => {
message.averages = (globalThis.Object.entries(object.averages ?? {}) as [string, AverageDefinitionsEntry][]).reduce(
(acc: { [key: number]: AverageDefinitionsEntry }, [key, value]: [string, AverageDefinitionsEntry]) => {
if (value !== undefined) {
acc[globalThis.Number(key)] = AverageDefinitionsEntry.fromPartial(value);
}
@@ -617,25 +620,59 @@ export const AverageDefinitionsAllStats: MessageFns<AverageDefinitionsAllStats>
fromJSON(object: any): AverageDefinitionsAllStats {
return {
battles: isSet(object.battles) ? globalThis.Number(object.battles) : 0,
capture_points: isSet(object.capture_points) ? globalThis.Number(object.capture_points) : 0,
damage_dealt: isSet(object.damage_dealt) ? globalThis.Number(object.damage_dealt) : 0,
damage_received: isSet(object.damage_received) ? globalThis.Number(object.damage_received) : 0,
dropped_capture_points: isSet(object.dropped_capture_points)
capture_points: isSet(object.capturePoints)
? globalThis.Number(object.capturePoints)
: isSet(object.capture_points)
? globalThis.Number(object.capture_points)
: 0,
damage_dealt: isSet(object.damageDealt)
? globalThis.Number(object.damageDealt)
: isSet(object.damage_dealt)
? globalThis.Number(object.damage_dealt)
: 0,
damage_received: isSet(object.damageReceived)
? globalThis.Number(object.damageReceived)
: isSet(object.damage_received)
? globalThis.Number(object.damage_received)
: 0,
dropped_capture_points: isSet(object.droppedCapturePoints)
? globalThis.Number(object.droppedCapturePoints)
: isSet(object.dropped_capture_points)
? globalThis.Number(object.dropped_capture_points)
: 0,
frags: isSet(object.frags) ? globalThis.Number(object.frags) : 0,
frags8p: isSet(object.frags8p) ? globalThis.Number(object.frags8p) : 0,
hits: isSet(object.hits) ? globalThis.Number(object.hits) : 0,
losses: isSet(object.losses) ? globalThis.Number(object.losses) : 0,
max_frags: isSet(object.max_frags) ? globalThis.Number(object.max_frags) : 0,
max_xp: isSet(object.max_xp) ? globalThis.Number(object.max_xp) : 0,
max_frags: isSet(object.maxFrags)
? globalThis.Number(object.maxFrags)
: isSet(object.max_frags)
? globalThis.Number(object.max_frags)
: 0,
max_xp: isSet(object.maxXp)
? globalThis.Number(object.maxXp)
: isSet(object.max_xp)
? globalThis.Number(object.max_xp)
: 0,
shots: isSet(object.shots) ? globalThis.Number(object.shots) : 0,
spotted: isSet(object.spotted) ? globalThis.Number(object.spotted) : 0,
survived_battles: isSet(object.survived_battles) ? globalThis.Number(object.survived_battles) : 0,
win_and_survived: isSet(object.win_and_survived) ? globalThis.Number(object.win_and_survived) : 0,
survived_battles: isSet(object.survivedBattles)
? globalThis.Number(object.survivedBattles)
: isSet(object.survived_battles)
? globalThis.Number(object.survived_battles)
: 0,
win_and_survived: isSet(object.winAndSurvived)
? globalThis.Number(object.winAndSurvived)
: isSet(object.win_and_survived)
? globalThis.Number(object.win_and_survived)
: 0,
wins: isSet(object.wins) ? globalThis.Number(object.wins) : 0,
xp: isSet(object.xp) ? globalThis.Number(object.xp) : 0,
battle_life_time: isSet(object.battle_life_time) ? globalThis.Number(object.battle_life_time) : 0,
battle_life_time: isSet(object.battleLifeTime)
? globalThis.Number(object.battleLifeTime)
: isSet(object.battle_life_time)
? globalThis.Number(object.battle_life_time)
: 0,
};
},
@@ -645,16 +682,16 @@ export const AverageDefinitionsAllStats: MessageFns<AverageDefinitionsAllStats>
obj.battles = message.battles;
}
if (message.capture_points !== 0) {
obj.capture_points = message.capture_points;
obj.capturePoints = message.capture_points;
}
if (message.damage_dealt !== 0) {
obj.damage_dealt = message.damage_dealt;
obj.damageDealt = message.damage_dealt;
}
if (message.damage_received !== 0) {
obj.damage_received = message.damage_received;
obj.damageReceived = message.damage_received;
}
if (message.dropped_capture_points !== 0) {
obj.dropped_capture_points = message.dropped_capture_points;
obj.droppedCapturePoints = message.dropped_capture_points;
}
if (message.frags !== 0) {
obj.frags = message.frags;
@@ -669,10 +706,10 @@ export const AverageDefinitionsAllStats: MessageFns<AverageDefinitionsAllStats>
obj.losses = message.losses;
}
if (message.max_frags !== 0) {
obj.max_frags = message.max_frags;
obj.maxFrags = message.max_frags;
}
if (message.max_xp !== 0) {
obj.max_xp = message.max_xp;
obj.maxXp = message.max_xp;
}
if (message.shots !== 0) {
obj.shots = message.shots;
@@ -681,10 +718,10 @@ export const AverageDefinitionsAllStats: MessageFns<AverageDefinitionsAllStats>
obj.spotted = message.spotted;
}
if (message.survived_battles !== 0) {
obj.survived_battles = message.survived_battles;
obj.survivedBattles = message.survived_battles;
}
if (message.win_and_survived !== 0) {
obj.win_and_survived = message.win_and_survived;
obj.winAndSurvived = message.win_and_survived;
}
if (message.wins !== 0) {
obj.wins = message.wins;
@@ -693,7 +730,7 @@ export const AverageDefinitionsAllStats: MessageFns<AverageDefinitionsAllStats>
obj.xp = message.xp;
}
if (message.battle_life_time !== 0) {
obj.battle_life_time = message.battle_life_time;
obj.battleLifeTime = message.battle_life_time;
}
return obj;
},
@@ -829,12 +866,16 @@ export const Samples: MessageFns<Samples> = {
fromJSON(object: any): Samples {
return {
d_1: isSet(object.d_1) ? globalThis.Number(object.d_1) : 0,
d_7: isSet(object.d_7) ? globalThis.Number(object.d_7) : 0,
d_30: isSet(object.d_30) ? globalThis.Number(object.d_30) : 0,
d_60: isSet(object.d_60) ? globalThis.Number(object.d_60) : 0,
d_90: isSet(object.d_90) ? globalThis.Number(object.d_90) : 0,
d_120: isSet(object.d_120) ? globalThis.Number(object.d_120) : 0,
d_1: isSet(object.d1) ? globalThis.Number(object.d1) : isSet(object.d_1) ? globalThis.Number(object.d_1) : 0,
d_7: isSet(object.d7) ? globalThis.Number(object.d7) : isSet(object.d_7) ? globalThis.Number(object.d_7) : 0,
d_30: isSet(object.d30) ? globalThis.Number(object.d30) : isSet(object.d_30) ? globalThis.Number(object.d_30) : 0,
d_60: isSet(object.d60) ? globalThis.Number(object.d60) : isSet(object.d_60) ? globalThis.Number(object.d_60) : 0,
d_90: isSet(object.d90) ? globalThis.Number(object.d90) : isSet(object.d_90) ? globalThis.Number(object.d_90) : 0,
d_120: isSet(object.d120)
? globalThis.Number(object.d120)
: isSet(object.d_120)
? globalThis.Number(object.d_120)
: 0,
total: isSet(object.total) ? globalThis.Number(object.total) : 0,
};
},
@@ -842,22 +883,22 @@ export const Samples: MessageFns<Samples> = {
toJSON(message: Samples): unknown {
const obj: any = {};
if (message.d_1 !== 0) {
obj.d_1 = Math.round(message.d_1);
obj.d1 = Math.round(message.d_1);
}
if (message.d_7 !== 0) {
obj.d_7 = Math.round(message.d_7);
obj.d7 = Math.round(message.d_7);
}
if (message.d_30 !== 0) {
obj.d_30 = Math.round(message.d_30);
obj.d30 = Math.round(message.d_30);
}
if (message.d_60 !== 0) {
obj.d_60 = Math.round(message.d_60);
obj.d60 = Math.round(message.d_60);
}
if (message.d_90 !== 0) {
obj.d_90 = Math.round(message.d_90);
obj.d90 = Math.round(message.d_90);
}
if (message.d_120 !== 0) {
obj.d_120 = Math.round(message.d_120);
obj.d120 = Math.round(message.d_120);
}
if (message.total !== 0) {
obj.total = Math.round(message.total);
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.7.7
// protoc v3.19.6
// protoc-gen-ts_proto v2.11.2
// protoc v5.28.2
// source: camouflage_definitions.proto
/* eslint-disable */
@@ -32,7 +32,7 @@ function createBaseCamouflageDefinitions(): CamouflageDefinitions {
export const CamouflageDefinitions: MessageFns<CamouflageDefinitions> = {
encode(message: CamouflageDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
Object.entries(message.camouflages).forEach(([key, value]) => {
globalThis.Object.entries(message.camouflages).forEach(([key, value]: [string, Camouflage]) => {
CamouflageDefinitions_CamouflagesEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join();
});
return writer;
@@ -68,10 +68,13 @@ export const CamouflageDefinitions: MessageFns<CamouflageDefinitions> = {
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;
}, {})
? (globalThis.Object.entries(object.camouflages) as [string, any][]).reduce(
(acc: { [key: number]: Camouflage }, [key, value]: [string, any]) => {
acc[globalThis.Number(key)] = Camouflage.fromJSON(value);
return acc;
},
{},
)
: {},
};
},
@@ -79,7 +82,7 @@ export const CamouflageDefinitions: MessageFns<CamouflageDefinitions> = {
toJSON(message: CamouflageDefinitions): unknown {
const obj: any = {};
if (message.camouflages) {
const entries = Object.entries(message.camouflages);
const entries = globalThis.Object.entries(message.camouflages) as [string, Camouflage][];
if (entries.length > 0) {
obj.camouflages = {};
entries.forEach(([k, v]) => {
@@ -95,8 +98,8 @@ export const CamouflageDefinitions: MessageFns<CamouflageDefinitions> = {
},
fromPartial<I extends Exact<DeepPartial<CamouflageDefinitions>, I>>(object: I): CamouflageDefinitions {
const message = createBaseCamouflageDefinitions();
message.camouflages = Object.entries(object.camouflages ?? {}).reduce<{ [key: number]: Camouflage }>(
(acc, [key, value]) => {
message.camouflages = (globalThis.Object.entries(object.camouflages ?? {}) as [string, Camouflage][]).reduce(
(acc: { [key: number]: Camouflage }, [key, value]: [string, Camouflage]) => {
if (value !== undefined) {
acc[globalThis.Number(key)] = Camouflage.fromPartial(value);
}
@@ -263,8 +266,16 @@ export const Camouflage: MessageFns<Camouflage> = {
return {
id: isSet(object.id) ? globalThis.Number(object.id) : 0,
name: isSet(object.name) ? I18nString.fromJSON(object.name) : undefined,
tank_name: isSet(object.tank_name) ? I18nString.fromJSON(object.tank_name) : undefined,
tank_name_full: isSet(object.tank_name_full) ? I18nString.fromJSON(object.tank_name_full) : undefined,
tank_name: isSet(object.tankName)
? I18nString.fromJSON(object.tankName)
: isSet(object.tank_name)
? I18nString.fromJSON(object.tank_name)
: undefined,
tank_name_full: isSet(object.tankNameFull)
? I18nString.fromJSON(object.tankNameFull)
: isSet(object.tank_name_full)
? I18nString.fromJSON(object.tank_name_full)
: undefined,
};
},
@@ -277,10 +288,10 @@ export const Camouflage: MessageFns<Camouflage> = {
obj.name = I18nString.toJSON(message.name);
}
if (message.tank_name !== undefined) {
obj.tank_name = I18nString.toJSON(message.tank_name);
obj.tankName = I18nString.toJSON(message.tank_name);
}
if (message.tank_name_full !== undefined) {
obj.tank_name_full = I18nString.toJSON(message.tank_name_full);
obj.tankNameFull = I18nString.toJSON(message.tank_name_full);
}
return obj;
},
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.7.7
// protoc v3.19.6
// protoc-gen-ts_proto v2.11.2
// protoc v5.28.2
// source: consumable_definitions.proto
/* eslint-disable */
@@ -88,7 +88,7 @@ function createBaseConsumableDefinitions(): ConsumableDefinitions {
export const ConsumableDefinitions: MessageFns<ConsumableDefinitions> = {
encode(message: ConsumableDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
Object.entries(message.consumables).forEach(([key, value]) => {
globalThis.Object.entries(message.consumables).forEach(([key, value]: [string, Consumable]) => {
ConsumableDefinitions_ConsumablesEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join();
});
return writer;
@@ -124,10 +124,13 @@ export const ConsumableDefinitions: MessageFns<ConsumableDefinitions> = {
fromJSON(object: any): ConsumableDefinitions {
return {
consumables: isObject(object.consumables)
? Object.entries(object.consumables).reduce<{ [key: number]: Consumable }>((acc, [key, value]) => {
acc[globalThis.Number(key)] = Consumable.fromJSON(value);
return acc;
}, {})
? (globalThis.Object.entries(object.consumables) as [string, any][]).reduce(
(acc: { [key: number]: Consumable }, [key, value]: [string, any]) => {
acc[globalThis.Number(key)] = Consumable.fromJSON(value);
return acc;
},
{},
)
: {},
};
},
@@ -135,7 +138,7 @@ export const ConsumableDefinitions: MessageFns<ConsumableDefinitions> = {
toJSON(message: ConsumableDefinitions): unknown {
const obj: any = {};
if (message.consumables) {
const entries = Object.entries(message.consumables);
const entries = globalThis.Object.entries(message.consumables) as [string, Consumable][];
if (entries.length > 0) {
obj.consumables = {};
entries.forEach(([k, v]) => {
@@ -151,8 +154,8 @@ export const ConsumableDefinitions: MessageFns<ConsumableDefinitions> = {
},
fromPartial<I extends Exact<DeepPartial<ConsumableDefinitions>, I>>(object: I): ConsumableDefinitions {
const message = createBaseConsumableDefinitions();
message.consumables = Object.entries(object.consumables ?? {}).reduce<{ [key: number]: Consumable }>(
(acc, [key, value]) => {
message.consumables = (globalThis.Object.entries(object.consumables ?? {}) as [string, Consumable][]).reduce(
(acc: { [key: number]: Consumable }, [key, value]: [string, Consumable]) => {
if (value !== undefined) {
acc[globalThis.Number(key)] = Consumable.fromPartial(value);
}
@@ -354,7 +357,11 @@ export const Consumable: MessageFns<Consumable> = {
name: isSet(object.name) ? I18nString.fromJSON(object.name) : undefined,
cooldown: isSet(object.cooldown) ? globalThis.Number(object.cooldown) : 0,
duration: isSet(object.duration) ? globalThis.Number(object.duration) : 0,
game_mode_exclusive: isSet(object.game_mode_exclusive) ? globalThis.Boolean(object.game_mode_exclusive) : false,
game_mode_exclusive: isSet(object.gameModeExclusive)
? globalThis.Boolean(object.gameModeExclusive)
: isSet(object.game_mode_exclusive)
? globalThis.Boolean(object.game_mode_exclusive)
: false,
include: globalThis.Array.isArray(object?.include)
? object.include.map((e: any) => ConsumableTankFilter.fromJSON(e))
: [],
@@ -379,7 +386,7 @@ export const Consumable: MessageFns<Consumable> = {
obj.duration = message.duration;
}
if (message.game_mode_exclusive !== false) {
obj.game_mode_exclusive = message.game_mode_exclusive;
obj.gameModeExclusive = message.game_mode_exclusive;
}
if (message.include?.length) {
obj.include = message.include.map((e) => ConsumableTankFilter.toJSON(e));
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.7.7
// protoc v3.19.6
// protoc-gen-ts_proto v2.11.2
// protoc v5.28.2
// source: equipment_definitions.proto
/* eslint-disable */
@@ -45,10 +45,10 @@ function createBaseEquipmentDefinitions(): EquipmentDefinitions {
export const EquipmentDefinitions: MessageFns<EquipmentDefinitions> = {
encode(message: EquipmentDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
Object.entries(message.presets).forEach(([key, value]) => {
globalThis.Object.entries(message.presets).forEach(([key, value]: [string, EquipmentPreset]) => {
EquipmentDefinitions_PresetsEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join();
});
Object.entries(message.equipments).forEach(([key, value]) => {
globalThis.Object.entries(message.equipments).forEach(([key, value]: [string, Equipment]) => {
EquipmentDefinitions_EquipmentsEntry.encode({ key: key as any, value }, writer.uint32(18).fork()).join();
});
return writer;
@@ -95,16 +95,22 @@ export const EquipmentDefinitions: MessageFns<EquipmentDefinitions> = {
fromJSON(object: any): EquipmentDefinitions {
return {
presets: isObject(object.presets)
? Object.entries(object.presets).reduce<{ [key: string]: EquipmentPreset }>((acc, [key, value]) => {
acc[key] = EquipmentPreset.fromJSON(value);
return acc;
}, {})
? (globalThis.Object.entries(object.presets) as [string, any][]).reduce(
(acc: { [key: string]: EquipmentPreset }, [key, value]: [string, any]) => {
acc[key] = EquipmentPreset.fromJSON(value);
return acc;
},
{},
)
: {},
equipments: isObject(object.equipments)
? Object.entries(object.equipments).reduce<{ [key: number]: Equipment }>((acc, [key, value]) => {
acc[globalThis.Number(key)] = Equipment.fromJSON(value);
return acc;
}, {})
? (globalThis.Object.entries(object.equipments) as [string, any][]).reduce(
(acc: { [key: number]: Equipment }, [key, value]: [string, any]) => {
acc[globalThis.Number(key)] = Equipment.fromJSON(value);
return acc;
},
{},
)
: {},
};
},
@@ -112,7 +118,7 @@ export const EquipmentDefinitions: MessageFns<EquipmentDefinitions> = {
toJSON(message: EquipmentDefinitions): unknown {
const obj: any = {};
if (message.presets) {
const entries = Object.entries(message.presets);
const entries = globalThis.Object.entries(message.presets) as [string, EquipmentPreset][];
if (entries.length > 0) {
obj.presets = {};
entries.forEach(([k, v]) => {
@@ -121,7 +127,7 @@ export const EquipmentDefinitions: MessageFns<EquipmentDefinitions> = {
}
}
if (message.equipments) {
const entries = Object.entries(message.equipments);
const entries = globalThis.Object.entries(message.equipments) as [string, Equipment][];
if (entries.length > 0) {
obj.equipments = {};
entries.forEach(([k, v]) => {
@@ -137,8 +143,8 @@ export const EquipmentDefinitions: MessageFns<EquipmentDefinitions> = {
},
fromPartial<I extends Exact<DeepPartial<EquipmentDefinitions>, I>>(object: I): EquipmentDefinitions {
const message = createBaseEquipmentDefinitions();
message.presets = Object.entries(object.presets ?? {}).reduce<{ [key: string]: EquipmentPreset }>(
(acc, [key, value]) => {
message.presets = (globalThis.Object.entries(object.presets ?? {}) as [string, EquipmentPreset][]).reduce(
(acc: { [key: string]: EquipmentPreset }, [key, value]: [string, EquipmentPreset]) => {
if (value !== undefined) {
acc[key] = EquipmentPreset.fromPartial(value);
}
@@ -146,8 +152,8 @@ export const EquipmentDefinitions: MessageFns<EquipmentDefinitions> = {
},
{},
);
message.equipments = Object.entries(object.equipments ?? {}).reduce<{ [key: number]: Equipment }>(
(acc, [key, value]) => {
message.equipments = (globalThis.Object.entries(object.equipments ?? {}) as [string, Equipment][]).reduce(
(acc: { [key: number]: Equipment }, [key, value]: [string, Equipment]) => {
if (value !== undefined) {
acc[globalThis.Number(key)] = Equipment.fromPartial(value);
}
+2 -2
View File
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.7.7
// protoc v3.19.6
// protoc-gen-ts_proto v2.11.2
// protoc v5.28.2
// source: gallery.proto
/* eslint-disable */
@@ -7,7 +7,7 @@ import "i18n.proto";
message GameDefinitions {
required string version = 1;
repeated string nations = 2;
map<string, GameMode> gameModes = 3;
map<uint32, GameMode> gameModes = 3;
map<uint32, GameModeRole> roles = 4;
}
+43 -34
View File
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.7.7
// protoc v3.19.6
// protoc-gen-ts_proto v2.11.2
// protoc v5.28.2
// source: game_definitions.proto
/* eslint-disable */
@@ -13,12 +13,12 @@ export const protobufPackage = "blitzkit";
export interface GameDefinitions {
version: string;
nations: string[];
gameModes: { [key: string]: GameMode };
gameModes: { [key: number]: GameMode };
roles: { [key: number]: GameModeRole };
}
export interface GameDefinitions_GameModesEntry {
key: string;
key: number;
value: GameMode | undefined;
}
@@ -48,10 +48,10 @@ export const GameDefinitions: MessageFns<GameDefinitions> = {
for (const v of message.nations) {
writer.uint32(18).string(v!);
}
Object.entries(message.gameModes).forEach(([key, value]) => {
globalThis.Object.entries(message.gameModes).forEach(([key, value]: [string, GameMode]) => {
GameDefinitions_GameModesEntry.encode({ key: key as any, value }, writer.uint32(26).fork()).join();
});
Object.entries(message.roles).forEach(([key, value]) => {
globalThis.Object.entries(message.roles).forEach(([key, value]: [string, GameModeRole]) => {
GameDefinitions_RolesEntry.encode({ key: key as any, value }, writer.uint32(34).fork()).join();
});
return writer;
@@ -116,16 +116,22 @@ export const GameDefinitions: MessageFns<GameDefinitions> = {
version: isSet(object.version) ? globalThis.String(object.version) : "",
nations: globalThis.Array.isArray(object?.nations) ? object.nations.map((e: any) => globalThis.String(e)) : [],
gameModes: isObject(object.gameModes)
? Object.entries(object.gameModes).reduce<{ [key: string]: GameMode }>((acc, [key, value]) => {
acc[key] = GameMode.fromJSON(value);
return acc;
}, {})
? (globalThis.Object.entries(object.gameModes) as [string, any][]).reduce(
(acc: { [key: number]: GameMode }, [key, value]: [string, any]) => {
acc[globalThis.Number(key)] = GameMode.fromJSON(value);
return acc;
},
{},
)
: {},
roles: isObject(object.roles)
? Object.entries(object.roles).reduce<{ [key: number]: GameModeRole }>((acc, [key, value]) => {
acc[globalThis.Number(key)] = GameModeRole.fromJSON(value);
return acc;
}, {})
? (globalThis.Object.entries(object.roles) as [string, any][]).reduce(
(acc: { [key: number]: GameModeRole }, [key, value]: [string, any]) => {
acc[globalThis.Number(key)] = GameModeRole.fromJSON(value);
return acc;
},
{},
)
: {},
};
},
@@ -139,7 +145,7 @@ export const GameDefinitions: MessageFns<GameDefinitions> = {
obj.nations = message.nations;
}
if (message.gameModes) {
const entries = Object.entries(message.gameModes);
const entries = globalThis.Object.entries(message.gameModes) as [string, GameMode][];
if (entries.length > 0) {
obj.gameModes = {};
entries.forEach(([k, v]) => {
@@ -148,7 +154,7 @@ export const GameDefinitions: MessageFns<GameDefinitions> = {
}
}
if (message.roles) {
const entries = Object.entries(message.roles);
const entries = globalThis.Object.entries(message.roles) as [string, GameModeRole][];
if (entries.length > 0) {
obj.roles = {};
entries.forEach(([k, v]) => {
@@ -166,33 +172,36 @@ export const GameDefinitions: MessageFns<GameDefinitions> = {
const message = createBaseGameDefinitions();
message.version = object.version ?? "";
message.nations = object.nations?.map((e) => e) || [];
message.gameModes = Object.entries(object.gameModes ?? {}).reduce<{ [key: string]: GameMode }>(
(acc, [key, value]) => {
message.gameModes = (globalThis.Object.entries(object.gameModes ?? {}) as [string, GameMode][]).reduce(
(acc: { [key: number]: GameMode }, [key, value]: [string, GameMode]) => {
if (value !== undefined) {
acc[key] = GameMode.fromPartial(value);
acc[globalThis.Number(key)] = GameMode.fromPartial(value);
}
return acc;
},
{},
);
message.roles = (globalThis.Object.entries(object.roles ?? {}) as [string, GameModeRole][]).reduce(
(acc: { [key: number]: GameModeRole }, [key, value]: [string, GameModeRole]) => {
if (value !== undefined) {
acc[globalThis.Number(key)] = GameModeRole.fromPartial(value);
}
return acc;
},
{},
);
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: "", value: undefined };
return { key: 0, value: undefined };
}
export const GameDefinitions_GameModesEntry: MessageFns<GameDefinitions_GameModesEntry> = {
encode(message: GameDefinitions_GameModesEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.key !== "") {
writer.uint32(10).string(message.key);
if (message.key !== 0) {
writer.uint32(8).uint32(message.key);
}
if (message.value !== undefined) {
GameMode.encode(message.value, writer.uint32(18).fork()).join();
@@ -208,11 +217,11 @@ export const GameDefinitions_GameModesEntry: MessageFns<GameDefinitions_GameMode
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
if (tag !== 8) {
break;
}
message.key = reader.string();
message.key = reader.uint32();
continue;
}
case 2: {
@@ -234,15 +243,15 @@ export const GameDefinitions_GameModesEntry: MessageFns<GameDefinitions_GameMode
fromJSON(object: any): GameDefinitions_GameModesEntry {
return {
key: isSet(object.key) ? globalThis.String(object.key) : "",
key: isSet(object.key) ? globalThis.Number(object.key) : 0,
value: isSet(object.value) ? GameMode.fromJSON(object.value) : undefined,
};
},
toJSON(message: GameDefinitions_GameModesEntry): unknown {
const obj: any = {};
if (message.key !== "") {
obj.key = message.key;
if (message.key !== 0) {
obj.key = Math.round(message.key);
}
if (message.value !== undefined) {
obj.value = GameMode.toJSON(message.value);
@@ -257,7 +266,7 @@ export const GameDefinitions_GameModesEntry: MessageFns<GameDefinitions_GameMode
object: I,
): GameDefinitions_GameModesEntry {
const message = createBaseGameDefinitions_GameModesEntry();
message.key = object.key ?? "";
message.key = object.key ?? 0;
message.value = (object.value !== undefined && object.value !== null)
? GameMode.fromPartial(object.value)
: undefined;
+20 -14
View File
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.7.7
// protoc v3.19.6
// protoc-gen-ts_proto v2.11.2
// protoc v5.28.2
// source: i18n.proto
/* eslint-disable */
@@ -24,7 +24,7 @@ function createBaseI18nString(): I18nString {
export const I18nString: MessageFns<I18nString> = {
encode(message: I18nString, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
Object.entries(message.locales).forEach(([key, value]) => {
globalThis.Object.entries(message.locales).forEach(([key, value]: [string, string]) => {
I18nString_LocalesEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join();
});
return writer;
@@ -60,10 +60,13 @@ export const I18nString: MessageFns<I18nString> = {
fromJSON(object: any): I18nString {
return {
locales: isObject(object.locales)
? Object.entries(object.locales).reduce<{ [key: string]: string }>((acc, [key, value]) => {
acc[key] = String(value);
return acc;
}, {})
? (globalThis.Object.entries(object.locales) as [string, any][]).reduce(
(acc: { [key: string]: string }, [key, value]: [string, any]) => {
acc[key] = globalThis.String(value);
return acc;
},
{},
)
: {},
};
},
@@ -71,7 +74,7 @@ export const I18nString: MessageFns<I18nString> = {
toJSON(message: I18nString): unknown {
const obj: any = {};
if (message.locales) {
const entries = Object.entries(message.locales);
const entries = globalThis.Object.entries(message.locales) as [string, string][];
if (entries.length > 0) {
obj.locales = {};
entries.forEach(([k, v]) => {
@@ -87,12 +90,15 @@ export const I18nString: MessageFns<I18nString> = {
},
fromPartial<I extends Exact<DeepPartial<I18nString>, I>>(object: I): I18nString {
const message = createBaseI18nString();
message.locales = Object.entries(object.locales ?? {}).reduce<{ [key: string]: string }>((acc, [key, value]) => {
if (value !== undefined) {
acc[key] = globalThis.String(value);
}
return acc;
}, {});
message.locales = (globalThis.Object.entries(object.locales ?? {}) as [string, string][]).reduce(
(acc: { [key: string]: string }, [key, value]: [string, string]) => {
if (value !== undefined) {
acc[key] = globalThis.String(value);
}
return acc;
},
{},
);
return message;
},
};
+20 -14
View File
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.7.7
// protoc v3.19.6
// protoc-gen-ts_proto v2.11.2
// protoc v5.28.2
// source: map_definitions.proto
/* eslint-disable */
@@ -30,7 +30,7 @@ function createBaseMapDefinitions(): MapDefinitions {
export const MapDefinitions: MessageFns<MapDefinitions> = {
encode(message: MapDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
Object.entries(message.maps).forEach(([key, value]) => {
globalThis.Object.entries(message.maps).forEach(([key, value]: [string, MapDefinition]) => {
MapDefinitions_MapsEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join();
});
return writer;
@@ -66,10 +66,13 @@ export const MapDefinitions: MessageFns<MapDefinitions> = {
fromJSON(object: any): MapDefinitions {
return {
maps: isObject(object.maps)
? Object.entries(object.maps).reduce<{ [key: number]: MapDefinition }>((acc, [key, value]) => {
acc[globalThis.Number(key)] = MapDefinition.fromJSON(value);
return acc;
}, {})
? (globalThis.Object.entries(object.maps) as [string, any][]).reduce(
(acc: { [key: number]: MapDefinition }, [key, value]: [string, any]) => {
acc[globalThis.Number(key)] = MapDefinition.fromJSON(value);
return acc;
},
{},
)
: {},
};
},
@@ -77,7 +80,7 @@ export const MapDefinitions: MessageFns<MapDefinitions> = {
toJSON(message: MapDefinitions): unknown {
const obj: any = {};
if (message.maps) {
const entries = Object.entries(message.maps);
const entries = globalThis.Object.entries(message.maps) as [string, MapDefinition][];
if (entries.length > 0) {
obj.maps = {};
entries.forEach(([k, v]) => {
@@ -93,12 +96,15 @@ export const MapDefinitions: MessageFns<MapDefinitions> = {
},
fromPartial<I extends Exact<DeepPartial<MapDefinitions>, I>>(object: I): MapDefinitions {
const message = createBaseMapDefinitions();
message.maps = Object.entries(object.maps ?? {}).reduce<{ [key: number]: MapDefinition }>((acc, [key, value]) => {
if (value !== undefined) {
acc[globalThis.Number(key)] = MapDefinition.fromPartial(value);
}
return acc;
}, {});
message.maps = (globalThis.Object.entries(object.maps ?? {}) as [string, MapDefinition][]).reduce(
(acc: { [key: number]: MapDefinition }, [key, value]: [string, MapDefinition]) => {
if (value !== undefined) {
acc[globalThis.Number(key)] = MapDefinition.fromPartial(value);
}
return acc;
},
{},
);
return message;
},
};
+97 -56
View File
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.7.7
// protoc v3.19.6
// protoc-gen-ts_proto v2.11.2
// protoc v5.28.2
// source: model_definitions.proto
/* eslint-disable */
@@ -116,7 +116,7 @@ function createBaseModelDefinitions(): ModelDefinitions {
export const ModelDefinitions: MessageFns<ModelDefinitions> = {
encode(message: ModelDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
Object.entries(message.models).forEach(([key, value]) => {
globalThis.Object.entries(message.models).forEach(([key, value]: [string, ModelDefinition]) => {
ModelDefinitions_ModelsEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join();
});
return writer;
@@ -152,10 +152,13 @@ export const ModelDefinitions: MessageFns<ModelDefinitions> = {
fromJSON(object: any): ModelDefinitions {
return {
models: isObject(object.models)
? Object.entries(object.models).reduce<{ [key: number]: ModelDefinition }>((acc, [key, value]) => {
acc[globalThis.Number(key)] = ModelDefinition.fromJSON(value);
return acc;
}, {})
? (globalThis.Object.entries(object.models) as [string, any][]).reduce(
(acc: { [key: number]: ModelDefinition }, [key, value]: [string, any]) => {
acc[globalThis.Number(key)] = ModelDefinition.fromJSON(value);
return acc;
},
{},
)
: {},
};
},
@@ -163,7 +166,7 @@ export const ModelDefinitions: MessageFns<ModelDefinitions> = {
toJSON(message: ModelDefinitions): unknown {
const obj: any = {};
if (message.models) {
const entries = Object.entries(message.models);
const entries = globalThis.Object.entries(message.models) as [string, ModelDefinition][];
if (entries.length > 0) {
obj.models = {};
entries.forEach(([k, v]) => {
@@ -179,8 +182,8 @@ export const ModelDefinitions: MessageFns<ModelDefinitions> = {
},
fromPartial<I extends Exact<DeepPartial<ModelDefinitions>, I>>(object: I): ModelDefinitions {
const message = createBaseModelDefinitions();
message.models = Object.entries(object.models ?? {}).reduce<{ [key: number]: ModelDefinition }>(
(acc, [key, value]) => {
message.models = (globalThis.Object.entries(object.models ?? {}) as [string, ModelDefinition][]).reduce(
(acc: { [key: number]: ModelDefinition }, [key, value]: [string, ModelDefinition]) => {
if (value !== undefined) {
acc[globalThis.Number(key)] = ModelDefinition.fromPartial(value);
}
@@ -292,10 +295,10 @@ export const ModelDefinition: MessageFns<ModelDefinition> = {
if (message.initial_turret_rotation !== undefined) {
InitialTurretRotation.encode(message.initial_turret_rotation, writer.uint32(26).fork()).join();
}
Object.entries(message.turrets).forEach(([key, value]) => {
globalThis.Object.entries(message.turrets).forEach(([key, value]: [string, TurretModelDefinition]) => {
ModelDefinition_TurretsEntry.encode({ key: key as any, value }, writer.uint32(34).fork()).join();
});
Object.entries(message.tracks).forEach(([key, value]) => {
globalThis.Object.entries(message.tracks).forEach(([key, value]: [string, TrackModelDefinition]) => {
ModelDefinition_TracksEntry.encode({ key: key as any, value }, writer.uint32(42).fork()).join();
});
if (message.bounding_box !== undefined) {
@@ -377,23 +380,39 @@ export const ModelDefinition: MessageFns<ModelDefinition> = {
fromJSON(object: any): ModelDefinition {
return {
armor: isSet(object.armor) ? Armor.fromJSON(object.armor) : undefined,
turret_origin: isSet(object.turret_origin) ? Vector3.fromJSON(object.turret_origin) : undefined,
initial_turret_rotation: isSet(object.initial_turret_rotation)
turret_origin: isSet(object.turretOrigin)
? Vector3.fromJSON(object.turretOrigin)
: isSet(object.turret_origin)
? Vector3.fromJSON(object.turret_origin)
: undefined,
initial_turret_rotation: isSet(object.initialTurretRotation)
? InitialTurretRotation.fromJSON(object.initialTurretRotation)
: isSet(object.initial_turret_rotation)
? InitialTurretRotation.fromJSON(object.initial_turret_rotation)
: undefined,
turrets: isObject(object.turrets)
? Object.entries(object.turrets).reduce<{ [key: number]: TurretModelDefinition }>((acc, [key, value]) => {
acc[globalThis.Number(key)] = TurretModelDefinition.fromJSON(value);
return acc;
}, {})
? (globalThis.Object.entries(object.turrets) as [string, any][]).reduce(
(acc: { [key: number]: TurretModelDefinition }, [key, value]: [string, any]) => {
acc[globalThis.Number(key)] = TurretModelDefinition.fromJSON(value);
return acc;
},
{},
)
: {},
tracks: isObject(object.tracks)
? Object.entries(object.tracks).reduce<{ [key: number]: TrackModelDefinition }>((acc, [key, value]) => {
acc[globalThis.Number(key)] = TrackModelDefinition.fromJSON(value);
return acc;
}, {})
? (globalThis.Object.entries(object.tracks) as [string, any][]).reduce(
(acc: { [key: number]: TrackModelDefinition }, [key, value]: [string, any]) => {
acc[globalThis.Number(key)] = TrackModelDefinition.fromJSON(value);
return acc;
},
{},
)
: {},
bounding_box: isSet(object.bounding_box) ? BoundingBox.fromJSON(object.bounding_box) : undefined,
bounding_box: isSet(object.boundingBox)
? BoundingBox.fromJSON(object.boundingBox)
: isSet(object.bounding_box)
? BoundingBox.fromJSON(object.bounding_box)
: undefined,
};
},
@@ -403,13 +422,13 @@ export const ModelDefinition: MessageFns<ModelDefinition> = {
obj.armor = Armor.toJSON(message.armor);
}
if (message.turret_origin !== undefined) {
obj.turret_origin = Vector3.toJSON(message.turret_origin);
obj.turretOrigin = Vector3.toJSON(message.turret_origin);
}
if (message.initial_turret_rotation !== undefined) {
obj.initial_turret_rotation = InitialTurretRotation.toJSON(message.initial_turret_rotation);
obj.initialTurretRotation = InitialTurretRotation.toJSON(message.initial_turret_rotation);
}
if (message.turrets) {
const entries = Object.entries(message.turrets);
const entries = globalThis.Object.entries(message.turrets) as [string, TurretModelDefinition][];
if (entries.length > 0) {
obj.turrets = {};
entries.forEach(([k, v]) => {
@@ -418,7 +437,7 @@ export const ModelDefinition: MessageFns<ModelDefinition> = {
}
}
if (message.tracks) {
const entries = Object.entries(message.tracks);
const entries = globalThis.Object.entries(message.tracks) as [string, TrackModelDefinition][];
if (entries.length > 0) {
obj.tracks = {};
entries.forEach(([k, v]) => {
@@ -427,7 +446,7 @@ export const ModelDefinition: MessageFns<ModelDefinition> = {
}
}
if (message.bounding_box !== undefined) {
obj.bounding_box = BoundingBox.toJSON(message.bounding_box);
obj.boundingBox = BoundingBox.toJSON(message.bounding_box);
}
return obj;
},
@@ -445,8 +464,8 @@ export const ModelDefinition: MessageFns<ModelDefinition> = {
(object.initial_turret_rotation !== undefined && object.initial_turret_rotation !== null)
? InitialTurretRotation.fromPartial(object.initial_turret_rotation)
: undefined;
message.turrets = Object.entries(object.turrets ?? {}).reduce<{ [key: number]: TurretModelDefinition }>(
(acc, [key, value]) => {
message.turrets = (globalThis.Object.entries(object.turrets ?? {}) as [string, TurretModelDefinition][]).reduce(
(acc: { [key: number]: TurretModelDefinition }, [key, value]: [string, TurretModelDefinition]) => {
if (value !== undefined) {
acc[globalThis.Number(key)] = TurretModelDefinition.fromPartial(value);
}
@@ -454,8 +473,8 @@ export const ModelDefinition: MessageFns<ModelDefinition> = {
},
{},
);
message.tracks = Object.entries(object.tracks ?? {}).reduce<{ [key: number]: TrackModelDefinition }>(
(acc, [key, value]) => {
message.tracks = (globalThis.Object.entries(object.tracks ?? {}) as [string, TrackModelDefinition][]).reduce(
(acc: { [key: number]: TrackModelDefinition }, [key, value]: [string, TrackModelDefinition]) => {
if (value !== undefined) {
acc[globalThis.Number(key)] = TrackModelDefinition.fromPartial(value);
}
@@ -632,7 +651,7 @@ function createBaseArmor(): Armor {
export const Armor: MessageFns<Armor> = {
encode(message: Armor, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
Object.entries(message.thickness).forEach(([key, value]) => {
globalThis.Object.entries(message.thickness).forEach(([key, value]: [string, number]) => {
Armor_ThicknessEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join();
});
for (const v of message.spaced) {
@@ -689,10 +708,13 @@ export const Armor: MessageFns<Armor> = {
fromJSON(object: any): Armor {
return {
thickness: isObject(object.thickness)
? Object.entries(object.thickness).reduce<{ [key: number]: number }>((acc, [key, value]) => {
acc[globalThis.Number(key)] = Number(value);
return acc;
}, {})
? (globalThis.Object.entries(object.thickness) as [string, any][]).reduce(
(acc: { [key: number]: number }, [key, value]: [string, any]) => {
acc[globalThis.Number(key)] = globalThis.Number(value);
return acc;
},
{},
)
: {},
spaced: globalThis.Array.isArray(object?.spaced) ? object.spaced.map((e: any) => globalThis.Number(e)) : [],
};
@@ -701,7 +723,7 @@ export const Armor: MessageFns<Armor> = {
toJSON(message: Armor): unknown {
const obj: any = {};
if (message.thickness) {
const entries = Object.entries(message.thickness);
const entries = globalThis.Object.entries(message.thickness) as [string, number][];
if (entries.length > 0) {
obj.thickness = {};
entries.forEach(([k, v]) => {
@@ -720,8 +742,8 @@ export const Armor: MessageFns<Armor> = {
},
fromPartial<I extends Exact<DeepPartial<Armor>, I>>(object: I): Armor {
const message = createBaseArmor();
message.thickness = Object.entries(object.thickness ?? {}).reduce<{ [key: number]: number }>(
(acc, [key, value]) => {
message.thickness = (globalThis.Object.entries(object.thickness ?? {}) as [string, number][]).reduce(
(acc: { [key: number]: number }, [key, value]: [string, number]) => {
if (value !== undefined) {
acc[globalThis.Number(key)] = globalThis.Number(value);
}
@@ -1012,7 +1034,7 @@ export const TurretModelDefinition: MessageFns<TurretModelDefinition> = {
if (message.gun_origin !== undefined) {
Vector3.encode(message.gun_origin, writer.uint32(34).fork()).join();
}
Object.entries(message.guns).forEach(([key, value]) => {
globalThis.Object.entries(message.guns).forEach(([key, value]: [string, GunModelDefinition]) => {
TurretModelDefinition_GunsEntry.encode({ key: key as any, value }, writer.uint32(42).fork()).join();
});
if (message.yaw !== undefined) {
@@ -1090,15 +1112,30 @@ export const TurretModelDefinition: MessageFns<TurretModelDefinition> = {
fromJSON(object: any): TurretModelDefinition {
return {
bounding_box: isSet(object.bounding_box) ? BoundingBox.fromJSON(object.bounding_box) : undefined,
bounding_box: isSet(object.boundingBox)
? BoundingBox.fromJSON(object.boundingBox)
: isSet(object.bounding_box)
? BoundingBox.fromJSON(object.bounding_box)
: undefined,
armor: isSet(object.armor) ? Armor.fromJSON(object.armor) : undefined,
model_id: isSet(object.model_id) ? globalThis.Number(object.model_id) : 0,
gun_origin: isSet(object.gun_origin) ? Vector3.fromJSON(object.gun_origin) : undefined,
model_id: isSet(object.modelId)
? globalThis.Number(object.modelId)
: isSet(object.model_id)
? globalThis.Number(object.model_id)
: 0,
gun_origin: isSet(object.gunOrigin)
? Vector3.fromJSON(object.gunOrigin)
: isSet(object.gun_origin)
? Vector3.fromJSON(object.gun_origin)
: undefined,
guns: isObject(object.guns)
? Object.entries(object.guns).reduce<{ [key: number]: GunModelDefinition }>((acc, [key, value]) => {
acc[globalThis.Number(key)] = GunModelDefinition.fromJSON(value);
return acc;
}, {})
? (globalThis.Object.entries(object.guns) as [string, any][]).reduce(
(acc: { [key: number]: GunModelDefinition }, [key, value]: [string, any]) => {
acc[globalThis.Number(key)] = GunModelDefinition.fromJSON(value);
return acc;
},
{},
)
: {},
yaw: isSet(object.yaw) ? YawLimits.fromJSON(object.yaw) : undefined,
};
@@ -1107,19 +1144,19 @@ export const TurretModelDefinition: MessageFns<TurretModelDefinition> = {
toJSON(message: TurretModelDefinition): unknown {
const obj: any = {};
if (message.bounding_box !== undefined) {
obj.bounding_box = BoundingBox.toJSON(message.bounding_box);
obj.boundingBox = BoundingBox.toJSON(message.bounding_box);
}
if (message.armor !== undefined) {
obj.armor = Armor.toJSON(message.armor);
}
if (message.model_id !== 0) {
obj.model_id = Math.round(message.model_id);
obj.modelId = Math.round(message.model_id);
}
if (message.gun_origin !== undefined) {
obj.gun_origin = Vector3.toJSON(message.gun_origin);
obj.gunOrigin = Vector3.toJSON(message.gun_origin);
}
if (message.guns) {
const entries = Object.entries(message.guns);
const entries = globalThis.Object.entries(message.guns) as [string, GunModelDefinition][];
if (entries.length > 0) {
obj.guns = {};
entries.forEach(([k, v]) => {
@@ -1146,8 +1183,8 @@ export const TurretModelDefinition: MessageFns<TurretModelDefinition> = {
message.gun_origin = (object.gun_origin !== undefined && object.gun_origin !== null)
? Vector3.fromPartial(object.gun_origin)
: undefined;
message.guns = Object.entries(object.guns ?? {}).reduce<{ [key: number]: GunModelDefinition }>(
(acc, [key, value]) => {
message.guns = (globalThis.Object.entries(object.guns ?? {}) as [string, GunModelDefinition][]).reduce(
(acc: { [key: number]: GunModelDefinition }, [key, value]: [string, GunModelDefinition]) => {
if (value !== undefined) {
acc[globalThis.Number(key)] = GunModelDefinition.fromPartial(value);
}
@@ -1554,7 +1591,11 @@ export const GunModelDefinition: MessageFns<GunModelDefinition> = {
return {
armor: isSet(object.armor) ? Armor.fromJSON(object.armor) : undefined,
thickness: isSet(object.thickness) ? globalThis.Number(object.thickness) : 0,
model_id: isSet(object.model_id) ? globalThis.Number(object.model_id) : 0,
model_id: isSet(object.modelId)
? globalThis.Number(object.modelId)
: isSet(object.model_id)
? globalThis.Number(object.model_id)
: 0,
pitch: isSet(object.pitch) ? PitchLimits.fromJSON(object.pitch) : undefined,
mask: isSet(object.mask) ? globalThis.Number(object.mask) : 0,
};
@@ -1569,7 +1610,7 @@ export const GunModelDefinition: MessageFns<GunModelDefinition> = {
obj.thickness = message.thickness;
}
if (message.model_id !== 0) {
obj.model_id = Math.round(message.model_id);
obj.modelId = Math.round(message.model_id);
}
if (message.pitch !== undefined) {
obj.pitch = PitchLimits.toJSON(message.pitch);
+2 -2
View File
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.7.7
// protoc v3.19.6
// protoc-gen-ts_proto v2.11.2
// protoc v5.28.2
// source: popular_tanks.proto
/* eslint-disable */
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.7.7
// protoc v3.19.6
// protoc-gen-ts_proto v2.11.2
// protoc v5.28.2
// source: provision_definitions.proto
/* eslint-disable */
@@ -35,7 +35,7 @@ function createBaseProvisionDefinitions(): ProvisionDefinitions {
export const ProvisionDefinitions: MessageFns<ProvisionDefinitions> = {
encode(message: ProvisionDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
Object.entries(message.provisions).forEach(([key, value]) => {
globalThis.Object.entries(message.provisions).forEach(([key, value]: [string, Provision]) => {
ProvisionDefinitions_ProvisionsEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join();
});
return writer;
@@ -71,10 +71,13 @@ export const ProvisionDefinitions: MessageFns<ProvisionDefinitions> = {
fromJSON(object: any): ProvisionDefinitions {
return {
provisions: isObject(object.provisions)
? Object.entries(object.provisions).reduce<{ [key: number]: Provision }>((acc, [key, value]) => {
acc[globalThis.Number(key)] = Provision.fromJSON(value);
return acc;
}, {})
? (globalThis.Object.entries(object.provisions) as [string, any][]).reduce(
(acc: { [key: number]: Provision }, [key, value]: [string, any]) => {
acc[globalThis.Number(key)] = Provision.fromJSON(value);
return acc;
},
{},
)
: {},
};
},
@@ -82,7 +85,7 @@ export const ProvisionDefinitions: MessageFns<ProvisionDefinitions> = {
toJSON(message: ProvisionDefinitions): unknown {
const obj: any = {};
if (message.provisions) {
const entries = Object.entries(message.provisions);
const entries = globalThis.Object.entries(message.provisions) as [string, Provision][];
if (entries.length > 0) {
obj.provisions = {};
entries.forEach(([k, v]) => {
@@ -98,8 +101,8 @@ export const ProvisionDefinitions: MessageFns<ProvisionDefinitions> = {
},
fromPartial<I extends Exact<DeepPartial<ProvisionDefinitions>, I>>(object: I): ProvisionDefinitions {
const message = createBaseProvisionDefinitions();
message.provisions = Object.entries(object.provisions ?? {}).reduce<{ [key: number]: Provision }>(
(acc, [key, value]) => {
message.provisions = (globalThis.Object.entries(object.provisions ?? {}) as [string, Provision][]).reduce(
(acc: { [key: number]: Provision }, [key, value]: [string, Provision]) => {
if (value !== undefined) {
acc[globalThis.Number(key)] = Provision.fromPartial(value);
}
@@ -289,7 +292,11 @@ export const Provision: MessageFns<Provision> = {
id: isSet(object.id) ? globalThis.Number(object.id) : 0,
name: isSet(object.name) ? I18nString.fromJSON(object.name) : undefined,
crew: isSet(object.crew) ? globalThis.Number(object.crew) : 0,
game_mode_exclusive: isSet(object.game_mode_exclusive) ? globalThis.Boolean(object.game_mode_exclusive) : false,
game_mode_exclusive: isSet(object.gameModeExclusive)
? globalThis.Boolean(object.gameModeExclusive)
: isSet(object.game_mode_exclusive)
? globalThis.Boolean(object.game_mode_exclusive)
: false,
include: globalThis.Array.isArray(object?.include)
? object.include.map((e: any) => ConsumableTankFilter.fromJSON(e))
: [],
@@ -311,7 +318,7 @@ export const Provision: MessageFns<Provision> = {
obj.crew = message.crew;
}
if (message.game_mode_exclusive !== false) {
obj.game_mode_exclusive = message.game_mode_exclusive;
obj.gameModeExclusive = message.game_mode_exclusive;
}
if (message.include?.length) {
obj.include = message.include.map((e) => ConsumableTankFilter.toJSON(e));
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.7.7
// protoc v3.19.6
// protoc-gen-ts_proto v2.11.2
// protoc v5.28.2
// source: rating_leaderboard.proto
/* eslint-disable */
+26 -16
View File
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.7.7
// protoc v3.19.6
// protoc-gen-ts_proto v2.11.2
// protoc v5.28.2
// source: reviews.proto
/* eslint-disable */
@@ -34,7 +34,7 @@ function createBaseReviews(): Reviews {
export const Reviews: MessageFns<Reviews> = {
encode(message: Reviews, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
Object.entries(message.reviews).forEach(([key, value]) => {
globalThis.Object.entries(message.reviews).forEach(([key, value]: [string, Review]) => {
Reviews_ReviewsEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join();
});
return writer;
@@ -70,10 +70,13 @@ export const Reviews: MessageFns<Reviews> = {
fromJSON(object: any): Reviews {
return {
reviews: isObject(object.reviews)
? Object.entries(object.reviews).reduce<{ [key: number]: Review }>((acc, [key, value]) => {
acc[globalThis.Number(key)] = Review.fromJSON(value);
return acc;
}, {})
? (globalThis.Object.entries(object.reviews) as [string, any][]).reduce(
(acc: { [key: number]: Review }, [key, value]: [string, any]) => {
acc[globalThis.Number(key)] = Review.fromJSON(value);
return acc;
},
{},
)
: {},
};
},
@@ -81,7 +84,7 @@ export const Reviews: MessageFns<Reviews> = {
toJSON(message: Reviews): unknown {
const obj: any = {};
if (message.reviews) {
const entries = Object.entries(message.reviews);
const entries = globalThis.Object.entries(message.reviews) as [string, Review][];
if (entries.length > 0) {
obj.reviews = {};
entries.forEach(([k, v]) => {
@@ -97,12 +100,15 @@ export const Reviews: MessageFns<Reviews> = {
},
fromPartial<I extends Exact<DeepPartial<Reviews>, I>>(object: I): Reviews {
const message = createBaseReviews();
message.reviews = Object.entries(object.reviews ?? {}).reduce<{ [key: number]: Review }>((acc, [key, value]) => {
if (value !== undefined) {
acc[globalThis.Number(key)] = Review.fromPartial(value);
}
return acc;
}, {});
message.reviews = (globalThis.Object.entries(object.reviews ?? {}) as [string, Review][]).reduce(
(acc: { [key: number]: Review }, [key, value]: [string, Review]) => {
if (value !== undefined) {
acc[globalThis.Number(key)] = Review.fromPartial(value);
}
return acc;
},
{},
);
return message;
},
};
@@ -234,7 +240,11 @@ export const Review: MessageFns<Review> = {
fromJSON(object: any): Review {
return {
last_updated: isSet(object.last_updated) ? globalThis.Number(object.last_updated) : 0,
last_updated: isSet(object.lastUpdated)
? globalThis.Number(object.lastUpdated)
: isSet(object.last_updated)
? globalThis.Number(object.last_updated)
: 0,
videos: globalThis.Array.isArray(object?.videos) ? object.videos.map((e: any) => Video.fromJSON(e)) : [],
};
},
@@ -242,7 +252,7 @@ export const Review: MessageFns<Review> = {
toJSON(message: Review): unknown {
const obj: any = {};
if (message.last_updated !== 0) {
obj.last_updated = message.last_updated;
obj.lastUpdated = message.last_updated;
}
if (message.videos?.length) {
obj.videos = message.videos.map((e) => Video.toJSON(e));
+20 -14
View File
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.7.7
// protoc v3.19.6
// protoc-gen-ts_proto v2.11.2
// protoc v5.28.2
// source: skill_definitions.proto
/* eslint-disable */
@@ -29,7 +29,7 @@ function createBaseSkillDefinitions(): SkillDefinitions {
export const SkillDefinitions: MessageFns<SkillDefinitions> = {
encode(message: SkillDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
Object.entries(message.classes).forEach(([key, value]) => {
globalThis.Object.entries(message.classes).forEach(([key, value]: [string, Skill]) => {
SkillDefinitions_ClassesEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join();
});
return writer;
@@ -65,10 +65,13 @@ export const SkillDefinitions: MessageFns<SkillDefinitions> = {
fromJSON(object: any): SkillDefinitions {
return {
classes: isObject(object.classes)
? Object.entries(object.classes).reduce<{ [key: number]: Skill }>((acc, [key, value]) => {
acc[globalThis.Number(key)] = Skill.fromJSON(value);
return acc;
}, {})
? (globalThis.Object.entries(object.classes) as [string, any][]).reduce(
(acc: { [key: number]: Skill }, [key, value]: [string, any]) => {
acc[globalThis.Number(key)] = Skill.fromJSON(value);
return acc;
},
{},
)
: {},
};
},
@@ -76,7 +79,7 @@ export const SkillDefinitions: MessageFns<SkillDefinitions> = {
toJSON(message: SkillDefinitions): unknown {
const obj: any = {};
if (message.classes) {
const entries = Object.entries(message.classes);
const entries = globalThis.Object.entries(message.classes) as [string, Skill][];
if (entries.length > 0) {
obj.classes = {};
entries.forEach(([k, v]) => {
@@ -92,12 +95,15 @@ export const SkillDefinitions: MessageFns<SkillDefinitions> = {
},
fromPartial<I extends Exact<DeepPartial<SkillDefinitions>, I>>(object: I): SkillDefinitions {
const message = createBaseSkillDefinitions();
message.classes = Object.entries(object.classes ?? {}).reduce<{ [key: number]: Skill }>((acc, [key, value]) => {
if (value !== undefined) {
acc[globalThis.Number(key)] = Skill.fromPartial(value);
}
return acc;
}, {});
message.classes = (globalThis.Object.entries(object.classes ?? {}) as [string, Skill][]).reduce(
(acc: { [key: number]: Skill }, [key, value]: [string, Skill]) => {
if (value !== undefined) {
acc[globalThis.Number(key)] = Skill.fromPartial(value);
}
return acc;
},
{},
);
return message;
},
};
@@ -11,7 +11,7 @@ message TankDefinitions {
message TankDefinition {
required uint32 id = 1;
required string slug = 2;
map<string, uint32> roles = 3;
map<uint32, uint32> roles = 3;
required bool fixed_camouflage = 5;
repeated int32 camouflages = 6;
repeated int32 ancestors = 7;
+319 -126
View File
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.7.7
// protoc v3.19.6
// protoc-gen-ts_proto v2.11.2
// protoc v5.28.2
// source: tank_definitions.proto
/* eslint-disable */
@@ -262,7 +262,7 @@ export interface TankDefinitions_TanksEntry {
export interface TankDefinition {
id: number;
slug: string;
roles: { [key: string]: number };
roles: { [key: number]: number };
fixed_camouflage: boolean;
camouflages: number[];
ancestors: number[];
@@ -295,7 +295,7 @@ export interface TankDefinition {
}
export interface TankDefinition_RolesEntry {
key: string;
key: number;
value: number;
}
@@ -463,7 +463,7 @@ function createBaseTankDefinitions(): TankDefinitions {
export const TankDefinitions: MessageFns<TankDefinitions> = {
encode(message: TankDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
Object.entries(message.tanks).forEach(([key, value]) => {
globalThis.Object.entries(message.tanks).forEach(([key, value]: [string, TankDefinition]) => {
TankDefinitions_TanksEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join();
});
return writer;
@@ -499,10 +499,13 @@ export const TankDefinitions: MessageFns<TankDefinitions> = {
fromJSON(object: any): TankDefinitions {
return {
tanks: isObject(object.tanks)
? Object.entries(object.tanks).reduce<{ [key: number]: TankDefinition }>((acc, [key, value]) => {
acc[globalThis.Number(key)] = TankDefinition.fromJSON(value);
return acc;
}, {})
? (globalThis.Object.entries(object.tanks) as [string, any][]).reduce(
(acc: { [key: number]: TankDefinition }, [key, value]: [string, any]) => {
acc[globalThis.Number(key)] = TankDefinition.fromJSON(value);
return acc;
},
{},
)
: {},
};
},
@@ -510,7 +513,7 @@ export const TankDefinitions: MessageFns<TankDefinitions> = {
toJSON(message: TankDefinitions): unknown {
const obj: any = {};
if (message.tanks) {
const entries = Object.entries(message.tanks);
const entries = globalThis.Object.entries(message.tanks) as [string, TankDefinition][];
if (entries.length > 0) {
obj.tanks = {};
entries.forEach(([k, v]) => {
@@ -526,8 +529,8 @@ export const TankDefinitions: MessageFns<TankDefinitions> = {
},
fromPartial<I extends Exact<DeepPartial<TankDefinitions>, I>>(object: I): TankDefinitions {
const message = createBaseTankDefinitions();
message.tanks = Object.entries(object.tanks ?? {}).reduce<{ [key: number]: TankDefinition }>(
(acc, [key, value]) => {
message.tanks = (globalThis.Object.entries(object.tanks ?? {}) as [string, TankDefinition][]).reduce(
(acc: { [key: number]: TankDefinition }, [key, value]: [string, TankDefinition]) => {
if (value !== undefined) {
acc[globalThis.Number(key)] = TankDefinition.fromPartial(value);
}
@@ -662,7 +665,7 @@ export const TankDefinition: MessageFns<TankDefinition> = {
if (message.slug !== "") {
writer.uint32(18).string(message.slug);
}
Object.entries(message.roles).forEach(([key, value]) => {
globalThis.Object.entries(message.roles).forEach(([key, value]: [string, number]) => {
TankDefinition_RolesEntry.encode({ key: key as any, value }, writer.uint32(26).fork()).join();
});
if (message.fixed_camouflage !== false) {
@@ -1065,12 +1068,19 @@ export const TankDefinition: MessageFns<TankDefinition> = {
id: isSet(object.id) ? globalThis.Number(object.id) : 0,
slug: isSet(object.slug) ? globalThis.String(object.slug) : "",
roles: isObject(object.roles)
? Object.entries(object.roles).reduce<{ [key: string]: number }>((acc, [key, value]) => {
acc[key] = Number(value);
return acc;
}, {})
? (globalThis.Object.entries(object.roles) as [string, any][]).reduce(
(acc: { [key: number]: number }, [key, value]: [string, any]) => {
acc[globalThis.Number(key)] = globalThis.Number(value);
return acc;
},
{},
)
: {},
fixed_camouflage: isSet(object.fixed_camouflage) ? globalThis.Boolean(object.fixed_camouflage) : false,
fixed_camouflage: isSet(object.fixedCamouflage)
? globalThis.Boolean(object.fixedCamouflage)
: isSet(object.fixed_camouflage)
? globalThis.Boolean(object.fixed_camouflage)
: false,
camouflages: globalThis.Array.isArray(object?.camouflages)
? object.camouflages.map((e: any) => globalThis.Number(e))
: [],
@@ -1080,13 +1090,23 @@ export const TankDefinition: MessageFns<TankDefinition> = {
successors: globalThis.Array.isArray(object?.successors)
? object.successors.map((e: any) => globalThis.Number(e))
: [],
crew: globalThis.Array.isArray(object?.crew) ? object.crew.map((e: any) => Crew.fromJSON(e)) : [],
crew: globalThis.Array.isArray(object?.crew)
? object.crew.map((e: any) => Crew.fromJSON(e))
: [],
health: isSet(object.health) ? globalThis.Number(object.health) : 0,
nation: isSet(object.nation) ? globalThis.String(object.nation) : "",
name: isSet(object.name) ? I18nString.fromJSON(object.name) : undefined,
type: isSet(object.type) ? tankTypeFromJSON(object.type) : 0,
max_consumables: isSet(object.max_consumables) ? globalThis.Number(object.max_consumables) : 0,
max_provisions: isSet(object.max_provisions) ? globalThis.Number(object.max_provisions) : 0,
max_consumables: isSet(object.maxConsumables)
? globalThis.Number(object.maxConsumables)
: isSet(object.max_consumables)
? globalThis.Number(object.max_consumables)
: 0,
max_provisions: isSet(object.maxProvisions)
? globalThis.Number(object.maxProvisions)
: isSet(object.max_provisions)
? globalThis.Number(object.max_provisions)
: 0,
tier: isSet(object.tier) ? globalThis.Number(object.tier) : 0,
class: isSet(object.class) ? tankClassFromJSON(object.class) : 0,
testing: isSet(object.testing) ? globalThis.Boolean(object.testing) : false,
@@ -1101,15 +1121,47 @@ export const TankDefinition: MessageFns<TankDefinition> = {
? object.tracks.map((e: any) => TrackDefinition.fromJSON(e))
: [],
price: isSet(object.price) ? TankPrice.fromJSON(object.price) : undefined,
research_cost: isSet(object.research_cost) ? ResearchCost.fromJSON(object.research_cost) : undefined,
speed_forwards: isSet(object.speed_forwards) ? globalThis.Number(object.speed_forwards) : 0,
speed_backwards: isSet(object.speed_backwards) ? globalThis.Number(object.speed_backwards) : 0,
camouflage_still: isSet(object.camouflage_still) ? globalThis.Number(object.camouflage_still) : 0,
camouflage_moving: isSet(object.camouflage_moving) ? globalThis.Number(object.camouflage_moving) : 0,
camouflage_on_fire: isSet(object.camouflage_on_fire) ? globalThis.Number(object.camouflage_on_fire) : 0,
equipment_preset: isSet(object.equipment_preset) ? globalThis.String(object.equipment_preset) : "",
research_cost: isSet(object.researchCost)
? ResearchCost.fromJSON(object.researchCost)
: isSet(object.research_cost)
? ResearchCost.fromJSON(object.research_cost)
: undefined,
speed_forwards: isSet(object.speedForwards)
? globalThis.Number(object.speedForwards)
: isSet(object.speed_forwards)
? globalThis.Number(object.speed_forwards)
: 0,
speed_backwards: isSet(object.speedBackwards)
? globalThis.Number(object.speedBackwards)
: isSet(object.speed_backwards)
? globalThis.Number(object.speed_backwards)
: 0,
camouflage_still: isSet(object.camouflageStill)
? globalThis.Number(object.camouflageStill)
: isSet(object.camouflage_still)
? globalThis.Number(object.camouflage_still)
: 0,
camouflage_moving: isSet(object.camouflageMoving)
? globalThis.Number(object.camouflageMoving)
: isSet(object.camouflage_moving)
? globalThis.Number(object.camouflage_moving)
: 0,
camouflage_on_fire: isSet(object.camouflageOnFire)
? globalThis.Number(object.camouflageOnFire)
: isSet(object.camouflage_on_fire)
? globalThis.Number(object.camouflage_on_fire)
: 0,
equipment_preset: isSet(object.equipmentPreset)
? globalThis.String(object.equipmentPreset)
: isSet(object.equipment_preset)
? globalThis.String(object.equipment_preset)
: "",
weight: isSet(object.weight) ? globalThis.Number(object.weight) : 0,
dev_name: isSet(object.dev_name) ? globalThis.String(object.dev_name) : "",
dev_name: isSet(object.devName)
? globalThis.String(object.devName)
: isSet(object.dev_name)
? globalThis.String(object.dev_name)
: "",
equalizer: isSet(object.equalizer) ? Equalizer.fromJSON(object.equalizer) : undefined,
};
},
@@ -1123,7 +1175,7 @@ export const TankDefinition: MessageFns<TankDefinition> = {
obj.slug = message.slug;
}
if (message.roles) {
const entries = Object.entries(message.roles);
const entries = globalThis.Object.entries(message.roles) as [string, number][];
if (entries.length > 0) {
obj.roles = {};
entries.forEach(([k, v]) => {
@@ -1132,7 +1184,7 @@ export const TankDefinition: MessageFns<TankDefinition> = {
}
}
if (message.fixed_camouflage !== false) {
obj.fixed_camouflage = message.fixed_camouflage;
obj.fixedCamouflage = message.fixed_camouflage;
}
if (message.camouflages?.length) {
obj.camouflages = message.camouflages.map((e) => Math.round(e));
@@ -1159,10 +1211,10 @@ export const TankDefinition: MessageFns<TankDefinition> = {
obj.type = tankTypeToJSON(message.type);
}
if (message.max_consumables !== 0) {
obj.max_consumables = Math.round(message.max_consumables);
obj.maxConsumables = Math.round(message.max_consumables);
}
if (message.max_provisions !== 0) {
obj.max_provisions = Math.round(message.max_provisions);
obj.maxProvisions = Math.round(message.max_provisions);
}
if (message.tier !== 0) {
obj.tier = Math.round(message.tier);
@@ -1189,31 +1241,31 @@ export const TankDefinition: MessageFns<TankDefinition> = {
obj.price = TankPrice.toJSON(message.price);
}
if (message.research_cost !== undefined) {
obj.research_cost = ResearchCost.toJSON(message.research_cost);
obj.researchCost = ResearchCost.toJSON(message.research_cost);
}
if (message.speed_forwards !== 0) {
obj.speed_forwards = message.speed_forwards;
obj.speedForwards = message.speed_forwards;
}
if (message.speed_backwards !== 0) {
obj.speed_backwards = message.speed_backwards;
obj.speedBackwards = message.speed_backwards;
}
if (message.camouflage_still !== 0) {
obj.camouflage_still = message.camouflage_still;
obj.camouflageStill = message.camouflage_still;
}
if (message.camouflage_moving !== 0) {
obj.camouflage_moving = message.camouflage_moving;
obj.camouflageMoving = message.camouflage_moving;
}
if (message.camouflage_on_fire !== 0) {
obj.camouflage_on_fire = message.camouflage_on_fire;
obj.camouflageOnFire = message.camouflage_on_fire;
}
if (message.equipment_preset !== "") {
obj.equipment_preset = message.equipment_preset;
obj.equipmentPreset = message.equipment_preset;
}
if (message.weight !== 0) {
obj.weight = Math.round(message.weight);
}
if (message.dev_name !== "") {
obj.dev_name = message.dev_name;
obj.devName = message.dev_name;
}
if (message.equalizer !== undefined) {
obj.equalizer = Equalizer.toJSON(message.equalizer);
@@ -1228,12 +1280,15 @@ export const TankDefinition: MessageFns<TankDefinition> = {
const message = createBaseTankDefinition();
message.id = object.id ?? 0;
message.slug = object.slug ?? "";
message.roles = Object.entries(object.roles ?? {}).reduce<{ [key: string]: number }>((acc, [key, value]) => {
if (value !== undefined) {
acc[key] = globalThis.Number(value);
}
return acc;
}, {});
message.roles = (globalThis.Object.entries(object.roles ?? {}) as [string, number][]).reduce(
(acc: { [key: number]: number }, [key, value]: [string, number]) => {
if (value !== undefined) {
acc[globalThis.Number(key)] = globalThis.Number(value);
}
return acc;
},
{},
);
message.fixed_camouflage = object.fixed_camouflage ?? false;
message.camouflages = object.camouflages?.map((e) => e) || [];
message.ancestors = object.ancestors?.map((e) => e) || [];
@@ -1276,13 +1331,13 @@ export const TankDefinition: MessageFns<TankDefinition> = {
};
function createBaseTankDefinition_RolesEntry(): TankDefinition_RolesEntry {
return { key: "", value: 0 };
return { key: 0, value: 0 };
}
export const TankDefinition_RolesEntry: MessageFns<TankDefinition_RolesEntry> = {
encode(message: TankDefinition_RolesEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.key !== "") {
writer.uint32(10).string(message.key);
if (message.key !== 0) {
writer.uint32(8).uint32(message.key);
}
if (message.value !== 0) {
writer.uint32(16).uint32(message.value);
@@ -1298,11 +1353,11 @@ export const TankDefinition_RolesEntry: MessageFns<TankDefinition_RolesEntry> =
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
if (tag !== 8) {
break;
}
message.key = reader.string();
message.key = reader.uint32();
continue;
}
case 2: {
@@ -1324,15 +1379,15 @@ export const TankDefinition_RolesEntry: MessageFns<TankDefinition_RolesEntry> =
fromJSON(object: any): TankDefinition_RolesEntry {
return {
key: isSet(object.key) ? globalThis.String(object.key) : "",
key: isSet(object.key) ? globalThis.Number(object.key) : 0,
value: isSet(object.value) ? globalThis.Number(object.value) : 0,
};
},
toJSON(message: TankDefinition_RolesEntry): unknown {
const obj: any = {};
if (message.key !== "") {
obj.key = message.key;
if (message.key !== 0) {
obj.key = Math.round(message.key);
}
if (message.value !== 0) {
obj.value = Math.round(message.value);
@@ -1345,7 +1400,7 @@ export const TankDefinition_RolesEntry: MessageFns<TankDefinition_RolesEntry> =
},
fromPartial<I extends Exact<DeepPartial<TankDefinition_RolesEntry>, I>>(object: I): TankDefinition_RolesEntry {
const message = createBaseTankDefinition_RolesEntry();
message.key = object.key ?? "";
message.key = object.key ?? 0;
message.value = object.value ?? 0;
return message;
},
@@ -1435,7 +1490,11 @@ export const Equalizer: MessageFns<Equalizer> = {
return {
health: isSet(object.health) ? globalThis.Number(object.health) : 0,
penetration: isSet(object.penetration) ? globalThis.Number(object.penetration) : 0,
module_health: isSet(object.module_health) ? globalThis.Number(object.module_health) : 0,
module_health: isSet(object.moduleHealth)
? globalThis.Number(object.moduleHealth)
: isSet(object.module_health)
? globalThis.Number(object.module_health)
: 0,
damage: isSet(object.damage) ? globalThis.Number(object.damage) : 0,
armor: isSet(object.armor) ? globalThis.Number(object.armor) : 0,
};
@@ -1450,7 +1509,7 @@ export const Equalizer: MessageFns<Equalizer> = {
obj.penetration = message.penetration;
}
if (message.module_health !== 0) {
obj.module_health = message.module_health;
obj.moduleHealth = message.module_health;
}
if (message.damage !== 0) {
obj.damage = message.damage;
@@ -1531,6 +1590,8 @@ export const ResearchCost: MessageFns<ResearchCost> = {
return {
research_cost_type: isSet(object.xp)
? { $case: "xp", value: globalThis.Number(object.xp) }
: isSet(object.seasonalTokens)
? { $case: "seasonal_tokens", value: ResearchCostSeasonalTokens.fromJSON(object.seasonalTokens) }
: isSet(object.seasonal_tokens)
? { $case: "seasonal_tokens", value: ResearchCostSeasonalTokens.fromJSON(object.seasonal_tokens) }
: undefined,
@@ -1542,7 +1603,7 @@ export const ResearchCost: MessageFns<ResearchCost> = {
if (message.research_cost_type?.$case === "xp") {
obj.xp = Math.round(message.research_cost_type.value);
} else if (message.research_cost_type?.$case === "seasonal_tokens") {
obj.seasonal_tokens = ResearchCostSeasonalTokens.toJSON(message.research_cost_type.value);
obj.seasonalTokens = ResearchCostSeasonalTokens.toJSON(message.research_cost_type.value);
}
return obj;
},
@@ -1901,14 +1962,44 @@ export const TrackDefinition: MessageFns<TrackDefinition> = {
tier: isSet(object.tier) ? globalThis.Number(object.tier) : 0,
name: isSet(object.name) ? I18nString.fromJSON(object.name) : undefined,
weight: isSet(object.weight) ? globalThis.Number(object.weight) : 0,
traverse_speed: isSet(object.traverse_speed) ? globalThis.Number(object.traverse_speed) : 0,
research_cost: isSet(object.research_cost) ? ResearchCost.fromJSON(object.research_cost) : undefined,
dispersion_move: isSet(object.dispersion_move) ? globalThis.Number(object.dispersion_move) : 0,
dispersion_traverse: isSet(object.dispersion_traverse) ? globalThis.Number(object.dispersion_traverse) : 0,
resistance_hard: isSet(object.resistance_hard) ? globalThis.Number(object.resistance_hard) : 0,
resistance_medium: isSet(object.resistance_medium) ? globalThis.Number(object.resistance_medium) : 0,
resistance_soft: isSet(object.resistance_soft) ? globalThis.Number(object.resistance_soft) : 0,
unlocks: globalThis.Array.isArray(object?.unlocks) ? object.unlocks.map((e: any) => Unlock.fromJSON(e)) : [],
traverse_speed: isSet(object.traverseSpeed)
? globalThis.Number(object.traverseSpeed)
: isSet(object.traverse_speed)
? globalThis.Number(object.traverse_speed)
: 0,
research_cost: isSet(object.researchCost)
? ResearchCost.fromJSON(object.researchCost)
: isSet(object.research_cost)
? ResearchCost.fromJSON(object.research_cost)
: undefined,
dispersion_move: isSet(object.dispersionMove)
? globalThis.Number(object.dispersionMove)
: isSet(object.dispersion_move)
? globalThis.Number(object.dispersion_move)
: 0,
dispersion_traverse: isSet(object.dispersionTraverse)
? globalThis.Number(object.dispersionTraverse)
: isSet(object.dispersion_traverse)
? globalThis.Number(object.dispersion_traverse)
: 0,
resistance_hard: isSet(object.resistanceHard)
? globalThis.Number(object.resistanceHard)
: isSet(object.resistance_hard)
? globalThis.Number(object.resistance_hard)
: 0,
resistance_medium: isSet(object.resistanceMedium)
? globalThis.Number(object.resistanceMedium)
: isSet(object.resistance_medium)
? globalThis.Number(object.resistance_medium)
: 0,
resistance_soft: isSet(object.resistanceSoft)
? globalThis.Number(object.resistanceSoft)
: isSet(object.resistance_soft)
? globalThis.Number(object.resistance_soft)
: 0,
unlocks: globalThis.Array.isArray(object?.unlocks)
? object.unlocks.map((e: any) => Unlock.fromJSON(e))
: [],
};
},
@@ -1927,25 +2018,25 @@ export const TrackDefinition: MessageFns<TrackDefinition> = {
obj.weight = Math.round(message.weight);
}
if (message.traverse_speed !== 0) {
obj.traverse_speed = message.traverse_speed;
obj.traverseSpeed = message.traverse_speed;
}
if (message.research_cost !== undefined) {
obj.research_cost = ResearchCost.toJSON(message.research_cost);
obj.researchCost = ResearchCost.toJSON(message.research_cost);
}
if (message.dispersion_move !== 0) {
obj.dispersion_move = message.dispersion_move;
obj.dispersionMove = message.dispersion_move;
}
if (message.dispersion_traverse !== 0) {
obj.dispersion_traverse = message.dispersion_traverse;
obj.dispersionTraverse = message.dispersion_traverse;
}
if (message.resistance_hard !== 0) {
obj.resistance_hard = message.resistance_hard;
obj.resistanceHard = message.resistance_hard;
}
if (message.resistance_medium !== 0) {
obj.resistance_medium = message.resistance_medium;
obj.resistanceMedium = message.resistance_medium;
}
if (message.resistance_soft !== 0) {
obj.resistance_soft = message.resistance_soft;
obj.resistanceSoft = message.resistance_soft;
}
if (message.unlocks?.length) {
obj.unlocks = message.unlocks.map((e) => Unlock.toJSON(e));
@@ -2104,9 +2195,17 @@ export const EngineDefinition: MessageFns<EngineDefinition> = {
return {
id: isSet(object.id) ? globalThis.Number(object.id) : 0,
name: isSet(object.name) ? I18nString.fromJSON(object.name) : undefined,
research_cost: isSet(object.research_cost) ? ResearchCost.fromJSON(object.research_cost) : undefined,
research_cost: isSet(object.researchCost)
? ResearchCost.fromJSON(object.researchCost)
: isSet(object.research_cost)
? ResearchCost.fromJSON(object.research_cost)
: undefined,
tier: isSet(object.tier) ? globalThis.Number(object.tier) : 0,
fire_chance: isSet(object.fire_chance) ? globalThis.Number(object.fire_chance) : 0,
fire_chance: isSet(object.fireChance)
? globalThis.Number(object.fireChance)
: isSet(object.fire_chance)
? globalThis.Number(object.fire_chance)
: 0,
power: isSet(object.power) ? globalThis.Number(object.power) : 0,
weight: isSet(object.weight) ? globalThis.Number(object.weight) : 0,
unlocks: globalThis.Array.isArray(object?.unlocks) ? object.unlocks.map((e: any) => Unlock.fromJSON(e)) : [],
@@ -2122,13 +2221,13 @@ export const EngineDefinition: MessageFns<EngineDefinition> = {
obj.name = I18nString.toJSON(message.name);
}
if (message.research_cost !== undefined) {
obj.research_cost = ResearchCost.toJSON(message.research_cost);
obj.researchCost = ResearchCost.toJSON(message.research_cost);
}
if (message.tier !== 0) {
obj.tier = Math.round(message.tier);
}
if (message.fire_chance !== 0) {
obj.fire_chance = message.fire_chance;
obj.fireChance = message.fire_chance;
}
if (message.power !== 0) {
obj.power = Math.round(message.power);
@@ -2313,13 +2412,27 @@ export const TurretDefinition: MessageFns<TurretDefinition> = {
return {
id: isSet(object.id) ? globalThis.Number(object.id) : 0,
health: isSet(object.health) ? globalThis.Number(object.health) : 0,
view_range: isSet(object.view_range) ? globalThis.Number(object.view_range) : 0,
traverse_speed: isSet(object.traverse_speed) ? globalThis.Number(object.traverse_speed) : 0,
research_cost: isSet(object.research_cost) ? ResearchCost.fromJSON(object.research_cost) : undefined,
view_range: isSet(object.viewRange)
? globalThis.Number(object.viewRange)
: isSet(object.view_range)
? globalThis.Number(object.view_range)
: 0,
traverse_speed: isSet(object.traverseSpeed)
? globalThis.Number(object.traverseSpeed)
: isSet(object.traverse_speed)
? globalThis.Number(object.traverse_speed)
: 0,
research_cost: isSet(object.researchCost)
? ResearchCost.fromJSON(object.researchCost)
: isSet(object.research_cost)
? ResearchCost.fromJSON(object.research_cost)
: undefined,
name: isSet(object.name) ? I18nString.fromJSON(object.name) : undefined,
tier: isSet(object.tier) ? globalThis.Number(object.tier) : 0,
weight: isSet(object.weight) ? globalThis.Number(object.weight) : 0,
guns: globalThis.Array.isArray(object?.guns) ? object.guns.map((e: any) => GunDefinition.fromJSON(e)) : [],
guns: globalThis.Array.isArray(object?.guns)
? object.guns.map((e: any) => GunDefinition.fromJSON(e))
: [],
unlocks: globalThis.Array.isArray(object?.unlocks) ? object.unlocks.map((e: any) => Unlock.fromJSON(e)) : [],
};
},
@@ -2333,13 +2446,13 @@ export const TurretDefinition: MessageFns<TurretDefinition> = {
obj.health = Math.round(message.health);
}
if (message.view_range !== 0) {
obj.view_range = Math.round(message.view_range);
obj.viewRange = Math.round(message.view_range);
}
if (message.traverse_speed !== 0) {
obj.traverse_speed = message.traverse_speed;
obj.traverseSpeed = message.traverse_speed;
}
if (message.research_cost !== undefined) {
obj.research_cost = ResearchCost.toJSON(message.research_cost);
obj.researchCost = ResearchCost.toJSON(message.research_cost);
}
if (message.name !== undefined) {
obj.name = I18nString.toJSON(message.name);
@@ -2655,29 +2768,75 @@ export const GunDefinition: MessageFns<GunDefinition> = {
return {
gun_type: isSet(object.regular)
? { $case: "regular", value: GunDefinitionRegular.fromJSON(object.regular) }
: isSet(object.autoLoader)
? { $case: "auto_loader", value: GunDefinitionAutoLoader.fromJSON(object.autoLoader) }
: isSet(object.auto_loader)
? { $case: "auto_loader", value: GunDefinitionAutoLoader.fromJSON(object.auto_loader) }
: isSet(object.autoReloader)
? { $case: "auto_reloader", value: GunDefinitionAutoReloader.fromJSON(object.autoReloader) }
: isSet(object.auto_reloader)
? { $case: "auto_reloader", value: GunDefinitionAutoReloader.fromJSON(object.auto_reloader) }
: undefined,
id: isSet(object.id) ? globalThis.Number(object.id) : 0,
rotation_speed: isSet(object.rotation_speed) ? globalThis.Number(object.rotation_speed) : 0,
research_cost: isSet(object.research_cost) ? ResearchCost.fromJSON(object.research_cost) : undefined,
rotation_speed: isSet(object.rotationSpeed)
? globalThis.Number(object.rotationSpeed)
: isSet(object.rotation_speed)
? globalThis.Number(object.rotation_speed)
: 0,
research_cost: isSet(object.researchCost)
? ResearchCost.fromJSON(object.researchCost)
: isSet(object.research_cost)
? ResearchCost.fromJSON(object.research_cost)
: undefined,
weight: isSet(object.weight) ? globalThis.Number(object.weight) : 0,
name: isSet(object.name) ? I18nString.fromJSON(object.name) : undefined,
tier: isSet(object.tier) ? globalThis.Number(object.tier) : 0,
shells: globalThis.Array.isArray(object?.shells)
? object.shells.map((e: any) => ShellDefinition.fromJSON(e))
: [],
camouflage_loss: isSet(object.camouflage_loss) ? globalThis.Number(object.camouflage_loss) : 0,
aim_time: isSet(object.aim_time) ? globalThis.Number(object.aim_time) : 0,
dispersion_base: isSet(object.dispersion_base) ? globalThis.Number(object.dispersion_base) : 0,
dispersion_traverse: isSet(object.dispersion_traverse) ? globalThis.Number(object.dispersion_traverse) : 0,
dispersion_shot: isSet(object.dispersion_shot) ? globalThis.Number(object.dispersion_shot) : 0,
dispersion_damaged: isSet(object.dispersion_damaged) ? globalThis.Number(object.dispersion_damaged) : 0,
unlocks: globalThis.Array.isArray(object?.unlocks) ? object.unlocks.map((e: any) => Unlock.fromJSON(e)) : [],
shell_capacity: isSet(object.shell_capacity) ? globalThis.Number(object.shell_capacity) : 0,
assault_ranges: isSet(object.assault_ranges) ? AssaultRanges.fromJSON(object.assault_ranges) : undefined,
camouflage_loss: isSet(object.camouflageLoss)
? globalThis.Number(object.camouflageLoss)
: isSet(object.camouflage_loss)
? globalThis.Number(object.camouflage_loss)
: 0,
aim_time: isSet(object.aimTime)
? globalThis.Number(object.aimTime)
: isSet(object.aim_time)
? globalThis.Number(object.aim_time)
: 0,
dispersion_base: isSet(object.dispersionBase)
? globalThis.Number(object.dispersionBase)
: isSet(object.dispersion_base)
? globalThis.Number(object.dispersion_base)
: 0,
dispersion_traverse: isSet(object.dispersionTraverse)
? globalThis.Number(object.dispersionTraverse)
: isSet(object.dispersion_traverse)
? globalThis.Number(object.dispersion_traverse)
: 0,
dispersion_shot: isSet(object.dispersionShot)
? globalThis.Number(object.dispersionShot)
: isSet(object.dispersion_shot)
? globalThis.Number(object.dispersion_shot)
: 0,
dispersion_damaged: isSet(object.dispersionDamaged)
? globalThis.Number(object.dispersionDamaged)
: isSet(object.dispersion_damaged)
? globalThis.Number(object.dispersion_damaged)
: 0,
unlocks: globalThis.Array.isArray(object?.unlocks)
? object.unlocks.map((e: any) => Unlock.fromJSON(e))
: [],
shell_capacity: isSet(object.shellCapacity)
? globalThis.Number(object.shellCapacity)
: isSet(object.shell_capacity)
? globalThis.Number(object.shell_capacity)
: 0,
assault_ranges: isSet(object.assaultRanges)
? AssaultRanges.fromJSON(object.assaultRanges)
: isSet(object.assault_ranges)
? AssaultRanges.fromJSON(object.assault_ranges)
: undefined,
burst: isSet(object.burst) ? Burst.fromJSON(object.burst) : undefined,
};
},
@@ -2687,18 +2846,18 @@ export const GunDefinition: MessageFns<GunDefinition> = {
if (message.gun_type?.$case === "regular") {
obj.regular = GunDefinitionRegular.toJSON(message.gun_type.value);
} else if (message.gun_type?.$case === "auto_loader") {
obj.auto_loader = GunDefinitionAutoLoader.toJSON(message.gun_type.value);
obj.autoLoader = GunDefinitionAutoLoader.toJSON(message.gun_type.value);
} else if (message.gun_type?.$case === "auto_reloader") {
obj.auto_reloader = GunDefinitionAutoReloader.toJSON(message.gun_type.value);
obj.autoReloader = GunDefinitionAutoReloader.toJSON(message.gun_type.value);
}
if (message.id !== 0) {
obj.id = Math.round(message.id);
}
if (message.rotation_speed !== 0) {
obj.rotation_speed = message.rotation_speed;
obj.rotationSpeed = message.rotation_speed;
}
if (message.research_cost !== undefined) {
obj.research_cost = ResearchCost.toJSON(message.research_cost);
obj.researchCost = ResearchCost.toJSON(message.research_cost);
}
if (message.weight !== 0) {
obj.weight = Math.round(message.weight);
@@ -2713,31 +2872,31 @@ export const GunDefinition: MessageFns<GunDefinition> = {
obj.shells = message.shells.map((e) => ShellDefinition.toJSON(e));
}
if (message.camouflage_loss !== 0) {
obj.camouflage_loss = message.camouflage_loss;
obj.camouflageLoss = message.camouflage_loss;
}
if (message.aim_time !== 0) {
obj.aim_time = message.aim_time;
obj.aimTime = message.aim_time;
}
if (message.dispersion_base !== 0) {
obj.dispersion_base = message.dispersion_base;
obj.dispersionBase = message.dispersion_base;
}
if (message.dispersion_traverse !== 0) {
obj.dispersion_traverse = message.dispersion_traverse;
obj.dispersionTraverse = message.dispersion_traverse;
}
if (message.dispersion_shot !== 0) {
obj.dispersion_shot = message.dispersion_shot;
obj.dispersionShot = message.dispersion_shot;
}
if (message.dispersion_damaged !== 0) {
obj.dispersion_damaged = message.dispersion_damaged;
obj.dispersionDamaged = message.dispersion_damaged;
}
if (message.unlocks?.length) {
obj.unlocks = message.unlocks.map((e) => Unlock.toJSON(e));
}
if (message.shell_capacity !== 0) {
obj.shell_capacity = Math.round(message.shell_capacity);
obj.shellCapacity = Math.round(message.shell_capacity);
}
if (message.assault_ranges !== undefined) {
obj.assault_ranges = AssaultRanges.toJSON(message.assault_ranges);
obj.assaultRanges = AssaultRanges.toJSON(message.assault_ranges);
}
if (message.burst !== undefined) {
obj.burst = Burst.toJSON(message.burst);
@@ -2921,22 +3080,34 @@ export const GunDefinitionAutoLoader: MessageFns<GunDefinitionAutoLoader> = {
fromJSON(object: any): GunDefinitionAutoLoader {
return {
clip_reload: isSet(object.clip_reload) ? globalThis.Number(object.clip_reload) : 0,
intra_clip: isSet(object.intra_clip) ? globalThis.Number(object.intra_clip) : 0,
shell_count: isSet(object.shell_count) ? globalThis.Number(object.shell_count) : 0,
clip_reload: isSet(object.clipReload)
? globalThis.Number(object.clipReload)
: isSet(object.clip_reload)
? globalThis.Number(object.clip_reload)
: 0,
intra_clip: isSet(object.intraClip)
? globalThis.Number(object.intraClip)
: isSet(object.intra_clip)
? globalThis.Number(object.intra_clip)
: 0,
shell_count: isSet(object.shellCount)
? globalThis.Number(object.shellCount)
: isSet(object.shell_count)
? globalThis.Number(object.shell_count)
: 0,
};
},
toJSON(message: GunDefinitionAutoLoader): unknown {
const obj: any = {};
if (message.clip_reload !== 0) {
obj.clip_reload = message.clip_reload;
obj.clipReload = message.clip_reload;
}
if (message.intra_clip !== 0) {
obj.intra_clip = message.intra_clip;
obj.intraClip = message.intra_clip;
}
if (message.shell_count !== 0) {
obj.shell_count = message.shell_count;
obj.shellCount = message.shell_count;
}
return obj;
},
@@ -3099,24 +3270,34 @@ export const GunDefinitionAutoReloader: MessageFns<GunDefinitionAutoReloader> =
fromJSON(object: any): GunDefinitionAutoReloader {
return {
shell_reloads: globalThis.Array.isArray(object?.shell_reloads)
shell_reloads: globalThis.Array.isArray(object?.shellReloads)
? object.shellReloads.map((e: any) => globalThis.Number(e))
: globalThis.Array.isArray(object?.shell_reloads)
? object.shell_reloads.map((e: any) => globalThis.Number(e))
: [],
intra_clip: isSet(object.intra_clip) ? globalThis.Number(object.intra_clip) : 0,
shell_count: isSet(object.shell_count) ? globalThis.Number(object.shell_count) : 0,
intra_clip: isSet(object.intraClip)
? globalThis.Number(object.intraClip)
: isSet(object.intra_clip)
? globalThis.Number(object.intra_clip)
: 0,
shell_count: isSet(object.shellCount)
? globalThis.Number(object.shellCount)
: isSet(object.shell_count)
? globalThis.Number(object.shell_count)
: 0,
};
},
toJSON(message: GunDefinitionAutoReloader): unknown {
const obj: any = {};
if (message.shell_reloads?.length) {
obj.shell_reloads = message.shell_reloads;
obj.shellReloads = message.shell_reloads;
}
if (message.intra_clip !== 0) {
obj.intra_clip = message.intra_clip;
obj.intraClip = message.intra_clip;
}
if (message.shell_count !== 0) {
obj.shell_count = message.shell_count;
obj.shellCount = message.shell_count;
}
return obj;
},
@@ -3482,15 +3663,27 @@ export const ShellDefinition: MessageFns<ShellDefinition> = {
id: isSet(object.id) ? globalThis.Number(object.id) : 0,
name: isSet(object.name) ? I18nString.fromJSON(object.name) : undefined,
velocity: isSet(object.velocity) ? globalThis.Number(object.velocity) : 0,
armor_damage: isSet(object.armor_damage) ? globalThis.Number(object.armor_damage) : 0,
module_damage: isSet(object.module_damage) ? globalThis.Number(object.module_damage) : 0,
armor_damage: isSet(object.armorDamage)
? globalThis.Number(object.armorDamage)
: isSet(object.armor_damage)
? globalThis.Number(object.armor_damage)
: 0,
module_damage: isSet(object.moduleDamage)
? globalThis.Number(object.moduleDamage)
: isSet(object.module_damage)
? globalThis.Number(object.module_damage)
: 0,
caliber: isSet(object.caliber) ? globalThis.Number(object.caliber) : 0,
icon: isSet(object.icon) ? globalThis.String(object.icon) : "",
penetration: isSet(object.penetration) ? ShellPenetration.fromJSON(object.penetration) : undefined,
type: isSet(object.type) ? shellTypeFromJSON(object.type) : 0,
normalization: isSet(object.normalization) ? globalThis.Number(object.normalization) : 0,
ricochet: isSet(object.ricochet) ? globalThis.Number(object.ricochet) : 0,
explosion_radius: isSet(object.explosion_radius) ? globalThis.Number(object.explosion_radius) : 0,
explosion_radius: isSet(object.explosionRadius)
? globalThis.Number(object.explosionRadius)
: isSet(object.explosion_radius)
? globalThis.Number(object.explosion_radius)
: 0,
range: isSet(object.range) ? globalThis.Number(object.range) : 0,
};
},
@@ -3507,10 +3700,10 @@ export const ShellDefinition: MessageFns<ShellDefinition> = {
obj.velocity = Math.round(message.velocity);
}
if (message.armor_damage !== 0) {
obj.armor_damage = Math.round(message.armor_damage);
obj.armorDamage = Math.round(message.armor_damage);
}
if (message.module_damage !== 0) {
obj.module_damage = Math.round(message.module_damage);
obj.moduleDamage = Math.round(message.module_damage);
}
if (message.caliber !== 0) {
obj.caliber = message.caliber;
@@ -3531,7 +3724,7 @@ export const ShellDefinition: MessageFns<ShellDefinition> = {
obj.ricochet = message.ricochet;
}
if (message.explosion_radius !== undefined && message.explosion_radius !== 0) {
obj.explosion_radius = message.explosion_radius;
obj.explosionRadius = message.explosion_radius;
}
if (message.range !== 0) {
obj.range = Math.round(message.range);
+10 -10
View File
@@ -13,7 +13,7 @@
"hp": "{value}од",
"x": "x{value}",
"percentage": "{value}%",
"deg_s": "{value}°/c",
"deg_s": "{value}град/c",
"plus": "+{value}"
},
"gun_types": {
@@ -37,8 +37,8 @@
"d_1": "Вчора"
},
"branches": {
"beta": "Бета",
"development": "Розробка",
"beta": "Beta",
"development": "Development",
"opentest": "Відкритий тест",
"preview": "Preview",
"production": "Production"
@@ -340,8 +340,8 @@
},
"mixer": {
"name": "Mixer",
"button": "Змішувати та поєднувати",
"description": "Змішані танкові модулі",
"button": "Mix and match",
"description": "Mix tank modules",
"seo_description": "Mix and match hulls, turrets, and guns of tanks in World of Tanks Blitz",
"screenshot": "Знімок екрану",
"randomize": "Рандомізувати"
@@ -501,11 +501,11 @@
"tech_tree": {
"title": "Звичайний",
"battle": "1 бій",
"battles": "{count} битви",
"battles": "{count} battles",
"route": "Route {index} of {count}"
},
"game_modes": {
"title": "Здібності ігрового режиму"
"title": "Game mode abilities"
},
"review": {
"title": "Review videos",
@@ -626,7 +626,7 @@
"camouflageShootingStill": "Нерухомо",
"camouflageShootingMoving": "У русі",
"camouflageCaughtOnFire": "Caught on fire",
"width": "Ширина",
"width": "Width",
"height": "Height",
"length": "Length",
"volume": "Volume",
@@ -740,7 +740,7 @@
}
},
"gallery": {
"name": "Галерея",
"name": "Gallery",
"button": "Browse all",
"description": "Blitz player avatars",
"seo_description": "Усі World of Tanks Blitz аватари гравців",
@@ -843,7 +843,7 @@
"breakdown": {
"name": "Breakdown",
"options": {
"width": "Ширина",
"width": "Width",
"height": "Height",
"showTotal": "Show total",
"listGap": "List gap",
+1 -2
View File
@@ -78,8 +78,7 @@ if (provider === "steam") {
console.log(`Downloading ${urls.length} packages...`);
await rm(WGPKG_DIR, { recursive: true, force: true });
await mkdir(WGPKG_DIR, { recursive: true });
await rm(WGPKG_DIR, { recursive: true });
const inputContent = urls
.map((url) => {
Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

@@ -45,13 +45,14 @@ const consumableDefinitions = await api.consumableDefinitions();
const provisionDefinitions = await api.provisionDefinitions();
const tankDefinitions = await api.tankDefinitions();
const gameModeRoleSets: Record<string, Set<number>> = {};
const gameModeRoleSets: Record<number, Set<number>> = {};
for (const tankIdString in tankDefinitions.tanks) {
const gameMode = tankDefinitions.tanks[tankIdString];
for (const gameModeId in gameMode.roles) {
const role = gameMode.roles[gameModeId];
for (const gameModeIdString in gameMode.roles) {
const role = gameMode.roles[gameModeIdString];
const gameModeId = Number(gameModeIdString);
if (gameModeId in gameModeRoleSets) {
gameModeRoleSets[gameModeId].add(role);
@@ -62,7 +63,7 @@ for (const tankIdString in tankDefinitions.tanks) {
}
const gameModeRoles: {
gameModeId: string;
gameModeId: number;
consumables: number[];
provisions: number[];
}[] = [];
@@ -71,7 +72,8 @@ const allGameModeConsumables = new Set<number>();
const allGameModeProvisions = new Set<number>();
for (const gameModeIdString in gameModeRoleSets) {
const roles = gameModeRoleSets[gameModeIdString];
const gameModeId = Number(gameModeIdString);
const roles = gameModeRoleSets[gameModeId];
const consumables = new Set<number>();
const provisions = new Set<number>();
@@ -114,7 +116,7 @@ for (const gameModeIdString in gameModeRoleSets) {
}
gameModeRoles.push({
gameModeId: gameModeIdString,
gameModeId: gameModeId,
consumables: Array.from(consumables.values()),
provisions: Array.from(provisions.values()),
});
@@ -25,7 +25,8 @@ export function GameModeSection() {
</Heading>
<Flex justify="center" gap="4" wrap="wrap" px="4">
{roles.map(([id, value]) => {
{roles.map(([key, value]) => {
const id = Number(key);
const gameMode = gameDefinitions.gameModes[id];
return (
@@ -74,13 +74,13 @@ export function Lighting({ hasPbr }: Props) {
return (
<>
<ContactShadows
near={0}
far={2 ** 6}
width={1.5}
height={1.5}
near={0}
far={1}
opacity={2 ** 1}
blur={2 ** 1}
resolution={2 ** 9}
blur={2 ** 0.5}
opacity={2 ** -0.4}
resolution={2 ** 7}
depthWrite={false}
/>
+4
View File
@@ -74,4 +74,8 @@ export const tools: Record<string, Tool> = {
href: "https://discord.gg/nDt7AjGJQH",
button: "plum",
},
studio: {
id: "studio",
button: "indigo",
},
};
@@ -17,15 +17,15 @@ export const getStaticPaths = mixStaticPaths(_getStaticPaths, async () => {
const bannerMatches: { name: string; path: string }[] = [];
for (const match of gameTypeSelectorStyles.Prototypes[0].components.UIDataLocalBindingsComponent.data[1][2].matchAll(
/eGameMode\.(\w+) -> "~res:([^"]+)"/g,
/eGameMode\.([a-zA-Z]+) -> "~res:([^"]+)"/g,
)) {
bannerMatches.push({ name: match[1], path: match[2] });
}
for (const match of squadBattleTypeStyles.Prototypes[0].components.UIDataLocalBindingsComponent.data[1][2].matchAll(
/eGameMode\.(\w+) -> "battleType\/([a-zA-Z]+)"/g,
/"(\d+)" -> "battleType\/([a-zA-Z]+)"/g,
)) {
const id = match[1];
const id = Number(match[1]);
const name = match[2];
let path = bannerMatches.find(
(bannerMatch) => bannerMatch.name.toLowerCase() === name.toLowerCase(),
@@ -90,21 +90,15 @@ function Content() {
session.tracking && tankStatsB
? deltaTankStats(session.player.stats, tankStatsB)
.sort((a, b) => b.last_battle_time - a.last_battle_time)
.flatMap((entry) => {
if (!(entry.tank_id in tankDefinitions.tanks)) return [];
.map((entry) => {
const tank = tankDefinitions.tanks[entry.tank_id];
if (!(tank.id in averageDefinitions.averages)) return [];
const average = averageDefinitions.averages[tank.id];
const composite = compositeStats(
{ ...entry.all, battle_life_time: entry.battle_life_time },
average.mu!,
average?.mu!,
);
return [{ tank, composite }];
return { tank, composite };
})
: undefined,
[session.tracking && session.player, tankStatsB],