Exemplo n.º 1
0
            public override object Load(XmlReader reader, ref Element current)
            {
                string file = null;

                try
                {
                    file = GameLoader.GetTemplateAttribute(reader, "ref");
                    if (file.Length == 0)
                    {
                        return(null);
                    }
                    string    path      = WorldModel.GetExternalPath(file);
                    XmlReader newReader = XmlReader.Create(path);
                    return(LoadIncludeElement(path, file, newReader));
                }
                catch (IncludeFileMissingException ifme)
                {
                    try
                    {
                        XmlReader newReader = WorldModel.CreateXmlReader(ifme.missingInclude);
                        return(LoadIncludeElement(ifme.missingInclude, file, newReader));
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.ToString());
                        return(null);
                    }
                }
            }
Exemplo n.º 2
0
            public override object Load(XmlReader reader, ref Element current)
            {
                string file = GameLoader.GetTemplateAttribute(reader, "ref");

                if (file.Length == 0)
                {
                    return(null);
                }
                string    path      = WorldModel.GetExternalPath(file);
                XmlReader newReader = XmlReader.Create(path);

                while (newReader.NodeType != XmlNodeType.Element && !newReader.EOF)
                {
                    newReader.Read();
                }
                if (newReader.Name != "library")
                {
                    RaiseError(string.Format("Included file '{0}' is not a library", file));
                }
                LoadXML(path, newReader);
                return(LoadInternal(file));
            }
Exemplo n.º 3
0
        public override void Execute(Context c)
        {
            if (m_worldModel.Version >= WorldModelVersion.v540)
            {
                throw new Exception("The 'insert' script command is not supported for games written for Quest 5.4 or later. You can output HTML directly using the 'msg' command instead.");
            }

            string filename = m_filename.Execute(c);

            if (m_worldModel.Version == WorldModelVersion.v500)
            {
                // v500 games used Frame.htm for static panel feature. This is now implemented natively
                // in Player and WebPlayer.
                if (filename.ToLower() == "frame.htm")
                {
                    return;
                }
            }
            string path = m_worldModel.GetExternalPath(filename);

            m_worldModel.PlayerUI.WriteHTML(System.IO.File.ReadAllText(path));
        }
Exemplo n.º 4
0
        public void DisplayOutput(string text)
        {
            text = "<output>" + text + "</output>";
            StringBuilder output = new StringBuilder();

            var settings = new XmlReaderSettings {
                IgnoreWhitespace = false
            };
            var reader = XmlReader.Create(new System.IO.StringReader(text), settings);

            while (reader.Read())
            {
                switch (reader.NodeType)
                {
                case XmlNodeType.Element:
                    switch (reader.Name)
                    {
                    case "output":
                        break;

                    case "output_picture":
                        if (output.Length > 0)
                        {
                            m_worldModel.Print(output.ToString());
                            output = new StringBuilder();
                        }
                        m_worldModel.PlayerUI.ShowPicture(m_worldModel.GetExternalPath(reader.GetAttribute("filename")));
                        break;

                    case "output_setfontsize":
                        if (output.Length > 0)
                        {
                            m_worldModel.Print(output.ToString(), false);
                            output = new StringBuilder();
                        }
                        string size = reader.GetAttribute("size");
                        ((LegacyOutputLogger)(m_worldModel.OutputLogger)).SetFontSize(size);
                        m_worldModel.PlayerUI.SetFontSize(size);
                        break;

                    case "output_setfontname":
                        if (output.Length > 0)
                        {
                            m_worldModel.Print(output.ToString(), false);
                            output = new StringBuilder();
                        }
                        string name = reader.GetAttribute("name");
                        ((LegacyOutputLogger)(m_worldModel.OutputLogger)).SetFontName(name);
                        m_worldModel.PlayerUI.SetFont(name);
                        break;

                    default:
                        output.Append("<" + reader.Name);
                        if (reader.HasAttributes)
                        {
                            for (int i = 0; i < reader.AttributeCount; i++)
                            {
                                reader.MoveToAttribute(i);
                                output.Append(string.Format(" {0}=\"{1}\"", reader.Name, reader.Value));
                            }
                            reader.MoveToElement();
                        }
                        if (reader.IsEmptyElement)
                        {
                            output.Append("/>");
                        }
                        else
                        {
                            output.Append(">");
                        }
                        break;
                    }
                    break;

                case XmlNodeType.Text:
                case XmlNodeType.Whitespace:
                    output.Append(reader.Value);
                    break;

                case XmlNodeType.EndElement:
                    switch (reader.Name)
                    {
                    case "output":
                        break;

                    case "output_picture":
                        break;

                    default:
                        output.Append(string.Format("</{0}>", reader.Name));
                        break;
                    }
                    break;
                }
            }

            m_worldModel.Print(output.ToString());
        }