Merge pull request #5993 from obrakmann/fix5651_take2

More aircraft/shroud interaction fixes
This commit is contained in:
Matthias Mailänder
2014-07-26 15:43:16 +02:00
4 changed files with 5 additions and 11 deletions

View File

@@ -61,7 +61,7 @@ namespace OpenRA
public void Tick(World world) public void Tick(World world)
{ {
actors.RemoveAll(a => !a.IsInWorld || (a.Owner != world.LocalPlayer && world.FogObscures(a))); actors.RemoveAll(a => !a.IsInWorld || (!a.Owner.IsAlliedWith(world.LocalPlayer) && world.FogObscures(a)));
foreach (var cg in controlGroups.Values) foreach (var cg in controlGroups.Values)
// note: NOT `!a.IsInWorld`, since that would remove things that are in transports. // note: NOT `!a.IsInWorld`, since that would remove things that are in transports.

View File

@@ -38,7 +38,7 @@ namespace OpenRA.Traits
public IEnumerable<IRenderable> RenderAfterWorld(WorldRenderer wr) public IEnumerable<IRenderable> RenderAfterWorld(WorldRenderer wr)
{ {
if (self.World.FogObscures(self)) if (!self.Owner.IsAlliedWith(self.World.RenderPlayer) && self.World.FogObscures(self))
yield break; yield break;
var b = self.Bounds.Value; var b = self.Bounds.Value;
@@ -74,9 +74,6 @@ namespace OpenRA.Traits
IEnumerable<IRenderable> DrawPips(WorldRenderer wr, Actor self, int2 basePosition) IEnumerable<IRenderable> DrawPips(WorldRenderer wr, Actor self, int2 basePosition)
{ {
if (!self.Owner.IsAlliedWith(self.World.RenderPlayer))
yield break;
var pipSources = self.TraitsImplementing<IPips>(); var pipSources = self.TraitsImplementing<IPips>();
if (!pipSources.Any()) if (!pipSources.Any())
yield break; yield break;
@@ -118,9 +115,6 @@ namespace OpenRA.Traits
IEnumerable<IRenderable> DrawTags(WorldRenderer wr, Actor self, int2 basePosition) IEnumerable<IRenderable> DrawTags(WorldRenderer wr, Actor self, int2 basePosition)
{ {
if (!self.Owner.IsAlliedWith(self.World.RenderPlayer))
yield break;
var tagImages = new Animation(self.World, "pips"); var tagImages = new Animation(self.World, "pips");
var pal = wr.Palette(Info.Palette); var pal = wr.Palette(Info.Palette);
var tagxyOffset = new int2(0, 6); var tagxyOffset = new int2(0, 6);

View File

@@ -239,7 +239,7 @@ namespace OpenRA.Widgets
static IEnumerable<Actor> SelectActorsInBox(World world, int2 a, int2 b, Func<Actor, bool> cond) static IEnumerable<Actor> SelectActorsInBox(World world, int2 a, int2 b, Func<Actor, bool> cond)
{ {
return world.ScreenMap.ActorsInBox(a, b) return world.ScreenMap.ActorsInBox(a, b)
.Where(x => x.HasTrait<Selectable>() && x.Trait<Selectable>().Info.Selectable && !world.FogObscures(x) && cond(x)) .Where(x => x.HasTrait<Selectable>() && x.Trait<Selectable>().Info.Selectable && (x.Owner.IsAlliedWith(world.RenderPlayer) || !world.FogObscures(x)) && cond(x))
.GroupBy(x => x.GetSelectionPriority()) .GroupBy(x => x.GetSelectionPriority())
.OrderByDescending(g => g.Key) .OrderByDescending(g => g.Key)
.Select(g => g.AsEnumerable()) .Select(g => g.AsEnumerable())

View File

@@ -29,8 +29,8 @@ namespace OpenRA.Mods.RA.Air
protected override bool CanAttack(Actor self, Target target) protected override bool CanAttack(Actor self, Target target)
{ {
// dont fire while landed // dont fire while landed or when outside the map
return base.CanAttack(self, target) && self.CenterPosition.Z > 0; return base.CanAttack(self, target) && self.CenterPosition.Z > 0 && self.World.Map.Contains(self.Location);
} }
} }
} }