Files
Nitro_Render_V3/packages/utils/src/index.ts
T
medievalshell ae9bc8bfce feat(utils): split-aware gamedata loader with tiered merge
Introduces loadGamedata(url, options?) and mergeGamedata(a, b) in
@nitrots/utils. The loader transparently accepts:

- a single-file URL (legacy) -> parsed as before
- a directory URL ending with '/' -> tier-merged from core/custom/seasonal,
  each tier driven by its own manifest.json5

Merge rules:

- arrays of objects sharing an id key (id, classname, name): merged by id,
  later layers overriding earlier ones
- arrays without an id key: concatenated
- plain objects: recursive merge per key
- anything else: later value wins

All gamedata consumers (FurnitureDataLoader, ProductDataLoader,
EffectAssetDownloadManager, AvatarRenderManager actions+figuredata,
LocalizationManager) are migrated to loadGamedata. Behaviour is unchanged
for single-file URLs, so existing deployments need no config changes;
opt-in to split mode by appending '/' to the URL once the layout is in
place.

README updated with the directory layout, merge table and programmatic
usage example. The companion CLI splitter that produces the core/ tier
from legacy files lives in the Nitro V3 client repo.
2026-05-18 21:19:54 +02:00

34 lines
1014 B
TypeScript

export * from './AdvancedMap';
export * from './ArrayBufferToBase64';
export * from './BinaryReader';
export * from './BinaryWriter';
export * from './ColorConverter';
export * from './FurniId';
export * from './GamedataLoader';
export * from './GetPixi';
export * from './GetRenderer';
export * from './GetStage';
export * from './GetTexturePool';
export * from './GetTicker';
export * from './GetTickerFPS';
export * from './GetTickerTime';
export * from './HabboWebTools';
export * from './Int32';
export * from './JsonParser';
export * from './LegacyExternalInterface';
export * from './LinkTracker';
export * from './Matrix4x4';
export * from './NitroBundle';
export * from './NitroConfig';
export * from './NitroLogger';
export * from './NitroVersion';
export * from './Node3D';
export * from './NumberBank';
export * from './PointMath';
export * from './RoomId';
export * from './TexturePool';
export * from './TextureUtils';
export * from './Vector3d';
export * from './filters';
export * from './motion';