Ejemplo n.º 1
0
        private static Exception SceneHasDescription(Scene scene)
        {
            var sceneDescription = SceneParseHelper.GetSceneDescription(scene.Text);

            if (string.IsNullOrWhiteSpace(sceneDescription))
            {
                return(SceneValidationError(Strings.Validation_ErrorNoSceneDescription, scene));
            }

            return(null);
        }
        private static void PlayScene(GameEnvironment env)
        {
            UserInterfaceHelper.ClearWindow();

            UserInterfaceHelper.OutputLine(env.CurrentScene.Description);
            UserInterfaceHelper.OutputLine();

            var actions = SceneParseHelper.GetSceneActions(env.CurrentScene).ToList();

            PrepareActions(env, actions);
        }
Ejemplo n.º 3
0
        private static List <Exception> GetExceptions(IEnumerable <StamFile> files)
        {
            var exceptions = new List <Exception>();
            var scenes     = FileParseHelper.GetScenes(files).ToList();

            // Adventure-wide validation methods
            exceptions.Add(NoDuplicateScenesExist(scenes));
            exceptions.Add(OneEntrySceneExists(scenes));

            // Scene-specific validation methods
            foreach (var scene in scenes)
            {
                exceptions.Add(SceneHasDescription(scene));

                // Scene-wide action validation methods
                var actions = SceneParseHelper.GetSceneActions(scene).ToList();

                if (actions.Count <= 0)
                {
                    continue;
                }

                exceptions.Add(AllNextScenesExist(scenes, actions));
                exceptions.Add(AtLeastOneActionHasNextScene(scene, actions));
                exceptions.Add(DefaultActionIsValid(scene, actions));
                exceptions.Add(NoDuplicateActionAbbreviations(scene, actions));
                exceptions.Add(NoDuplicateActionDescriptions(scene, actions));
                exceptions.Add(SceneIsNotEndlessLoop(scene, actions));

                // Action-specific validation methods
                foreach (var action in actions)
                {
                    exceptions.Add(ActionHasDescription(scene, action));
                    exceptions.Add(ActionHasResultOrNextScene(scene, action));
                }
            }

            return(exceptions.Where(ex => ex != null).ToList());
        }