diff --git a/.vscode/settings.json b/.vscode/settings.json index a2e3ce871..e0a5302e1 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -13,10 +13,10 @@ "bepaint", "BINORMAL", "Binormals", - "BKON", "bkwd", "blitzstars", "Camo", + "CDON", "classname", "cleandist", "cockroackdb", diff --git a/docs/guide/bkon.md b/docs/guide/cdon.md similarity index 91% rename from docs/guide/bkon.md rename to docs/guide/cdon.md index 50bed96fd..701bc62f0 100644 --- a/docs/guide/bkon.md +++ b/docs/guide/cdon.md @@ -1,11 +1,11 @@ -# Blitzkrieg Object Notation +# Cedilla Object Notation A compact binary representation similar to JSON objects. This documentation uses some funky (yet concise) syntax I developed (don't worry, my C++ isn't that bad!). -1. JSON compressed as BKON, written directly to disk (a direct 50% reduction). -2. BKON further compressed with LZ4 (a clean 90% reduction). +1. JSON compressed as CDON, written directly to disk (a direct 50% reduction). +2. CDON further compressed with LZ4 (a clean 90% reduction). 3. The raw JSON file as fetched from a random data source. -4. BKON decompressed once again to JSON. Note that this file is a little larger than the original JSON file as it contains a lot more decimal places due to float precision (this shouldn't affect the size in memory). +4. CDON decompressed once again to JSON. Note that this file is a little larger than the original JSON file as it contains a lot more decimal places due to float precision (this shouldn't affect the size in memory). ![an image of file sizes](https://i.imgur.com/AHJiFpq.png) @@ -21,7 +21,7 @@ struct String { ## Reading - Everything is little endian -- Magic is always `"BKON"` +- Magic is always `"CDON"` - The index of fast strings must be read as mentioned by the fast string format ```cpp diff --git a/scripts/buildAssets/definitions.ts b/scripts/buildAssets/definitions.ts index d5eb920dd..b5099325a 100644 --- a/scripts/buildAssets/definitions.ts +++ b/scripts/buildAssets/definitions.ts @@ -915,27 +915,27 @@ export async function definitions(production: boolean) { { content: superCompress(tankDefinitions), encoding: 'base64', - path: 'definitions/tanks.bkon.lz4', + path: 'definitions/tanks.cdon.lz4', }, { content: superCompress(modelDefinitions), encoding: 'base64', - path: 'definitions/models.bkon.lz4', + path: 'definitions/models.cdon.lz4', }, { content: superCompress(equipmentDefinitions), encoding: 'base64', - path: 'definitions/equipment.bkon.lz4', + path: 'definitions/equipment.cdon.lz4', }, { content: superCompress(consumableDefinitions), encoding: 'base64', - path: 'definitions/consumables.bkon.lz4', + path: 'definitions/consumables.cdon.lz4', }, { content: superCompress(provisionDefinitions), encoding: 'base64', - path: 'definitions/provisions.bkon.lz4', + path: 'definitions/provisions.cdon.lz4', }, ], production, diff --git a/src/core/blitzkrieg/consumableDefinitions.ts b/src/core/blitzkrieg/consumableDefinitions.ts index d82e755f0..5a3f8a793 100644 --- a/src/core/blitzkrieg/consumableDefinitions.ts +++ b/src/core/blitzkrieg/consumableDefinitions.ts @@ -1,5 +1,5 @@ import { asset } from './asset'; -import { fetchBkonLz4 } from './fetchBkonLz4'; +import { fetchCdonLz4 } from './fetchCdonLz4'; export type TankFilterDefinitionCategory = 'clip'; @@ -34,6 +34,6 @@ export interface ConsumableDefinitions { [key: string]: ConsumableEntry; } -export const consumableDefinitions = fetchBkonLz4( - asset('definitions/consumables.bkon.lz4'), +export const consumableDefinitions = fetchCdonLz4( + asset('definitions/consumables.cdon.lz4'), ); diff --git a/src/core/blitzkrieg/equipmentDefinitions.ts b/src/core/blitzkrieg/equipmentDefinitions.ts index b462c9640..65b032f40 100644 --- a/src/core/blitzkrieg/equipmentDefinitions.ts +++ b/src/core/blitzkrieg/equipmentDefinitions.ts @@ -1,5 +1,5 @@ import { asset } from './asset'; -import { fetchBkonLz4 } from './fetchBkonLz4'; +import { fetchCdonLz4 } from './fetchCdonLz4'; type EquipmentOptions = [number, number]; @@ -22,6 +22,6 @@ export interface EquipmentDefinitions { }; } -export const equipmentDefinitions = fetchBkonLz4( - asset('definitions/equipment.bkon.lz4'), +export const equipmentDefinitions = fetchCdonLz4( + asset('definitions/equipment.cdon.lz4'), ); diff --git a/src/core/blitzkrieg/fetchBkonLz4.ts b/src/core/blitzkrieg/fetchCdonLz4.ts similarity index 80% rename from src/core/blitzkrieg/fetchBkonLz4.ts rename to src/core/blitzkrieg/fetchCdonLz4.ts index 66aaec9b3..fdfd54bc8 100644 --- a/src/core/blitzkrieg/fetchBkonLz4.ts +++ b/src/core/blitzkrieg/fetchCdonLz4.ts @@ -1,6 +1,6 @@ import { superDecompress } from './superDecompress'; -export async function fetchBkonLz4(url: string) { +export async function fetchCdonLz4(url: string) { return await fetch(url, { cache: 'no-cache', }).then(async (response) => { diff --git a/src/core/blitzkrieg/modelDefinitions.ts b/src/core/blitzkrieg/modelDefinitions.ts index 7ba3d6d08..dd9b279f8 100644 --- a/src/core/blitzkrieg/modelDefinitions.ts +++ b/src/core/blitzkrieg/modelDefinitions.ts @@ -1,6 +1,6 @@ import { Vector3Tuple } from 'three'; import { asset } from './asset'; -import { fetchBkonLz4 } from './fetchBkonLz4'; +import { fetchCdonLz4 } from './fetchCdonLz4'; export type ModelDefinitions = Record; @@ -54,6 +54,6 @@ export interface PitchLimits { transition?: number; } -export const modelDefinitions = fetchBkonLz4( - asset('definitions/models.bkon.lz4'), +export const modelDefinitions = fetchCdonLz4( + asset('definitions/models.cdon.lz4'), ); diff --git a/src/core/blitzkrieg/provisionDefinitions.ts b/src/core/blitzkrieg/provisionDefinitions.ts index f4d23f0e7..d0476aa9e 100644 --- a/src/core/blitzkrieg/provisionDefinitions.ts +++ b/src/core/blitzkrieg/provisionDefinitions.ts @@ -1,6 +1,6 @@ import { asset } from './asset'; import { TankFilterDefinition } from './consumableDefinitions'; -import { fetchBkonLz4 } from './fetchBkonLz4'; +import { fetchCdonLz4 } from './fetchCdonLz4'; export interface ProvisionEntry { id: number; @@ -14,6 +14,6 @@ export interface ProvisionDefinitions { [key: string]: ProvisionEntry; } -export const provisionDefinitions = fetchBkonLz4( - asset('definitions/provisions.bkon.lz4'), +export const provisionDefinitions = fetchCdonLz4( + asset('definitions/provisions.cdon.lz4'), ); diff --git a/src/core/blitzkrieg/superCompress.ts b/src/core/blitzkrieg/superCompress.ts index 8bb382eaf..68406dac1 100644 --- a/src/core/blitzkrieg/superCompress.ts +++ b/src/core/blitzkrieg/superCompress.ts @@ -1,8 +1,8 @@ import { compress } from 'lz4js'; -import { BkonWriteStream } from '../streams/bkon'; +import { CdonWriteStream } from '../streams/cdon'; export function superCompress(object: any) { - const write = new BkonWriteStream().bkon(object); + const write = new CdonWriteStream().cdon(object); const compressed = compress(write.buffer); return Buffer.from(compressed).toString('base64'); } diff --git a/src/core/blitzkrieg/superDecompress.ts b/src/core/blitzkrieg/superDecompress.ts index 074b76728..2784037ad 100644 --- a/src/core/blitzkrieg/superDecompress.ts +++ b/src/core/blitzkrieg/superDecompress.ts @@ -1,8 +1,8 @@ import { decompress } from 'lz4js'; -import { BkonReadStream } from '../streams/bkon'; +import { CdonReadStream } from '../streams/cdon'; export function superDecompress(buffer: Buffer) { const decompressed = Buffer.from(decompress(buffer)); - const read = new BkonReadStream(decompressed); - return read.bkon() as Type; + const read = new CdonReadStream(decompressed); + return read.cdon() as Type; } diff --git a/src/core/blitzkrieg/tankDefinitions.ts b/src/core/blitzkrieg/tankDefinitions.ts index 748c19256..734be1194 100644 --- a/src/core/blitzkrieg/tankDefinitions.ts +++ b/src/core/blitzkrieg/tankDefinitions.ts @@ -2,7 +2,7 @@ import { deburr } from 'lodash'; import { Vector2Tuple } from 'three'; import { TankType, TreeType } from '../../components/Tanks'; import { asset } from './asset'; -import { fetchBkonLz4 } from './fetchBkonLz4'; +import { fetchCdonLz4 } from './fetchCdonLz4'; export type ShellType = 'ap' | 'ap_cr' | 'hc' | 'he'; @@ -118,8 +118,8 @@ export const GUN_TYPE_NAMES: Record = { autoReloader: 'Auto reloader', }; -export const tankDefinitions = fetchBkonLz4( - asset('definitions/tanks.bkon.lz4'), +export const tankDefinitions = fetchCdonLz4( + asset('definitions/tanks.cdon.lz4'), ); const entries = new Promise(async (resolve) => { diff --git a/src/core/streams/bkon.ts b/src/core/streams/cdon.ts similarity index 93% rename from src/core/streams/bkon.ts rename to src/core/streams/cdon.ts index ad5154a9a..8daf24923 100644 --- a/src/core/streams/bkon.ts +++ b/src/core/streams/cdon.ts @@ -26,17 +26,17 @@ enum FastStringFormat { Format32, } -export type BkonValue = +export type CdonValue = | null | boolean | number | bigint | string - | BkonValue[] - | { [key: string]: BkonValue }; + | CdonValue[] + | { [key: string]: CdonValue }; -export class BkonReadStream extends ReadStream { - bkon() { +export class CdonReadStream extends ReadStream { + cdon() { this.magic(); const header = this.header(); const body = this.body(header.fastStringFormat, header.stringTable); @@ -46,8 +46,8 @@ export class BkonReadStream extends ReadStream { magic() { const magic = this.utf8(4); - if (magic !== 'BKON') { - throw new Error(`Invalid Bkon magic number: "${magic}"`); + if (magic !== 'CDON') { + throw new Error(`Invalid Cdon magic number: "${magic}"`); } } @@ -107,7 +107,7 @@ export class BkonReadStream extends ReadStream { value( fastStringFormat: FastStringFormat, stringTable: Record, - ): BkonValue { + ): CdonValue { const type = this.uint8() as ValueType; switch (type) { @@ -177,7 +177,7 @@ export class BkonReadStream extends ReadStream { const values = times(count, () => this.value(fastStringFormat, stringTable), ); - const object: Record = {}; + const object: Record = {}; keys.forEach((string, index) => (object[string] = values[index])); @@ -190,8 +190,8 @@ export class BkonReadStream extends ReadStream { } } -export class BkonWriteStream extends WriteStream { - bkon(object: BkonValue) { +export class CdonWriteStream extends WriteStream { + cdon(object: CdonValue) { this.magic(); const header = this.header(object); this.body(header.fastStringFormat, object, header.stringTable); @@ -200,7 +200,7 @@ export class BkonWriteStream extends WriteStream { body( fastStringFormat: FastStringFormat, - object: BkonValue, + object: CdonValue, stringTable: Map, ) { this.value(fastStringFormat, object, stringTable); @@ -209,7 +209,7 @@ export class BkonWriteStream extends WriteStream { value( fastStringFormat: FastStringFormat, - object: BkonValue, + object: CdonValue, stringTable: Map, ) { if (object === null || object === undefined) { @@ -303,12 +303,12 @@ export class BkonWriteStream extends WriteStream { } } - header(object: BkonValue) { + header(object: CdonValue) { this.uint16(1); return this.stringTable(object); } - stringTable(object: BkonValue) { + stringTable(object: CdonValue) { const stringTable = this.buildStringTable( this.collectStringCounts(object, new Map()), ); @@ -343,7 +343,7 @@ export class BkonWriteStream extends WriteStream { return stringTable; } - collectStringCounts(object: BkonValue, stringCounts: Map) { + collectStringCounts(object: CdonValue, stringCounts: Map) { if (typeof object === 'string') { if (stringCounts.has(object)) { stringCounts.set(object, stringCounts.get(object)! + 1); @@ -367,6 +367,6 @@ export class BkonWriteStream extends WriteStream { } magic() { - this.utf8('BKON'); + this.utf8('CDON'); } }