Add static Tiberian Sun low bridges.

This commit is contained in:
Matthias Mailänder
2016-06-12 09:31:39 +02:00
committed by Paul Chote
parent 5482fdb839
commit 4717d3e190
9 changed files with 335 additions and 34 deletions

View File

@@ -18,6 +18,7 @@ using OpenRA.FileSystem;
using OpenRA.Mods.Common;
using OpenRA.Mods.Common.FileFormats;
using OpenRA.Mods.Common.Traits;
using OpenRA.Traits;
namespace OpenRA.Mods.TS.UtilityCommands
{
@@ -72,40 +73,41 @@ namespace OpenRA.Mods.TS.UtilityCommands
{ 0x47, "palet02" },
{ 0x48, "palet03" },
{ 0x49, "palet04" },
/*
{ 0x4A, "lobrdg01" },
{ 0x4B, "lobrdg02" },
{ 0x4C, "lobrdg03" },
{ 0x4D, "lobrdg04" },
{ 0x4E, "lobrdg05" },
{ 0x4F, "lobrdg06" },
{ 0x50, "lobrdg07" },
{ 0x51, "lobrdg08" },
{ 0x52, "lobrdg09" },
{ 0x53, "lobrdg10" },
{ 0x54, "lobrdg11" },
{ 0x55, "lobrdg12" },
{ 0x56, "lobrdg13" },
{ 0x57, "lobrdg14" },
{ 0x58, "lobrdg15" },
{ 0x59, "lobrdg16" },
{ 0x5A, "lobrdg17" },
{ 0x5B, "lobrdg18" },
{ 0x5C, "lobrdg19" },
{ 0x5D, "lobrdg20" },
{ 0x5E, "lobrdg21" },
{ 0x5F, "lobrdg22" },
{ 0x60, "lobrdg23" },
{ 0x61, "lobrdg24" },
{ 0x62, "lobrdg25" },
{ 0x63, "lobrdg26" },
{ 0x64, "lobrdg27" },
{ 0x65, "lobrdg28" },
{ 0x7A, "lobrdg1" },
{ 0x7B, "lobrdg2" },
{ 0x7C, "lobrdg3" },
{ 0x7D, "lobrdg4" },
*/
{ 0x4A, "lobrdg_b" }, // lobrdg01
{ 0x4B, "lobrdg_b" }, // lobrdg02
{ 0x4C, "lobrdg_b" }, // lobrdg03
{ 0x4D, "lobrdg_b" }, // lobrdg04
{ 0x4E, "lobrdg_b" }, // lobrdg05
{ 0x4F, "lobrdg_b" }, // lobrdg06
{ 0x50, "lobrdg_b" }, // lobrdg07
{ 0x51, "lobrdg_b" }, // lobrdg08
{ 0x52, "lobrdg_b" }, // lobrdg09
{ 0x53, "lobrdg_a" }, // lobrdg10
{ 0x54, "lobrdg_a" }, // lobrdg11
{ 0x55, "lobrdg_a" }, // lobrdg12
{ 0x56, "lobrdg_a" }, // lobrdg13
{ 0x57, "lobrdg_a" }, // lobrdg14
{ 0x58, "lobrdg_a" }, // lobrdg15
{ 0x59, "lobrdg_a" }, // lobrdg16
{ 0x5A, "lobrdg_a" }, // lobrdg17
{ 0x5B, "lobrdg_a" }, // lobrdg18
{ 0x5C, "lobrdg_r_se" }, // lobrdg19
{ 0x5D, "lobrdg_r_se" }, // lobrdg20
{ 0x5E, "lobrdg_r_nw" }, // lobrdg21
{ 0x5F, "lobrdg_r_nw" }, // lobrdg22
{ 0x60, "lobrdg_r_ne" }, // lobrdg23
{ 0x61, "lobrdg_r_ne" }, // lobrdg24
{ 0x62, "lobrdg_r_sw" }, // lobrdg25
{ 0x63, "lobrdg_r_sw" }, // lobrdg26
{ 0x64, "lobrdg_b_d" }, // lobrdg27
{ 0x65, "lobrdg_a_d" }, // lobrdg28
{ 0x7A, "lobrdg_r_se" }, // lobrdg1
{ 0x7B, "lobrdg_r_nw" }, // lobrdg2
{ 0x7C, "lobrdg_r_ne" }, // lobrdg3
{ 0x7D, "lobrdg_r_sw" }, // lobrdg4
{ 0xA7, "veinhole" },
{ 0xA8, "srock01" },
{ 0xA9, "srock02" },
@@ -157,6 +159,57 @@ namespace OpenRA.Mods.TS.UtilityCommands
{ 0x7D, new Size(3, 1) },
};
static readonly Dictionary<byte, DamageState> OverlayToHealth = new Dictionary<byte, DamageState>()
{
// 1,3 bridge tiles
{ 0x4A, DamageState.Undamaged },
{ 0x4B, DamageState.Undamaged },
{ 0x4C, DamageState.Undamaged },
{ 0x4D, DamageState.Undamaged },
{ 0x4E, DamageState.Heavy },
{ 0x4F, DamageState.Heavy },
{ 0x50, DamageState.Heavy },
{ 0x51, DamageState.Critical },
{ 0x52, DamageState.Critical },
// 3,1 bridge tiles
{ 0x53, DamageState.Undamaged },
{ 0x54, DamageState.Undamaged },
{ 0x55, DamageState.Undamaged },
{ 0x56, DamageState.Undamaged },
{ 0x57, DamageState.Heavy },
{ 0x58, DamageState.Heavy },
{ 0x59, DamageState.Heavy },
{ 0x5A, DamageState.Critical },
{ 0x5B, DamageState.Critical },
// Ramps
{ 0x5C, DamageState.Undamaged },
{ 0x5D, DamageState.Heavy },
{ 0x5E, DamageState.Undamaged },
{ 0x5F, DamageState.Heavy },
{ 0x60, DamageState.Undamaged },
{ 0x61, DamageState.Heavy },
{ 0x62, DamageState.Undamaged },
{ 0x63, DamageState.Heavy },
// Ramp duplicates
{ 0x7A, DamageState.Undamaged },
{ 0x7B, DamageState.Undamaged },
{ 0x7C, DamageState.Undamaged },
{ 0x7D, DamageState.Undamaged },
// actually dead, placeholders for resurrection
{ 0x64, DamageState.Undamaged },
{ 0x65, DamageState.Undamaged },
};
static readonly Dictionary<byte, byte[]> ResourceFromOverlay = new Dictionary<byte, byte[]>()
{
// "tib" - Regular Tiberium
@@ -367,6 +420,21 @@ namespace OpenRA.Mods.TS.UtilityCommands
new OwnerInit("Neutral")
};
DamageState damageState;
if (OverlayToHealth.TryGetValue(overlayType, out damageState))
{
var health = 100;
if (damageState == DamageState.Critical)
health = 25;
else if (damageState == DamageState.Heavy)
health = 50;
else if (damageState == DamageState.Medium)
health = 75;
if (health != 100)
ar.Add(new HealthInit(health));
}
map.ActorDefinitions.Add(new MiniYamlNode("Actor" + map.ActorDefinitions.Count, ar.Save()));
continue;