示例#1
0
        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();
        }
示例#2
0
        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;
                }
            }
        }