Files
OpenRA/mods/ts/sequences/civilian.yaml
RoosterDragon b7e0ed9b87 Improve lookups of nodes by key in MiniYaml.
When handling the Nodes collection in MiniYaml, individual nodes are located via one of two methods:

// Lookup a single key with linear search.
var node = yaml.Nodes.FirstOrDefault(n => n.Key == "SomeKey");

// Convert to dictionary, expecting many key lookups.
var dict = nodes.ToDictionary();

// Lookup a single key in the dictionary.
var node = dict["SomeKey"];

To simplify lookup of individual keys via linear search, provide helper methods NodeWithKeyOrDefault and NodeWithKey. These helpers do the equivalent of Single{OrDefault} searches. Whilst this requires checking the whole list, it provides a useful correctness check. Two duplicated keys in TS yaml are fixed as a result. We can also optimize the helpers to not use LINQ, avoiding allocation of the delegate to search for a key.

Adjust existing code to use either lnear searches or dictionary lookups based on whether it will be resolving many keys. Resolving few keys can be done with linear searches to avoid building a dictionary. Resolving many keys should be done with a dictionary to avoid quaradtic runtime from repeated linear searches.
2023-09-23 14:31:04 +02:00

1079 lines
16 KiB
YAML

ammocrat:
idle:
Filename: ammo01.shp
DepthSprite: isodepth.shp
ShadowStart: 2
Offset: 0, -12, 12
^abanbase:
Defaults:
DepthSprite: isodepth.shp
idle:
ShadowStart: 2
critical-idle:
Start: 1
ShadowStart: 3
^aban1x1:
Inherits: ^abanbase
Defaults:
Offset: 0, -12, 12
^aban2x2:
Inherits: ^abanbase
Defaults:
Offset: 0, -24, 24
^aban2x5:
Inherits: ^abanbase
Defaults:
Offset: 36, -42, 42
DepthSpriteOffset: 24, 0
^aban2x6:
Inherits: ^abanbase
Defaults:
Offset: 48, -48, 48
DepthSpriteOffset: 36, 0
^aban3x2:
Inherits: ^abanbase
Defaults:
Offset: -12, -30, 30
DepthSpriteOffset: -12, 0
^aban4x2:
Inherits: ^abanbase
Defaults:
Offset: -24, -36, 36
DepthSpriteOffset: -24, 0
^aban5x3:
Inherits: ^abanbase
Defaults:
Offset: -24, -48, 48
DepthSpriteOffset: -24, 0
aban01:
Inherits: ^aban2x6
Defaults:
Filename: aban01.shp
aban02:
Inherits: ^aban5x3
Defaults:
Filename: aban02.shp
aban03:
Inherits: ^aban2x5
Defaults:
Filename: aban03.shp
aban04:
Inherits: ^aban4x2
Defaults:
Filename: aban04.shp
aban05:
Inherits: ^aban3x2
Defaults:
Filename: aban05.shp
aban06:
Inherits: ^aban2x2
Defaults:
Filename: aban06.shp
aban07:
Inherits: ^aban2x2
Defaults:
Filename: aban07.shp
aban08:
Inherits: ^aban2x2
Defaults:
Filename: aban08.shp
aban09:
Inherits: ^aban2x2
Defaults:
Filename: aban09.shp
Offset: 2, -20, 24
aban10:
Inherits: ^aban2x2
Defaults:
Filename: aban10.shp
aban11:
Inherits: ^aban2x2
Defaults:
Filename: aban11.shp
Offset: 0, -20, 24
aban12:
Inherits: ^aban2x2
Defaults:
Filename: aban12.shp
Offset: 2, -22, 24
aban13:
Inherits: ^aban1x1
Defaults:
Filename: aban13.shp
Offset: 0, -10, 12
aban14:
Inherits: ^aban1x1
Defaults:
Filename: aban14.shp
aban15:
Inherits: ^aban1x1
Defaults:
Filename: aban15.shp
Offset: 0, -10, 12
aban16:
Inherits: ^aban2x2
Defaults:
Filename: aban16.shp
aban17:
Inherits: ^aban1x1
Defaults:
Filename: aban17.shp
aban18:
Inherits: ^aban1x1
Defaults:
Filename: aban18.shp
^bboard1x1:
Defaults:
Offset: 0, -12, 6
idle:
ShadowStart: 2
damaged-idle:
Start: 1
ShadowStart: 3
^bboard1x2:
Defaults:
Offset: -1, -10, 6
idle:
ShadowStart: 2
damaged-idle:
Start: 1
ShadowStart: 3
^bboard2x1:
Defaults:
Offset: 2, -12, 6
idle:
ShadowStart: 2
damaged-idle:
Start: 1
ShadowStart: 3
bboard01:
Inherits: ^bboard1x1
Defaults:
Filename: bboard01.shp
bboard02:
Inherits: ^bboard1x1
Defaults:
Filename: bboard02.shp
bboard03:
Inherits: ^bboard1x1
Defaults:
Filename: bboard03.shp
bboard04:
Inherits: ^bboard1x1
Defaults:
Filename: bboard04.shp
bboard05:
Inherits: ^bboard1x1
Defaults:
Filename: bboard05.shp
bboard06:
Inherits: ^bboard1x2
Defaults:
Filename: bboard06.shp
bboard07:
Inherits: ^bboard1x2
Defaults:
Filename: bboard07.shp
bboard08:
Inherits: ^bboard1x2
Defaults:
Filename: bboard08.shp
bboard09:
Inherits: ^bboard1x1
Defaults:
Filename: bboard09.shp
bboard10:
Inherits: ^bboard1x1
Defaults:
Filename: bboard10.shp
bboard11:
Inherits: ^bboard1x1
Defaults:
Filename: bboard11.shp
bboard12:
Inherits: ^bboard1x1
Defaults:
Filename: bboard12.shp
bboard13:
Inherits: ^bboard1x1
Defaults:
Filename: bboard13.shp
bboard14:
Inherits: ^bboard2x1
Defaults:
Filename: bboard14.shp
bboard15:
Inherits: ^bboard2x1
Defaults:
Filename: bboard15.shp
bboard16:
Inherits: ^bboard2x1
Defaults:
Filename: bboard16.shp
^cabase:
Defaults:
DepthSprite: isodepth.shp
idle:
ShadowStart: 2
damaged-idle:
Start: 1
ShadowStart: 3
^ca1x1:
Inherits: ^cabase
Defaults:
Offset: 0, -12, 12
^ca1x2:
Inherits: ^cabase
Defaults:
Offset: 12, -18, 18
DepthSpriteOffset: 12, 0
^ca2x1:
Inherits: ^cabase
Defaults:
Offset: -12, -18, 18
DepthSpriteOffset: -12, 0
^ca2x3:
Inherits: ^cabase
Defaults:
Offset: 12, -30, 30
DepthSpriteOffset: 12, 0
^ca3x3:
Inherits: ^cabase
Defaults:
Offset: 0, -36, 36
^ca2x2:
Inherits: ^cabase
Defaults:
Offset: 0, -24, 24
ca0001:
Inherits: ^ca3x3
Defaults:
TilesetFilenames:
TEMPERATE: ct0001.shp
SNOW: ca0001.shp
ca0002:
Inherits: ^ca3x3
Defaults:
TilesetFilenames:
TEMPERATE: ct0002.shp
SNOW: ca0002.shp
ca0003:
Inherits: ^ca2x2
Defaults:
TilesetFilenames:
TEMPERATE: ct0003.shp
SNOW: ca0003.shp
ca0004:
Inherits: ^ca2x2
Defaults:
TilesetFilenames:
TEMPERATE: ct0004.shp
SNOW: ca0004.shp
ca0005:
Inherits: ^ca1x2
Defaults:
TilesetFilenames:
TEMPERATE: ct0005.shp
SNOW: ca0005.shp
ca0006:
Inherits: ^ca1x2
Defaults:
TilesetFilenames:
TEMPERATE: ct0006.shp
SNOW: ca0006.shp
ca0007:
Inherits: ^ca1x2
Defaults:
TilesetFilenames:
TEMPERATE: ct0007.shp
SNOW: ca0007.shp
ca0008:
Inherits: ^ca2x3
Defaults:
TilesetFilenames:
TEMPERATE: ct0008.shp
SNOW: ca0008.shp
ca0009:
Inherits: ^ca2x3
Defaults:
TilesetFilenames:
TEMPERATE: ct0009.shp
SNOW: ca0009.shp
ca0010:
Inherits: ^ca2x2
Defaults:
TilesetFilenames:
TEMPERATE: ct0010.shp
SNOW: ca0010.shp
ca0011:
Inherits: ^ca1x2
Defaults:
TilesetFilenames:
TEMPERATE: ct0011.shp
SNOW: ca0011.shp
ca0012:
Inherits: ^ca1x2
Defaults:
TilesetFilenames:
TEMPERATE: ct0012.shp
SNOW: ca0012.shp
ca0013:
Inherits: ^ca2x1
Defaults:
TilesetFilenames:
TEMPERATE: ct0013.shp
SNOW: ca0013.shp
ca0014:
Inherits: ^ca1x1
Defaults:
TilesetFilenames:
TEMPERATE: ct0014.shp
SNOW: ca0014.shp
ca0015:
Inherits: ^ca1x1
Defaults:
TilesetFilenames:
TEMPERATE: ct0015.shp
SNOW: ca0015.shp
ca0016:
Inherits: ^ca1x1
Defaults:
TilesetFilenames:
TEMPERATE: ct0016.shp
SNOW: ca0016.shp
ca0017:
Inherits: ^ca1x1
Defaults:
TilesetFilenames:
TEMPERATE: ct0017.shp
SNOW: ca0017.shp
ca0018:
Inherits: ^ca1x2
Defaults:
TilesetFilenames:
TEMPERATE: ct0018.shp
SNOW: ca0018.shp
ca0019:
Inherits: ^ca1x2
Defaults:
TilesetFilenames:
TEMPERATE: ct0019.shp
SNOW: ca0019.shp
ca0020:
Inherits: ^ca1x2
Defaults:
TilesetFilenames:
TEMPERATE: ct0020.shp
SNOW: ca0020.shp
ca0021:
Inherits: ^ca1x2
Defaults:
TilesetFilenames:
TEMPERATE: ct0021.shp
SNOW: ca0021.shp
caarmr:
Defaults:
DepthSprite: isodepth.shp
Offset: 0, -48, 48
idle:
Filename: ctarmr.shp
ShadowStart: 3
damaged-idle:
Filename: ctarmr.shp
Start: 1
ShadowStart: 4
critical-idle:
Filename: ctarmr.shp
Start: 2
ShadowStart: 5
caaray:
Defaults:
DepthSprite: isodepth.shp
Offset: 0, -24, 24
idle:
Filename: ctaray.shp
ShadowStart: 3
damaged-idle:
Filename: ctaray.shp
Start: 1
ShadowStart: 4
critical-idle:
Filename: ctaray.shp
Start: 2
ShadowStart: 5
idle-satellite:
Filename: ctaray_a.shp
Length: 16
Tick: 100
idle-radar:
Filename: ctaray_b.shp
Length: 16
Tick: 100
idle-scanner:
Filename: ctaray_c.shp
Length: 16
Tick: 100
damaged-idle-scanner:
Filename: ctaray_c.shp
Start: 16
Length: 16
Tick: 100
idle-light-bright:
Filename: ctaray_d.shp
Length: 12
Tick: 100
IgnoreWorldTint: True
damaged-idle-light-bright:
Filename: ctaray_d.shp
Start: 12
Length: 12
Tick: 100
IgnoreWorldTint: True
cabhut:
idle:
TilesetFilenames:
TEMPERATE: ctbhut.shp
SNOW: cabhut.shp
DepthSprite: isodepth.shp
Offset: 0, -12, 12
ShadowStart: 1
^cacrsh:
idle:
Offset: 0, -12, 12
cacrsh01:
Inherits: ^cacrsh
idle:
TilesetFilenames:
TEMPERATE: ctcrsh01.shp
SNOW: cacrsh01.shp
cacrsh02:
Inherits: ^cacrsh
idle:
TilesetFilenames:
TEMPERATE: ctcrsh02.shp
SNOW: cacrsh02.shp
cacrsh03:
Inherits: ^cacrsh
idle:
TilesetFilenames:
TEMPERATE: ctcrsh03.shp
SNOW: cacrsh03.shp
cacrsh04:
Inherits: ^cacrsh
idle:
TilesetFilenames:
TEMPERATE: ctcrsh04.shp
SNOW: cacrsh04.shp
cacrsh05:
Inherits: ^cacrsh
idle:
TilesetFilenames:
TEMPERATE: ctcrsh05.shp
SNOW: cacrsh05.shp
cahosp:
Defaults:
TilesetFilenames:
TEMPERATE: cthosp.shp
SNOW: cahosp.shp
DepthSprite: isodepth.shp
DepthSpriteOffset: 15, 0
Offset: 15, -36, 36
idle:
ShadowStart: 3
damaged-idle:
Start: 1
ShadowStart: 4
critical-idle:
Start: 2
ShadowStart: 5
capyr01:
idle:
Filename: ctpyr01.shp
DepthSprite: isodepth.shp
ShadowStart: 1
Offset: 0, -24, 24
capyr02:
idle:
Filename: ctpyr02.shp
DepthSprite: isodepth.shp
ShadowStart: 1
Offset: 0, -48, 48
capyr03:
idle:
Filename: ctpyr03.shp
DepthSprite: isodepth.shp
ShadowStart: 1
Offset: 0, -48, 48
^city1x1:
Inherits: ^cabase
Defaults:
Offset: 0, -12, 12
^city2x2:
Inherits: ^cabase
Defaults:
Offset: 0, -24, 24
^city2x3:
Inherits: ^cabase
Defaults:
Offset: 12, -30, 30
DepthSpriteOffset: 12, 0
^city3x2:
Inherits: ^cabase
Defaults:
Offset: -12, -30, 30
DepthSpriteOffset: -12, 0
^city3x5:
Inherits: ^cabase
Defaults:
Offset: 24, -48, 48
DepthSpriteOffset: 24, 0
^city4x2:
Inherits: ^cabase
Defaults:
Offset: -24, -36, 36
DepthSpriteOffset: -24, 48
^city4x3:
Inherits: ^cabase
Defaults:
Offset: -12, -42, 42
DepthSpriteOffset: -12, 0
city01:
Inherits: ^city4x2
Defaults:
Filename: city01.shp
Offset: -12, -30, 36
city02:
Inherits: ^city2x3
Defaults:
Filename: city02.shp
city03:
Inherits: ^city3x2
Defaults:
Filename: city03.shp
city04:
Inherits: ^city3x2
Defaults:
Filename: city04.shp
city05:
Inherits: ^city3x2
Defaults:
Filename: city05.shp
city06:
Inherits: ^city4x2
Defaults:
Filename: city06.shp
city07:
Inherits: ^city4x2
Defaults:
Filename: city07.shp
Offset: -12, -30, 36
city08:
Inherits: ^city2x2
Defaults:
Filename: city08.shp
city09:
Inherits: ^city2x2
Defaults:
Filename: city09.shp
city10:
Inherits: ^city2x2
Defaults:
Filename: city10.shp
city11:
Inherits: ^city2x2
Defaults:
Filename: city11.shp
city12:
Inherits: ^city2x2
Defaults:
Filename: city12.shp
city13:
Inherits: ^city2x2
Defaults:
Filename: city13.shp
city14:
Inherits: ^city1x1
Defaults:
Filename: city14.shp
city15:
Inherits: ^city4x2
Defaults:
Filename: city15.shp
city16:
Inherits: ^city4x2
Defaults:
Filename: city16.shp
Offset: -24, -30, 36
city17:
Inherits: ^city4x3
Defaults:
Filename: city17.shp
city18:
Inherits: ^city3x5
Defaults:
Filename: city18.shp
city19:
Inherits: ^city2x2
Defaults:
Filename: city19.shp
city20:
Inherits: ^city1x1
Defaults:
Filename: city20.shp
city21:
Inherits: ^city1x1
Defaults:
Filename: city21.shp
city22:
Inherits: ^city2x2
Defaults:
Filename: city22.shp
ctdam:
Defaults:
Filename: ctdam.shp
Offset: 36,-42, 42
idle:
damaged-idle:
Start: 1
idle-lights-bright:
Filename: ctdam_a.shp
Length: 10
Tick: 200
IgnoreWorldTint: True
damaged-idle-lights-bright:
Filename: ctdam_a.shp
Start: 10
Length: 10
Tick: 200
IgnoreWorldTint: True
idle-water-a:
Filename: ctdam_b.shp
Length: 8
Tick: 200
damaged-idle-water-a:
Filename: ctdam_b.shp
Start: 8
Length: 8
Tick: 200
idle-water-b:
Filename: ctdam_b.shp
Start: 16
Length: 8
Tick: 200
damaged-idle-water-b:
Filename: ctdam_b.shp
Start: 24
Length: 8
Tick: 200
ctvega:
Defaults:
Filename: ctvega.shp
DepthSprite: isodepth.shp
Offset: 0, -48, 48
idle:
ShadowStart: 3
damaged-idle:
Start: 1
ShadowStart: 4
critical-idle:
Start: 2
ShadowStart: 5
^gaoldcc:
idle:
ShadowStart: 2
DepthSprite: isodepth.shp
Offset: 0, -24, 24
gaoldcc1:
Inherits: ^gaoldcc
idle:
TilesetFilenames:
TEMPERATE: gtoldcc1.shp
SNOW: gaoldcc1.shp
gaoldcc2:
Inherits: ^gaoldcc
idle:
TilesetFilenames:
TEMPERATE: gtoldcc2.shp
SNOW: gaoldcc2.shp
gaoldcc3:
Inherits: ^gaoldcc
idle:
TilesetFilenames:
TEMPERATE: gtoldcc3.shp
SNOW: gaoldcc3.shp
gaoldcc4:
Inherits: ^gaoldcc
idle:
TilesetFilenames:
TEMPERATE: gtoldcc4.shp
SNOW: gaoldcc4.shp
gaoldcc5:
Inherits: ^gaoldcc
idle:
TilesetFilenames:
TEMPERATE: gtoldcc5.shp
SNOW: gaoldcc5.shp
gaoldcc6:
Inherits: ^gaoldcc
idle:
TilesetFilenames:
TEMPERATE: gtoldcc6.shp
SNOW: gaoldcc6.shp
gakodk:
Defaults:
TilesetFilenames:
TEMPERATE: gtkodk.shp
SNOW: gakodk.shp
DepthSprite: isodepth.shp
DepthSpriteOffset: -24, 0
Offset: -24, -36, 36
idle:
ShadowStart: 3
damaged-idle:
Start: 1
ShadowStart: 4
critical-idle:
Start: 2
ShadowStart: 5
large-lights:
TilesetFilenames:
TEMPERATE: gtkodk_a.shp
SNOW: gakodk_a.shp
Length: 12
Tick: 200
large-lights-bright:
TilesetFilenames:
TEMPERATE: gtkodk_a.shp
SNOW: gakodk_a.shp
Length: 12
Tick: 200
IgnoreWorldTint: True
damaged-large-lights:
TilesetFilenames:
TEMPERATE: gtkodk_a.shp
SNOW: gakodk_a.shp
Start: 12
Length: 12
Tick: 200
damaged-large-lights-bright:
TilesetFilenames:
TEMPERATE: gtkodk_a.shp
SNOW: gakodk_a.shp
Start: 12
Length: 12
Tick: 200
IgnoreWorldTint: True
small-light:
TilesetFilenames:
TEMPERATE: gtkodk_b.shp
SNOW: gakodk_b.shp
Length: 22
Tick: 200
small-light-bright:
TilesetFilenames:
TEMPERATE: gtkodk_b.shp
SNOW: gakodk_b.shp
Length: 22
Tick: 200
IgnoreWorldTint: True
small-lights:
TilesetFilenames:
TEMPERATE: gtkodk_c.shp
SNOW: gakodk_c.shp
Length: 12
Tick: 200
small-lights-bright:
TilesetFilenames:
TEMPERATE: gtkodk_c.shp
SNOW: gakodk_c.shp
Length: 12
Tick: 200
IgnoreWorldTint: True
damaged-small-lights:
TilesetFilenames:
TEMPERATE: gtkodk_c.shp
SNOW: gakodk_c.shp
Start: 12
Length: 12
Tick: 200
damaged-small-lights-bright:
TilesetFilenames:
TEMPERATE: gtkodk_c.shp
SNOW: gakodk_c.shp
Start: 12
Length: 12
Tick: 200
IgnoreWorldTint: True
gaspot:
Defaults:
TilesetFilenames:
TEMPERATE: gtspot.shp
SNOW: gaspot.shp
DepthSprite: isodepth.shp
Offset: 0, -12, 12
idle:
ShadowStart: 3
damaged-idle:
Start: 1
ShadowStart: 4
dead:
Start: 2
ShadowStart: 5
Tick: 400
idle-lights-bright:
TilesetFilenames:
TEMPERATE: gtspot_a.shp
SNOW: gaspot_a.shp
Length: 8
Tick: 200
IgnoreWorldTint: True
damaged-idle-lights-bright:
TilesetFilenames:
TEMPERATE: gtspot_a.shp
SNOW: gaspot_a.shp
Start: 8
Length: 8
Tick: 200
IgnoreWorldTint: True
make:
TilesetFilenames:
TEMPERATE: gtspotmk.shp
SNOW: gaspotmk.shp
Length: 14
ShadowStart: 14
emp-overlay:
Filename: emp_fx01.shp
TilesetFilenames:
Length: *
Offset: 0, 0
DepthSprite:
ZOffset: 512
BlendMode: Additive
IgnoreWorldTint: True
icon:
Filename: spoticon.shp
TilesetFilenames:
Offset: 0, 0
DepthSprite:
galite:
Defaults:
DepthSprite: isodepth.shp
Offset: 0, -12, 12
idle:
TilesetFilenames:
TEMPERATE: gtlite.shp
SNOW: galite.shp
ShadowStart: 2
damaged-idle:
TilesetFilenames:
TEMPERATE: gtlite.shp
SNOW: galite.shp
Start: 1
ShadowStart: 3
lighting:
Filename: alphatst.shp
BlendMode: DoubleMultiplicative
IgnoreWorldTint: true
DepthSprite:
Offset: 0, 0, 240
ZRamp: 1
ZOffset: 10240
emp-overlay:
Filename: emp_fx01.shp
Length: *
Offset: 0, 0
DepthSprite:
ZOffset: 512
BlendMode: Additive
IgnoreWorldTint: True
icon:
Filename: liteicon.shp
Offset: 0, 0
DepthSprite:
namntk:
Defaults:
TilesetFilenames:
TEMPERATE: ntmntk.shp
SNOW: namntk.shp
DepthSprite: isodepth.shp
DepthSpriteOffset: 24, 0
Offset: 24, -24, 24
idle:
ShadowStart: 3
damaged-idle:
Start: 1
ShadowStart: 4
critical-idle:
Start: 2
ShadowStart: 5
idle-lights:
TilesetFilenames:
TEMPERATE: ntmntk_a.shp
SNOW: namntk_a.shp
Length: 8
Tick: 200
idle-lights-bright:
TilesetFilenames:
TEMPERATE: ntmntk_a.shp
SNOW: namntk_a.shp
Length: 8
Tick: 200
IgnoreWorldTint: True
ntpyra:
Defaults:
Filename: ntpyra.shp
DepthSprite: isodepth.shp
Offset: 0, -42, 42
idle:
ShadowStart: 3
damaged-idle:
Start: 1
ShadowStart: 4
critical-idle:
Start: 2
ShadowStart: 5
idle-lights:
Filename: ntpyra_a.shp
Length: 16
Tick: 200
damaged-idle-lights:
Filename: ntpyra_a.shp
Start: 16
Length: 16
Tick: 200
ufo:
idle:
Filename: ufo.tem
DepthSprite: isodepth.shp
Offset: -24, -60, 60