Duey.Abstractions
2.0.0
dotnet add package Duey.Abstractions --version 2.0.0
NuGet\Install-Package Duey.Abstractions -Version 2.0.0
<PackageReference Include="Duey.Abstractions" Version="2.0.0" />
paket add Duey.Abstractions --version 2.0.0
#r "nuget: Duey.Abstractions, 2.0.0"
// Install Duey.Abstractions as a Cake Addin #addin nuget:?package=Duey.Abstractions&version=2.0.0 // Install Duey.Abstractions as a Cake Tool #tool nuget:?package=Duey.Abstractions&version=2.0.0
Duey
A minimal read-only implementation of the PKG1.0 and NX PKG4.1 format file specification on .NET Standard 2.1
🤔 Why?
- Duey works on runtimes targeting or supporting .NET Standard!
- also, it's strictly parsing only. no caches, no weird voodoo magic.
🏹 Supported Types
Type | PKG1.0 (WZ) | PKG4.1 (NX) |
---|---|---|
Int64 (byte, short, int, long) | ✔️ | ✔️ |
Double (float, double) | ✔️ | ✔️ |
String (string) | ✔️ | ✔️ |
Vector (DataVector) | ✔️ | ✔️ |
Bitmap (DataBitmap) | ✔️ | |
Audio (DataAudio) | ✔️ |
✏️ Usage (PKG4.1)
to get started, simply create a new NX Package object like so.
var pkg = new NXPackage("Data.nx");
with that, you can do various parsing magic!
// store a node object for usage later on!
var node = pkg.ResolvePath("Store/Products");
// resolve to a nullable
var name = node.ResolveString("name");
var image = node.ResolveBitmap("image");
var soundFx = node.ResolveAudio("soundFx");
// resolve a node ..in a node!
var bundles = node.ResolvePath("Bundled Products");
foreach (var bundle in bundles)
{
// resolve even more stuff here!
}
// all the previous resolving examples run at O(n)
// if efficiency and speed is an issue..
// this eager loads direct child of the selected node.
var resolution = node.ResolveAll(); // O(n)
name = resolution.ResolveString("name"); // O(1)
stock = resolution.ResolveInt("stock") ?? 0; // O(1)
price = resolution.ResolveDouble("price") ?? 0.0; // O(1)
// compared to..
name = node.ResolveString("name"); // O(n)
stock = node.ResolveInt("stock") ?? 0; // O(n)
price = node.ResolveDouble("price") ?? 0.0; // O(n)
parsing bitmaps/images with ImageSharp
var bitmap = node.ResolveBitmap("icon");
using (var image = Image.LoadPixelData<Bgra32>(bitmap.Data, bitmap.Width, bitmap.Height))
using (var output = File.Create("icon.png")) {
// do image manipulation stuff here
// save the image!
image.SaveAsPng(output);
}
📖 Usage (PKG1.0)
to get started, simply create a new WZ Package object like so. Do note that a key is required to decode properly.
var pkg = new WZPackage("Data.wz", "95");
Alternate filesystem and .img file loading
var pkg = new FSDirectory("./Data/");
All resolve methods are synchronous with the PKG4.1 examples.
⭐️ Acknowledgements
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- No dependencies.
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Duey.Abstractions:
Package | Downloads |
---|---|
Duey.Provider.NX
Package Description |
|
Duey.Provider.WZ
Package Description |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on Duey.Abstractions:
Repository | Stars |
---|---|
Kaioru/Edelstein
A v.95.1 Mushroom game server emulator written in C# .NET
|
Version | Downloads | Last updated |
---|---|---|
2.0.0 | 505 | 10/11/2023 |