示例#1
0
        private void addRectangle_Click(object send, int spriteIndex, int v)
        {
            SpriteList.Nodes[spriteIndex].Nodes.Add((v + 1).ToString());
            SpriteRectangles sprR = new SpriteRectangles();

            sprR.Index      = v + 1;
            sprR.spriteRect = new Rectangle(0, 0, 0, 0);
            SpriteArray[spriteIndex].spriteRects.Add(sprR);
        }
示例#2
0
        private void RectangleDataBox_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)Keys.Enter)
            {
                Rectangle rect = new Rectangle()
                {
                    X      = Convert.ToInt32((sender as TextBox).Parent.Controls["txtBox_X"].Text),
                    Y      = Convert.ToInt32((sender as TextBox).Parent.Controls["txtBox_Y"].Text),
                    Width  = Convert.ToInt32((sender as TextBox).Parent.Controls["txtBox_W"].Text),
                    Height = Convert.ToInt32((sender as TextBox).Parent.Controls["txtBox_H"].Text)
                };
                SpriteRectangles sprR = SpriteArray[SelectedParentNode].spriteRects[SelectedRect];
                sprR.spriteRect = rect;
                sprR.xOffset    = Convert.ToInt32((sender as TextBox).Parent.Controls["txtBox_xOffset"].Text);

                if (sprR.Index > spriteAnimations.Count - 1)
                {
                    SpriteAnimation spA = new SpriteAnimation();
                    spA.bounds = rect;
                    spA.offset = sprR.xOffset;
                    spriteAnimations.Add(spA);
                }
                else
                {
                    SpriteAnimation spA = spriteAnimations[sprR.Index];
                    spA.bounds = rect;
                    spA.offset = sprR.xOffset;
                    spriteAnimations[sprR.Index] = spA;
                }

                SpriteArray[SelectedParentNode].spriteRects[SelectedRect] = sprR;
                List <Rectangle> _rect = new List <Rectangle>();
                foreach (SpriteRectangles s in SpriteArray[SelectedParentNode].spriteRects)
                {
                    _rect.Add(s.spriteRect);
                }
                _sprRectangles = _rect.ToArray();
                PictureView.Refresh();
            }
        }
示例#3
0
        public void fileOpen_Click(object sender, EventArgs e, string openFile = null)
        {
            bool Continue = false;

            if (openFile == null)
            {
                OpenFileDialog oFD = new OpenFileDialog();
                oFD.Filter = ".PAK Data Files (*.pak)|*.pak";

                if (oFD.ShowDialog() == DialogResult.OK)
                {
                    Continue = true;
                    openFile = oFD.FileName;
                }
            }
            else
            {
                Continue = true;
            }

            if (Continue)
            {
                ClearTable();
                ToggleMenuItem(3, true);
                ToggleMenuItem(4, true);
                using (MemoryStream mS = new MemoryStream(DecryptPAKFile(File.ReadAllBytes(openFile))))
                //using (MemoryStream mS = new MemoryStream(File.ReadAllBytes(oFD.FileName)))
                {
                    int dataLength  = 0;
                    int imageSize   = 0;
                    int currentRead = 0;
                    while (mS.Position < mS.Length)
                    {
                        // Set current position of reading
                        byte[] _nMS = new byte[(mS.ToArray().Length - currentRead)];
                        Array.Copy(mS.ToArray(), currentRead, _nMS, 0, _nMS.Length);

                        string _str = Encoding.ASCII.GetString(_nMS);

                        bool isPAK = _str.Substring(0, 5) == "<PAK>" ? true : false;
                        if (isPAK)
                        {
                            _str = _str.Substring(5, _str.Length - 5);
                        }

                        // Get rectangle data length
                        dataLength = Encoding.ASCII.GetByteCount(_str.Substring(0, _str.IndexOf('?')));

                        // Get rectangle data
                        string           rectBuff = _str.Substring(0, _str.IndexOf('?'));
                        List <Rectangle> rects    = new List <Rectangle>();
                        List <int>       xOffset  = new List <int>();
                        for (int i = 0; i < rectBuff.Split('~').Length - 2; i++)
                        {
                            string     _s = rectBuff.Split('~')[i];
                            List <int> _i = new List <int>();
                            foreach (string _tsr in _s.Split('|'))
                            {
                                _i.Add(Convert.ToInt32(_tsr));
                            }
                            int[] rectData = _i.ToArray();
                            rects.Add(new Rectangle(rectData[0], rectData[1], rectData[2], rectData[3]));
                            if (rectData.Length <= 4)
                            {
                                xOffset.Add(0);
                            }
                            else
                            {
                                xOffset.Add(rectData[4]);   // Should be xoffset if saved properly
                            }
                        }

                        // Get Image bytes
                        imageSize = Convert.ToInt32(rectBuff.Split('~').ElementAt(rectBuff.Split('~').Count() - 2));
                        byte[] ImageBuff = new byte[imageSize];
                        Array.Copy(_nMS, dataLength + 5, ImageBuff, 0, imageSize);

                        // Add to user view
                        Sprite _spr = new Sprite();
                        _spr.Index      = SpriteList.GetNodeCount(false);
                        _spr.ImageBytes = ImageBuff;

                        SpriteList.Nodes.Add("Sprite " + SpriteList.GetNodeCount(false));

                        // Place rectangles
                        _spr.spriteRects = new List <SpriteRectangles>();
                        foreach (Rectangle r in rects)
                        {
                            SpriteRectangles _sprRects = new SpriteRectangles();
                            _sprRects.Index      = SpriteList.Nodes[SpriteList.GetNodeCount(false) - 1].GetNodeCount(false);
                            _sprRects.spriteRect = r;
                            _spr.spriteRects.Add(_sprRects);
                            SpriteList.Nodes[SpriteList.GetNodeCount(false) - 1].Nodes.Add(SpriteList.Nodes[SpriteList.GetNodeCount(false) - 1].GetNodeCount(false).ToString());
                        }
                        for (int i = 0; i < _spr.spriteRects.Count; i++)
                        {
                            SpriteRectangles _sprRects = _spr.spriteRects[i];
                            _sprRects.xOffset   = xOffset[i];
                            _spr.spriteRects[i] = _sprRects;
                        }

                        SpriteArray.Add(_spr);
                        currentRead += dataLength + imageSize + 5;
                        mS.Position  = currentRead;
                    }
                }
            }
        }