Merge pull request #8817 from penev92/bleed_cleanups

Touch up a few files
This commit is contained in:
Paul Chote
2015-08-02 09:30:43 +01:00
4 changed files with 29 additions and 43 deletions

View File

@@ -42,18 +42,16 @@ namespace OpenRA.Traits
class CellTrigger class CellTrigger
{ {
public readonly int Id;
public readonly CPos[] Footprint; public readonly CPos[] Footprint;
public bool Dirty; public bool Dirty;
Action<Actor> onActorEntered; readonly Action<Actor> onActorEntered;
Action<Actor> onActorExited; readonly Action<Actor> onActorExited;
IEnumerable<Actor> currentActors = Enumerable.Empty<Actor>(); IEnumerable<Actor> currentActors = Enumerable.Empty<Actor>();
public CellTrigger(int id, CPos[] footprint, Action<Actor> onActorEntered, Action<Actor> onActorExited) public CellTrigger(CPos[] footprint, Action<Actor> onActorEntered, Action<Actor> onActorExited)
{ {
Id = id;
Footprint = footprint; Footprint = footprint;
this.onActorEntered = onActorEntered; this.onActorEntered = onActorEntered;
@@ -63,13 +61,13 @@ namespace OpenRA.Traits
Dirty = true; Dirty = true;
} }
public void Tick(ActorMap am) public void Tick(ActorMap actorMap)
{ {
if (!Dirty) if (!Dirty)
return; return;
var oldActors = currentActors; var oldActors = currentActors;
currentActors = Footprint.SelectMany(c => am.GetUnitsAt(c)).ToList(); currentActors = Footprint.SelectMany(actorMap.GetUnitsAt).ToList();
var entered = currentActors.Except(oldActors); var entered = currentActors.Except(oldActors);
var exited = oldActors.Except(currentActors); var exited = oldActors.Except(currentActors);
@@ -88,24 +86,20 @@ namespace OpenRA.Traits
class ProximityTrigger : IDisposable class ProximityTrigger : IDisposable
{ {
public readonly int Id;
public WPos Position { get; private set; }
public WDist Range { get; private set; }
public WPos TopLeft { get; private set; } public WPos TopLeft { get; private set; }
public WPos BottomRight { get; private set; } public WPos BottomRight { get; private set; }
public bool Dirty; public bool Dirty;
Action<Actor> onActorEntered; readonly Action<Actor> onActorEntered;
Action<Actor> onActorExited; readonly Action<Actor> onActorExited;
WPos position;
WDist range;
IEnumerable<Actor> currentActors = Enumerable.Empty<Actor>(); IEnumerable<Actor> currentActors = Enumerable.Empty<Actor>();
public ProximityTrigger(int id, WPos pos, WDist range, Action<Actor> onActorEntered, Action<Actor> onActorExited) public ProximityTrigger(WPos pos, WDist range, Action<Actor> onActorEntered, Action<Actor> onActorExited)
{ {
Id = id;
this.onActorEntered = onActorEntered; this.onActorEntered = onActorEntered;
this.onActorExited = onActorExited; this.onActorExited = onActorExited;
@@ -114,8 +108,8 @@ namespace OpenRA.Traits
public void Update(WPos newPos, WDist newRange) public void Update(WPos newPos, WDist newRange)
{ {
Position = newPos; position = newPos;
Range = newRange; range = newRange;
var offset = new WVec(newRange, newRange, WDist.Zero); var offset = new WVec(newRange, newRange, WDist.Zero);
TopLeft = newPos - offset; TopLeft = newPos - offset;
@@ -130,9 +124,9 @@ namespace OpenRA.Traits
return; return;
var oldActors = currentActors; var oldActors = currentActors;
var delta = new WVec(Range, Range, WDist.Zero); var delta = new WVec(range, range, WDist.Zero);
currentActors = am.ActorsInBox(Position - delta, Position + delta) currentActors = am.ActorsInBox(position - delta, position + delta)
.Where(a => (a.CenterPosition - Position).HorizontalLengthSquared < Range.LengthSquared) .Where(a => (a.CenterPosition - position).HorizontalLengthSquared < range.LengthSquared)
.ToList(); .ToList();
var entered = currentActors.Except(oldActors); var entered = currentActors.Except(oldActors);
@@ -376,7 +370,7 @@ namespace OpenRA.Traits
public int AddCellTrigger(CPos[] cells, Action<Actor> onEntry, Action<Actor> onExit) public int AddCellTrigger(CPos[] cells, Action<Actor> onEntry, Action<Actor> onExit)
{ {
var id = nextTriggerId++; var id = nextTriggerId++;
var t = new CellTrigger(id, cells, onEntry, onExit); var t = new CellTrigger(cells, onEntry, onExit);
cellTriggers.Add(id, t); cellTriggers.Add(id, t);
foreach (var c in cells) foreach (var c in cells)
@@ -411,7 +405,7 @@ namespace OpenRA.Traits
public int AddProximityTrigger(WPos pos, WDist range, Action<Actor> onEntry, Action<Actor> onExit) public int AddProximityTrigger(WPos pos, WDist range, Action<Actor> onEntry, Action<Actor> onExit)
{ {
var id = nextTriggerId++; var id = nextTriggerId++;
var t = new ProximityTrigger(id, pos, range, onEntry, onExit); var t = new ProximityTrigger(pos, range, onEntry, onExit);
proximityTriggers.Add(id, t); proximityTriggers.Add(id, t);
foreach (var bin in BinsInBox(t.TopLeft, t.BottomRight)) foreach (var bin in BinsInBox(t.TopLeft, t.BottomRight))

View File

@@ -20,8 +20,8 @@ namespace OpenRA.Mods.Common.Traits
public class BuildingInfluence public class BuildingInfluence
{ {
CellLayer<Actor> influence; readonly Map map;
Map map; readonly CellLayer<Actor> influence;
public BuildingInfluence(World world) public BuildingInfluence(World world)
{ {
@@ -54,10 +54,7 @@ namespace OpenRA.Mods.Common.Traits
public Actor GetBuildingAt(CPos cell) public Actor GetBuildingAt(CPos cell)
{ {
if (!influence.Contains(cell)) return influence.Contains(cell) ? influence[cell] : null;
return null;
return influence[cell];
} }
} }
} }

View File

@@ -27,7 +27,8 @@ namespace OpenRA.Mods.Common.Traits
class BridgeLayer : IWorldLoaded class BridgeLayer : IWorldLoaded
{ {
readonly BridgeLayerInfo info; readonly BridgeLayerInfo info;
Dictionary<ushort, Pair<string, int>> bridgeTypes = new Dictionary<ushort, Pair<string, int>>(); readonly Dictionary<ushort, Pair<string, int>> bridgeTypes = new Dictionary<ushort, Pair<string, int>>();
CellLayer<Bridge> bridges; CellLayer<Bridge> bridges;
public BridgeLayer(Actor self, BridgeLayerInfo info) public BridgeLayer(Actor self, BridgeLayerInfo info)
@@ -47,10 +48,9 @@ namespace OpenRA.Mods.Common.Traits
bridgeTypes.Add(template.First, Pair.New(bridge, template.Second)); bridgeTypes.Add(template.First, Pair.New(bridge, template.Second));
} }
// Loop through the map looking for templates to overlay // Take all templates to overlay from the map
foreach (var cell in w.Map.AllCells) foreach (var cell in w.Map.AllCells.Where(cell => bridgeTypes.ContainsKey(w.Map.MapTiles.Value[cell].Type)))
if (bridgeTypes.ContainsKey(w.Map.MapTiles.Value[cell].Type)) ConvertBridgeToActor(w, cell);
ConvertBridgeToActor(w, cell);
// Link adjacent (long)-bridges so that artwork is updated correctly // Link adjacent (long)-bridges so that artwork is updated correctly
foreach (var b in w.Actors.SelectMany(a => a.TraitsImplementing<Bridge>())) foreach (var b in w.Actors.SelectMany(a => a.TraitsImplementing<Bridge>()))

View File

@@ -9,8 +9,6 @@
#endregion #endregion
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.Linq; using System.Linq;
using OpenRA.Graphics; using OpenRA.Graphics;
using OpenRA.Support; using OpenRA.Support;
@@ -53,11 +51,10 @@ namespace OpenRA.Mods.Common.Traits
class MovementClassDomainIndex class MovementClassDomainIndex
{ {
Map map; readonly Map map;
readonly uint movementClass;
uint movementClass; readonly CellLayer<int> domains;
CellLayer<int> domains; readonly Dictionary<int, HashSet<int>> transientConnections;
Dictionary<int, HashSet<int>> transientConnections;
public MovementClassDomainIndex(World world, uint movementClass) public MovementClassDomainIndex(World world, uint movementClass)
{ {
@@ -168,8 +165,6 @@ namespace OpenRA.Mods.Common.Traits
void BuildDomains(World world) void BuildDomains(World world)
{ {
var map = world.Map;
var domain = 1; var domain = 1;
var visited = new CellLayer<bool>(map); var visited = new CellLayer<bool>(map);