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); } } }
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)); }
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)); }
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()); }