Beispiel #1
0
        public void AddEvent_Missing_Title_Should_Return_False()
        {
            var scheduler = new EventScheduler();
            var result    = scheduler.AddEvent("", DateTime.Now, DateTime.Now.AddHours(10));

            Assert.IsFalse(result);
            Assert.IsFalse(scheduler.Events.Any());
        }
Beispiel #2
0
        public void AddEvent_StartDate_GreaterThan_End_Should_Return_False()
        {
            var scheduler = new EventScheduler();
            var result    = scheduler.AddEvent("Test Title", DateTime.Now.AddHours(10), DateTime.Now);

            Assert.IsFalse(result);
            Assert.IsFalse(scheduler.Events.Any());
        }
Beispiel #3
0
        public void AddEvent_StartDate_LessThan_End_Should_Return_True()
        {
            var scheduler = new EventScheduler();
            var result    = scheduler.AddEvent("Test Title", DateTime.Now, DateTime.Now.AddHours(10));

            Assert.IsTrue(result);
            Assert.IsTrue(scheduler.Events.Count == 1);
        }
Beispiel #4
0
        public void FindConflicts_OneEvent_Should_Return_EmptyList()
        {
            var scheduler = new EventScheduler();

            scheduler.AddEvent("Test Title", DateTime.Now, DateTime.Now.AddHours(10));
            var conflicts = scheduler.FindConflicts();

            Assert.IsFalse(conflicts.Any());
        }
Beispiel #5
0
        public void FindConflicts_MultipleEvents_NoConflicts_Should_Return_EmptyList()
        {
            var scheduler = new EventScheduler();

            scheduler.AddEvent("Testing1", DateTime.Now.AddHours(0), DateTime.Now.AddHours(10));
            scheduler.AddEvent("Testing2", DateTime.Now.AddHours(10), DateTime.Now.AddHours(20));
            scheduler.AddEvent("Testing3", DateTime.Now.AddHours(20), DateTime.Now.AddHours(29));
            scheduler.AddEvent("Testing4", DateTime.Now.AddHours(30), DateTime.Now.AddHours(40));
            scheduler.AddEvent("Testing5", DateTime.Now.AddHours(40), DateTime.Now.AddHours(50));
            scheduler.AddEvent("Testing6", DateTime.Now.AddHours(50), DateTime.Now.AddHours(60));
            scheduler.AddEvent("Testing7", DateTime.Now.AddHours(60), DateTime.Now.AddHours(70));
            scheduler.AddEvent("Testing8", DateTime.Now.AddHours(70), DateTime.Now.AddHours(80));
            scheduler.AddEvent("Testing9", DateTime.Now.AddHours(80), DateTime.Now.AddHours(90));
            scheduler.AddEvent("Testing10", DateTime.Now.AddHours(90), DateTime.Now.AddHours(90));

            var conflicts = scheduler.FindConflicts();

            Assert.IsFalse(conflicts.Any());
        }
Beispiel #6
0
        public Game() : base()
        {
            _mapLayer = new LayerInfo("Map", 1,
                                      EngineConsts.SIDEBAR_WIDTH + 2, 1,
                                      EngineConsts.MAPVIEW_WIDTH, EngineConsts.MAPVIEW_HEIGHT);

            _infoLayer = new LayerInfo("Info", 1,
                                       1, 1, EngineConsts.SIDEBAR_WIDTH, EngineConsts.SCREEN_HEIGHT);

            _radarLayer = new LayerInfo("Radar", 1,
                                        EngineConsts.SIDEBAR_WIDTH + EngineConsts.MAPVIEW_WIDTH + 3, 1,
                                        EngineConsts.SIDEBAR_R_WIDTH,
                                        EngineConsts.SCREEN_HEIGHT - EngineConsts.SIDEBAR_R_WIDTH - 1);

            _objectiveLayer = new LayerInfo("Objective", 1,
                                            EngineConsts.SIDEBAR_WIDTH + EngineConsts.MAPVIEW_WIDTH + 3,
                                            EngineConsts.SCREEN_HEIGHT - EngineConsts.SIDEBAR_R_WIDTH + 1,
                                            EngineConsts.SIDEBAR_R_WIDTH, EngineConsts.SIDEBAR_R_WIDTH);

            _messageLayer = new LayerInfo("Message", 1,
                                          EngineConsts.SIDEBAR_WIDTH + 2, EngineConsts.MAPVIEW_HEIGHT + 2,
                                          EngineConsts.MAPVIEW_WIDTH, EngineConsts.MESSAGE_HEIGHT);
            _mainLayer = new LayerInfo("Main", 11, 0, 0,
                                       EngineConsts.SCREEN_WIDTH + 2, EngineConsts.SCREEN_HEIGHT + 2);

            StateHandler = new StateHandler(MenuState.Instance, new Dictionary <Type, LayerInfo>
            {
                [typeof(MissionEndState)]        = _mapLayer,
                [typeof(NormalState)]            = _mapLayer,
                [typeof(TargettingState)]        = _mapLayer,
                [typeof(MenuState)]              = _mainLayer,
                [typeof(IntermissionFrameState)] = _mainLayer,
            });

            AnimationHandler = new AnimationHandler();
            MessagePanel     = new MessagePanel(EngineConsts.MESSAGE_HISTORY_COUNT);
            EventScheduler   = new EventScheduler(typeof(Player));

            // attach event handlers
            EventScheduler.Subscribe <MoveCommand>(c => ((MoveCommand)c).Execute());
            EventScheduler.Subscribe <TurnCommand>(c => ((TurnCommand)c).Execute());
            EventScheduler.Subscribe <AttackCommand>(c => ((AttackCommand)c).Execute());
            EventScheduler.Subscribe <AttackCommand>(c =>
            {
                var ac = (AttackCommand)c;
                ac.Animation.MatchSome(anim => AnimationHandler.Add(ac.Source.Id, anim));
            });
            EventScheduler.Subscribe <DelayAttackCommand>(c =>
            {
                var dc = (DelayAttackCommand)c;
                EventScheduler.AddEvent(new DelayAttack(dc.Delay, dc.Attack), dc.Delay);
            });

            EventScheduler.Subscribe <MechDeathEvent>(c =>
            {
                var mde   = (MechDeathEvent)c;
                Mech mech = mde.Source;
                MapHandler.RemoveActor(mech);

                if (MapHandler.Field[mech.Pos].IsVisible)
                {
                    MessagePanel.Add($"[color=info]Info[/color]: {mech.Name} destroyed");
                    MapHandler.Refresh();
                }
            });

            Reset();
            ConfigureTerminal();
        }
Beispiel #7
0
        public void FindConflicts_MultipleEvents_WithConflicts_Should_Return_ConflictList()
        {
            var scheduler = new EventScheduler();

            scheduler.AddEvent("Testing1", DateTime.Now.AddHours(0), DateTime.Now.AddHours(5));
            scheduler.AddEvent("Testing2", DateTime.Now.AddHours(0), DateTime.Now.AddHours(10));
            scheduler.AddEvent("Testing3", DateTime.Now.AddHours(2), DateTime.Now.AddHours(10));
            scheduler.AddEvent("Testing4", DateTime.Now.AddHours(30), DateTime.Now.AddHours(50));
            scheduler.AddEvent("Testing5", DateTime.Now.AddHours(50), DateTime.Now.AddHours(70));
            scheduler.AddEvent("Testing6", DateTime.Now.AddHours(70), DateTime.Now.AddHours(90));
            scheduler.AddEvent("Testing7", DateTime.Now.AddHours(90), DateTime.Now.AddHours(90));
            scheduler.AddEvent("Testing8", DateTime.Now.AddHours(10), DateTime.Now.AddHours(20));
            scheduler.AddEvent("Testing9", DateTime.Now.AddHours(91), DateTime.Now.AddHours(91));
            scheduler.AddEvent("Testing10", DateTime.Now.AddHours(100), DateTime.Now.AddHours(105));
            scheduler.AddEvent("Testing11", DateTime.Now.AddHours(100), DateTime.Now.AddHours(104));

            var actualConflicts = scheduler.FindConflicts();

            var expectedConflicts = new List <string> {
                "Testing1", "Testing2", "Testing3", "Testing10", "Testing11"
            };

            Assert.IsTrue(actualConflicts.Select(i => i.Title).SequenceEqual(expectedConflicts));
        }