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
|
var hasNewRadar = world.Actors.Any(a => a.Owner == world.LocalPlayer
|
||||||
&& a.traits.Contains<ProvidesRadar>()
|
&& a.traits.Contains<ProvidesRadar>()
|
||||||
&& a.traits.Get<ProvidesRadar>().IsActive(a));
|
&& a.traits.Get<ProvidesRadar>().IsActive);
|
||||||
|
|
||||||
if (hasNewRadar != hasRadar)
|
if (hasNewRadar != hasRadar)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -229,6 +229,7 @@
|
|||||||
<Compile Include="Traits\ConstructionYard.cs" />
|
<Compile Include="Traits\ConstructionYard.cs" />
|
||||||
<Compile Include="Traits\IronCurtain.cs" />
|
<Compile Include="Traits\IronCurtain.cs" />
|
||||||
<Compile Include="Traits\IronCurtainable.cs" />
|
<Compile Include="Traits\IronCurtainable.cs" />
|
||||||
|
<Compile Include="Traits\JamsRadar.cs" />
|
||||||
<Compile Include="Traits\LightPaletteRotator.cs" />
|
<Compile Include="Traits\LightPaletteRotator.cs" />
|
||||||
<Compile Include="Traits\LimitedAmmo.cs" />
|
<Compile Include="Traits\LimitedAmmo.cs" />
|
||||||
<Compile Include="Traits\Passenger.cs" />
|
<Compile Include="Traits\Passenger.cs" />
|
||||||
|
|||||||
@@ -40,7 +40,14 @@ namespace OpenRa.Traits
|
|||||||
[Sync]
|
[Sync]
|
||||||
bool manuallyDisabled = false;
|
bool manuallyDisabled = false;
|
||||||
public bool ManuallyDisabled { get { return manuallyDisabled; } }
|
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;
|
bool wasDisabled = false;
|
||||||
|
|
||||||
public Building(Actor self)
|
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
|
namespace OpenRa.Traits
|
||||||
{
|
{
|
||||||
class ProvidesRadarInfo : StatelessTraitInfo<ProvidesRadar> {}
|
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
|
// Check if powered
|
||||||
var b = self.traits.Get<Building>();
|
var b = self.traits.Get<Building>();
|
||||||
if (b != null && b.Disabled)
|
if (b != null && b.Disabled) return false;
|
||||||
return false;
|
|
||||||
|
var isJammed = self.World.Actors.Any(a => a.traits.Contains<JamsRadar>()
|
||||||
return true;
|
&& 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
|
E7 Works
|
||||||
MEDI Works
|
MEDI Works
|
||||||
SPY Infiltrate action missing
|
SPY Infiltrate action missing
|
||||||
THF Steal action missing
|
THF Works
|
||||||
C1,C2,Einstein,Kosygin Not implemented
|
C1,C2,Einstein,Kosygin Not implemented
|
||||||
|
|
||||||
All tracked vehicles
|
All tracked vehicles
|
||||||
@@ -21,12 +21,12 @@ All tracked vehicles
|
|||||||
|
|
||||||
Light vehicles
|
Light vehicles
|
||||||
V2RL Works
|
V2RL Works
|
||||||
APC Works
|
APC Works
|
||||||
MNLY Works
|
MNLY Works
|
||||||
MGG No gap
|
MGG Works
|
||||||
MRJ No radar
|
MRJ Works
|
||||||
JEEP Works
|
JEEP Works
|
||||||
MCV Works
|
MCV Works
|
||||||
HARV Works
|
HARV Works
|
||||||
ARTY Works
|
ARTY Works
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,10 @@ MGG:
|
|||||||
GAP:
|
GAP:
|
||||||
GeneratesGap:
|
GeneratesGap:
|
||||||
Range: 10
|
Range: 10
|
||||||
|
|
||||||
|
MRJ:
|
||||||
|
JamsRadar:
|
||||||
|
Range: 10
|
||||||
|
|
||||||
MINP:
|
MINP:
|
||||||
Mine:
|
Mine:
|
||||||
|
|||||||
@@ -53,6 +53,30 @@ GAP:
|
|||||||
RenderBuilding:
|
RenderBuilding:
|
||||||
IronCurtainable:
|
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:
|
MINP:
|
||||||
Mine:
|
Mine:
|
||||||
Damage: 1000
|
Damage: 1000
|
||||||
@@ -266,28 +290,6 @@ V2RL:
|
|||||||
RenderUnitTurreted:
|
RenderUnitTurreted:
|
||||||
AutoTarget:
|
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:
|
ARTY:
|
||||||
Inherits: ^Vehicle
|
Inherits: ^Vehicle
|
||||||
Buildable:
|
Buildable:
|
||||||
|
|||||||
Reference in New Issue
Block a user