Skip to content

Archmage

Namespace: Shadop.Archmage.Sdk

Provides utility functions.

public static class Archmage

Inheritance ObjectArchmage

DumpAtlas(IAtlas, String, JsonSerializerSettings)

Section titled “DumpAtlas(IAtlas, String, JsonSerializerSettings)”

Exports Atlas items to {key}.json files (only Ready items; pretty-printed).

public static void DumpAtlas(IAtlas atlas, string outputDir, JsonSerializerSettings settings)

atlas IAtlas

outputDir String

settings JsonSerializerSettings

ArgumentNullException
Thrown if atlas or outputDir is null.

ArgumentException
Thrown if outputDir is empty or whitespace.

Remarks:

Useful for debugging, testing (golden files), and human-readable export. Output uses custom converters for Duration/XRef types.

CreateJsonDumpSettings(JsonSerializerSettings)

Section titled “CreateJsonDumpSettings(JsonSerializerSettings)”

Creates JSON settings for Atlas export (indented, include nulls/defaults, custom converters).

public static JsonSerializerSettings CreateJsonDumpSettings(JsonSerializerSettings baseSettings)

baseSettings JsonSerializerSettings

JsonSerializerSettings

LoadAtlas(String, String, IAtlas, AtlasOptions, IProgress)

Section titled “LoadAtlas(String, String, IAtlas, AtlasOptions, IProgress)”

Loads an Atlas synchronously from the specified manifest file and root directory.

public static void LoadAtlas(string atlasFile, string cfgRoot, IAtlas atlas, AtlasOptions options, IProgress<AtlasLoadEvent> progress)

atlasFile String
Path to atlas.json containing mapping definitions.

cfgRoot String
Root directory where configuration JSON files are located.

atlas IAtlas
The Atlas implementation to populate with loaded items.

options AtlasOptions
Optional loading configuration. If null, default options are used.

progress IProgress
Optional callback for receiving progress reports.

ArchmageException
Thrown if loading fails at any stage.

Remarks:

This method performs the following steps:

  1. Reads and parses atlas.json
  2. Applies any registered modifier callbacks to the atlas data
  3. Loads each configuration item by reading files, deserializing, and merging overrides
  4. Calls BindRefs to resolve cross-table references
  5. Calls OnLoaded on the Atlas for post-load initialization

If any step fails, an ArchmageException is raised and loading is aborted. Alternatively, exceptions can be thrown from IAtlas.OnLoaded() to abort loading.

LoadAtlasAsync(String, String, IAtlas, AtlasOptions, IProgress, CancellationToken)

Section titled “LoadAtlasAsync(String, String, IAtlas, AtlasOptions, IProgress, CancellationToken)”

Loads an Atlas asynchronously with progress reporting and cancellation support.

public static Task LoadAtlasAsync(string atlasFile, string cfgRoot, IAtlas atlas, AtlasOptions options, IProgress<AtlasLoadEvent> progress, CancellationToken cancellationToken)

atlasFile String
Path to atlas.json containing mapping definitions.

cfgRoot String
Root directory where configuration JSON files are located.

atlas IAtlas
The Atlas implementation to populate with loaded items.

options AtlasOptions
Optional loading configuration. If null, default options are used.

progress IProgress
Optional callback for receiving progress reports.

cancellationToken CancellationToken
Token to request cancellation of the loading operation.

Task
A Task representing the asynchronous loading operation.

ArchmageException
Thrown if loading fails at any stage.

OperationCanceledException
Thrown if cancellation is requested.

Remarks:

This method performs the same operations as LoadAtlas but asynchronously, providing non-blocking I/O. Progress events are reported via the IProgress interface to allow UI updates and status tracking. Loading can be canceled via the CancellationToken.

Encodes Duration to compact array (chooses smallest representation based on value; zero → null).

public static Int64[] ShardDuration(Duration duration)

duration Duration

Int64[]

Decodes shard array to Duration (null/empty → Duration.Zero).

public static Duration ParseDurationShards(Int64[] shards)

shards Int64[]

Duration

ArchmageException
Thrown if invalid format or unknown type.

Creates a 1-element tuple.

public static Tup1<T0> MakeTuple<T0>(T0 item0)

item0 T0

Tup1

Creates a 2-element tuple.

public static Tup2<T0, T1> MakeTuple<T0, T1>(T0 item0, T1 item1)

item0 T0

item1 T1

Tup2<T0, T1>

Creates a 3-element tuple.

public static Tup3<T0, T1, T2> MakeTuple<T0, T1, T2>(T0 item0, T1 item1, T2 item2)

item0 T0

item1 T1

item2 T2

Tup3<T0, T1, T2>

Creates a 4-element tuple.

public static Tup4<T0, T1, T2, T3> MakeTuple<T0, T1, T2, T3>(T0 item0, T1 item1, T2 item2, T3 item3)

item0 T0

item1 T1

item2 T2

item3 T3

Tup4<T0, T1, T2, T3>

MakeTuple<T0, T1, T2, T3, T4>(T0, T1, T2, T3, T4)

Section titled “MakeTuple<T0, T1, T2, T3, T4>(T0, T1, T2, T3, T4)”

Creates a 5-element tuple.

public static Tup5<T0, T1, T2, T3, T4> MakeTuple<T0, T1, T2, T3, T4>(T0 item0, T1 item1, T2 item2, T3 item3, T4 item4)

item0 T0

item1 T1

item2 T2

item3 T3

item4 T4

Tup5<T0, T1, T2, T3, T4>

MakeTuple<T0, T1, T2, T3, T4, T5>(T0, T1, T2, T3, T4, T5)

Section titled “MakeTuple<T0, T1, T2, T3, T4, T5>(T0, T1, T2, T3, T4, T5)”

Creates a 6-element tuple.

public static Tup6<T0, T1, T2, T3, T4, T5> MakeTuple<T0, T1, T2, T3, T4, T5>(T0 item0, T1 item1, T2 item2, T3 item3, T4 item4, T5 item5)

item0 T0

item1 T1

item2 T2

item3 T3

item4 T4

item5 T5

Tup6<T0, T1, T2, T3, T4, T5>

MakeTuple<T0, T1, T2, T3, T4, T5, T6>(T0, T1, T2, T3, T4, T5, T6)

Section titled “MakeTuple<T0, T1, T2, T3, T4, T5, T6>(T0, T1, T2, T3, T4, T5, T6)”

Creates a 7-element tuple.

public static Tup7<T0, T1, T2, T3, T4, T5, T6> MakeTuple<T0, T1, T2, T3, T4, T5, T6>(T0 item0, T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6)

item0 T0

item1 T1

item2 T2

item3 T3

item4 T4

item5 T5

item6 T6

Tup7<T0, T1, T2, T3, T4, T5, T6>