private void extratToClick(object sender, EventArgs e) { if (folderdialog.ShowDialog(this) != DialogResult.OK) { return; } ExtractResourcesDialog.LockedFlipX = Animation.RequireFlipX(animationCreator1.Animations); ExtractResourcesDialog.LockedFlipY = Animation.RequireFlipY(animationCreator1.Animations); if (ExtractResourcesDialog.Show(this) != DialogResult.OK) { return; } string path = folderdialog.SelectedPath; path += "\\"; int boolcounter = 0; if (ExtractResourcesDialog.Code) { boolcounter++; } if (ExtractResourcesDialog.SP1) { boolcounter++; } if (ExtractResourcesDialog.SP2) { boolcounter++; } if (ExtractResourcesDialog.SP3) { boolcounter++; } if (ExtractResourcesDialog.SP4) { boolcounter++; } if (ExtractResourcesDialog.Palette) { boolcounter++; } if (boolcounter == 0) { MessageBox.Show("Congratulations, you extract nothing, eat a cookie.", "?????????", MessageBoxButtons.OK, MessageBoxIcon.Hand); } else if (boolcounter > 1) { path += ExtractResourcesDialog.ProjectName; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } path += "\\"; } Tuple <string, string, string, byte[]> t = null; if (NewProjectWindow.ProjectType == 1) { t = Frame.GetDynamicSource(frameCreator1.Frames); } if (ExtractResourcesDialog.Code) { RefreshCode(); string s = codeEditorController1.CodeEditor.Text; Frame.GetFramesIndexs(frameCreator1.Frames); s = s.Replace(">ResTiles.", "#$" + Frame.TilesUsed.ToString("X2")); s = s.Replace("dw >resoff.", t.Item1); s = s.Replace("dw >ressz.", t.Item2); s = s.Replace(">lns.", t.Item3); if (t.Item3 == "!Scratch52") { s = s.Replace(">difrows.", "LDA !FrameIndex,x\n\tTAY\n\tLDA ResourceLastRow,y\n\tSTA !Scratch52"); } else { s = s.Replace(">difrows.", ""); } HitBox[] hbs = Frame.GetFramesHitboxesFromFrameList(frameCreator1.Frames, ExtractResourcesDialog.FlipX, ExtractResourcesDialog.FlipY); s = s.Replace("dw >intAdd.", Frame.GetFramesFlippersFromFrameList(frameCreator1.Frames, ExtractResourcesDialog.FlipX, ExtractResourcesDialog.FlipY)); s = s.Replace("dw >hbst.", HitBox.GetHitboxesStartsFromArray(hbs)); s = s.Replace("dw >fhbsInd.", Frame.GetFramesHitboxesIndexersFromFrameList(frameCreator1.Frames, ExtractResourcesDialog.FlipX, ExtractResourcesDialog.FlipY)); s = s.Replace("db >fhbs.", Frame.GetFramesHitboxesIdsFromFrameList(frameCreator1.Frames, hbs, ExtractResourcesDialog.FlipX, ExtractResourcesDialog.FlipY)); s = s.Replace("db >hbs.", HitBox.GetHitboxesFromArray(hbs, interactionMenu1.GetActionNames())); s = s.Replace("dw >hbacts.", interactionMenu1.GetActionString(codeEditorController1.CodeEditor.Text)); s = s.Replace("dw >fls.", Frame.GetFramesLengthFromFrameList(frameCreator1.Frames, ExtractResourcesDialog.FlipX, ExtractResourcesDialog.FlipY)); s = s.Replace("dw >ffps.", Frame.GetFramesFlippersFromFrameList(frameCreator1.Frames, ExtractResourcesDialog.FlipX, ExtractResourcesDialog.FlipY)); s = s.Replace("dw >fsp.", Frame.GetFramesStartsFromFrameList(frameCreator1.Frames, ExtractResourcesDialog.FlipX, ExtractResourcesDialog.FlipY)); s = s.Replace("dw >fep.", Frame.GetFramesEndsFromFrameList(frameCreator1.Frames, ExtractResourcesDialog.FlipX, ExtractResourcesDialog.FlipY)); s = s.Replace("db >tiles.", Frame.GetTilesCodesFromFrameList(frameCreator1.Frames, ExtractResourcesDialog.FlipX, ExtractResourcesDialog.FlipY)); bool sameprop = Frame.SameProp(frameCreator1.Frames); s = s.Replace("db >props.", Frame.GetTilesPropertiesFromFrameList(frameCreator1.Frames, ExtractResourcesDialog.FlipX, ExtractResourcesDialog.FlipY, sameprop)); s = s.Replace("db >xdisps.", Frame.GetTilesXDispFromFrameList(frameCreator1.Frames, ExtractResourcesDialog.FlipX, ExtractResourcesDialog.FlipY)); s = s.Replace("db >ydisps.", Frame.GetTilesYDispFromFrameList(frameCreator1.Frames, ExtractResourcesDialog.FlipX, ExtractResourcesDialog.FlipY)); s = s.Replace("db >sizes.", Frame.GetTilesSizesFromFrameList(frameCreator1.Frames, ExtractResourcesDialog.FlipX, ExtractResourcesDialog.FlipY)); s = s.Replace("dw >anl.", Animation.GetAnimationLenghts(animationCreator1.Animations)); s = s.Replace("dw >alt.", Animation.GetAnimationLastTransitions(animationCreator1.Animations)); s = s.Replace("dw >ai.", Animation.GetAnimationIndexers(animationCreator1.Animations)); s = s.Replace("db >af.", Animation.GetAnimationFrames(animationCreator1.Animations)); s = s.Replace("db >aft.", Animation.GetAnimationTimes(animationCreator1.Animations)); s = s.Replace("db >aff.", Animation.GetAnimationFlips(animationCreator1.Animations)); s = File.ReadAllText(@".\ASM\Defines.asm") + "\n" + s; if (File.Exists(path + ExtractResourcesDialog.ProjectName + ".asm")) { File.Delete(path + ExtractResourcesDialog.ProjectName + ".asm"); } File.WriteAllText(path + ExtractResourcesDialog.ProjectName + ".asm", s); } if (ExtractResourcesDialog.SP1 || ExtractResourcesDialog.SP2) { if (File.Exists(path + ExtractResourcesDialog.ProjectName + ".bin")) { File.Delete(path + ExtractResourcesDialog.ProjectName + ".bin"); } File.WriteAllBytes(path + ExtractResourcesDialog.ProjectName + ".bin", t.Item4); byte[] sp12 = spriteGFXBox1.GetGFX(); if (ExtractResourcesDialog.SP1) { byte[] sp1 = new byte[sp12.Length / 2]; for (int i = 0; i < sp1.Length; i++) { sp1[i] = sp12[i]; } if (File.Exists(path + ExtractResourcesDialog.ProjectName + "SP1.bin")) { File.Delete(path + ExtractResourcesDialog.ProjectName + "SP1.bin"); } File.WriteAllBytes(path + ExtractResourcesDialog.ProjectName + "SP1.bin", sp1); } if (ExtractResourcesDialog.SP2) { byte[] sp2 = new byte[sp12.Length / 2]; for (int i = 0; i < sp2.Length; i++) { sp2[i] = sp12[i + sp2.Length]; } if (File.Exists(path + ExtractResourcesDialog.ProjectName + "SP2.bin")) { File.Delete(path + ExtractResourcesDialog.ProjectName + "SP2.bin"); } File.WriteAllBytes(path + ExtractResourcesDialog.ProjectName + "SP2.bin", sp2); } } if (ExtractResourcesDialog.SP3 || ExtractResourcesDialog.SP4) { byte[] sp34 = spriteGFXBox2.GetGFX(); if (ExtractResourcesDialog.SP3) { byte[] sp3 = new byte[sp34.Length / 2]; for (int i = 0; i < sp3.Length; i++) { sp3[i] = sp34[i]; } if (File.Exists(path + ExtractResourcesDialog.ProjectName + "SP3.bin")) { File.Delete(path + ExtractResourcesDialog.ProjectName + "SP3.bin"); } File.WriteAllBytes(path + ExtractResourcesDialog.ProjectName + "SP3.bin", sp3); } if (ExtractResourcesDialog.SP4) { byte[] sp4 = new byte[sp34.Length / 2]; for (int i = 0; i < sp4.Length; i++) { sp4[i] = sp34[i + sp4.Length]; } if (File.Exists(path + ExtractResourcesDialog.ProjectName + "SP4.bin")) { File.Delete(path + ExtractResourcesDialog.ProjectName + "SP4.bin"); } File.WriteAllBytes(path + ExtractResourcesDialog.ProjectName + "SP4.bin", sp4); } } if (ExtractResourcesDialog.Palette) { byte[] pal = ColorPalette.SaveGlobalPalette(); if (File.Exists(path + ExtractResourcesDialog.ProjectName + "Palette.pal")) { File.Delete(path + ExtractResourcesDialog.ProjectName + "Palette.pal"); } File.WriteAllBytes(path + ExtractResourcesDialog.ProjectName + "Palette.pal", pal); } MessageBox.Show("Resources extracted successfully", "Extract Resources", MessageBoxButtons.OK, MessageBoxIcon.Information); }