/// <summary>
        /// Load level asset, build scene, setup dependencies.
        /// </summary>
        public void LoadLevel(int levelNumber)
        {
            // Read RawAsset by its URI
            using (var stream = Content.OpenAsStream($"LVL{levelNumber}", StreamFlags.None))
                level = LevelReader.Read(stream);

            var actionController = Entity.GetOrCreate <ActionController>();
            var builder          = new LevelBuilder(Environment, Robot, Items, SoundLibrary);

            var scene = builder.Build(level, out var robot);

            this.Entity.Scene.Children.Add(scene);

            actionController.Robot = robot.Get <RobotController>();

            var robotBrain = Entity.GetOrCreate <RobotBrain>();

            robotBrain.actions = level.ActionPattern;
            robotBrain.Reset();

            var inputController = Entity.GetOrCreate <InputController>();

            inputController.userActions  = level.UserActions;
            inputController.MistakeSound = SoundLibrary.MistakeSound;

            Camera.Entity.Get <RobotCameraFollower>().Robot = robot;

            TurnSystem.Reset();
            TurnSystem.Enable(Entity.Scene);
            TurnSystem.RemainingTime = level.ActionPattern.Length * TurnSystem.TurnLength * 5;

            UIScript.inputController = inputController;
            UIScript.robotBrain      = robotBrain;
        }