/**
  * Constructor which creates an adventure data with default title and
  * description, traditional GUI and one empty chapter (with a scene).
  *
  * @param adventureTitle
  *            Default title for the adventure
  * @param chapterTitle
  *            Default title for the chapter
  * @param sceneId
  *            Default identifier for the scene
  */
 public AdventureDataControl(string adventureTitle, string chapterTitle, string sceneId, int playerMode)
 {
     adventureData = new AdventureData();
     adventureData.setTitle(adventureTitle);
     adventureData.setDescription("");
     adventureData.setGUIType(DescriptorData.GUI_CONTEXTUAL);
     adventureData.setPlayerMode(playerMode);
     adventureData.addChapter(new Chapter(chapterTitle, sceneId));
 }
Пример #2
0
        /**
         * Constructor which creates an adventure data with default title and
         * description, traditional GUI and one empty chapter (with a scene).
         *
         * @param adventureTitle
         *            Default title for the adventure
         * @param chapterTitle
         *            Default title for the chapter
         * @param sceneId
         *            Default identifier for the scene
         */
        public AdventureDataControl(string adventureTitle, string chapterTitle, string sceneId, int playerMode)
        {
            adventureData = new AdventureData();
            adventureData.setTitle(adventureTitle);
            adventureData.setDescription("");
            adventureData.setGUIType(DescriptorData.GUI_CONTEXTUAL);
            adventureData.setPlayerMode(playerMode);
            var chapter = new Chapter(chapterTitle, sceneId);

            chapter.getObjects <Scene>().Add(new Scene(sceneId));
            adventureData.addChapter(chapter);
        }
    public void Parse(string path)
    {
        XmlDocument xmld = new XmlDocument();

        string xml = "";

        switch (ResourceManager.Instance.getLoadingType())
        {
        case ResourceManager.LoadingType.RESOURCES_LOAD:
            directory = path.Split('/') [0] + "/";
            if (path.Contains(".xml"))
            {
                path = path.Replace(".xml", "");
            }
            TextAsset ta = Resources.Load(path) as TextAsset;
            if (ta == null)
            {
                Debug.Log("Can't load Descriptor file: " + path);
                return;
            }
            else
            {
                xml = ta.text;
            }
            break;

        case ResourceManager.LoadingType.SYSTEM_IO:
            xml = System.IO.File.ReadAllText(path);

            directory = "";
            string[] parts = path.Split('/');

            for (int i = 0; i < parts.Length - 1; i++)
            {
                directory += parts[i] + "/";
            }

            break;
        }

        xmld.LoadXml(xml);

        XmlElement element = xmld.DocumentElement
        , descriptor       = (XmlElement)element.SelectSingleNode("/game-descriptor")
        , title            = (XmlElement)descriptor.SelectSingleNode("title")
        , description      = (XmlElement)descriptor.SelectSingleNode("description")
        , configuration    = (XmlElement)descriptor.SelectSingleNode("configuration")
        , contents         = (XmlElement)descriptor.SelectSingleNode("contents");



        if (descriptor != null)
        {
            tmpString = descriptor.GetAttribute("versionNumber");

            if (!string.IsNullOrEmpty(tmpString))
            {
                adventureData.setVersionNumber(tmpString);
            }
        }

        if (title != null)
        {
            tmpString = title.InnerText;

            if (!string.IsNullOrEmpty(tmpString))
            {
                adventureData.setTitle(tmpString);
            }
        }

        if (description != null)
        {
            tmpString = description.InnerText;

            if (!string.IsNullOrEmpty(tmpString))
            {
                adventureData.setDescription(tmpString);
            }
        }

        if (configuration != null)
        {
            tmpString = configuration.GetAttribute("keepShowing");
            if (!string.IsNullOrEmpty(tmpString))
            {
                adventureData.setKeepShowing(tmpString.Equals("yes"));
            }

            tmpString = configuration.GetAttribute("keyboard-navigation");
            if (!string.IsNullOrEmpty(tmpString))
            {
                adventureData.setKeyboardNavigation(tmpString.Equals("enabled"));
            }

            tmpString = configuration.GetAttribute("defaultClickAction");
            if (!string.IsNullOrEmpty(tmpString))
            {
                if (tmpString.Equals("showDetails"))
                {
                    adventureData.setDeafultClickAction(DescriptorData.DefaultClickAction.SHOW_DETAILS);
                }
                else if (tmpString.Equals("showDetails"))
                {
                    adventureData.setDeafultClickAction(DescriptorData.DefaultClickAction.SHOW_ACTIONS);
                }
            }

            tmpString = configuration.GetAttribute("perspective");
            if (!string.IsNullOrEmpty(tmpString))
            {
                if (tmpString.Equals("regular"))
                {
                    adventureData.setPerspective(DescriptorData.Perspective.REGULAR);
                }
                else if (tmpString.Equals("isometric"))
                {
                    adventureData.setPerspective(DescriptorData.Perspective.ISOMETRIC);
                }
            }

            tmpString = configuration.GetAttribute("dragBehaviour");
            if (!string.IsNullOrEmpty(tmpString))
            {
                if (tmpString.Equals("considerNonTargets"))
                {
                    adventureData.setDragBehaviour(DescriptorData.DragBehaviour.CONSIDER_NON_TARGETS);
                }
                else if (tmpString.Equals("ignoreNonTargets"))
                {
                    adventureData.setDragBehaviour(DescriptorData.DragBehaviour.IGNORE_NON_TARGETS);
                }
            }


            XmlElement gui = (XmlElement)configuration.SelectSingleNode("gui");
            if (gui != null)
            {
                tmpString = gui.GetAttribute("type");
                if (!string.IsNullOrEmpty(tmpString))
                {
                    if (tmpString.Equals("traditional"))
                    {
                        adventureData.setGUIType(DescriptorData.GUI_TRADITIONAL);
                    }
                    else if (tmpString.Equals("contextual"))
                    {
                        adventureData.setGUIType(DescriptorData.GUI_CONTEXTUAL);
                    }
                }

                tmpString = gui.GetAttribute("customized");
                if (!string.IsNullOrEmpty(tmpString))
                {
                    adventureData.setGUI(adventureData.getGUIType(), tmpString.Equals("yes"));
                }

                tmpString = gui.GetAttribute("inventoryPosition");
                if (!string.IsNullOrEmpty(tmpString))
                {
                    switch (tmpString)
                    {
                    case "none":            adventureData.setInventoryPosition(DescriptorData.INVENTORY_NONE); break;

                    case "top_bottom":      adventureData.setInventoryPosition(DescriptorData.INVENTORY_TOP_BOTTOM); break;

                    case "top":             adventureData.setInventoryPosition(DescriptorData.INVENTORY_TOP); break;

                    case "bottom":          adventureData.setInventoryPosition(DescriptorData.INVENTORY_BOTTOM); break;

                    case "fixed_top":       adventureData.setInventoryPosition(DescriptorData.INVENTORY_FIXED_TOP); break;

                    case "fixed_bottom":    adventureData.setInventoryPosition(DescriptorData.INVENTORY_FIXED_BOTTOM); break;
                    }
                }

                XmlNodeList cursors = gui.SelectNodes("cursors/cursor");
                foreach (XmlElement cursor in cursors)
                {
                    string type = ""; string uri = "";

                    tmpString = cursor.GetAttribute("type");
                    if (!string.IsNullOrEmpty(tmpString))
                    {
                        type = tmpString;
                    }

                    tmpString = cursor.GetAttribute("uri");
                    if (!string.IsNullOrEmpty(tmpString))
                    {
                        uri = tmpString;
                    }

                    adventureData.addCursor(type, uri);
                }

                XmlNodeList buttons = gui.SelectNodes("buttons/button");
                foreach (XmlElement button in buttons)
                {
                    string type = ""; string uri = ""; string action = "";

                    tmpString = button.GetAttribute("type");
                    if (!string.IsNullOrEmpty(tmpString))
                    {
                        type = tmpString;
                    }

                    tmpString = button.GetAttribute("uri");
                    if (!string.IsNullOrEmpty(tmpString))
                    {
                        uri = tmpString;
                    }

                    tmpString = button.GetAttribute("action");
                    if (!string.IsNullOrEmpty(tmpString))
                    {
                        action = tmpString;
                    }

                    adventureData.addButton(action, type, uri);
                }

                XmlNodeList arrows = gui.SelectNodes("cursors/cursor");
                foreach (XmlElement arrow in arrows)
                {
                    string type = ""; string uri = "";

                    tmpString = arrow.GetAttribute("type");
                    if (!string.IsNullOrEmpty(tmpString))
                    {
                        type = tmpString;
                    }

                    tmpString = arrow.GetAttribute("uri");
                    if (!string.IsNullOrEmpty(tmpString))
                    {
                        uri = tmpString;
                    }

                    adventureData.addArrow(type, uri);
                }
            }

            XmlElement mode = (XmlElement)configuration.SelectSingleNode("mode");
            if (mode != null)
            {
                tmpString = mode.GetAttribute("playerTransparent");
                if (!string.IsNullOrEmpty(tmpString))
                {
                    adventureData.setPlayerMode(tmpString.Equals("yes") ? DescriptorData.MODE_PLAYER_1STPERSON : DescriptorData.MODE_PLAYER_3RDPERSON);
                }
            }

            XmlElement graphics = (XmlElement)configuration.SelectSingleNode("graphics");
            if (graphics != null)
            {
                tmpString = graphics.GetAttribute("playerTransparent");
                if (!string.IsNullOrEmpty(tmpString))
                {
                    switch (tmpString)
                    {
                    case "windowed":    adventureData.setGraphicConfig(DescriptorData.GRAPHICS_WINDOWED); break;

                    case "fullscreen":  adventureData.setGraphicConfig(DescriptorData.GRAPHICS_FULLSCREEN); break;

                    case "blackbkg":    adventureData.setGraphicConfig(DescriptorData.GRAPHICS_BLACKBKG); break;
                    }
                }
            }
        }

        if (contents != null)
        {
            Chapter currentChapter;

            XmlNodeList chapters = contents.SelectNodes("chapter");
            foreach (XmlElement chapter in chapters)
            {
                currentChapter = new Chapter();

                string chapterPath = "";
                tmpString = chapter.GetAttribute("path");
                if (!string.IsNullOrEmpty(tmpString))
                {
                    chapterPath = tmpString;
                }
                currentChapter.setChapterPath(directory + chapterPath);

                ChapterHandler_ chapterParser = new ChapterHandler_(currentChapter);
                chapterParser.Parse(directory + chapterPath);

                title = (XmlElement)chapter.SelectSingleNode("title");
                if (title != null)
                {
                    tmpString = title.InnerText;

                    if (!string.IsNullOrEmpty(tmpString))
                    {
                        currentChapter.setTitle(tmpString);
                    }
                }

                description = (XmlElement)chapter.SelectSingleNode("description");
                if (description != null)
                {
                    tmpString = title.InnerText;

                    if (!string.IsNullOrEmpty(tmpString))
                    {
                        currentChapter.setDescription(tmpString);
                    }
                }


                XmlElement adaptation = (XmlElement)chapter.SelectSingleNode("adaptation-configuration");
                if (adaptation != null)
                {
                    tmpString = adaptation.GetAttribute("path");
                    if (!string.IsNullOrEmpty(tmpString))
                    {
                        string adaptationName = tmpString;
                        // delete the path's characteristics
                        adaptationName = adaptationName.Substring(adaptationName.IndexOf("/") + 1);
                        adaptationName = adaptationName.Substring(0, adaptationName.IndexOf("."));
                        currentChapter.setAdaptationName(adaptationName);
                    }
                }

                XmlElement assestment = (XmlElement)chapter.SelectSingleNode("assessment-configuration");
                if (adaptation != null)
                {
                    tmpString = adaptation.GetAttribute("path");
                    if (!string.IsNullOrEmpty(tmpString))
                    {
                        string assessmentName = tmpString;
                        // delete the path's characteristics
                        assessmentName = assessmentName.Substring(assessmentName.IndexOf("/") + 1);
                        assessmentName = assessmentName.Substring(0, assessmentName.IndexOf("."));
                        currentChapter.setAssessmentName(assessmentName);
                    }
                }

                adventureData.addChapter(currentChapter);
            }
        }

        /*if (qName.EndsWith("automatic-commentaries"))
         * {
         *  adventureData.setCommentaries(true);
         * }*/
    }