public List <Tuple <Unit, UnitVisibility> > ComputeDelta( SightFinder SightFinder, List <Tuple <Tile, TileSightLevel> > TileDeltas) { var deltas = new List <Tuple <Unit, UnitVisibility> >(); foreach (var tileDelta in TileDeltas) { foreach (var unit in tileDelta.Item1.Units.Where(i => i.Army != TrackingArmy)) { deltas.Add( new Tuple <Unit, UnitVisibility>( unit, MergeVisibility(unit, SightFinder.IsSighted(unit, tileDelta.Item2)))); } if (tileDelta.Item2 == TileSightLevel.HARD_SPOTTED || (tileDelta.Item2 != TileSightLevel.NONE && !tileDelta.Item1.Rules.Concealing && !tileDelta.Item1.Rules.LowProfileConcealing)) { foreach (var unit in _UnitVisibilities.Where( i => i.Value.LastSeen == tileDelta.Item1 && i.Key.Position != i.Value.LastSeen).ToList()) { if (tileDelta.Item2 == TileSightLevel.HARD_SPOTTED || !SightFinder.TileConceals(unit.Key, tileDelta.Item1)) { deltas.Add( new Tuple <Unit, UnitVisibility>(unit.Key, MergeVisibility(unit.Key, false, true))); } } } } return(deltas); }
public List <Tuple <Unit, UnitVisibility> > Update(SightFinder SightFinder, Unit Unit) { return(new List <Tuple <Unit, UnitVisibility> > { new Tuple <Unit, UnitVisibility>(Unit, new UnitVisibility(true, Unit.Position)) }); }
public List <Tuple <Unit, UnitVisibility> > ComputeDelta( SightFinder SightFinder, Unit Unit, MovementEventArgs Movement) { if (Unit.Army == TrackingArmy) { return(new List <Tuple <Unit, UnitVisibility> > { new Tuple <Unit, UnitVisibility>(Unit, new UnitVisibility(true, Unit.Position)) }); } var visible = SightFinder.IsSighted(Unit); Tile lastSeen = null; if (Movement != null && Movement.Path != null) { for (int i = Movement.Path.Count - 2; i >= 0; --i) { if (SightFinder.IsSighted(Unit, Movement.Path[i])) { lastSeen = Movement.Path[i + 1]; break; } } } return(new List <Tuple <Unit, UnitVisibility> > { new Tuple <Unit, UnitVisibility>(Unit, MergeVisibility(Unit, visible, OverrideLastSeen: lastSeen)) }); }
public List <Tuple <Unit, UnitVisibility> > Remove(SightFinder SightFinder, Unit Unit) { return(new List <Tuple <Unit, UnitVisibility> > { new Tuple <Unit, UnitVisibility>(Unit, new UnitVisibility(false, null)) }); }
public void SetUnitVisibilities(SightFinder SightFinder) { foreach (var unit in _UnitViews) { SetUnitVisibility(unit.Key, SightFinder.GetUnitVisibility(unit.Key)); } }
public void AddUnitView(UnitView UnitView, SightFinder SightFinder) { _UnitViews.Add(UnitView.Unit, UnitView); if (SightFinder != null) { SetUnitVisibility(UnitView.Unit, SightFinder.GetUnitVisibility(UnitView.Unit)); } }
void FogOver() { _SightFinder = null; foreach (TileView t in MapView.TilesEnumerable) { t.SetMask(FOG_OF_WAR_MASKS[0]); } _StackLayer.RemoveAll(); }
void SetFogOfWar(SightFinder SightFinder) { _StackLayer.SetUnitVisibilities(SightFinder); if (_FogOfWar) { foreach (TileView t in MapView.TilesEnumerable) { t.SetMask(FOG_OF_WAR_MASKS[FogIndex(t.Tile, SightFinder.GetTileSightLevel(t.Tile))]); } } }
public UnitVisibility GetVisibility(SightFinder SightFinder, Unit Unit) { if (Unit.Army == TrackingArmy) { return(new UnitVisibility(Unit.Position != null, Unit.Position)); } UnitVisibility visibility; _UnitVisibilities.TryGetValue(Unit, out visibility); return(visibility); }
void SetSightFinder(SightFinder SightFinder) { if (_SightFinder != SightFinder) { if (_SightFinder != null) { _SightFinder.OnSightUpdated -= _FogOfWarHandler.Invoke; } SightFinder.OnSightUpdated += _FogOfWarHandler.Invoke; SetFogOfWar(SightFinder); _SightFinder = SightFinder; } }
public List <Tuple <Unit, UnitVisibility> > Remove(SightFinder SightFinder, Unit Unit) { if (Unit.Army == TrackingArmy) { return(new List <Tuple <Unit, UnitVisibility> > { new Tuple <Unit, UnitVisibility>(Unit, new UnitVisibility(false, null)) }); } return(new List <Tuple <Unit, UnitVisibility> > { new Tuple <Unit, UnitVisibility>(Unit, MergeVisibility(Unit, false, true)) }); }
public List <Tuple <Unit, UnitVisibility> > Update(SightFinder SightFinder, Unit Unit) { if (Unit.Army == TrackingArmy) { return(new List <Tuple <Unit, UnitVisibility> > { new Tuple <Unit, UnitVisibility>(Unit, new UnitVisibility(Unit.Position != null, Unit.Position)) }); } return(new List <Tuple <Unit, UnitVisibility> > { new Tuple <Unit, UnitVisibility>(Unit, MergeVisibility(Unit, SightFinder.IsSighted(Unit))) }); }
public Army(Match Match, SightFinder SightFinder, ArmyConfiguration ArmyConfiguration, IdGenerator IdGenerator) { _Id = IdGenerator.GenerateId(); this.Match = Match; this.SightFinder = SightFinder; Configuration = ArmyConfiguration; Deployments = ArmyConfiguration.DeploymentConfigurations.Select( i => i.GenerateDeployment(this, IdGenerator)).ToList(); Match.Relay.OnUnitDestroy += UnitDestroyed; Match.Relay.OnUnitCapture += UnitCaptured; SightFinder.TrackingArmy = this; SightFinder.Hook(Match.Relay); _IdGenerator = IdGenerator; }
public List <Tuple <Unit, UnitVisibility> > ComputeDelta( SightFinder SightFinder, List <Tuple <Tile, TileSightLevel> > TileDeltas) { return(new List <Tuple <Unit, UnitVisibility> >()); }
public List <Tuple <Unit, UnitVisibility> > ComputeDelta( SightFinder SightFinder, Unit Unit, MovementEventArgs Movement) { return(new List <Tuple <Unit, UnitVisibility> >()); }
public UnitVisibility GetVisibility(SightFinder SightFinder, Unit Unit) { return(new UnitVisibility(true, Unit.Position)); }