MRJ works; moved ProvidesRadar.IsActive update to Tick to avoid desync if any other actor code relies on it.
This commit is contained in:
@@ -1,20 +1,26 @@
|
||||
|
||||
using System.Linq;
|
||||
|
||||
namespace OpenRa.Traits
|
||||
{
|
||||
class ProvidesRadarInfo : StatelessTraitInfo<ProvidesRadar> {}
|
||||
|
||||
class ProvidesRadar
|
||||
class ProvidesRadar : ITick
|
||||
{
|
||||
public bool IsActive(Actor self)
|
||||
public bool IsActive { get; private set; }
|
||||
|
||||
public void Tick(Actor self) { IsActive = UpdateActive(self); }
|
||||
|
||||
bool UpdateActive(Actor self)
|
||||
{
|
||||
// TODO: Check for nearby MRJ
|
||||
|
||||
// Check if powered
|
||||
var b = self.traits.Get<Building>();
|
||||
if (b != null && b.Disabled)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
if (b != null && b.Disabled) return false;
|
||||
|
||||
var isJammed = self.World.Actors.Any(a => a.traits.Contains<JamsRadar>()
|
||||
&& self.Owner != a.Owner
|
||||
&& (self.Location - a.Location).Length < a.Info.Traits.Get<JamsRadarInfo>().Range);
|
||||
|
||||
return !isJammed;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user