Archmage
Namespace: Shadop.Archmage.Sdk
Provides utility functions.
public static class ArchmageMethods
Section titled “Methods”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)Parameters
Section titled “Parameters”atlas IAtlas
outputDir String
settings JsonSerializerSettings
Exceptions
Section titled “Exceptions”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)Parameters
Section titled “Parameters”baseSettings JsonSerializerSettings
Returns
Section titled “Returns”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)Parameters
Section titled “Parameters”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.
Exceptions
Section titled “Exceptions”ArchmageException
Thrown if loading fails at any stage.
Remarks:
This method performs the following steps:
- Reads and parses atlas.json
- Applies any registered modifier callbacks to the atlas data
- Loads each configuration item by reading files, deserializing, and merging overrides
- Calls BindRefs to resolve cross-table references
- 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)Parameters
Section titled “Parameters”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.
Returns
Section titled “Returns”Task
A Task representing the asynchronous loading operation.
Exceptions
Section titled “Exceptions”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.
ShardDuration(Duration)
Section titled “ShardDuration(Duration)”Encodes Duration to compact array (chooses smallest representation based on value; zero → null).
public static Int64[] ShardDuration(Duration duration)Parameters
Section titled “Parameters”duration Duration
Returns
Section titled “Returns”ParseDurationShards(Int64[])
Section titled “ParseDurationShards(Int64[])”Decodes shard array to Duration (null/empty → Duration.Zero).
public static Duration ParseDurationShards(Int64[] shards)Parameters
Section titled “Parameters”shards Int64[]
Returns
Section titled “Returns”Exceptions
Section titled “Exceptions”ArchmageException
Thrown if invalid format or unknown type.
MakeTuple(T0)
Section titled “MakeTuple(T0)”Creates a 1-element tuple.
public static Tup1<T0> MakeTuple<T0>(T0 item0)Parameters
Section titled “Parameters”item0 T0
Returns
Section titled “Returns”Tup1
MakeTuple<T0, T1>(T0, T1)
Section titled “MakeTuple<T0, T1>(T0, T1)”Creates a 2-element tuple.
public static Tup2<T0, T1> MakeTuple<T0, T1>(T0 item0, T1 item1)Parameters
Section titled “Parameters”item0 T0
item1 T1
Returns
Section titled “Returns”Tup2<T0, T1>
MakeTuple<T0, T1, T2>(T0, T1, T2)
Section titled “MakeTuple<T0, T1, T2>(T0, T1, T2)”Creates a 3-element tuple.
public static Tup3<T0, T1, T2> MakeTuple<T0, T1, T2>(T0 item0, T1 item1, T2 item2)Parameters
Section titled “Parameters”item0 T0
item1 T1
item2 T2
Returns
Section titled “Returns”Tup3<T0, T1, T2>
MakeTuple<T0, T1, T2, T3>(T0, T1, T2, T3)
Section titled “MakeTuple<T0, T1, T2, T3>(T0, T1, T2, T3)”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)Parameters
Section titled “Parameters”item0 T0
item1 T1
item2 T2
item3 T3
Returns
Section titled “Returns”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)Parameters
Section titled “Parameters”item0 T0
item1 T1
item2 T2
item3 T3
item4 T4
Returns
Section titled “Returns”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)Parameters
Section titled “Parameters”item0 T0
item1 T1
item2 T2
item3 T3
item4 T4
item5 T5
Returns
Section titled “Returns”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)Parameters
Section titled “Parameters”item0 T0
item1 T1
item2 T2
item3 T3
item4 T4
item5 T5
item6 T6
Returns
Section titled “Returns”Tup7<T0, T1, T2, T3, T4, T5, T6>