void DecodeSaveVariant(KBlam.RuntimeData.Variants.GameEngineVariant gev, string xmlFilename, MegaloModel.MegaloScriptModelTagElementStreamFlags modelStreamFlags, bool ignoreWritePredicates) { var megalo_variant = gev.TryGetMegaloVariant(); if (megalo_variant != null) { megalo_variant.TagElementStreamSerializeFlags = KBlam.RuntimeData.Variants.GameEngineMegaloVariantTagElementStreamFlags.UseStringTableNames | KBlam.RuntimeData.Variants.GameEngineMegaloVariantTagElementStreamFlags.UseUserOptionNames; megalo_variant.EngineDefinition.TagElementStreamSerializeFlags = modelStreamFlags; } using (var xml = IO.XmlElementStream.CreateForWrite("GameVariant")) { xml.StreamMode = FileAccess.Write; xml.IgnoreWritePredicates = ignoreWritePredicates; gev.Serialize(xml); using (var sw = new System.IO.StreamWriter(xmlFilename, false, System.Text.Encoding.UTF8)) xml.Document.Save(sw); } }
bool EncodeLoadVariant(string xmlFilename, out KBlam.RuntimeData.Variants.GameEngineVariant ev) { ev = new KBlam.RuntimeData.Variants.GameEngineVariant(mGameBuildAndTarget.Build); bool result = true; using (var xml = new IO.XmlElementStream(xmlFilename)) { xml.InitializeAtRootElement(); xml.StreamMode = FileAccess.Read; ev.Serialize(xml); } if (ev.GameBuild != mGameBuildAndTarget.Build) { Console.WriteLine("Error: {0}'s game parameter '{1}' differs from what you gave me. Weak sauce", xmlFilename, ev.GameBuild); result = false; } return(result); }