internal static ToolListItem ReadToolListObject(Utf8JsonReader reader, IReadOnlyDictionary <ElementId, ElementData> elements) { ToolListItem item = default; while (reader.Read()) { switch (reader.TokenType) { case JsonTokenType.EndObject: return(item); case JsonTokenType.PropertyName: string name = reader.GetString(); reader.Read(); switch (name) { case "name": item.Name = reader.GetString(); break; case "icon": item.Icon = reader.GetString(); break; case "shortcut": item.Shortcut = reader.GetString(); break; case "elements": item.Elements = ReadElements(reader, elements); break; case "defaultElement": { ElementId id = new ElementId(reader.GetString()); if (!elements.ContainsKey(id)) { throw new System.Exception($"element id {id} does not exist"); } item.DefaultElement = id; } break; } break; } } throw new InvalidOperationException(); }
private void LoadTools() { Utf8JsonReader reader = new Utf8JsonReader(Resources.tools); while (reader.Read()) { switch (reader.TokenType) { case JsonTokenType.StartObject: ToolListItem item = ToolListItem.ReadToolListObject(reader, this.elements); this.toollist.Add(item); break; } } }