Exemplo n.º 1
0
        public TArea Advance(IDecisionManager decisionManager, Team advancingTeam)
        {
            TArea newArea;

            if (typeof(TArea) == typeof(Region))
            {
                Region currentRegion = CurrentArea as Region;

                RegionCompletedEventArgs e = new RegionCompletedEventArgs(currentRegion);
                currentRegion?.OnRegionCompleted(e);
            }
            if (typeof(TArea) == typeof(SubRegion))
            {
                SubRegion currentSubRegion = CurrentArea as SubRegion;

                SubRegionCompletedEventArgs e = new SubRegionCompletedEventArgs(currentSubRegion);
                currentSubRegion?.OnSubRegionCompleted(e);
            }

            MapPath <TArea, TAreaId> currentPath = MapPaths.First(p => p.From.Equals(CurrentArea));

            List <TArea> availableAreas = currentPath.To.GetAvaialableAreas().ToList();

            if (availableAreas.Count == 0)
            {
                newArea = null;
            }
            else if (availableAreas.Count == 1)
            {
                newArea = availableAreas[0];
            }
            else
            {
                newArea = decisionManager.PickNextArea(currentPath.To, advancingTeam);
            }

            CurrentArea = newArea;
            return(newArea);
        }
Exemplo n.º 2
0
        public void SubRegionalMap_CorrectlyFiresOnRegionCompletedEvent()
        {
            SubRegion fakeSubRegion = new SubRegion(WorldSubRegion.Fields, 0, new ChanceEvent <int> [0],
                                                    new FighterType[0], new BattlefieldConfiguration(new TeamConfiguration(new EnemyConfiguration(FighterType.Egg, 1, MagicType.Fire))));

            _logger.Subscribe(fakeSubRegion, EventType.SubRegionCompleted);

            AreaMap <SubRegion, WorldSubRegion> fakeRegionalMap =
                new AreaMap <SubRegion, WorldSubRegion>(fakeSubRegion, new MapPath <SubRegion, WorldSubRegion>(fakeSubRegion));

            fakeRegionalMap.Advance(new MockDecisionManager(new GodRelationshipManager()), new TestTeam());

            List <EventLog> logs = _logger.Logs;

            Assert.AreEqual(1, logs.Count);

            EventLog log = logs[0];

            Assert.AreEqual(EventType.SubRegionCompleted, log.Type);

            SubRegionCompletedEventArgs e = log.E as SubRegionCompletedEventArgs;

            Assert.AreEqual(fakeSubRegion, e?.CompletedSubRegion);
        }
Exemplo n.º 3
0
 private void _logSubRegionCompleted(object sender, SubRegionCompletedEventArgs e)
 {
     Logs.Add(new EventLog(EventType.SubRegionCompleted, sender, e));
 }
Exemplo n.º 4
0
 public void OnSubRegionCompleted(SubRegionCompletedEventArgs e)
 {
     SubRegionCompleted?.Invoke(this, e);
 }