Introducing per-player shrouds.
- Each player has their own shroud and their visibility does not extend outside of the shroud. - Units and buildings can no longer target other units outside of their visibility. Buildings can still be targetted if they have been explored. - GPS will provide visibility in the fog-of-war. - Spies that infiltrate radar domes will gain their victim's exploration and reset it on all clients (if the victim does not have GPS)
This commit is contained in:
@@ -153,7 +153,7 @@ namespace OpenRA.Mods.RA.Effects
|
||||
var altitude = float2.Lerp(Args.srcAltitude, Args.destAltitude, at);
|
||||
var pos = float2.Lerp(Args.src.ToFloat2(), Args.dest.ToFloat2(), at) - new float2(0, altitude);
|
||||
|
||||
if (Args.firedBy.World.LocalShroud.IsVisible(((PPos) pos.ToInt2()).ToCPos()))
|
||||
if (Args.firedBy.World.RenderedShroud.IsVisible(((PPos) pos.ToInt2()).ToCPos()))
|
||||
{
|
||||
if (Info.High || Info.Angle > 0)
|
||||
{
|
||||
|
||||
@@ -91,8 +91,8 @@ namespace OpenRA.Mods.RA
|
||||
var conPos = positions[i];
|
||||
var nextPos = positions[i - 1];
|
||||
|
||||
if (self.World.LocalShroud.IsVisible(conPos.ToCPos()) ||
|
||||
self.World.LocalShroud.IsVisible(nextPos.ToCPos()))
|
||||
if (self.World.RenderedShroud.IsVisible(conPos.ToCPos()) ||
|
||||
self.World.RenderedShroud.IsVisible(nextPos.ToCPos()))
|
||||
{
|
||||
Game.Renderer.WorldLineRenderer.DrawLine(conPos.ToFloat2(), nextPos.ToFloat2(), trailStart, trailEnd);
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ namespace OpenRA.Mods.RA.Effects
|
||||
if (
|
||||
self.IsInWorld
|
||||
&& (watcher.Granted || watcher.GrantedAllies)
|
||||
&& !self.Trait<HiddenUnderFog>().IsVisible(self)
|
||||
&& !self.Trait<HiddenUnderFog>().IsVisible(self.World.RenderedShroud, self) // WRONG
|
||||
&& (!self.HasTrait<Cloak>() || !self.Trait<Cloak>().Cloaked)
|
||||
&& (!self.HasTrait<Spy>() || !self.Trait<Spy>().Disguised)
|
||||
)
|
||||
|
||||
@@ -154,7 +154,7 @@ namespace OpenRA.Mods.RA.Effects
|
||||
|
||||
public IEnumerable<Renderable> Render()
|
||||
{
|
||||
if (Args.firedBy.World.LocalShroud.IsVisible(PxPosition.ToCPos()))
|
||||
if (Args.firedBy.World.RenderedShroud.IsVisible(PxPosition.ToCPos()))
|
||||
yield return new Renderable(anim.Image, PxPosition.ToFloat2() - 0.5f * anim.Image.size - new float2(0, Altitude),
|
||||
Args.weapon.Underwater ? "shadow" : "effect", PxPosition.Y);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user