use LoadAttribute in WeaponInfo
This commit is contained in:
@@ -38,6 +38,11 @@ namespace OpenRA.GameRules
|
|||||||
|
|
||||||
return Verses[(int)(health.Armor)];
|
return Verses[(int)(health.Armor)];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public WarheadInfo( MiniYaml yaml )
|
||||||
|
{
|
||||||
|
FieldLoader.Load( this, yaml );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum ArmorType
|
public enum ArmorType
|
||||||
@@ -72,49 +77,41 @@ namespace OpenRA.GameRules
|
|||||||
|
|
||||||
public class WeaponInfo
|
public class WeaponInfo
|
||||||
{
|
{
|
||||||
public readonly float Range = 0;
|
[FieldLoader.Load] public readonly float Range = 0;
|
||||||
public readonly string Report = null;
|
[FieldLoader.Load] public readonly string Report = null;
|
||||||
public readonly int ROF = 1;
|
[FieldLoader.Load] public readonly int ROF = 1;
|
||||||
public readonly int Burst = 1;
|
[FieldLoader.Load] public readonly int Burst = 1;
|
||||||
public readonly bool Charges = false;
|
[FieldLoader.Load] public readonly bool Charges = false;
|
||||||
public readonly bool Underwater = false;
|
[FieldLoader.Load] public readonly bool Underwater = false;
|
||||||
public readonly string[] ValidTargets = { "Ground" };
|
[FieldLoader.Load] public readonly string[] ValidTargets = { "Ground" };
|
||||||
public readonly int BurstDelay = 5;
|
[FieldLoader.Load] public readonly int BurstDelay = 5;
|
||||||
|
|
||||||
public IProjectileInfo Projectile;
|
[FieldLoader.LoadUsing( "LoadProjectile" )] public IProjectileInfo Projectile;
|
||||||
public List<WarheadInfo> Warheads = new List<WarheadInfo>();
|
[FieldLoader.LoadUsing( "LoadWarheads" )] public List<WarheadInfo> Warheads;
|
||||||
|
|
||||||
public WeaponInfo(string name, MiniYaml content)
|
public WeaponInfo(string name, MiniYaml content)
|
||||||
{
|
{
|
||||||
foreach (var kv in content.NodesDict)
|
FieldLoader.Load( this, content );
|
||||||
{
|
}
|
||||||
var key = kv.Key.Split('@')[0];
|
|
||||||
switch (key)
|
|
||||||
{
|
|
||||||
case "Range": FieldLoader.LoadField(this, "Range", content.NodesDict["Range"].Value); break;
|
|
||||||
case "ROF": FieldLoader.LoadField(this, "ROF", content.NodesDict["ROF"].Value); break;
|
|
||||||
case "Report": FieldLoader.LoadField(this, "Report", content.NodesDict["Report"].Value); break;
|
|
||||||
case "Burst": FieldLoader.LoadField(this, "Burst", content.NodesDict["Burst"].Value); break;
|
|
||||||
case "Charges": FieldLoader.LoadField(this, "Charges", content.NodesDict["Charges"].Value); break;
|
|
||||||
case "ValidTargets": FieldLoader.LoadField(this, "ValidTargets", content.NodesDict["ValidTargets"].Value); break;
|
|
||||||
case "Underwater": FieldLoader.LoadField(this, "Underwater", content.NodesDict["Underwater"].Value); break;
|
|
||||||
case "BurstDelay": FieldLoader.LoadField(this, "BurstDelay", content.NodesDict["BurstDelay"].Value); break;
|
|
||||||
|
|
||||||
case "Warhead":
|
static object LoadProjectile( MiniYaml yaml )
|
||||||
{
|
{
|
||||||
var warhead = new WarheadInfo();
|
MiniYaml proj;
|
||||||
FieldLoader.Load(warhead, kv.Value);
|
if( !yaml.NodesDict.TryGetValue( "Projectile", out proj ) )
|
||||||
Warheads.Add(warhead);
|
return null;
|
||||||
} break;
|
var ret = Game.CreateObject<IProjectileInfo>( proj.Value + "Info" );
|
||||||
|
FieldLoader.Load( ret, proj );
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
// in this case, it's an implementation of IProjectileInfo
|
static object LoadWarheads( MiniYaml yaml )
|
||||||
default:
|
|
||||||
{
|
{
|
||||||
Projectile = Game.CreateObject<IProjectileInfo>(key + "Info");
|
var ret = new List<WarheadInfo>();
|
||||||
FieldLoader.Load(Projectile, kv.Value);
|
foreach( var w in yaml.Nodes )
|
||||||
} break;
|
if( w.Key.Split( '@' )[ 0 ] == "Warhead" )
|
||||||
}
|
ret.Add( new WarheadInfo( w.Value ) );
|
||||||
}
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ Colt45:
|
|||||||
ROF: 5
|
ROF: 5
|
||||||
Range: 5.75
|
Range: 5.75
|
||||||
Report: GUN5
|
Report: GUN5
|
||||||
Bullet:
|
Projectile: Bullet
|
||||||
Speed: 100
|
Speed: 100
|
||||||
Warhead:
|
Warhead:
|
||||||
Spread: 1
|
Spread: 1
|
||||||
@@ -16,7 +16,7 @@ ZSU-23:
|
|||||||
Range: 6
|
Range: 6
|
||||||
Report: AACANON3
|
Report: AACANON3
|
||||||
ValidTargets: Air
|
ValidTargets: Air
|
||||||
Bullet:
|
Projectile: Bullet
|
||||||
Speed: 100
|
Speed: 100
|
||||||
Warhead:
|
Warhead:
|
||||||
Spread: 3
|
Spread: 3
|
||||||
@@ -28,7 +28,7 @@ Vulcan:
|
|||||||
ROF: 30
|
ROF: 30
|
||||||
Range: 6
|
Range: 6
|
||||||
Report: GUN13
|
Report: GUN13
|
||||||
Bullet:
|
Projectile: Bullet
|
||||||
Speed: 100
|
Speed: 100
|
||||||
Warhead@1:
|
Warhead@1:
|
||||||
Spread: 3
|
Spread: 3
|
||||||
@@ -79,7 +79,7 @@ Maverick:
|
|||||||
Burst: 2
|
Burst: 2
|
||||||
BurstDelay: 7
|
BurstDelay: 7
|
||||||
ValidTargets: Ground
|
ValidTargets: Ground
|
||||||
Missile:
|
Projectile: Missile
|
||||||
Speed: 30
|
Speed: 30
|
||||||
Arm: 2
|
Arm: 2
|
||||||
High: true
|
High: true
|
||||||
@@ -102,7 +102,7 @@ Maverick:
|
|||||||
FireballLauncher:
|
FireballLauncher:
|
||||||
ROF: 45
|
ROF: 45
|
||||||
Range: 4
|
Range: 4
|
||||||
Bullet:
|
Projectile: Bullet
|
||||||
Speed: 12
|
Speed: 12
|
||||||
Trail: fb2
|
Trail: fb2
|
||||||
Image: FB1
|
Image: FB1
|
||||||
@@ -119,7 +119,7 @@ FireballLauncher:
|
|||||||
Flamer:
|
Flamer:
|
||||||
ROF: 50
|
ROF: 50
|
||||||
Range: 5
|
Range: 5
|
||||||
Bullet:
|
Projectile: Bullet
|
||||||
Speed: 12
|
Speed: 12
|
||||||
Trail: fb2
|
Trail: fb2
|
||||||
Image: FB1
|
Image: FB1
|
||||||
@@ -137,7 +137,7 @@ ChainGun:
|
|||||||
ROF: 3
|
ROF: 3
|
||||||
Range: 5
|
Range: 5
|
||||||
Report: GUN13
|
Report: GUN13
|
||||||
Bullet:
|
Projectile: Bullet
|
||||||
Speed: 100
|
Speed: 100
|
||||||
Warhead:
|
Warhead:
|
||||||
Spread: 3
|
Spread: 3
|
||||||
@@ -151,7 +151,7 @@ Pistol:
|
|||||||
ROF: 7
|
ROF: 7
|
||||||
Range: 3
|
Range: 3
|
||||||
Report: GUN27
|
Report: GUN27
|
||||||
Bullet:
|
Projectile: Bullet
|
||||||
Speed: 100
|
Speed: 100
|
||||||
Warhead:
|
Warhead:
|
||||||
Spread: 3
|
Spread: 3
|
||||||
@@ -164,7 +164,7 @@ M1Carbine:
|
|||||||
ROF: 20
|
ROF: 20
|
||||||
Range: 5
|
Range: 5
|
||||||
Report: GUN11
|
Report: GUN11
|
||||||
Bullet:
|
Projectile: Bullet
|
||||||
Speed: 100
|
Speed: 100
|
||||||
Warhead:
|
Warhead:
|
||||||
Spread: 3
|
Spread: 3
|
||||||
@@ -178,7 +178,7 @@ Dragon:
|
|||||||
Range: 5
|
Range: 5
|
||||||
Report: MISSILE6
|
Report: MISSILE6
|
||||||
ValidTargets: Ground
|
ValidTargets: Ground
|
||||||
Missile:
|
Projectile: Missile
|
||||||
Speed: 25
|
Speed: 25
|
||||||
Arm: 2
|
Arm: 2
|
||||||
High: true
|
High: true
|
||||||
@@ -204,7 +204,7 @@ Hellfire:
|
|||||||
Range: 4
|
Range: 4
|
||||||
Report: MISSILE6
|
Report: MISSILE6
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
Missile:
|
Projectile: Missile
|
||||||
Speed: 30
|
Speed: 30
|
||||||
Arm: 2
|
Arm: 2
|
||||||
High: true
|
High: true
|
||||||
@@ -228,7 +228,7 @@ Grenade:
|
|||||||
ROF: 60
|
ROF: 60
|
||||||
Range: 4
|
Range: 4
|
||||||
Report: grenade1
|
Report: grenade1
|
||||||
Bullet:
|
Projectile: Bullet
|
||||||
Speed: 5
|
Speed: 5
|
||||||
High: true
|
High: true
|
||||||
Angle: .1
|
Angle: .1
|
||||||
@@ -248,7 +248,7 @@ Grenade:
|
|||||||
ROF: 10
|
ROF: 10
|
||||||
Range: 4
|
Range: 4
|
||||||
Report: CANNON2
|
Report: CANNON2
|
||||||
Bullet:
|
Projectile: Bullet
|
||||||
Speed: 50
|
Speed: 50
|
||||||
Image: 120MM
|
Image: 120MM
|
||||||
Warhead:
|
Warhead:
|
||||||
@@ -264,7 +264,7 @@ Grenade:
|
|||||||
ROF: 50
|
ROF: 50
|
||||||
Range: 4.75
|
Range: 4.75
|
||||||
Report: CANNON1
|
Report: CANNON1
|
||||||
Bullet:
|
Projectile: Bullet
|
||||||
Speed: 40
|
Speed: 40
|
||||||
Image: 120MM
|
Image: 120MM
|
||||||
Warhead:
|
Warhead:
|
||||||
@@ -282,7 +282,7 @@ Grenade:
|
|||||||
Report: CANNON1
|
Report: CANNON1
|
||||||
Burst: 2
|
Burst: 2
|
||||||
BurstDelay: 4
|
BurstDelay: 4
|
||||||
Bullet:
|
Projectile: Bullet
|
||||||
Speed: 40
|
Speed: 40
|
||||||
Image: 120MM
|
Image: 120MM
|
||||||
Warhead:
|
Warhead:
|
||||||
@@ -299,7 +299,7 @@ Grenade:
|
|||||||
Range: 4.75
|
Range: 4.75
|
||||||
Report: CANNON1
|
Report: CANNON1
|
||||||
Burst: 2
|
Burst: 2
|
||||||
Bullet:
|
Projectile: Bullet
|
||||||
Speed: 40
|
Speed: 40
|
||||||
Image: 120MM
|
Image: 120MM
|
||||||
Warhead:
|
Warhead:
|
||||||
@@ -315,7 +315,7 @@ TurretGun:
|
|||||||
ROF: 30
|
ROF: 30
|
||||||
Range: 7
|
Range: 7
|
||||||
Report: TURRET1
|
Report: TURRET1
|
||||||
Bullet:
|
Projectile: Bullet
|
||||||
Speed: 40
|
Speed: 40
|
||||||
Image: 120MM
|
Image: 120MM
|
||||||
Warhead:
|
Warhead:
|
||||||
@@ -333,7 +333,7 @@ MammothTusk:
|
|||||||
Report: MISSILE6
|
Report: MISSILE6
|
||||||
Burst: 2
|
Burst: 2
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
Missile:
|
Projectile: Missile
|
||||||
Speed: 30
|
Speed: 30
|
||||||
Arm: 2
|
Arm: 2
|
||||||
High: true
|
High: true
|
||||||
@@ -357,7 +357,7 @@ MammothTusk:
|
|||||||
ROF: 85
|
ROF: 85
|
||||||
Range: 14
|
Range: 14
|
||||||
Report: TANK5
|
Report: TANK5
|
||||||
Bullet:
|
Projectile: Bullet
|
||||||
Speed: 12
|
Speed: 12
|
||||||
High: true
|
High: true
|
||||||
Angle: .1
|
Angle: .1
|
||||||
@@ -377,7 +377,7 @@ M60mg:
|
|||||||
Range: 4
|
Range: 4
|
||||||
Report: PILLBOX1
|
Report: PILLBOX1
|
||||||
Burst: 5
|
Burst: 5
|
||||||
Bullet:
|
Projectile: Bullet
|
||||||
Speed: 100
|
Speed: 100
|
||||||
Warhead:
|
Warhead:
|
||||||
Spread: 3
|
Spread: 3
|
||||||
@@ -390,7 +390,7 @@ M60mg:
|
|||||||
Napalm:
|
Napalm:
|
||||||
ROF: 20
|
ROF: 20
|
||||||
Range: 4.5
|
Range: 4.5
|
||||||
Bullet:
|
Projectile: Bullet
|
||||||
Image: BOMBLET
|
Image: BOMBLET
|
||||||
Speed: 5
|
Speed: 5
|
||||||
High: yes
|
High: yes
|
||||||
@@ -433,7 +433,7 @@ TeslaZap:
|
|||||||
Charges: true
|
Charges: true
|
||||||
Range: 8.5
|
Range: 8.5
|
||||||
Report: TESLA1
|
Report: TESLA1
|
||||||
TeslaZap:
|
Projectile: TeslaZap
|
||||||
Warhead:
|
Warhead:
|
||||||
Spread: 1
|
Spread: 1
|
||||||
Verses: 100%,100%,100%,100%,100%
|
Verses: 100%,100%,100%,100%,100%
|
||||||
@@ -445,7 +445,7 @@ Nike:
|
|||||||
Range: 7.5
|
Range: 7.5
|
||||||
Report: MISSILE1
|
Report: MISSILE1
|
||||||
ValidTargets: Air
|
ValidTargets: Air
|
||||||
Missile:
|
Projectile: Missile
|
||||||
Arm: 3
|
Arm: 3
|
||||||
High: true
|
High: true
|
||||||
Shadow: false
|
Shadow: false
|
||||||
@@ -468,7 +468,7 @@ RedEye:
|
|||||||
Range: 7.5
|
Range: 7.5
|
||||||
Report: MISSILE1
|
Report: MISSILE1
|
||||||
ValidTargets: Air
|
ValidTargets: Air
|
||||||
Missile:
|
Projectile: Missile
|
||||||
Arm: 3
|
Arm: 3
|
||||||
High: true
|
High: true
|
||||||
Shadow: false
|
Shadow: false
|
||||||
@@ -491,7 +491,7 @@ RedEye:
|
|||||||
Range: 16
|
Range: 16
|
||||||
Burst: 2
|
Burst: 2
|
||||||
Report: TURRET1
|
Report: TURRET1
|
||||||
Bullet:
|
Projectile: Bullet
|
||||||
Speed: 12
|
Speed: 12
|
||||||
High: true
|
High: true
|
||||||
Angle: .1
|
Angle: .1
|
||||||
@@ -513,7 +513,7 @@ SubMissile:
|
|||||||
Range: 16
|
Range: 16
|
||||||
Burst: 2
|
Burst: 2
|
||||||
Report: MISSILE6
|
Report: MISSILE6
|
||||||
Bullet:
|
Projectile: Bullet
|
||||||
Speed: 6
|
Speed: 6
|
||||||
High: true
|
High: true
|
||||||
Angle: .4
|
Angle: .4
|
||||||
@@ -536,7 +536,7 @@ Stinger:
|
|||||||
Range: 9
|
Range: 9
|
||||||
Report: MISSILE6
|
Report: MISSILE6
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
Missile:
|
Projectile: Missile
|
||||||
Arm: 3
|
Arm: 3
|
||||||
High: true
|
High: true
|
||||||
Shadow: false
|
Shadow: false
|
||||||
@@ -564,7 +564,7 @@ TorpTube:
|
|||||||
Underwater: yes
|
Underwater: yes
|
||||||
Burst: 2
|
Burst: 2
|
||||||
BurstDelay: 1
|
BurstDelay: 1
|
||||||
Bullet:
|
Projectile: Bullet
|
||||||
Image: MISSILE
|
Image: MISSILE
|
||||||
Speed: 6
|
Speed: 6
|
||||||
Warhead:
|
Warhead:
|
||||||
@@ -579,7 +579,7 @@ TorpTube:
|
|||||||
ROF: 60
|
ROF: 60
|
||||||
Range: 5.5
|
Range: 5.5
|
||||||
Report: CANNON2
|
Report: CANNON2
|
||||||
Bullet:
|
Projectile: Bullet
|
||||||
Speed: 25
|
Speed: 25
|
||||||
Image: 120MM
|
Image: 120MM
|
||||||
Warhead:
|
Warhead:
|
||||||
@@ -595,7 +595,7 @@ DepthCharge:
|
|||||||
ROF: 60
|
ROF: 60
|
||||||
Range: 5
|
Range: 5
|
||||||
ValidTargets: Underwater
|
ValidTargets: Underwater
|
||||||
Bullet:
|
Projectile: Bullet
|
||||||
Speed: 5
|
Speed: 5
|
||||||
Image: BOMB
|
Image: BOMB
|
||||||
Angle: .1
|
Angle: .1
|
||||||
@@ -613,7 +613,7 @@ ParaBomb:
|
|||||||
ROF: 10
|
ROF: 10
|
||||||
Range: 4.5
|
Range: 4.5
|
||||||
Report: CHUTE1
|
Report: CHUTE1
|
||||||
GravityBomb:
|
Projectile: GravityBomb
|
||||||
Image: PARABOMB
|
Image: PARABOMB
|
||||||
Warhead:
|
Warhead:
|
||||||
Spread: 3
|
Spread: 3
|
||||||
@@ -639,7 +639,7 @@ Heal:
|
|||||||
ROF: 80
|
ROF: 80
|
||||||
Range: 4
|
Range: 4
|
||||||
Report: HEAL2
|
Report: HEAL2
|
||||||
Bullet:
|
Projectile: Bullet
|
||||||
Speed: 100
|
Speed: 100
|
||||||
Warhead:
|
Warhead:
|
||||||
Spread: 5
|
Spread: 5
|
||||||
@@ -651,7 +651,7 @@ SCUD:
|
|||||||
ROF: 250
|
ROF: 250
|
||||||
Range: 13
|
Range: 13
|
||||||
Report: MISSILE1
|
Report: MISSILE1
|
||||||
Bullet:
|
Projectile: Bullet
|
||||||
Speed: 10
|
Speed: 10
|
||||||
Arm: 10
|
Arm: 10
|
||||||
High: true
|
High: true
|
||||||
@@ -742,7 +742,7 @@ PortaTesla:
|
|||||||
Report: TESLA1
|
Report: TESLA1
|
||||||
# Report: SHKTROP1
|
# Report: SHKTROP1
|
||||||
Charges: yes
|
Charges: yes
|
||||||
TeslaZap:
|
Projectile: TeslaZap
|
||||||
Warhead:
|
Warhead:
|
||||||
Spread: 1
|
Spread: 1
|
||||||
Verses: 100%,100%,100%,100%,100%
|
Verses: 100%,100%,100%,100%,100%
|
||||||
@@ -754,7 +754,7 @@ TTankZap:
|
|||||||
Range: 7
|
Range: 7
|
||||||
Report: TESLA1
|
Report: TESLA1
|
||||||
Charges: yes
|
Charges: yes
|
||||||
TeslaZap:
|
Projectile: TeslaZap
|
||||||
Warhead:
|
Warhead:
|
||||||
Spread: 1
|
Spread: 1
|
||||||
Verses: 100%,100%,100%,100%,100%
|
Verses: 100%,100%,100%,100%,100%
|
||||||
|
|||||||
Reference in New Issue
Block a user