protected override void ExpandCore()
        {
            try
            {
                if (_region == null)
                {
                    _region = new RegionFile(_path);
                }

                for (int x = 0; x < 32; x++)
                {
                    for (int z = 0; z < 32; z++)
                    {
                        if (_region.HasChunk(x, z))
                        {
                            Nodes.Add(new RegionChunkDataNode(_region, x, z));
                        }
                    }
                }
            }
            catch (Exception e)
            {
                if (FormRegistry.MessageBox != null)
                {
                    FormRegistry.MessageBox("Not a valid region file.");
                }
            }
        }
        public override bool CreateNode(TagType type)
        {
            if (!CanCreateTag(type))
            {
                return(false);
            }

            if (FormRegistry.CreateNode != null)
            {
                CreateTagFormData data = new CreateTagFormData()
                {
                    TagType = type,
                    HasName = true,
                };
                data.RestrictedNames.AddRange(_container.TagNamesInUse);

                if (FormRegistry.CreateNode(data))
                {
                    AddTag(data.TagNode, data.TagName);
                    return(true);
                }
            }

            return(false);
        }
Пример #3
0
        protected bool EditIntHexValue(TagNode tag)
        {
            if (FormRegistry.EditByteArray != null)
            {
                TagNodeIntArray iatag    = tag.ToTagIntArray();
                byte[]          byteData = new byte[iatag.Length * 4];
                for (int i = 0; i < iatag.Length; i++)
                {
                    byte[] buf = BitConverter.GetBytes(iatag.Data[i]);
                    Array.Copy(buf, 0, byteData, 4 * i, 4);
                }

                ByteArrayFormData data = new ByteArrayFormData()
                {
                    NodeName        = NodeName,
                    BytesPerElement = 4,
                    Data            = byteData,
                };

                if (FormRegistry.EditByteArray(data))
                {
                    iatag.Data = new int[data.Data.Length / 4];
                    for (int i = 0; i < iatag.Length; i++)
                    {
                        iatag.Data[i] = BitConverter.ToInt32(data.Data, i * 4);
                    }

                    IsDataModified = true;
                    return(true);
                }
            }

            return(false);
        }
Пример #4
0
        protected bool EditByteHexValue(TagNode tag)
        {
            if (FormRegistry.EditByteArray != null)
            {
                byte[] byteData = new byte[tag.ToTagByteArray().Length];
                Array.Copy(tag.ToTagByteArray().Data, byteData, byteData.Length);

                ByteArrayFormData data = new ByteArrayFormData()
                {
                    NodeName        = NodeName,
                    BytesPerElement = 1,
                    Data            = byteData,
                };

                if (FormRegistry.EditByteArray(data))
                {
                    tag.ToTagByteArray().Data = data.Data;
                    //Array.Copy(data.Data, tag.ToTagByteArray().Data, tag.ToTagByteArray().Length);
                    IsDataModified = true;
                    return(true);
                }
            }

            return(false);
        }
Пример #5
0
        protected bool EditLongHexValue(TagNode tag)
        {
            if (FormRegistry.EditByteArray != null)
            {
                TagNodeLongArray latag    = tag.ToTagLongArray();
                byte[]           byteData = new byte[latag.Length * 8];
                for (int i = 0; i < latag.Length; i++)
                {
                    byte[] buf = BitConverter.GetBytes(latag.Data[i]);
                    Array.Copy(buf, 0, byteData, 8 * i, 8);
                }

                ByteArrayFormData data = new ByteArrayFormData()
                {
                    NodeName        = NodeName,
                    BytesPerElement = 8,
                    Data            = byteData,
                };

                if (FormRegistry.EditByteArray(data))
                {
                    latag.Data = new long[data.Data.Length / 8];
                    for (int i = 0; i < latag.Length; i++)
                    {
                        latag.Data[i] = BitConverter.ToInt64(data.Data, i * 8);
                    }

                    IsDataModified = true;
                    return(true);
                }
            }

            return(false);
        }
Пример #6
0
 protected bool EditScalarValue(TagNode tag)
 {
     if (FormRegistry.EditTagScalar != null)
     {
         if (FormRegistry.EditTagScalar(new TagScalarFormData(tag)))
         {
             IsDataModified = true;
             return(true);
         }
     }
     return(false);
 }
Пример #7
0
 protected bool EditStringValue(TagNode tag)
 {
     if (FormRegistry.EditString != null)
     {
         StringFormData data = new StringFormData(tag.ToTagString().Data);
         if (FormRegistry.EditString(data))
         {
             tag.ToTagString().Data = data.Value;
             IsDataModified = true;
             return(true);
         }
     }
     return(false);
 }
Пример #8
0
        public override bool RenameNode()
        {
            if (CanRenameNode && TagParent != null && TagParent.IsNamedContainer && FormRegistry.EditString != null)
            {
                RestrictedStringFormData data = new RestrictedStringFormData(TagParent.NamedTagContainer.GetTagName(Tag));
                data.RestrictedValues.AddRange(TagParent.NamedTagContainer.TagNamesInUse);

                if (FormRegistry.RenameTag(data))
                {
                    if (TagParent.NamedTagContainer.RenameTag(Tag, data.Value))
                    {
                        IsDataModified = true;
                        return(true);
                    }
                }
            }

            return(false);
        }
Пример #9
0
        public override bool RenameNode()
        {
            if (CanRenameNode && FormRegistry.EditString != null)
            {
                var data = new RestrictedStringFormData(_tree.Name ?? "")
                {
                    AllowEmpty = true
                };

                if (FormRegistry.RenameTag(data))
                    if (_tree.Name != data.Value)
                    {
                        _tree.Name = data.Value;
                        IsDataModified = true;
                        return true;
                    }
            }

            return false;
        }