Exemplo n.º 1
0
 public static WzObject GetObjectByRelativePath(WzObject currentObject, string path)
 {
     foreach (string directive in path.Split("/".ToCharArray()))
     {
         if (directive == "..")
         {
             currentObject = currentObject.Parent;
         }
         else if (currentObject is WzImageProperty)
         {
             currentObject = ((WzImageProperty)currentObject)[directive];
         }
         else if (currentObject is WzImage)
         {
             currentObject = ((WzImage)currentObject)[directive];
         }
         else if (currentObject is WzDirectory)
         {
             currentObject = ((WzDirectory)currentObject)[directive];
         }
         else
         {
             throw new Exception("invalid type");
         }
     }
     return(currentObject);
 }
Exemplo n.º 2
0
        public override Bitmap GetBitmap()
        {
            if (this["_inlink"] is WzStringProperty inlink)
            {
                WzObject currentWzObj = this; // first object to work with
                while ((currentWzObj = currentWzObj.Parent) != null)
                {
                    if (!(currentWzObj is WzImage))  // keep looping if its not a WzImage
                    {
                        continue;
                    }

                    WzImage         wzImageParent = (WzImage)currentWzObj;
                    WzImageProperty foundProperty = wzImageParent.GetFromPath(inlink.Value);
                    if (foundProperty != null && foundProperty is WzImageProperty)
                    {
                        return(foundProperty.GetBitmap());
                    }
                }
            }
            else if (this["_outlink"] is WzStringProperty outlink)
            {
                WzObject foundProperty = WzFileParent.GetObjectFromPath(outlink.Value);
                if (foundProperty is WzImageProperty)
                {
                    return(foundProperty.GetBitmap());
                }
            }
            return(imageProp.GetPNG(false));
        }
Exemplo n.º 3
0
        public BodyAction(WzSubProperty src)
        {
            _stance = Look.Stance.ByString(((WzStringProperty)src["action"]).Value);
            if (src["frame"] != null)
            {
                Frame = (short)src["frame"];
            }
            WzObject moveProperty = src["move"];

            if (moveProperty != null && moveProperty is WzVectorProperty)
            {
                _move = (Vector2)moveProperty.WzValue;
            }
            short sgnDelay = 0;

            if (src["delay"] != null)
            {
                sgnDelay = (short)src["delay"];
            }
            if (sgnDelay == 0)
            {
                sgnDelay = 100;
            }
            if (sgnDelay > 0)
            {
                Delay       = sgnDelay;
                AttackFrame = true;
            }
            else if (sgnDelay < 0)
            {
                Delay       = (short)-sgnDelay;
                AttackFrame = false;
            }
        }
        public List <WzObject> GetChildObjects(WzObject node)
        {
            List <WzObject> childs = new List <WzObject>();
            bool            flag   = node is WzDirectory;

            if (flag)
            {
                childs.AddRange(((WzDirectory)node).WzImages);
                childs.AddRange(((WzDirectory)node).WzDirectories);
            }
            else
            {
                bool flag2 = node is WzImage;
                if (flag2)
                {
                    childs.AddRange(((WzImage)node).WzProperties);
                }
                else
                {
                    bool flag3 = node is WzImageProperty && !(node is WzUOLProperty);
                    if (flag3)
                    {
                        bool flag4 = ((WzImageProperty)node).WzProperties != null;
                        if (flag4)
                        {
                            childs.AddRange(((WzImageProperty)node).WzProperties);
                        }
                    }
                }
            }
            return(childs);
        }
Exemplo n.º 5
0
 private void AddSkillRow(WzImageProperty s) {
     var id = int.Parse(s.Name);
     var name = StringWz.GetSkill(s.Name);
     var properties = GetAllProperties(s);
     WzObject icon = s.GetFromPath("icon");
     SkillsView.GridView.Rows.Add(id, icon?.GetBitmap(), name, properties);
 }
Exemplo n.º 6
0
 /// <summary>
 ///  Remove all WZ image resource to optimize for botting purposes
 /// </summary>
 public void DoRemoveImageResource()
 {
     foreach (WzNode node in DataTree.SelectedNodes)
     {
         WzObject wzObj = (WzObject)node.Tag;// CloneWzObject((WzObject)node.Tag);
     }
 }
        public ContextMenuStrip CreateMenu(WzNode node, WzObject Tag)
        {
            ContextMenuStrip menu = null;

            if (Tag is WzImage || Tag is IPropertyContainer)
            {
                if (Tag is WzSubProperty)
                {
                    menu = new ContextMenuStrip();
                    menu.Items.AddRange(new ToolStripItem[] { AddPropsSubMenu, /*export, import,*/ Remove });
                }
                else
                {
                    menu = new ContextMenuStrip();
                    menu.Items.AddRange(new ToolStripItem[] { AddPropsSubMenu, /*export, import,*/ Remove });
                }
            }
            else if (Tag is WzImageProperty)
            {
                menu = new ContextMenuStrip();
                menu.Items.AddRange(new ToolStripItem[] { /*export, import,*/ Remove });
            }
            else if (Tag is WzDirectory)
            {
                menu = new ContextMenuStrip();
                menu.Items.AddRange(new ToolStripItem[] { AddDirsSubMenu, /*export, import,*/ Remove });
            }
            else if (Tag is WzFile)
            {
                menu = new ContextMenuStrip();
                menu.Items.AddRange(new ToolStripItem[] { AddDirsSubMenu, SaveFile, Unload, Reload });
            }
            currNode = node;
            return(menu);
        }
Exemplo n.º 8
0
        private bool addObjInternal(WzObject obj)
        {
            WzObject TaggedObject = (WzObject)Tag;

            if (TaggedObject is WzFile)
            {
                TaggedObject = ((WzFile)TaggedObject).WzDirectory;
            }
            if (TaggedObject is WzDirectory)
            {
                if (obj is WzDirectory)
                {
                    ((WzDirectory)TaggedObject).AddDirectory((WzDirectory)obj);
                }
                else if (obj is WzImage)
                {
                    ((WzDirectory)TaggedObject).AddImage((WzImage)obj);
                }
                else
                {
                    return(false);
                }
            }
            else if (TaggedObject is WzImage)
            {
                if (!((WzImage)TaggedObject).Parsed)
                {
                    ((WzImage)TaggedObject).ParseImage();
                }
                if (obj is WzImageProperty)
                {
                    ((WzImage)TaggedObject).AddProperty((WzImageProperty)obj);
                    ((WzImage)TaggedObject).Changed = true;
                }
                else
                {
                    return(false);
                }
            }
            else if (TaggedObject is IPropertyContainer)
            {
                if (obj is WzImageProperty)
                {
                    ((IPropertyContainer)TaggedObject).AddProperty((WzImageProperty)obj);
                    if (TaggedObject is WzImageProperty)
                    {
                        ((WzImageProperty)TaggedObject).ParentImage.Changed = true;
                    }
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(false);
            }
            return(true);
        }
Exemplo n.º 9
0
 /// <summary>
 /// Adds a WzObject to the WzNode and returns the newly created WzNode
 /// </summary>
 /// <param name="obj"></param>
 /// <param name="undoRedoMan"></param>
 /// <returns></returns>
 public WzNode AddObject(WzObject obj, UndoRedoManager undoRedoMan)
 {
     if (CanNodeBeInserted(this, obj.Name))
     {
         TryParseImage();
         if (addObjInternal(obj))
         {
             WzNode node = new WzNode(obj, true);
             Nodes.Add(node);
             if (node.Tag is WzImageProperty)
             {
                 ((WzImageProperty)node.Tag).ParentImage.Changed = true;
             }
             undoRedoMan.AddUndoBatch(new System.Collections.Generic.List <UndoRedoAction> {
                 UndoRedoManager.ObjectAdded(this, node)
             });
             node.EnsureVisible();
             return(node);
         }
         else
         {
             Warning.Error("Could not insert property, make sure all types are correct");
             return(null);
         }
     }
     else
     {
         MessageBox.Show("Cannot insert object \"" + obj.Name + "\" because an object with the same name already exists. Skipping.", "Skipping Object", MessageBoxButtons.OK, MessageBoxIcon.Information);
         return(null);
     }
 }
Exemplo n.º 10
0
        public ContextMenuStrip CreateMenu(WzNode node, WzObject Tag)
        {
            int currentDataTreeSelectedCount = parentPanel.DataTree.SelectedNodes.Count;

            ContextMenuStrip menu = new ContextMenuStrip();

            if (Tag is WzImage || Tag is IPropertyContainer)
            {
                if (Tag is WzSubProperty)
                {
                    menu.Items.AddRange(new ToolStripItem[] { AddPropsSubMenu, Rename, /*export, import,*/ Remove });
                }
                else
                {
                    menu.Items.AddRange(new ToolStripItem[] { AddPropsSubMenu, Rename, /*export, import,*/ Remove });
                }
            }
            else if (Tag is WzImageProperty)
            {
                menu.Items.AddRange(new ToolStripItem[] { Rename, /*export, import,*/ Remove });
            }
            else if (Tag is WzDirectory)
            {
                menu.Items.AddRange(new ToolStripItem[] { AddDirsSubMenu, Rename, /*export, import,*/ Remove });
            }
            else if (Tag is WzFile)
            {
                menu.Items.AddRange(new ToolStripItem[] { AddDirsSubMenu, SaveFile, Unload, Reload });
            }

            currNode = node;
            return(menu);
        }
Exemplo n.º 11
0
 public void DoCopy()
 {
     if (!Warning.Warn(Properties.Resources.MainConfirmCopy))
     {
         return;
     }
     clipboard.Clear();
     foreach (WzNode node in DataTree.SelectedNodes)
     {
         WzObject clone = null;
         if (node.Tag is WzDirectory)
         {
             Warning.Error(Properties.Resources.MainCopyDirError);
             continue;
         }
         else if (node.Tag is WzImage)
         {
             clone = ((WzImage)node.Tag).DeepClone();
         }
         else if (node.Tag is WzImageProperty)
         {
             clone = ((WzImageProperty)node.Tag).DeepClone();
         }
         else
         {
             continue;
         }
         clipboard.Add(clone);
     }
 }
Exemplo n.º 12
0
        public void InitializeMaps(bool special)
        {
            WzObject mapLogin1 = Program.WzManager["ui"]["MapLogin1.img"];
            WzObject mapLogin2 = Program.WzManager["ui"]["MapLogin2.img"];
            WzObject mapLogin3 = Program.WzManager["ui"]["MapLogin3.img"]; // pretty rare, happened a few times in ascension patch

            foreach (KeyValuePair <string, Tuple <string, string> > map in Program.InfoManager.Maps)
            {
                maps.Add(string.Format("{0} - {1} : {2}", map.Key, map.Value.Item1, map.Value.Item2));
            }
            maps.Sort();
            if (special)
            {
                maps.Insert(0, "CashShopPreview");
                maps.Insert(0, "MapLogin");
                if (mapLogin1 != null)
                {
                    maps.Insert(0, "MapLogin1");
                }
                if (mapLogin2 != null)
                {
                    maps.Insert(0, "MapLogin2");
                }
                if (mapLogin3 != null)
                {
                    maps.Insert(0, "MapLogin3");
                }
            }

            object[] mapsObjs = maps.Cast <object>().ToArray();
            mapNamesBox.Items.AddRange(mapsObjs);
        }
        /// <summary>
        /// Loads spine texture from the specified WZ path
        /// </summary>
        /// <param name="page"></param>
        /// <param name="path"></param>
        public void Load(AtlasPage page, string path)
        {
            WzObject frameNode = this.ParentNode[path];

            if (frameNode == null)
            {
                return;
            }

            WzCanvasProperty canvasProperty = null;

            WzImageProperty imageChild = (WzImageProperty)ParentNode[path];

            if (imageChild is WzUOLProperty uolProperty)
            {
                WzObject uolLink = uolProperty.LinkValue;

                if (uolLink is WzCanvasProperty uolPropertyLink)
                {
                    canvasProperty = uolPropertyLink;
                }
                else
                {
                    // other unimplemented prop?
                }
            }
            else if (imageChild is WzCanvasProperty property)
            {
                canvasProperty = property;
            }

            if (canvasProperty != null)
            {
                Bitmap bitmap = canvasProperty.GetLinkedWzCanvasBitmap();
                if (bitmap != null && graphicsDevice != null)
                {
                    Texture2D  tex  = new Texture2D(graphicsDevice, bitmap.Width, bitmap.Height, true, SurfaceFormat.Color);
                    BitmapData data = bitmap.LockBits(new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, bitmap.PixelFormat);

                    int bufferSize = data.Height * data.Stride;

                    //create data buffer
                    byte[] bytes = new byte[bufferSize];

                    // copy bitmap data into buffer
                    Marshal.Copy(data.Scan0, bytes, 0, bytes.Length);

                    // copy our buffer to the texture
                    tex.SetData(bytes);

                    // unlock the bitmap data
                    bitmap.UnlockBits(data);

                    page.rendererObject = tex;
                    page.width          = bitmap.Width;
                    page.height         = bitmap.Height;
                }
            }
        }
Exemplo n.º 14
0
 public static WzObject GetByUol(this WzObject wzObject)
 {
     return(wzObject is WzUolProperty
         ? (WzObject)(wzObject.WzValue is WzUolProperty
             ? ((WzUolProperty)wzObject.WzValue).WzValue
             : wzObject.WzValue)
         : wzObject);
 }
Exemplo n.º 15
0
            private void AddSound(string itemId, WzObject src)
            {
                var id = AddSound(src);

                if (id != null)
                {
                    _itemIds[itemId] = id;
                }
            }
Exemplo n.º 16
0
 public Foothold(WzObject src, short id, short layer)
 {
     Prev       = (short)src["prev"];
     Next       = (short)src["next"];
     Horizontal = new Range((short)src["x1"], (short)src["x2"]);
     Vertical   = new Range((short)src["y1"], (short)src["y2"]);
     Id         = id;
     Layer      = layer;
 }
Exemplo n.º 17
0
            private void AddSound(Name name, WzObject src)
            {
                var id = AddSound(src);

                if (id != null)
                {
                    _soundIds[name] = id;
                }
            }
Exemplo n.º 18
0
            /// <summary>
            /// 播放音效
            /// </summary>
            /// <param name="src">wz节点</param>
            internal void Play(WzObject src)
            {
                var id = AddSound(src);

                if (id != null)
                {
                    PlaySfx(id);
                }
            }
Exemplo n.º 19
0
        /// <summary>
        /// Save button clicked
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void saveImageButton_Click(object sender, EventArgs e)
        {
            if (!(DataTree.SelectedNode.Tag is WzCanvasProperty) && !(DataTree.SelectedNode.Tag is WzUOLProperty))
            {
                return;
            }

            Bitmap bmp;

            if (DataTree.SelectedNode.Tag is WzCanvasProperty)
            {
                bmp = ((WzCanvasProperty)DataTree.SelectedNode.Tag).PngProperty.GetPNG(false);
            }
            else
            {
                WzObject linkValue = ((WzUOLProperty)DataTree.SelectedNode.Tag).LinkValue;
                if (linkValue is WzCanvasProperty)
                {
                    bmp = ((WzCanvasProperty)linkValue).PngProperty.GetPNG(false);
                }
                else
                {
                    return;
                }
            }
            SaveFileDialog dialog = new SaveFileDialog()
            {
                Title = "Select where to save the image...", Filter = "Portable Network Grpahics (*.png)|*.png|CompuServe Graphics Interchange Format (*.gif)|*.gif|Bitmap (*.bmp)|*.bmp|Joint Photographic Experts Group Format (*.jpg)|*.jpg|Tagged Image File Format (*.tif)|*.tif"
            };

            if (dialog.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            switch (dialog.FilterIndex)
            {
            case 1:     //png
                bmp.Save(dialog.FileName, ImageFormat.Png);
                break;

            case 2:     //gif
                bmp.Save(dialog.FileName, ImageFormat.Gif);
                break;

            case 3:     //bmp
                bmp.Save(dialog.FileName, ImageFormat.Bmp);
                break;

            case 4:     //jpg
                bmp.Save(dialog.FileName, ImageFormat.Jpeg);
                break;

            case 5:     //tiff
                bmp.Save(dialog.FileName, ImageFormat.Tiff);
                break;
            }
        }
Exemplo n.º 20
0
 public TileInfo(Bitmap image, System.Drawing.Point origin, string tS, string u, string no, int mag, int z, WzObject parentObject)
     : base(image, origin, parentObject)
 {
     this._tS = tS;
     this._u = u;
     this._no = no;
     this._mag = mag;
     this._z = z;
 }
Exemplo n.º 21
0
        private void AddSkillRow(WzImageProperty s)
        {
            int      id         = int.Parse(s.Name);
            string   name       = StringUtility.GetSkill(s.Name);
            string   properties = BuildProperties(s);
            WzObject icon       = s.GetFromPath("icon");

            SkillsView.GridView.Rows.Add(id, icon?.GetBitmap(), name, properties);
        }
Exemplo n.º 22
0
 public ObjectInfo(Bitmap image, System.Drawing.Point origin, string oS, string l0, string l1, string l2, WzObject parentObject)
     : base(image, origin, parentObject)
 {
     this._oS = oS;
     this._l0 = l0;
     this._l1 = l1;
     this._l2 = l2;
     this.connect = oS.StartsWith("connect");
 }
Exemplo n.º 23
0
        private void WzImporterThread(object param)
        {
            ChangeApplicationState(false);
            object[] arr = (object[])param;
            ProgressingWzSerializer deserializer = (ProgressingWzSerializer)arr[0];

            string[] files  = (string[])arr[1];
            WzNode   parent = (WzNode)arr[2];

            byte[]   iv        = (byte[])arr[3];
            WzObject parentObj = (WzObject)parent.Tag;

            if (parentObj is WzFile)
            {
                parentObj = ((WzFile)parentObj).WzDirectory;
            }
            UpdateProgressBar(MainPanel.mainProgressBar, files.Length, true, true);
            foreach (string file in files)
            {
                List <WzObject> objs;
                try
                {
                    if (deserializer is WzXmlDeserializer)
                    {
                        objs = ((WzXmlDeserializer)deserializer).ParseXML(file);
                    }
                    else
                    {
                        objs = new List <WzObject> {
                            ((WzImgDeserializer)deserializer).WzImageFromIMGFile(file, iv, Path.GetFileName(file))
                        }
                    };
                }
                catch (ThreadAbortException)
                {
                    return;
                }
                catch (Exception e)
                {
                    Warning.Error(string.Format(HaRepacker.Properties.Resources.MainInvalidFileError, file, e.Message));
                    UpdateProgressBar(MainPanel.mainProgressBar, 1, false, false);
                    continue;
                }
                foreach (WzObject obj in objs)
                {
                    if (((obj is WzDirectory || obj is WzImage) && parentObj is WzDirectory) || (obj is WzImageProperty && parentObj is IPropertyContainer))
                    {
                        WzNode node = new WzNode(obj);
                        InsertWzNodeThreadSafe(node, parent);
                    }
                }
                UpdateProgressBar(MainPanel.mainProgressBar, 1, false, false);
            }
            threadDone = true;
        }
        /// <summary>
        /// Load skeleton data by json or binary automatically
        /// </summary>
        /// <param name="atlasNode"></param>
        /// <param name="atlas"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        private static bool TryLoadSkeletonJsonOrBinary(WzImageProperty atlasNode, Atlas atlas, out SkeletonData data)
        {
            data = null;

            if (atlasNode == null || atlasNode.Parent == null || atlas == null)
            {
                return(false);
            }
            WzObject parent = atlasNode.Parent;

            List <WzImageProperty> childProperties;

            if (parent is WzImageProperty)
            {
                childProperties = ((WzImageProperty)parent).WzProperties;
            }
            else
            {
                childProperties = ((WzImage)parent).WzProperties;
            }


            if (childProperties != null)
            {
                WzStringProperty stringJsonProp = (WzStringProperty)childProperties.Where(child => child.Name.EndsWith(".json")).FirstOrDefault();

                if (stringJsonProp != null) // read json based
                {
                    StringReader skeletonReader = new StringReader(stringJsonProp.GetString());
                    SkeletonJson json           = new SkeletonJson(atlas);
                    data = json.ReadSkeletonData(skeletonReader);

                    return(true);
                }
                else
                {
                    // try read binary based
                    foreach (WzImageProperty property in childProperties)
                    {
                        if (property is WzBinaryProperty)
                        {
                            WzBinaryProperty soundProp = (WzBinaryProperty)property; // should be called binaryproperty actually

                            using (MemoryStream ms = new MemoryStream(soundProp.GetBytes(false)))
                            {
                                SkeletonBinary skeletonBinary = new SkeletonBinary(atlas);
                                data = skeletonBinary.ReadSkeletonData(ms);
                                return(true);
                            }
                        }
                    }
                }
            }
            return(false);
        }
Exemplo n.º 25
0
        public void TestEmptyWzFileSerializes()
        {
            var file = new WzFile(1, WzMapleVersionType.Classic);

            using var ms = new MemoryStream();
            file.Serialize(ms);
            var contents     = Encoding.ASCII.GetString(ms.ToArray());
            var deserialized = WzObject.DeserializeFile(contents);

            Assert.IsNotNull(deserialized);
        }
Exemplo n.º 26
0
 public WzNode(WzObject SourceObject, bool isWzObjectAddedManually = false)
     : base(SourceObject.Name)
 {
     this.isWzObjectAddedManually = isWzObjectAddedManually;
     if (isWzObjectAddedManually)
     {
         ForeColor = NewObjectForeColor;
     }
     // Childs
     ParseChilds(SourceObject);
 }
Exemplo n.º 27
0
            public Frame(WzObject src)
            {
                var shift = (((WzVectorProperty)src["face"]["map"]["brow"]).Pos());

                Tex   = new TextureD(src["Face"]).Shift(-shift);
                delay = (short)(((WzIntProperty)src["delay"])?.Value ?? 0);
                if (delay == 0)
                {
                    delay = 2500;
                }
            }
Exemplo n.º 28
0
        public void ExtractSoundFile(string soundWzFile)
        {
            WzDirectory directory = this[soundWzFile];

            if (directory == null)
            {
                return;
            }

            foreach (WzImage soundImage in directory.WzImages)
            {
                if (!soundImage.Name.ToLower().Contains("bgm"))
                {
                    continue;
                }
                if (!soundImage.Parsed)
                {
                    soundImage.ParseImage();
                }
                try
                {
                    foreach (WzImageProperty bgmImage in soundImage.WzProperties)
                    {
                        WzBinaryProperty binProperty = null;
                        if (bgmImage is WzBinaryProperty bgm)
                        {
                            binProperty = bgm;
                        }
                        else if (bgmImage is WzUOLProperty uolBGM) // is UOL property
                        {
                            WzObject linkVal = ((WzUOLProperty)bgmImage).LinkValue;
                            if (linkVal is WzBinaryProperty linkCanvas)
                            {
                                binProperty = linkCanvas;
                            }
                        }

                        if (binProperty != null)
                        {
                            Program.InfoManager.BGMs[WzInfoTools.RemoveExtension(soundImage.Name) + @"/" + binProperty.Name] = binProperty;
                        }
                    }
                }
                catch (Exception e)
                {
                    string error = string.Format("[ExtractSoundFile] Error parsing {0}, {1} file.\r\nError: {2}", soundWzFile, soundImage.Name, e.ToString());
                    MapleLib.Helpers.ErrorLogger.Log(ErrorLevel.IncorrectStructure, error);
                    continue;
                }
            }
        }
Exemplo n.º 29
0
        private int CalculateTotal(WzObject currObj)
        {
            int result = 0;

            if (currObj is WzFile)
            {
                result += ((WzFile)currObj).WzDirectory.CountImages();
            }
            else if (currObj is WzDirectory)
            {
                result += ((WzDirectory)currObj).CountImages();
            }
            return(result);
        }
        /// <summary>
        /// Toolstrip menu when right clicking on nodes
        /// </summary>
        /// <param name="node"></param>
        /// <param name="Tag"></param>
        /// <returns></returns>
        public ContextMenuStrip CreateMenu(WzNode node, WzObject Tag)
        {
            int currentDataTreeSelectedCount = parentPanel.DataTree.SelectedNodes.Count;

            List <ToolStripItem> toolStripmenuItems = new List <ToolStripItem>();

            ContextMenuStrip menu = new ContextMenuStrip();

            if (Tag is WzImage || Tag is IPropertyContainer)
            {
                toolStripmenuItems.Add(AddPropsSubMenu);
                toolStripmenuItems.Add(Rename);
                // export, import
                toolStripmenuItems.Add(Remove);
            }
            else if (Tag is WzImageProperty)
            {
                toolStripmenuItems.Add(Rename);
                toolStripmenuItems.Add(Remove);
            }
            else if (Tag is WzDirectory)
            {
                toolStripmenuItems.Add(AddDirsSubMenu);
                toolStripmenuItems.Add(Rename);
                toolStripmenuItems.Add(Remove);
            }
            else if (Tag is WzFile)
            {
                toolStripmenuItems.Add(AddDirsSubMenu);
                toolStripmenuItems.Add(Rename);
                toolStripmenuItems.Add(SaveFile);
                toolStripmenuItems.Add(Unload);
                toolStripmenuItems.Add(Reload);
            }

            toolStripmenuItems.Add(FixLink);
            toolStripmenuItems.Add(ExpandAllChildNode);
            toolStripmenuItems.Add(CollapseAllChildNode);
            toolStripmenuItems.Add(SortAllChildNode);

            // Add
            foreach (ToolStripItem toolStripItem in toolStripmenuItems)
            {
                menu.Items.Add(toolStripItem);
            }

            currNode = node;
            return(menu);
        }
Exemplo n.º 31
0
        /// <summary>
        /// Gets the '_inlink' WzCanvasProperty of this.
        ///
        /// '_inlink' is not implemented as part of WzCanvasProperty as I dont want to override existing Wz structure.
        /// It will be handled via HaRepackerMainPanel instead.
        /// </summary>
        /// <returns></returns>
        public WzImageProperty GetLinkedWzCanvasProperty()
        {
            if (!HaveInlinkProperty() && !HaveOutlinkProperty())
            {
                return(null);
            }

            string _inlink  = ((WzStringProperty)this[InlinkPropertyName])?.Value;  // could get nexon'd here. In case they place an _inlink that's not WzStringProperty
            string _outlink = ((WzStringProperty)this[OutlinkPropertyName])?.Value; // could get nexon'd here. In case they place an _outlink that's not WzStringProperty

            if (_inlink != null)
            {
                WzObject currentWzObj = this; // first object to work with
                while ((currentWzObj = currentWzObj.Parent) != null)
                {
                    if (!(currentWzObj is WzImage))  // keep looping if its not a WzImage
                    {
                        continue;
                    }

                    WzImage         wzImageParent = (WzImage)currentWzObj;
                    WzImageProperty foundProperty = wzImageParent.GetFromPath(_inlink);
                    if (foundProperty != null && foundProperty is WzImageProperty)
                    {
                        return((WzImageProperty)foundProperty);
                    }
                }
            }
            else if (_outlink != null)
            {
                WzObject currentWzObj = this; // first object to work with
                while ((currentWzObj = currentWzObj.Parent) != null)
                {
                    System.Diagnostics.Debug.WriteLine(currentWzObj.ToString());
                    if (!(currentWzObj is WzDirectory))  // keep looping if its not a WzImage
                    {
                        continue;
                    }

                    WzFile   wzFileParent  = ((WzDirectory)currentWzObj).wzFile;
                    WzObject foundProperty = wzFileParent.GetObjectFromPath(_outlink);
                    if (foundProperty != null && foundProperty is WzImageProperty)
                    {
                        return((WzImageProperty)foundProperty);
                    }
                }
            }
            return(null);
        }
Exemplo n.º 32
0
        public void DoPaste()
        {
            if (!Warning.Warn(Properties.Resources.MainConfirmPaste))
            {
                return;
            }

            yesToAll = false;
            noToAll  = false;
            WzNode   parent    = (WzNode)DataTree.SelectedNode;
            WzObject parentObj = (WzObject)parent.Tag;

            if (parent != null && parent.Tag is WzImage && parent.Nodes.Count == 0)
            {
                ParseOnDataTreeSelectedItem(parent);
            }

            if (parentObj is WzFile)
            {
                parentObj = ((WzFile)parentObj).WzDirectory;
            }

            foreach (WzObject obj in clipboard)
            {
                if (((obj is WzDirectory || obj is WzImage) && parentObj is WzDirectory) || (obj is WzImageProperty && parentObj is IPropertyContainer))
                {
                    WzObject clone = CloneWzObject(obj);
                    if (clone == null)
                    {
                        continue;
                    }
                    WzNode node  = new WzNode(clone);
                    WzNode child = WzNode.GetChildNode(parent, node.Text);
                    if (child != null)
                    {
                        if (ShowReplaceDialog(node.Text))
                        {
                            child.Delete();
                        }
                        else
                        {
                            return;
                        }
                    }
                    parent.AddNode(node);
                }
            }
        }
Exemplo n.º 33
0
 public WzObject CloneWzObject(WzObject obj)
 {
     if (obj is WzDirectory)
     {
         Warning.Error(Properties.Resources.MainCopyDirError);
         return null;
     }
     else if (obj is WzImage)
     {
         return ((WzImage)obj).DeepClone();
     }
     else if (obj is WzImageProperty)
     {
         return ((WzImageProperty)obj).DeepClone();
     }
     else
     {
         return null;
     }
 }
Exemplo n.º 34
0
 internal static WzExtended ParseExtendedProp(WzBinaryReader reader, uint offset, int endOfBlock, string name, WzObject parent, WzImage imgParent)
 {
     switch (reader.ReadByte())
     {
         case 0x01:
         case 0x1B:
             return ExtractMore(reader, offset, endOfBlock, name, reader.ReadStringAtOffset(offset + reader.ReadInt32()), parent, imgParent);
         case 0x00:
         case 0x73:
             return ExtractMore(reader, offset, endOfBlock, name, "", parent, imgParent);
         default:
             throw new System.Exception("Invlid byte read at ParseExtendedProp");
     }
 }
Exemplo n.º 35
0
 public void SerializeObject(WzObject obj, string outPath)
 {
     //imagesToUnparse.Clear();
     total = 0; curr = 0;
     this.outPath = outPath;
     if (!Directory.Exists(outPath)) WzXmlSerializer.createDirSafe(ref outPath);
     if (outPath.Substring(outPath.Length - 1,1) != @"\") outPath += @"\";
     total = CalculateTotal(obj);
     ExportRecursion(obj, outPath);
     /*foreach (WzImage img in imagesToUnparse)
         img.UnparseImage();
     imagesToUnparse.Clear();*/
 }
Exemplo n.º 36
0
 internal static List<WzImageProperty> ParsePropertyList(uint offset, WzBinaryReader reader, WzObject parent, WzImage parentImg)
 {
     int entryCount = reader.ReadCompressedInt();
     List<WzImageProperty> properties = new List<WzImageProperty>(entryCount);
     for (int i = 0; i < entryCount; i++)
     {
         string name = reader.ReadStringBlock(offset);
         byte ptype = reader.ReadByte();
         switch (ptype)
         {
             case 0:
                 properties.Add(new WzNullProperty(name) { Parent = parent });
                 break;
             case 11:
             case 2:
                 properties.Add(new WzShortProperty(name, reader.ReadInt16()) { Parent = parent });
                 break;
             case 3:
             case 19:
                 properties.Add(new WzIntProperty(name, reader.ReadCompressedInt()) { Parent = parent });
                 break;
             case 20:
                 properties.Add(new WzLongProperty(name, reader.ReadLong()) { Parent = parent });
                 break;
             case 4:
                 byte type = reader.ReadByte();
                 if (type == 0x80)
                     properties.Add(new WzFloatProperty(name, reader.ReadSingle()) { Parent = parent });
                 else if (type == 0)
                     properties.Add(new WzFloatProperty(name, 0f) { Parent = parent });
                 break;
             case 5:
                 properties.Add(new WzDoubleProperty(name, reader.ReadDouble()) { Parent = parent });
                 break;
             case 8:
                 properties.Add(new WzStringProperty(name, reader.ReadStringBlock(offset)) { Parent = parent });
                 break;
             case 9:
                 int eob = (int)(reader.ReadUInt32() + reader.BaseStream.Position);
                 WzImageProperty exProp = ParseExtendedProp(reader, offset, eob, name, parent, parentImg);
                 properties.Add(exProp);
                 if (reader.BaseStream.Position != eob) reader.BaseStream.Position = eob;
                 break;
             default:
                 throw new Exception("Unknown property type at ParsePropertyList");
         }
     }
     return properties;
 }
Exemplo n.º 37
0
 private void ParseChilds(WzObject SourceObject)
 {
     if (SourceObject == null) throw new NullReferenceException("Cannot create a null WzNode");
     Tag = SourceObject;
     SourceObject.HRTag = this;
     if (SourceObject is WzFile) SourceObject = ((WzFile)SourceObject).WzDirectory;
     if (SourceObject is WzDirectory)
     {
         foreach (WzDirectory dir in ((WzDirectory)SourceObject).WzDirectories)
             Nodes.Add(new WzNode(dir));
         foreach (WzImage img in ((WzDirectory)SourceObject).WzImages)
             Nodes.Add(new WzNode(img));
     }
     else if (SourceObject is WzImage)
     {
         if (((WzImage)SourceObject).Parsed)
             foreach (WzImageProperty prop in ((WzImage)SourceObject).WzProperties)
                 Nodes.Add(new WzNode(prop));
     }
     else if (SourceObject is IPropertyContainer)
     {
         foreach (WzImageProperty prop in ((IPropertyContainer)SourceObject).WzProperties)
             Nodes.Add(new WzNode(prop));
     }
 }
Exemplo n.º 38
0
 private int CalculateTotal(WzObject currObj)
 {
     int result = 0;
     if (currObj is WzFile)
         result += ((WzFile)currObj).WzDirectory.CountImages();
     else if (currObj is WzDirectory)
         result += ((WzDirectory)currObj).CountImages();
     return result;
 }
Exemplo n.º 39
0
 private void ExportRecursion(WzObject currObj, string outPath)
 {
     if (currObj is WzFile)
         ExportRecursion(((WzFile)currObj).WzDirectory, outPath);
     else if (currObj is WzDirectory)
     {
         outPath += currObj.Name + @"\";
         if (!Directory.Exists(outPath)) Directory.CreateDirectory(outPath);
         foreach (WzDirectory subdir in ((WzDirectory)currObj).WzDirectories)
             ExportRecursion(subdir, outPath + subdir.Name + @"\");
         foreach (WzImage subimg in ((WzDirectory)currObj).WzImages)
             ExportRecursion(subimg, outPath + subimg.Name + @"\");
     }
     else if (currObj is WzCanvasProperty)
     {
         Bitmap bmp = ((WzCanvasProperty)currObj).PngProperty.GetPNG(false);
         string path = outPath + currObj.Name + ".png";
         bmp.Save(path, ImageFormat.Png);
         //curr++;
     }
     else if (currObj is WzSoundProperty)
     {
         string path = outPath + currObj.Name + ".mp3";
         ((WzSoundProperty)currObj).SaveToFile(path);
     }
     else if (currObj is WzImage)
     {
         outPath += currObj.Name + @"\";
         if (!Directory.Exists(outPath)) Directory.CreateDirectory(outPath);
         bool parse = ((WzImage)currObj).Parsed || ((WzImage)currObj).Changed;
         if (!parse) ((WzImage)currObj).ParseImage();
         foreach (WzImageProperty subprop in ((IPropertyContainer)currObj).WzProperties)
             ExportRecursion(subprop, outPath);
         if (!parse) ((WzImage)currObj).UnparseImage();
         curr++;
     }
     else if (currObj is IPropertyContainer)
     {
         outPath += currObj.Name + ".";
         foreach (WzImageProperty subprop in ((IPropertyContainer)currObj).WzProperties)
             ExportRecursion(subprop, outPath);
     }
     else if (currObj is WzUOLProperty)
         ExportRecursion(((WzUOLProperty)currObj).LinkValue, outPath);
 }
Exemplo n.º 40
0
 public WzNode(WzObject SourceObject)
     : base(SourceObject.Name)
 {
     ParseChilds(SourceObject);
 }
Exemplo n.º 41
0
 private bool ValidAnimation(WzObject prop)
 {
     if (!(prop is WzSubProperty)) return false;
     WzSubProperty castedProp = (WzSubProperty)prop;
     List<WzCanvasProperty> props = new List<WzCanvasProperty>(castedProp.WzProperties.Count);
     int foo;
     foreach (WzImageProperty subprop in castedProp.WzProperties)
     {
         if (!(subprop is WzCanvasProperty)) continue;
         if (!int.TryParse(subprop.Name, out foo)) return false;
         props.Add((WzCanvasProperty)subprop);
     }
     if (props.Count < 2) return false;
     props.Sort(new Comparison<WzCanvasProperty>(AnimationBuilder.PropertySorter));
     for (int i = 0; i < props.Count; i++) if (i.ToString() != props[i].Name) return false;
     return true;
 }
Exemplo n.º 42
0
 private bool addObjInternal(WzObject obj)
 {
     WzObject TaggedObject = (WzObject)Tag;
     if (TaggedObject is WzFile) TaggedObject = ((WzFile)TaggedObject).WzDirectory;
     if (TaggedObject is WzDirectory)
     {
         if (obj is WzDirectory)
             ((WzDirectory)TaggedObject).AddDirectory((WzDirectory)obj);
         else if (obj is WzImage)
             ((WzDirectory)TaggedObject).AddImage((WzImage)obj);
         else return false;
     }
     else if (TaggedObject is WzImage)
     {
         if (!((WzImage)TaggedObject).Parsed) ((WzImage)TaggedObject).ParseImage();
         if (obj is WzImageProperty)
         {
             ((WzImage)TaggedObject).AddProperty((WzImageProperty)obj);
             ((WzImage)TaggedObject).Changed = true;
         }
         else return false;
     }
     else if (TaggedObject is IPropertyContainer)
     {
         if (obj is WzImageProperty)
         {
             ((IPropertyContainer)TaggedObject).AddProperty((WzImageProperty)obj);
             if (TaggedObject is WzImageProperty)
                 ((WzImageProperty)TaggedObject).ParentImage.Changed = true;
         }
         else return false;
     }
     else return false;
     return true;
 }
Exemplo n.º 43
0
 internal static WzExtended ExtractMore(WzBinaryReader reader, uint offset, int eob, string name, string iname, WzObject parent, WzImage imgParent)
 {
     if (iname == "")
         iname = reader.ReadString();
     switch (iname)
     {
         case "Property":
             WzSubProperty subProp = new WzSubProperty(name) { Parent = parent };
             reader.BaseStream.Position += 2; // Reserved?
             subProp.AddProperties(WzImageProperty.ParsePropertyList(offset, reader, subProp, imgParent));
             return subProp;
         case "Canvas":
             WzCanvasProperty canvasProp = new WzCanvasProperty(name) { Parent = parent };
             reader.BaseStream.Position++;
             if (reader.ReadByte() == 1)
             {
                 reader.BaseStream.Position += 2;
                 canvasProp.AddProperties(WzImageProperty.ParsePropertyList(offset, reader, canvasProp, imgParent));
             }
             canvasProp.PngProperty = new WzPngProperty(reader, imgParent.parseEverything) { Parent = canvasProp };
             return canvasProp;
         case "Shape2D#Vector2D":
             WzVectorProperty vecProp = new WzVectorProperty(name) { Parent = parent };
             vecProp.X = new WzIntProperty("X", reader.ReadCompressedInt()) { Parent = vecProp };
             vecProp.Y = new WzIntProperty("Y", reader.ReadCompressedInt()) { Parent = vecProp };
             return vecProp;
         case "Shape2D#Convex2D":
             WzConvexProperty convexProp = new WzConvexProperty(name) { Parent = parent };
             int convexEntryCount = reader.ReadCompressedInt();
             convexProp.WzProperties.Capacity = convexEntryCount;
             for (int i = 0; i < convexEntryCount; i++)
             {
                 convexProp.AddProperty(ParseExtendedProp(reader, offset, 0, name, convexProp, imgParent));
             }
             return convexProp;
         case "Sound_DX8":
             WzSoundProperty soundProp = new WzSoundProperty(name, reader, imgParent.parseEverything) { Parent = parent };
             return soundProp;
         case "UOL":
             reader.BaseStream.Position++;
             switch (reader.ReadByte())
             {
                 case 0:
                     return new WzUOLProperty(name, reader.ReadString()) { Parent = parent };
                 case 1:
                     return new WzUOLProperty(name, reader.ReadStringAtOffset(offset + reader.ReadInt32())) { Parent = parent };
             }
             throw new Exception("Unsupported UOL type");
         default:
             throw new Exception("Unknown iname: " + iname);
     }
 }
Exemplo n.º 44
0
 public MapleDrawableInfo(Bitmap image, Point origin, WzObject parentObject)
 {
     this.Image = image;
     this.origin = origin;
     this.parentObject = parentObject;
 }
Exemplo n.º 45
0
 public static WzObject GetObjectByRelativePath(WzObject currentObject, string path)
 {
     foreach (string directive in path.Split("/".ToCharArray()))
     {
         if (directive == "..") currentObject = currentObject.Parent;
         else if (currentObject is WzImageProperty)
             currentObject = ((WzImageProperty)currentObject)[directive];
         else if (currentObject is WzImage)
             currentObject = ((WzImage)currentObject)[directive];
         else if (currentObject is WzDirectory)
             currentObject = ((WzDirectory)currentObject)[directive];
         else throw new Exception("invalid type");
     }
     return currentObject;
 }
Exemplo n.º 46
0
 public MapleExtractableInfo(Bitmap image, System.Drawing.Point origin, WzObject parentObject)
     : base(image, origin, parentObject)
 {
 }
Exemplo n.º 47
0
 public PortalInfo(string type, Bitmap image, System.Drawing.Point origin, WzObject parentObject)
     : base(image, origin, parentObject)
 {
     this.type = type;
 }
Exemplo n.º 48
0
 public ContextMenuStrip CreateMenu(WzNode node, WzObject Tag)
 {
     ContextMenuStrip menu = null;
     if (Tag is WzImage || Tag is IPropertyContainer)
     {
         if (Tag is WzSubProperty)
         {
             menu = new ContextMenuStrip();
             menu.Items.AddRange(new ToolStripItem[] { AddPropsSubMenu, /*export, import,*/Remove });
         }
         else
         {
             menu = new ContextMenuStrip();
             menu.Items.AddRange(new ToolStripItem[] { AddPropsSubMenu, /*export, import,*/Remove });
         }
     }
     else if (Tag is WzImageProperty)
     {
         menu = new ContextMenuStrip();
         menu.Items.AddRange(new ToolStripItem[] { /*export, import,*/Remove });
     }
     else if (Tag is WzDirectory)
     {
         menu = new ContextMenuStrip();
         menu.Items.AddRange(new ToolStripItem[] { AddDirsSubMenu, /*export, import,*/Remove });
     }
     else if (Tag is WzFile)
     {
         menu = new ContextMenuStrip();
         menu.Items.AddRange(new ToolStripItem[] { AddDirsSubMenu, SaveFile, Unload, Reload });
     }
     currNode = node;
     return menu;
 }
Exemplo n.º 49
0
 private void ShowObjectValue(WzObject obj)
 {
     mp3Player.SoundProperty = null;
     nameBox.Text = obj is WzFile ? ((WzFile)obj).Header.Copyright : obj.Name;
     nameBox.ButtonEnabled = false;
     if (obj is WzFile || obj is WzDirectory || obj is WzImage || obj is WzNullProperty || obj is WzSubProperty || obj is WzConvexProperty)
     {
         nameBox.Visible = true;
         canvasPropBox.Visible = false;
         pictureBoxPanel.Visible = false;
         textPropBox.Visible = false;
         mp3Player.Visible = false;
         vectorPanel.Visible = false;
         applyChangesButton.Visible = false;
         changeImageButton.Visible = false;
         saveImageButton.Visible = false;
         changeSoundButton.Visible = false;
         saveSoundButton.Visible = false;
     }
     else if (obj is WzCanvasProperty)
     {
         nameBox.Visible = true;
         canvasPropBox.Visible = true;
         pictureBoxPanel.Visible = true;
         textPropBox.Visible = false;
         mp3Player.Visible = false;
         canvasPropBox.Image = obj.GetBitmap();
         vectorPanel.Visible = false;
         applyChangesButton.Visible = false;
         changeImageButton.Visible = true;
         saveImageButton.Visible = true;
         changeSoundButton.Visible = false;
         saveSoundButton.Visible = false;
     }
     else if (obj is WzSoundProperty)
     {
         nameBox.Visible = true;
         canvasPropBox.Visible = false;
         pictureBoxPanel.Visible = false;
         textPropBox.Visible = false;
         mp3Player.Visible = true;
         mp3Player.SoundProperty = (WzSoundProperty)obj;
         vectorPanel.Visible = false;
         applyChangesButton.Visible = false;
         changeImageButton.Visible = false;
         saveImageButton.Visible = false;
         changeSoundButton.Visible = true;
         saveSoundButton.Visible = true;
     }
     else if (obj is WzStringProperty || obj is WzIntProperty || obj is WzDoubleProperty || obj is WzFloatProperty || obj is WzShortProperty || obj is WzUOLProperty)
     {
         nameBox.Visible = true;
         canvasPropBox.Visible = false;
         pictureBoxPanel.Visible = false;
         textPropBox.Visible = true;
         mp3Player.Visible = false;
         textPropBox.Text = obj.ToString();
         vectorPanel.Visible = false;
         applyChangesButton.Visible = true;
         changeImageButton.Visible = false;
         saveImageButton.Visible = false;
         changeSoundButton.Visible = false;
         saveSoundButton.Visible = false;
     }
     else if (obj is WzVectorProperty)
     {
         nameBox.Visible = true;
         canvasPropBox.Visible = false;
         pictureBoxPanel.Visible = false;
         textPropBox.Visible = false;
         mp3Player.Visible = false;
         vectorPanel.Visible = true;
         vectorPanel.X = ((WzVectorProperty)obj).X.Value;
         vectorPanel.Y = ((WzVectorProperty)obj).Y.Value;
         applyChangesButton.Visible = true;
         changeImageButton.Visible = false;
         saveImageButton.Visible = false;
         changeSoundButton.Visible = false;
         saveSoundButton.Visible = false;
     }
     else
     {
     }
 }
Exemplo n.º 50
0
 public MobInfo(Bitmap image, System.Drawing.Point origin, string id, string name, WzObject parentObject)
     : base(image, origin, parentObject)
 {
     this.id = id;
     this.name = name;
 }
Exemplo n.º 51
0
 public bool AddObject(WzObject obj, UndoRedoManager undoRedoMan)
 {
     if (CanNodeBeInserted(this, obj.Name))
     {
         TryParseImage();
         if (addObjInternal(obj))
         {
             WzNode node = new WzNode(obj);
             Nodes.Add(node);
             if (node.Tag is WzImageProperty)
                 ((WzImageProperty)node.Tag).ParentImage.Changed = true;
             undoRedoMan.AddUndoBatch(new System.Collections.Generic.List<UndoRedoAction> { UndoRedoManager.ObjectAdded(this, node) });
             node.EnsureVisible();
             return true;
         }
         else
         {
             Warning.Error("Could not insert property, make sure all types are correct");
             return false;
         }
     }
     else
     {
         MessageBox.Show("Cannot insert object \"" + obj.Name + "\" because an object with the same name already exists. Skipping.", "Skipping Object", MessageBoxButtons.OK, MessageBoxIcon.Information);
         return false;
     }
 }