fix crates being dropped in stupid locations

This commit is contained in:
Chris Forbes
2010-04-12 20:20:30 +12:00
parent e1852cadd3
commit cf5b0407cc
3 changed files with 15 additions and 4 deletions

View File

@@ -82,7 +82,7 @@ namespace OpenRA.Mods.RA_NG
plane.traits.Get<Unit>().Facing = Util.GetFacing(p - startPos, 0);
plane.CancelActivity();
plane.QueueActivity(new FlyCircle(p));
plane.traits.Get<ParaDrop>().SetLZ(p, null);
plane.traits.Get<ParaDrop>().SetLZ(p, null, inWater);
plane.traits.Get<Cargo>().Load(plane, crate);
});
return;

View File

@@ -22,6 +22,8 @@ using System.Collections.Generic;
using OpenRA.Mods.RA.Effects;
using OpenRA.Traits;
using OpenRA.Traits.Activities;
using OpenRA.FileFormats;
using OpenRA.GameRules;
namespace OpenRA.Mods.RA
{
@@ -36,11 +38,13 @@ namespace OpenRA.Mods.RA
readonly List<int2> droppedAt = new List<int2>();
int2 lz;
Actor flare;
bool waterDrop;
public void SetLZ( int2 lz, Actor flare )
public void SetLZ( int2 lz, Actor flare, bool waterDrop )
{
this.lz = lz;
this.flare = flare;
this.waterDrop = waterDrop;
droppedAt.Clear();
}
@@ -50,7 +54,8 @@ namespace OpenRA.Mods.RA
if ((self.Location - lz).LengthSquared <= r * r && !droppedAt.Contains(self.Location))
{
// todo: check is this is a good drop cell.
if (!IsSuitableCell(self, self.Location))
return;
// unload a dude here
droppedAt.Add(self.Location);
@@ -73,6 +78,12 @@ namespace OpenRA.Mods.RA
}
}
bool IsSuitableCell(Actor self, int2 p)
{
// rude hack
return self.World.IsCellBuildable(p, waterDrop);
}
void FinishedDropping(Actor self)
{
self.CancelActivity();

View File

@@ -67,7 +67,7 @@ namespace OpenRA.Mods.RA
a.CancelActivity();
a.QueueActivity(new FlyCircle(p));
a.traits.Get<ParaDrop>().SetLZ(p, flare);
a.traits.Get<ParaDrop>().SetLZ(p, flare, false);
var cargo = a.traits.Get<Cargo>();
foreach (var i in items)