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); }
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(); } }
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; } } } }