Merge pull request #6931 from Happy0/mono310_workaround

Workarounds for a bug in certain versions of Mono (3.10 and certain versions of 3.8) which stops OpenRA building
This commit is contained in:
obrakmann
2014-11-12 20:45:20 +01:00
2 changed files with 14 additions and 4 deletions

View File

@@ -374,8 +374,12 @@ namespace OpenRA
var result = new T[width, height];
for (var i = 0; i < width; i++)
for (var j = 0; j < height; j++)
result[i, j] = i <= ts.GetUpperBound(0) && j <= ts.GetUpperBound(1)
? ts[i, j] : t;
// Workaround for broken ternary operators in certain versions of mono (3.10 and
// certain versions of the 3.8 series): https://bugzilla.xamarin.com/show_bug.cgi?id=23319
if (i <= ts.GetUpperBound(0) && j <= ts.GetUpperBound(1))
result[i, j] = ts[i, j];
else
result[i, j] = t;
return result;
}

View File

@@ -51,8 +51,14 @@ namespace OpenRA.Mods.RA.Render
var turreted = self.TraitsImplementing<Turreted>()
.FirstOrDefault(t => t.Name == arm.Info.Turret);
getFacing = turreted != null ? () => turreted.TurretFacing :
facing != null ? (Func<int>)(() => facing.Facing) : () => 0;
// Workaround for broken ternary operators in certain versions of mono (3.10 and
// certain versions of the 3.8 series): https://bugzilla.xamarin.com/show_bug.cgi?id=23319
if (turreted != null)
getFacing = () => turreted.TurretFacing;
else if (facing != null)
getFacing = (Func<int>)(() => facing.Facing);
else
getFacing = () => 0;
var muzzleFlash = new Animation(self.World, render.GetImage(self), getFacing);
visible.Add(barrel, false);