MRJ works; moved ProvidesRadar.IsActive update to Tick to avoid desync if any other actor code relies on it.
This commit is contained in:
@@ -307,7 +307,7 @@ namespace OpenRa
|
||||
{
|
||||
var hasNewRadar = world.Actors.Any(a => a.Owner == world.LocalPlayer
|
||||
&& a.traits.Contains<ProvidesRadar>()
|
||||
&& a.traits.Get<ProvidesRadar>().IsActive(a));
|
||||
&& a.traits.Get<ProvidesRadar>().IsActive);
|
||||
|
||||
if (hasNewRadar != hasRadar)
|
||||
{
|
||||
|
||||
@@ -229,6 +229,7 @@
|
||||
<Compile Include="Traits\ConstructionYard.cs" />
|
||||
<Compile Include="Traits\IronCurtain.cs" />
|
||||
<Compile Include="Traits\IronCurtainable.cs" />
|
||||
<Compile Include="Traits\JamsRadar.cs" />
|
||||
<Compile Include="Traits\LightPaletteRotator.cs" />
|
||||
<Compile Include="Traits\LimitedAmmo.cs" />
|
||||
<Compile Include="Traits\Passenger.cs" />
|
||||
|
||||
@@ -40,7 +40,14 @@ namespace OpenRa.Traits
|
||||
[Sync]
|
||||
bool manuallyDisabled = false;
|
||||
public bool ManuallyDisabled { get { return manuallyDisabled; } }
|
||||
public bool Disabled { get { return (manuallyDisabled || (Info.RequiresPower && self.Owner.GetPowerState() != PowerState.Normal)); } }
|
||||
public bool Disabled
|
||||
{
|
||||
get
|
||||
{
|
||||
return (manuallyDisabled ||
|
||||
(Info.RequiresPower && self.Owner.GetPowerState() != PowerState.Normal));
|
||||
}
|
||||
}
|
||||
bool wasDisabled = false;
|
||||
|
||||
public Building(Actor self)
|
||||
|
||||
14
OpenRa.Game/Traits/JamsRadar.cs
Normal file
14
OpenRa.Game/Traits/JamsRadar.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace OpenRa.Traits
|
||||
{
|
||||
class JamsRadarInfo : StatelessTraitInfo<JamsRadar>
|
||||
{
|
||||
public readonly int Range = 0;
|
||||
}
|
||||
|
||||
class JamsRadar {}
|
||||
}
|
||||
@@ -1,20 +1,26 @@
|
||||
|
||||
using System.Linq;
|
||||
|
||||
namespace OpenRa.Traits
|
||||
{
|
||||
class ProvidesRadarInfo : StatelessTraitInfo<ProvidesRadar> {}
|
||||
|
||||
class ProvidesRadar
|
||||
class ProvidesRadar : ITick
|
||||
{
|
||||
public bool IsActive(Actor self)
|
||||
{
|
||||
// TODO: Check for nearby MRJ
|
||||
public bool IsActive { get; private set; }
|
||||
|
||||
public void Tick(Actor self) { IsActive = UpdateActive(self); }
|
||||
|
||||
bool UpdateActive(Actor self)
|
||||
{
|
||||
// Check if powered
|
||||
var b = self.traits.Get<Building>();
|
||||
if (b != null && b.Disabled)
|
||||
return false;
|
||||
if (b != null && b.Disabled) return false;
|
||||
|
||||
return true;
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ E6 Works
|
||||
E7 Works
|
||||
MEDI Works
|
||||
SPY Infiltrate action missing
|
||||
THF Steal action missing
|
||||
THF Works
|
||||
C1,C2,Einstein,Kosygin Not implemented
|
||||
|
||||
All tracked vehicles
|
||||
@@ -21,12 +21,12 @@ All tracked vehicles
|
||||
|
||||
Light vehicles
|
||||
V2RL Works
|
||||
APC Works
|
||||
APC Works
|
||||
MNLY Works
|
||||
MGG No gap
|
||||
MRJ No radar
|
||||
MGG Works
|
||||
MRJ Works
|
||||
JEEP Works
|
||||
MCV Works
|
||||
MCV Works
|
||||
HARV Works
|
||||
ARTY Works
|
||||
|
||||
|
||||
@@ -15,6 +15,10 @@ GAP:
|
||||
GeneratesGap:
|
||||
Range: 10
|
||||
|
||||
MRJ:
|
||||
JamsRadar:
|
||||
Range: 10
|
||||
|
||||
MINP:
|
||||
Mine:
|
||||
Damage: 1000
|
||||
|
||||
@@ -53,6 +53,30 @@ GAP:
|
||||
RenderBuilding:
|
||||
IronCurtainable:
|
||||
|
||||
MRJ:
|
||||
JamsRadar:
|
||||
Range: 10
|
||||
Inherits: ^Vehicle
|
||||
Buildable:
|
||||
TechLevel: 12
|
||||
Prerequisites: weap,dome
|
||||
Owner: allies
|
||||
Cost: 600
|
||||
Description: Radar Jammer
|
||||
LongDesc: Hides nearby units on the enemy's minimap.\n Unarmed
|
||||
Selectable:
|
||||
Priority: 3
|
||||
Unit:
|
||||
HP: 110
|
||||
Armor: light
|
||||
Crewed: yes
|
||||
Sight: 7
|
||||
Speed: 9
|
||||
Mobile:
|
||||
MovementType: Track
|
||||
RenderUnitSpinner:
|
||||
Offset: 0,4,0,-6
|
||||
|
||||
MINP:
|
||||
Mine:
|
||||
Damage: 1000
|
||||
@@ -266,28 +290,6 @@ V2RL:
|
||||
RenderUnitTurreted:
|
||||
AutoTarget:
|
||||
|
||||
MRJ:
|
||||
Inherits: ^Vehicle
|
||||
Buildable:
|
||||
TechLevel: 12
|
||||
Prerequisites: weap,dome
|
||||
Owner: allies
|
||||
Cost: 600
|
||||
Description: Radar Jammer
|
||||
LongDesc: Hides nearby units on the enemy's minimap.\n Unarmed
|
||||
Selectable:
|
||||
Priority: 3
|
||||
Unit:
|
||||
HP: 110
|
||||
Armor: light
|
||||
Crewed: yes
|
||||
Sight: 7
|
||||
Speed: 9
|
||||
Mobile:
|
||||
MovementType: Track
|
||||
RenderUnitSpinner:
|
||||
Offset: 0,4,0,-6
|
||||
|
||||
ARTY:
|
||||
Inherits: ^Vehicle
|
||||
Buildable:
|
||||
|
||||
Reference in New Issue
Block a user