public static string Serialize(EdgeEffectParameters p) { if (p.Type == EdgeEffectType.None) { return("None"); } var list = new List <string>(); if (p.Hollow) { list.Add("true"); } if (p.Offset != default || list.Count > 0) { list.Add($"({Vector2Converter.Serialize(p.Offset)})"); } if (p.Roundness != default || list.Count > 0) { list.Add(p.Roundness.ToString()); } if (p.Radius != default || list.Count > 0) { list.Add(p.Radius.ToString()); } list.Add(Color4Converter.Serialize(p.Colour)); list.Add(p.Type.ToString()); list.Reverse(); return(string.Join(", ", list)); }
public static EdgeEffectParameters Deserialize(string data) { var parts = data.SplitByComma(); if (parts.Length == 0) { throw new MarkupException($"Unrecognized {nameof(EdgeEffectParameters)}."); } var edge = new EdgeEffectParameters { Type = Enum.Parse <EdgeEffectType>(parts[0], ignoreCase: true), }; if (parts.Length > 1) { edge.Colour = Color4Converter.Deserialize(parts[1]); } if (parts.Length > 2) { edge.Radius = float.Parse(parts[2]); } if (parts.Length > 3) { edge.Roundness = float.Parse(parts[3]); } if (parts.Length > 4) { edge.Offset = Vector2Converter.Deserialize(parts[4].Substring(1, parts[4].Length - 2)); } if (parts.Length > 5) { edge.Hollow = bool.Parse(parts[5]); } if (parts.Length > 6) { throw new MarkupException($"Unknown {nameof(EdgeEffectParameters)} component '{parts[6]}'."); } return(edge); }