add shroud, creates shroud and reveals shroud to syncreport

This commit is contained in:
Matthias Mailänder
2013-03-06 16:05:31 +01:00
parent 3f56e00173
commit 72841a51e6
6 changed files with 18 additions and 25 deletions

View File

@@ -47,8 +47,7 @@ namespace OpenRA
public Shroud.ActorVisibility Sight; public Shroud.ActorVisibility Sight;
[Sync] [Sync] public Player Owner;
public Player Owner;
Activity currentActivity; Activity currentActivity;
public Group Group; public Group Group;

View File

@@ -18,10 +18,10 @@ namespace OpenRA.Traits
public object Create(ActorInitializer init) { return new CreatesShroud(this); } public object Create(ActorInitializer init) { return new CreatesShroud(this); }
} }
public class CreatesShroud : ITick public class CreatesShroud : ITick, ISync
{ {
CreatesShroudInfo Info; CreatesShroudInfo Info;
CPos previousLocation; [Sync] CPos previousLocation;
Shroud.ActorVisibility v; Shroud.ActorVisibility v;
public CreatesShroud(CreatesShroudInfo info) public CreatesShroud(CreatesShroudInfo info)
@@ -37,20 +37,20 @@ namespace OpenRA.Traits
if (previousLocation != self.Location && v != null) { if (previousLocation != self.Location && v != null) {
previousLocation = self.Location; previousLocation = self.Location;
var shrouds = self.World.ActorsWithTrait<Traits.Shroud>().Select(s => s.Actor.Owner.Shroud); var shrouds = self.World.ActorsWithTrait<Shroud>().Select(s => s.Actor.Owner.Shroud);
foreach (var shroud in shrouds) { foreach (var shroud in shrouds) {
shroud.UnhideActor(self, v, Info.Range); shroud.UnhideActor(self, v, Info.Range);
} }
} }
if (!self.TraitsImplementing<IDisable>().Any(d => d.Disabled)) { if (!self.TraitsImplementing<IDisable>().Any(d => d.Disabled)) {
var shrouds = self.World.ActorsWithTrait<Traits.Shroud>().Select(s => s.Actor.Owner.Shroud); var shrouds = self.World.ActorsWithTrait<Shroud>().Select(s => s.Actor.Owner.Shroud);
foreach (var shroud in shrouds) { foreach (var shroud in shrouds) {
shroud.HideActor(self, Info.Range); shroud.HideActor(self, Info.Range);
} }
} }
else { else {
var shrouds = self.World.ActorsWithTrait<Traits.Shroud>().Select(s => s.Actor.Owner.Shroud); var shrouds = self.World.ActorsWithTrait<Shroud>().Select(s => s.Actor.Owner.Shroud);
foreach (var shroud in shrouds) { foreach (var shroud in shrouds) {
shroud.UnhideActor(self, v, Info.Range); shroud.UnhideActor(self, v, Info.Range);
} }

View File

@@ -75,13 +75,10 @@ namespace OpenRA.Traits
AdviceInterval = info.AdviceInterval; AdviceInterval = info.AdviceInterval;
} }
[Sync] [Sync] public int Cash;
public int Cash;
[Sync] [Sync] public int Ore;
public int Ore; [Sync] public int OreCapacity;
[Sync]
public int OreCapacity;
public int DisplayCash; public int DisplayCash;
public int DisplayOre; public int DisplayOre;

View File

@@ -16,10 +16,10 @@ namespace OpenRA.Traits
public object Create(ActorInitializer init) { return new RevealsShroud(this); } public object Create(ActorInitializer init) { return new RevealsShroud(this); }
} }
public class RevealsShroud : ITick public class RevealsShroud : ITick, ISync
{ {
RevealsShroudInfo Info; RevealsShroudInfo Info;
CPos previousLocation; [Sync] CPos previousLocation;
public RevealsShroud(RevealsShroudInfo info) public RevealsShroud(RevealsShroudInfo info)
{ {

View File

@@ -20,19 +20,19 @@ namespace OpenRA.Traits
public object Create(ActorInitializer init) { return new Shroud(init.world); } public object Create(ActorInitializer init) { return new Shroud(init.world); }
} }
public class Shroud public class Shroud : ISync
{ {
Map map; Map map;
World world; World world;
public Player Owner; [Sync] public Player Owner;
public int[,] visibleCells; public int[,] visibleCells;
public bool[,] exploredCells; public bool[,] exploredCells;
public bool[,] foggedCells; public bool[,] foggedCells;
public Rectangle? exploredBounds; public Rectangle? exploredBounds;
bool disabled = false; bool disabled = false;
public bool dirty = true; public bool dirty = true;
public bool Disabled [Sync] public bool Disabled
{ {
get { return disabled; } get { return disabled; }
set { disabled = value; Dirty(); } set { disabled = value; Dirty(); }
@@ -70,7 +70,7 @@ namespace OpenRA.Traits
// cache of positions that were added, so no matter what crazy trait code does, it // cache of positions that were added, so no matter what crazy trait code does, it
// can't make us invalid. // can't make us invalid.
public class ActorVisibility { public int range; public CPos[] vis; } public class ActorVisibility { [Sync] public int range; [Sync] public CPos[] vis; }
public Dictionary<Actor, ActorVisibility> vis = new Dictionary<Actor, ActorVisibility>(); public Dictionary<Actor, ActorVisibility> vis = new Dictionary<Actor, ActorVisibility>();
static IEnumerable<CPos> FindVisibleTiles(World world, CPos a, int r) static IEnumerable<CPos> FindVisibleTiles(World world, CPos a, int r)

View File

@@ -102,12 +102,9 @@ namespace OpenRA.Mods.RA.Air
protected readonly Actor self; protected readonly Actor self;
[Sync] [Sync] public int Facing { get; set; }
public int Facing { get; set; } [Sync] public int Altitude { get; set; }
[Sync] [Sync] public PSubPos SubPxPosition;
public int Altitude { get; set; }
[Sync]
public PSubPos SubPxPosition;
public PPos PxPosition { get { return SubPxPosition.ToPPos(); } } public PPos PxPosition { get { return SubPxPosition.ToPPos(); } }
public CPos TopLeft { get { return PxPosition.ToCPos(); } } public CPos TopLeft { get { return PxPosition.ToCPos(); } }