Cloak Changes: appear semitransparent to localplayer, not at all to others. Same for mines.
( Also fix compile warning in LimitedAmmo )
This commit is contained in:
@@ -11,6 +11,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Drawing;
|
||||||
|
|
||||||
namespace OpenRA.Traits
|
namespace OpenRA.Traits
|
||||||
{
|
{
|
||||||
@@ -24,7 +25,7 @@ namespace OpenRA.Traits
|
|||||||
public object Create(ActorInitializer init) { return new Cloak(init.self); }
|
public object Create(ActorInitializer init) { return new Cloak(init.self); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Cloak : IRenderModifier, INotifyAttack, ITick, INotifyDamage, IRadarVisibilityModifier
|
public class Cloak : IRenderModifier, INotifyAttack, ITick, INotifyDamage, IRadarVisibilityModifier, IRadarColorModifier
|
||||||
{
|
{
|
||||||
[Sync]
|
[Sync]
|
||||||
int remainingTime;
|
int remainingTime;
|
||||||
@@ -76,7 +77,7 @@ namespace OpenRA.Traits
|
|||||||
Sound.Play(self.Info.Traits.Get<CloakInfo>().CloakSound, self.CenterLocation);
|
Sound.Play(self.Info.Traits.Get<CloakInfo>().CloakSound, self.CenterLocation);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Cloaked { get { return remainingTime > 0; } }
|
public bool Cloaked { get { return remainingTime == 0; } }
|
||||||
|
|
||||||
|
|
||||||
public bool VisibleOnRadar(Actor self)
|
public bool VisibleOnRadar(Actor self)
|
||||||
@@ -84,6 +85,14 @@ namespace OpenRA.Traits
|
|||||||
return !Cloaked || self.Owner == self.World.LocalPlayer;
|
return !Cloaked || self.Owner == self.World.LocalPlayer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Color RadarColorOverride(Actor self)
|
||||||
|
{
|
||||||
|
var c = self.Owner.Color;
|
||||||
|
if (self.Owner == self.World.LocalPlayer && Cloaked)
|
||||||
|
c = Color.FromArgb(128, c);
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
public void Decloak(int time)
|
public void Decloak(int time)
|
||||||
{
|
{
|
||||||
DoSurface();
|
DoSurface();
|
||||||
|
|||||||
@@ -18,20 +18,18 @@ namespace OpenRA.Mods.RA
|
|||||||
public readonly int Ammo = 0;
|
public readonly int Ammo = 0;
|
||||||
public readonly int PipCount = 0;
|
public readonly int PipCount = 0;
|
||||||
|
|
||||||
public object Create(ActorInitializer init) { return new LimitedAmmo(init.self, this); }
|
public object Create(ActorInitializer init) { return new LimitedAmmo(this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class LimitedAmmo : INotifyAttack, IPips
|
public class LimitedAmmo : INotifyAttack, IPips
|
||||||
{
|
{
|
||||||
[Sync]
|
[Sync]
|
||||||
int ammo;
|
int ammo;
|
||||||
Actor self;
|
|
||||||
LimitedAmmoInfo Info;
|
LimitedAmmoInfo Info;
|
||||||
|
|
||||||
public LimitedAmmo(Actor self, LimitedAmmoInfo info)
|
public LimitedAmmo(LimitedAmmoInfo info)
|
||||||
{
|
{
|
||||||
ammo = info.Ammo;
|
ammo = info.Ammo;
|
||||||
this.self = self;
|
|
||||||
Info = info;
|
Info = info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using OpenRA.Traits;
|
using OpenRA.Traits;
|
||||||
using OpenRA.Traits.Activities;
|
using OpenRA.Traits.Activities;
|
||||||
|
using System.Drawing;
|
||||||
|
|
||||||
namespace OpenRA.Mods.RA
|
namespace OpenRA.Mods.RA
|
||||||
{
|
{
|
||||||
@@ -24,7 +25,7 @@ namespace OpenRA.Mods.RA
|
|||||||
public object Create(ActorInitializer init) { return new Mine(init, this); }
|
public object Create(ActorInitializer init) { return new Mine(init, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
class Mine : ICrushable, IOccupySpace
|
class Mine : ICrushable, IOccupySpace, IRadarVisibilityModifier, IRadarColorModifier
|
||||||
{
|
{
|
||||||
readonly Actor self;
|
readonly Actor self;
|
||||||
readonly MineInfo info;
|
readonly MineInfo info;
|
||||||
@@ -55,6 +56,16 @@ namespace OpenRA.Mods.RA
|
|||||||
public int2 TopLeft { get { return location; } }
|
public int2 TopLeft { get { return location; } }
|
||||||
|
|
||||||
public IEnumerable<int2> OccupiedCells() { yield return TopLeft; }
|
public IEnumerable<int2> OccupiedCells() { yield return TopLeft; }
|
||||||
|
|
||||||
|
public bool VisibleOnRadar(Actor self)
|
||||||
|
{
|
||||||
|
return self.Owner == self.World.LocalPlayer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Color RadarColorOverride(Actor self)
|
||||||
|
{
|
||||||
|
return Color.FromArgb(128, self.Owner.Color);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* tag trait for stuff that shouldnt trigger mines */
|
/* tag trait for stuff that shouldnt trigger mines */
|
||||||
|
|||||||
Reference in New Issue
Block a user