Add Definition data types
parent
7b820460d5
commit
3d8e0e645f
118
src/LDtk.zig
118
src/LDtk.zig
|
@ -146,8 +146,8 @@ const FieldInstance = struct {
|
||||||
__tile: ?TilesetRectangle,
|
__tile: ?TilesetRectangle,
|
||||||
// TODO: type and value have many possible values and are not always strings.
|
// TODO: type and value have many possible values and are not always strings.
|
||||||
// Figure out if we can use JSON.parse for this
|
// Figure out if we can use JSON.parse for this
|
||||||
__type: FieldType,
|
__type: []const u8,
|
||||||
__value: anytype,
|
__value: []const u8,
|
||||||
defUid: u64,
|
defUid: u64,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -174,20 +174,122 @@ const FiledInstanceGridPoint = struct {
|
||||||
};
|
};
|
||||||
|
|
||||||
/// 3. Definitions
|
/// 3. Definitions
|
||||||
const Defs = struct {
|
/// Only 2 definitions you might need here are Tilesets and Enums
|
||||||
layers: []Layer,
|
const Definitions = struct {
|
||||||
entities: []Entity,
|
entities: []EntityDefinition,
|
||||||
|
|
||||||
|
enums: []EnumDefinition,
|
||||||
|
/// Same as enums, excepts they have a relPath to point to an external source file
|
||||||
|
externalEnums: []EnumDefinition,
|
||||||
|
layers: []LayerDefinition,
|
||||||
|
/// All custom fields available to all levels
|
||||||
|
levelFields: []FieldDefinition,
|
||||||
|
/// All tilesets
|
||||||
tilesets: []Tileset,
|
tilesets: []Tileset,
|
||||||
enums: []Enum,
|
|
||||||
externalEnums: []ExternalEnum,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/// 3.1. Layer definition
|
/// 3.1. Layer definition
|
||||||
|
const LayerDefinition = struct {
|
||||||
|
__type: enum {
|
||||||
|
IntGrid,
|
||||||
|
Entities,
|
||||||
|
Tiles,
|
||||||
|
AutoLayer,
|
||||||
|
},
|
||||||
|
autoSourceLayerDefUid: ?u64,
|
||||||
|
displayOpacity: f64,
|
||||||
|
gridSize: u64,
|
||||||
|
identifier: []const u8,
|
||||||
|
intGridValues: []struct { color: []const u8, identifier: ?[]const u8, value: u64 },
|
||||||
|
parallaxFactorX: f64,
|
||||||
|
parallaxFactorY: f64,
|
||||||
|
parallaxScaling: Bool,
|
||||||
|
pxOffsetX: i64,
|
||||||
|
pxOffsetY: i64,
|
||||||
|
/// Reference to the default Tileset UID used by this layer definition.
|
||||||
|
/// WARNING: some layer instances might use a different tileset. So most of the time, you should probably use the __tilesetDefUid value found in layer instances.
|
||||||
|
/// NOTE: since version 1.0.0, the old autoTilesetDefUid was removed and merged into this value.
|
||||||
|
tilesetDefUid: ?u64,
|
||||||
|
/// Unique Int identifier
|
||||||
|
uid: u64,
|
||||||
|
/// WARNING: this deprecated value will be removed completely on version 1.2.0+
|
||||||
|
/// Replaced by: tilesetDefUid
|
||||||
|
autoTilesetDefUid: ?u64 = null,
|
||||||
|
};
|
||||||
|
|
||||||
/// 3.1.1. Auto-layer rule definition
|
/// 3.1.1. Auto-layer rule definition
|
||||||
|
const AutoLayerRuleDefinition = opaque {};
|
||||||
|
|
||||||
/// 3.2. Entity definition
|
/// 3.2. Entity definition
|
||||||
|
const EntityDefinition = struct {
|
||||||
|
color: []const u8,
|
||||||
|
height: u64,
|
||||||
|
identifier: []const u8,
|
||||||
|
nineSliceBorders: [4]i64,
|
||||||
|
pivotX: f64,
|
||||||
|
pivotY: f64,
|
||||||
|
tileRect: TilesetRectangle,
|
||||||
|
tileRenderMode: enum { Cover, FitInside, Repeat, Stretch, FullSizeCropped, FullSizeUncropped, NineSlice },
|
||||||
|
tilesetId: ?u64,
|
||||||
|
uid: u64,
|
||||||
|
width: u64,
|
||||||
|
/// WARNING: this deprecated value will be removed completely on version 1.2.0+
|
||||||
|
/// Replaced by tileRect
|
||||||
|
tileId: ?u64 = null,
|
||||||
|
};
|
||||||
|
|
||||||
/// 3.2.1. Field definition
|
/// 3.2.1. Field definition
|
||||||
|
const FieldDefinition = opaque {};
|
||||||
|
|
||||||
/// 3.2.2. Tileset rectangle
|
/// 3.2.2. Tileset rectangle
|
||||||
|
const TilesetRectangle = struct {
|
||||||
|
h: u64,
|
||||||
|
tilesetUid: u64,
|
||||||
|
w: u64,
|
||||||
|
h: u64,
|
||||||
|
x: i64,
|
||||||
|
y: i64,
|
||||||
|
};
|
||||||
|
|
||||||
/// 3.3. Tileset definition
|
/// 3.3. Tileset definition
|
||||||
|
const TilesetDefinition = struct {
|
||||||
|
__cHei: u64,
|
||||||
|
__cWid: u64,
|
||||||
|
customData: []struct {
|
||||||
|
data: []const u8,
|
||||||
|
tileId: u64,
|
||||||
|
},
|
||||||
|
embedAtlas: ?enum { LdtkIcons },
|
||||||
|
enumTags: []struct {
|
||||||
|
enumValueId: []const u8,
|
||||||
|
tileIds: []u64,
|
||||||
|
},
|
||||||
|
identifier: []const u8,
|
||||||
|
padding: i64,
|
||||||
|
pxHei: u64,
|
||||||
|
pxWid: u64,
|
||||||
|
relPath: ?[]const u8,
|
||||||
|
spacing: i64,
|
||||||
|
tags: [][]const u8,
|
||||||
|
tagsSourceEnumUid: ?u64,
|
||||||
|
tileGridSize: u64,
|
||||||
|
uid: u64,
|
||||||
|
};
|
||||||
|
|
||||||
/// 3.4. Enum definition
|
/// 3.4. Enum definition
|
||||||
|
const EnumDefinition = struct {
|
||||||
|
externalRelPath: ?[]const u8,
|
||||||
|
iconTilesetUid: ?u64,
|
||||||
|
identifier: []const u8,
|
||||||
|
tags: [][]const u8,
|
||||||
|
uid: u64,
|
||||||
|
values: []EnumValueDefinition,
|
||||||
|
};
|
||||||
|
|
||||||
/// 3.4.1. Enum value definition
|
/// 3.4.1. Enum value definition
|
||||||
const Enum = struct {};
|
const EnumValueDefinition = struct {
|
||||||
|
__tileSrcRect: ?[4]i64,
|
||||||
|
color: u64,
|
||||||
|
id: []const u8,
|
||||||
|
tileId: ?u64,
|
||||||
|
};
|
||||||
|
|
Loading…
Reference in New Issue