public static ExportMonster ToMonster(this ImportMonster import) { var export = new ExportMonster() { AbilityScores = import.AbilityScores.ToDictionary(), ActionPoints = import.ActionPoints.Value, Alignment = import.Alignment.Name.ToAlignment(), CompendiumUrl = import.CompendiumUrl, Defenses = import.Defenses.ToDictionary(), Description = import.Description, Experience = import.Experience.Value, GroupRole = import.GroupRole.Name, Handle = import.ToHandle(), HitPoints = import.HitPoints.Value, Immunities = import.Immunities.Count != 0 ? import.Immunities.Select(r => r.Name).ToList() : null, Initiative = import.Initiative.Value, IsLeader = import.IsLeader, Items = import.Items.Count != 0 ? import.Items.Select(i => new KeyValuePair <string, int>(i.Item.Name, i.Quantity)).ToList() : null, Keywords = import.Keywords.Count != 0 ? import.Keywords.Select(r => r.Name).ToList() : null, OtherSpeeds = import.Speeds.Count != 0 ? import.Speeds.Select(s => (s.ToString() ?? String.Empty).Trim()).ToList() : null, Languages = import.Languages.Count != 0 ? import.Languages.Select(r => r.Name).ToList() : null, Level = import.Level, Name = import.Name, Origin = import.Origin.Name, Phasing = import.Phasing, Powers = import.Powers.Select(p => p.ToExportPower()).ToList(), Race = import.Race.Name, Regeneration = new ExportRegeneration() { Value = import.Regeneration.Value, Details = import.Regeneration.Details }, Resistances = import.Resistances.Count != 0 ? import.Resistances.Select(r => r.ToString()).ToList() : null, Role = import.Role.Name, SavingThrows = import.SavingThrows.Count > 0 ? import.SavingThrows[0].Value : 0, Senses = import.Senses.Count != 0 ? import.Senses.Select(s => new KeyValuePair <string, int>(s.Name, s.Range)).ToList() : null, Skills = import.Skills.ToDictionary(), Size = import.Size.Name, SourceBook = import.SourceBook.Name, Speed = import.LandSpeed.Value, Tactics = (import.Tactics ?? String.Empty).FixWhitespace(), Traits = import.Traits.ToExportTraitList(), Type = import.Type.Name, Weaknesses = import.Weaknesses.Count != 0 ? import.Weaknesses.Select(r => r.ToString()).ToList() : null, }; return(export); }
public static string ToHandle(this ImportMonster import) { var handle = new StringBuilder(); handle.AppendFormat( "{0} ({1}{2}", import.Name, import.Role.Name.Substring(0, 2), import.Level ); if (!String.IsNullOrWhiteSpace(import.GroupRole.Name)) { handle.AppendFormat("{0}", import.GroupRole.Name.Substring(0, 1)); } handle.Append(")"); return(handle.ToString()); }
public static bool TryCreateFromFile(string path, out Monster monster) { using (var fs = new FileStream(path, FileMode.Open)) { using (var xml = new XmlTextReader(fs)) { XmlSerializer serializer = new XmlSerializer(typeof(Monster)); if (serializer.CanDeserialize(xml)) { monster = serializer.Deserialize(xml) as Monster; return true; } else { monster = null; return false; } } } }