Пример #1
0
        private void BumpDroneAgainstCardBoard(SessionSevenTestEngine runner)
        {
            int Tries = 0;

            while (!Tree.Basement.RFIDAntennaCabinet.FellDown)
            {
                Assert.AreEqual(2, Tree.InventoryItems.RemoteControl.Get <BatteryCompartment>().GetBatteriesCount());
                runner.Interact(Tree.InventoryItems.Drone, Tree.Basement.RFIDAntennaCabinet, Verbs.Use);
                var Script = runner.Interact(Tree.InventoryItems.RemoteControl, Verbs.Use);

                runner.SelectDialogOption((int)Basement.DroneCommand.On, true);
                runner.SelectDialogOption((int)Basement.DroneCommand.Right, true);
                runner.SelectDialogOption((int)Basement.DroneCommand.Forward, true);
                runner.SelectDialogOption((int)Basement.DroneCommand.Forward, true);
                runner.SelectDialogOption((int)Basement.DroneCommand.Forward, true);
                runner.SelectDialogOption((int)Basement.DroneCommand.Right, true);
                runner.SelectDialogOption((int)Basement.DroneCommand.Forward, true);
                runner.SelectDialogOption((int)Basement.DroneCommand.Forward, true);

                while (!Script.Done)
                {
                    runner.SelectDialogOption((int)Basement.DroneCommand.Forward, true);
                }
                Tries++;
            }

            Console.WriteLine("Drone fly tries: " + Tries);
        }
Пример #2
0
        public void SolveGameWithLoadingSaveGames()
        {
            var ScoreTarget = ScoreType.Freedom;

            SessionSevenTestEngine.Execute((runner) =>
            {
                SolveSessionTwo(runner, ScoreTarget);
                var State = runner.SaveState("[Playthrough] After Session Two");
                runner.LoadState(State);
                SolveSessionThree(runner, ScoreTarget);
                State = runner.SaveState("[Playthrough] After Session Three");
                runner.LoadState(State);
                SolveSessionFour(runner, ScoreTarget);
                State = runner.SaveState("[Playthrough] After Session Four");
                runner.LoadState(State);
                SolveSessionFive(runner, ScoreTarget);
                State = runner.SaveState("[Playthrough] After Session Five");
                runner.LoadState(State);
                SolveSessionSix(runner, ScoreTarget);
                State = runner.SaveState("[Playthrough] After Session Six");
                runner.LoadState(State);
                SolveSessionSeven(runner, ScoreTarget);

                AssertAllSessionsAreFinished();
            });
        }
Пример #3
0
        private void SolveSessionSix(SessionSevenTestEngine runner, ScoreType targetScore)
        {
            Assert.IsTrue(Tree.Cutscenes.Director.FinishedSession(Cutscenes.Sessions.Two));
            Assert.IsTrue(Tree.Cutscenes.Director.FinishedSession(Cutscenes.Sessions.Three));
            Assert.IsTrue(Tree.Cutscenes.Director.FinishedSession(Cutscenes.Sessions.Four));
            Assert.IsTrue(Tree.Cutscenes.Director.FinishedSession(Cutscenes.Sessions.Five));

            runner.Interact(Tree.Basement.Hazelnuts, Verbs.Pick);
            runner.Interact(Tree.Basement.ShelfBlanketFlashlight, Verbs.Pick);
            runner.Interact(Tree.InventoryItems.Hazelnuts, Tree.Basement.MouseHole, Verbs.Give);

            runner.Interact(Tree.InventoryItems.Baton, Verbs.Pull);
            runner.Interact(Tree.InventoryItems.GuitarStrings, Tree.InventoryItems.Baton, Verbs.Use);

            runner.Interact(Tree.InventoryItems.BatteryA, Tree.InventoryItems.Flashlight, Verbs.Use);
            runner.Interact(Tree.InventoryItems.BatteryB, Tree.InventoryItems.Flashlight, Verbs.Use);

            // Place nuts
            PlaceNutInWatchArea(runner);
            PlaceNutsLeftRight(runner);
            PlaceNutInWatchArea(runner);

            runner.Interact(Tree.InventoryItems.Flashlight, Tree.Basement.MouseHole, Verbs.Use);
            runner.Interact(Tree.InventoryItems.BatonWithString, Tree.Basement.MouseHole, Verbs.Use);
            runner.Interact(Tree.InventoryItems.Paperclips, Tree.Basement.CabinetLock, Verbs.Use);

            runner.Interact(Tree.Basement.CabinetLeftDoor, Verbs.Open);

            runner.AnswerDialog(targetScore);
        }
Пример #4
0
        public void AllResourceCharactersCanBeResolvedBySpriteFont()
        {
            var SupportedLanguages = new[] { "en-US", "de-DE", "es-ES", "pl" };

            foreach (var Language in SupportedLanguages)
            {
                var GameSettings = new GameSettings()
                {
                    Culture = Language
                };

                using (var GraphicsDevice = Mock.CreateGraphicsDevice())
                    using (var Runner = new SessionSevenTestEngine(new TestGame(), Mock.Wrap(GraphicsDevice), Mock.Input, GameSettings))
                    {
                        Runner.StartGame();
                        Runner.AdvanceToInteractive();

                        var Text        = Runner.Game.World.GetScene(TestGame.SCENE_ID).GetObject(TestGame.ENTITY_OUTLINE_ID).Get <Text>();
                        var OutlineText = Runner.Game.World.GetScene(TestGame.SCENE_ID).GetObject(TestGame.ENTITY_OUTLINE_ID).Get <Text>();

                        foreach (var ResourceString in GetResourceStrings())
                        {
                            // this throws if the sprite font cannot resolve a character
                            Text.Set(ResourceString, TextDuration.Persistent, Vector2.Zero);
                            OutlineText.Set(ResourceString, TextDuration.Persistent, Vector2.Zero);
                        }
                    }
            }
        }
Пример #5
0
        private void PlaceNut(SessionSevenTestEngine runner, Vector2 absolutePosition)
        {
            runner.Interact(Tree.InventoryItems.Hazelnuts, Verbs.Use);

            var ClickPos = Tree.Basement.Scene.Get <Camera>().Transform(absolutePosition);

            runner.MouseClick(ClickPos);
            runner.AdvanceToInteractive();
        }
Пример #6
0
        private void SolveSessionTwo(SessionSevenTestEngine runner, ScoreType targetScore)
        {
            runner.Interact(Tree.Basement.MedicalCabinet, Verbs.Open);
            runner.Interact(Tree.InventoryItems.Scissors, Tree.InventoryItems.Bandages, Verbs.Use);
            runner.Interact(Tree.InventoryItems.BandageStrip, Verbs.Use);
            runner.Interact(Tree.Basement.WindowLeft, Verbs.Open);

            runner.AnswerDialog(targetScore);
        }
Пример #7
0
        /// <summary>
        /// Creates a new SessionSevenTestEngine and executes an action with it.
        /// </summary>
        /// <param name="action"></param>
        public static void Execute(Action <SessionSevenTestEngine> action)
        {
            using (var GraphicsDevice = Mock.CreateGraphicsDevice())
                using (var Runner = new SessionSevenTestEngine(new Game(), Mock.Wrap(GraphicsDevice), Mock.Input))
                {
                    Runner.StartGame();
                    Runner.AdvanceToInteractive();

                    action(Runner);
                }
        }
Пример #8
0
        public void FinishSessionTwo()
        {
            var ScoreTarget = ScoreType.Freedom;

            SessionSevenTestEngine.Execute((runner) =>
            {
                SolveSessionTwo(runner, ScoreTarget);

                Assert.IsTrue(Tree.Cutscenes.Director.FinishedSession(Cutscenes.Sessions.Two));
            });
        }
Пример #9
0
        private void SolveSessionFour(SessionSevenTestEngine runner, ScoreType scoreType)
        {
            Assert.IsTrue(Tree.Cutscenes.Director.FinishedSession(Cutscenes.Sessions.Two));

            runner.Interact(Tree.Basement.GuitarCase, Verbs.Open);
            runner.Interact(Tree.Basement.GuitarStrings, Verbs.Pick);
            runner.Interact(Tree.Basement.Shelf, Verbs.Look);
            runner.Interact(Tree.Basement.ShelfBox, Verbs.Open);
            runner.Interact(Tree.Basement.ShelfBox, Verbs.Open);

            runner.AnswerDialog(scoreType);
        }
Пример #10
0
        private void SolveSessionSeven(SessionSevenTestEngine runner, ScoreType targetScore)
        {
            Assert.IsTrue(Tree.Cutscenes.Director.FinishedSession(Cutscenes.Sessions.Six));

            runner.Interact(Tree.Basement.DrillingMachineCable, Tree.Basement.SocketsLeft, Verbs.Use);
            runner.Interact(Tree.Basement.CabinetSawKit, Verbs.Pick);
            runner.Interact(Tree.InventoryItems.SawKit, Tree.Basement.DrillingMachine, Verbs.Use);
            runner.Interact(Tree.Basement.DrillingMachine, Tree.Basement.Door, Verbs.Use);
            runner.Interact(Tree.Basement.Door, Verbs.Open);
            runner.SaveState("[Playthrough] BeforeSessionSeven");
            runner.Interact(Tree.Basement.Door, Verbs.Walk);
        }
Пример #11
0
        private void SolveSessionFive(SessionSevenTestEngine runner, ScoreType targetScore)
        {
            Assert.IsTrue(Tree.Cutscenes.Director.FinishedSession(Cutscenes.Sessions.Two));
            Assert.IsTrue(Tree.Cutscenes.Director.FinishedSession(Cutscenes.Sessions.Three));
            Assert.IsTrue(Tree.Cutscenes.Director.FinishedSession(Cutscenes.Sessions.Four));

            runner.Interact(Tree.Basement.ToolBar, Verbs.Look);
            runner.Interact(Tree.Basement.Hammer, Verbs.Pick);
            runner.Interact(Tree.Basement.Screwdriver, Verbs.Pick);

            // get RFID antenna on shelf
            runner.Interact(Tree.Basement.Shelf, Verbs.Look);
            runner.Interact(Tree.Basement.RFIDAntennaShelf, Verbs.Pick);
            runner.Interact(Tree.InventoryItems.RFIDAntennaBoxShelf, Verbs.Open);

            // get drone
            runner.Interact(Tree.Basement.CabinetRightDoor, Verbs.Open);
            runner.Interact(Tree.Basement.DronePackage, Verbs.Pick);
            runner.Interact(Tree.InventoryItems.DronePackage, Verbs.Open);

            // get second battery
            runner.Interact(Tree.Basement.ShelfBox, Verbs.Open);

            Assert.IsTrue(Game.Ego.Inventory.HasItem <InventoryItems.BatteryA>());
            Assert.IsTrue(Game.Ego.Inventory.HasItem <InventoryItems.BatteryB>());

            runner.Interact(Tree.InventoryItems.BatteryA, Tree.InventoryItems.RemoteControl, Verbs.Use);
            runner.Interact(Tree.InventoryItems.BatteryB, Tree.InventoryItems.RemoteControl, Verbs.Use);

            // get RFID antenna on cabinet
            BumpDroneAgainstCardBoard(runner);

            runner.Interact(Tree.InventoryItems.RemoteControl, Verbs.Open);
            runner.Interact(Tree.InventoryItems.RemoteControl, Verbs.Open);

            Assert.IsTrue(Game.Ego.Inventory.HasItem <InventoryItems.BatteryA>());
            Assert.IsTrue(Game.Ego.Inventory.HasItem <InventoryItems.BatteryB>());

            runner.Interact(Tree.Basement.RFIDAntennaCabinet, Verbs.Pick);
            runner.Interact(Tree.InventoryItems.RFIDAntennaBoxCabinet, Verbs.Open);
            runner.Interact(Tree.Basement.CabinetRightDoor, Verbs.Close);
            runner.Interact(Tree.InventoryItems.RFIDAntennaCabinet, Verbs.Use);
            runner.SaveState("[Playthrough] PlacingAntenna");

            SetupRFIDAntenna(runner);

            runner.Interact(Tree.InventoryItems.Screwdriver, Tree.Basement.WoodenPanel, Verbs.Use);
            runner.Interact(Tree.InventoryItems.Hammer, Tree.Basement.WoodenPanel, Verbs.Use);
            runner.Interact(Tree.Basement.WoodenBox, Verbs.Pick);
            runner.Interact(Tree.InventoryItems.WoodenBox, Verbs.Open);

            runner.AnswerDialog(targetScore);
        }
Пример #12
0
        public void BatteryIssue()
        {
            SessionSevenTestEngine.Execute((runner) =>
            {
                var OldBatteryA = Game.Ego.Inventory.AddItem <InventoryItems.BatteryA>();
                Assert.AreEqual(Game.Ego.Inventory.GetItemById(OldBatteryA.ID), OldBatteryA);
                Assert.AreEqual(Tree.InventoryItems.BatteryA, OldBatteryA);
                Game.Ego.Inventory.RemoveItem <InventoryItems.BatteryA>();

                var NewBatteryA = Game.Ego.Inventory.AddItem <InventoryItems.BatteryA>();
                Assert.AreEqual(Game.Ego.Inventory.GetItemById(NewBatteryA.ID), NewBatteryA);
                Assert.AreEqual(Tree.InventoryItems.BatteryA, NewBatteryA);
            });
        }
Пример #13
0
        public void SolveGame()
        {
            var ScoreTarget = ScoreType.Freedom;

            SessionSevenTestEngine.Execute((runner) =>
            {
                SolveSessionTwo(runner, ScoreTarget);
                SolveSessionThree(runner, ScoreTarget);
                SolveSessionFour(runner, ScoreTarget);
                SolveSessionFive(runner, ScoreTarget);
                SolveSessionSix(runner, ScoreTarget);
                SolveSessionSeven(runner, ScoreTarget);

                AssertAllSessionsAreFinished();
            });
        }
Пример #14
0
        private void SolveSessionThree(SessionSevenTestEngine runner, ScoreType targetScore)
        {
            Assert.IsTrue(Tree.Cutscenes.Director.FinishedSession(Cutscenes.Sessions.Two));

            runner.Interact(Tree.Basement.LandonPortrait, Verbs.Pick);
            runner.Interact(Tree.InventoryItems.Portrait, Verbs.Look);
            runner.Interact(Tree.InventoryItems.DrawerKey, Tree.Basement.DrawerRight, Verbs.Use);
            runner.Interact(Tree.Basement.DrawerRight, Verbs.Open, false);
            runner.AdvanceToNonInteractive();
            runner.AdvanceToInteractive();
            runner.MouseClick();
            runner.AdvanceToInteractive();
            runner.Interact(Tree.Basement.Shelf, Verbs.Look);
            runner.Interact(Tree.Basement.ShelfBlanketFlashlight, Verbs.Pick);

            runner.AnswerDialog(targetScore);
        }
Пример #15
0
        public void SolveGameWithSaveGames(ScoreType targetscore)
        {
            SessionSevenTestEngine.Execute((runner) =>
            {
                SolveSessionTwo(runner, targetscore);
                runner.SaveState("[Playthrough] After Session Two");
                SolveSessionThree(runner, targetscore);
                runner.SaveState("[Playthrough] After Session Three");
                SolveSessionFour(runner, targetscore);
                runner.SaveState("[Playthrough] After Session Four");
                SolveSessionFive(runner, targetscore);
                runner.SaveState("[Playthrough] After Session Five");
                SolveSessionSix(runner, targetscore);
                runner.SaveState("[Playthrough] After Session Six");
                SolveSessionSeven(runner, targetscore);

                AssertAllSessionsAreFinished();
            });
        }
Пример #16
0
        private void SetupRFIDAntenna(SessionSevenTestEngine runner)
        {
            var ClickPos = Tree.Basement.Scene.Get <Camera>().Transform(new Vector2(422, 334));

            runner.MouseClick(ClickPos);
            runner.AdvanceToInteractive();

            ClickPos = Tree.Basement.Scene.Get <Camera>().Transform(Basement.WoodenPanel.Collider.Center);

            runner.MouseClick(ClickPos);
            runner.AdvanceToInteractive();

            ClickPos = Tree.Basement.Scene.Get <Camera>().Transform(new Vector2(620, 333));

            runner.MouseClick(ClickPos);
            runner.AdvanceToInteractive();

            ClickPos = Tree.Basement.Scene.Get <Camera>().Transform(Basement.WoodenPanel.Collider.Center);

            runner.MouseClick(ClickPos);
            runner.AdvanceToInteractive();
        }
Пример #17
0
        private void PlaceNutInWatchArea(SessionSevenTestEngine runner)
        {
            var Target = Tree.Basement.MouseHole.WatchArea.GetClosestPoint(new Vector2(788, 279));

            PlaceNut(runner, Target);
        }
Пример #18
0
 private void PlaceNutsLeftRight(SessionSevenTestEngine runner)
 {
     PlaceNut(runner, new Vector2(0, 250));
     PlaceNut(runner, new Vector2(999, 250));
 }