Ejemplo n.º 1
0
        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))
     });
 }
Ejemplo n.º 3
0
        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))
     });
 }
Ejemplo n.º 5
0
 public void SetUnitVisibilities(SightFinder SightFinder)
 {
     foreach (var unit in _UnitViews)
     {
         SetUnitVisibility(unit.Key, SightFinder.GetUnitVisibility(unit.Key));
     }
 }
Ejemplo n.º 6
0
 public void AddUnitView(UnitView UnitView, SightFinder SightFinder)
 {
     _UnitViews.Add(UnitView.Unit, UnitView);
     if (SightFinder != null)
     {
         SetUnitVisibility(UnitView.Unit, SightFinder.GetUnitVisibility(UnitView.Unit));
     }
 }
Ejemplo n.º 7
0
 void FogOver()
 {
     _SightFinder = null;
     foreach (TileView t in MapView.TilesEnumerable)
     {
         t.SetMask(FOG_OF_WAR_MASKS[0]);
     }
     _StackLayer.RemoveAll();
 }
Ejemplo n.º 8
0
 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))]);
         }
     }
 }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
 void SetSightFinder(SightFinder SightFinder)
 {
     if (_SightFinder != SightFinder)
     {
         if (_SightFinder != null)
         {
             _SightFinder.OnSightUpdated -= _FogOfWarHandler.Invoke;
         }
         SightFinder.OnSightUpdated += _FogOfWarHandler.Invoke;
         SetFogOfWar(SightFinder);
         _SightFinder = SightFinder;
     }
 }
Ejemplo n.º 11
0
 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))
     });
 }
Ejemplo n.º 12
0
 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)))
     });
 }
Ejemplo n.º 13
0
        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));
 }