-
Notifications
You must be signed in to change notification settings - Fork 5
/
level-format-docs.txt
125 lines (102 loc) · 3.23 KB
/
level-format-docs.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
These are notes I wrote from documenting the RW level file format
========
NOTE: shortcut entrances always have an object of type 4. (dunno why, probably some leftovers from an older impl)
tile data format (from rwe+):
{"tp": "tileHead", "data": ["point(C, T)", "N"]}
C = Category ID (starting from 1) plus 2 (Stone = 3, Machinery = 15, Misc = 12)
T = Tile index starting from 1
N = tile name
{"tp": "tileBody", "data": ["PT", L]}
PT = location of the tile head plus (1, 1)
L = layer
{"tp": "material", "data": "N"}
N = material name
{"tp": "default": "data": 0}
FX MATRIX FORMAT
{
#nm: string
#tp: "nn" | "standardErosion" (don't really know what this means),
#crossScreen: 0 (idk what this means, but it is effect-specific),
#mtrx: (2d array with values ranging from 0 to 100)
#Options: [
[
section Header as string,
options as string array (no options = empty array),
selected value? (string, but a number is used for seed)
]
],
[if #tp == "standardErosion"] (
#repeats: number (idk what this does, but it is effect-specific)
#affectOpenAreas: number (idk what this does either, but it is effect-specific)
)
}
PROP INIT FORMAT
[
#nm: string
#tp: "standard" | "soft" | "variedStandard" | "simpleDecal" | "variedSoft" | "variedDecal" | "antimatter" | "coloredSoft"
#colorize?: integer
if tp == "standard" | "variedStandard" (
#colorTreatment: "standard" | "bevel"
if colorTreatment == "bevel" (
#bevel: integer
)
#sz: point
#repeatL: int[]
)
if tp == "variedStandard" (
#vars: integer
#random: integer
)
if tp == "variedSoft" | "variedDecal" (
#pxlSize: point
#vars: integer
#random: integer
)
if tp == "coloredSoft" (
#pxlSize: point
)
if tp == "soft" (
#depth: integer
#round: integer
#contourExp: float
#selfShade: integer
#highLightBorder: float
#depthAffectHilites: float
#shadowBorder: float
#smoothShading: integer
)
if tp == "simpleDecal" | tp == "variedDecal" (
#depth: integer
)
if tp == "antimatter" (
#depth: number
#contourExp: number
)
#tags: ("randomRotat" | "snapToGrid" | "Circular Sign" | "randomFlipX" | "randomFlipY")[]
#layerExceptions: []
#notes: string[]
]
PROP LEVEL FORMAT
(sorted from ascending to descending their sublayer origin (when positive))
PROPDATA: [
sublayer origin as negative integer
name as string
point(category#, tile#) (Cogs and Gears = 1)
array for quad corners, starting from top-left and continuing clockwise. 16 units = 1 cell
[
#settings: [
#renderorder: any integer
#seed: integer [0,1000]
#renderTime: 0 = PreEffects; 1 = PostEffects
#customDepth?: integer
#color?: integer index into colors list, 1-indexed
#variation?: integer, starting from 1
#applyColor?: 1 if true, 0 if false
#release?: (rope release mode) -1 = Left, 0 = None, 1 = Right
],
#points: point[] (if rope-type prop)
]
]
[
#props: PROPDATA[]
]