MRJ works; moved ProvidesRadar.IsActive update to Tick to avoid desync if any other actor code relies on it.

This commit is contained in:
Chris Forbes
2010-01-23 10:37:53 +13:00
parent 0597e2fb6c
commit 38e7590422
8 changed files with 72 additions and 38 deletions

View File

@@ -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)
{ {

View File

@@ -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" />

View File

@@ -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)

View 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 {}
}

View File

@@ -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;
} }
} }
} }

View File

@@ -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

View File

@@ -14,6 +14,10 @@ MGG:
GAP: GAP:
GeneratesGap: GeneratesGap:
Range: 10 Range: 10
MRJ:
JamsRadar:
Range: 10
MINP: MINP:
Mine: Mine:

View File

@@ -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: