From 4516db6323b32a85a049069fe6b2df6803bc282b Mon Sep 17 00:00:00 2001 From: CorruptComputer Date: Sun, 26 Jul 2015 10:54:16 -0500 Subject: [PATCH] IT WORKS --- tools/dmm2tgm/dmm2tgm.py | 79 -------------- tools/mapmerge/MapMerge.jar | Bin 20563 -> 20839 bytes tools/mapmerge/Run Map Merge.bat | 3 +- .../Source/.settings/org.eclipse.jdt.ui.prefs | 60 +++++++++++ tools/mapmerge/Source/bin/MapMerge.class | Bin 0 -> 3924 bytes tools/mapmerge/Source/src/MapMerge.java | 101 ++++++++++++++++++ tools/mapmerge/Source/src/MapMergerMain.java | 96 ----------------- tools/mapmerge/dmm2tgm.py | 77 +++++++++++++ 8 files changed, 239 insertions(+), 177 deletions(-) delete mode 100644 tools/dmm2tgm/dmm2tgm.py create mode 100644 tools/mapmerge/Source/.settings/org.eclipse.jdt.ui.prefs create mode 100644 tools/mapmerge/Source/bin/MapMerge.class create mode 100644 tools/mapmerge/Source/src/MapMerge.java delete mode 100644 tools/mapmerge/Source/src/MapMergerMain.java create mode 100644 tools/mapmerge/dmm2tgm.py diff --git a/tools/dmm2tgm/dmm2tgm.py b/tools/dmm2tgm/dmm2tgm.py deleted file mode 100644 index ae22a073eee..00000000000 --- a/tools/dmm2tgm/dmm2tgm.py +++ /dev/null @@ -1,79 +0,0 @@ - -import sys - -# .dmm format converter, by RemieRichards -# Version 2.0 -# Converts the internal structure of a .dmm file to a syntax -# that git can better handle conflicts-wise, it's also fairly human readable! -# Processes Boxstation (tgstation.2.1.3) almost instantly - -#TWEAKABLE VARIABLES -map_file = "tgstation.2.1.3.dmm" #Map file, .dmm or .txt -output_file = "" #Output file, .dmm or .txt, leave blank to overwrite map_file - - -#CHECK FOR PREVIOUS CONVERSION -with open(map_file, "r") as conversion_candidate: - header = conversion_candidate.readline() - if header.find("//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE") != -1: - sys.exit("This map has already been converted, cancelling...") - - -#ACTUAL CONVERSION -with open(map_file, "r+") as unconverted_map: - characters = unconverted_map.read() - converted_map = "" - in_object_block = False #() - in_variable_block = False #{} - in_quote_block = False #'' - in_double_quote_block = False #"" - for char in characters: - if char == "(" : - if not in_object_block: - if not in_quote_block: - if not in_double_quote_block: - if not in_variable_block: - in_object_block = True - char = char + "\n" - if char == ")": - if in_object_block: - if not in_quote_block: - if not in_double_quote_block: - if not in_variable_block: - in_object_block = False - if char == "{": - in_variable_block = True - if in_object_block: - char = char + "\n\t" - if char == "}": - in_variable_block = False - if in_object_block: - char = "\n\t"+char - if char == ",": - if not in_variable_block: - char = char + "\n" - if char == "'": - if in_quote_block: - in_quote_block = False - else: - in_quote_block = True - if char == "\"": - if in_double_quote_block: - in_double_quote_block = False - else: - in_double_quote_block = True - if char == ";": - if not in_quote_block: - if not in_double_quote_block: - char = char + "\n\t" - - converted_map = converted_map + char - -if output_file == "": - output_file = map_file -with open(output_file, "r+") as final_converted_map: - final_converted_map.write("//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE \n") - final_converted_map.write(converted_map) - - - diff --git a/tools/mapmerge/MapMerge.jar b/tools/mapmerge/MapMerge.jar index e0bd47ea8366b7d95b8b64c115e41d1edca244c5..b5ac411ced2a719bdad7ce09f85ed77ad1e954e6 100644 GIT binary patch delta 2915 zcmZ9OdoMy7_Je>;M4x0owund$_i8R+Y92MHZ;K zT~7lww`&y8WUDfs18;z~#X0UF;I>fVjThJ!wZcwZ+d@+8{a<2D@*apwp_;?6gVu0y zo!=ZQ0uv`2gWKI|{_0bv^YVbDt>L4kD-d8~%Pn1;Gb_#bW-fjAo#7<-J}v_xRPoXQa%!wEKCV1aJ!lxc=Sk-k@=J36W( zhN7WiLcY?;n!s{HHM^I0<+ki$;HFPqBqQWCv$Yg!Ust5SW-hRuy5$!$Sjk^=EvQGw z1H3I-;8uDGS6o9*wq#s46@IVab+VCEOO(mu5f9(3M^Bng&g?lGx-i*W#=M`Q+Ii|+ zG|0LoWb#;Bx=BWkwv&X@t>fXEIlV}cR`bqhu~f23Rt@+hT~K&GXLjF14f%l%ReCq=^)t58(;;Ghs_-8u{N2Q<$;mbJwNJRxzhM`iW{&7^8*2D#{z}KPSRG6mH z2+jR6GERlJ{#H;m9EMGq=NbC8Mp}4B8{jugE+m=Gm|=5^$;MPJn3425$hW>+wjsJ zmyGtRB9?9Z$g^p0N_;qBw_6IVVg9$hd`wj0@Ixl%Q4u5Ur{ROi&OxjAmV9Z&AuI22 z*xfMjR9Zh>@mxz-lvZe34Z^qc)(N_dg%?gVZ{MRSB-~d>WH#eF%;D@`(#HHK9Bj!sFeK zZ<1!Mwu)ev^k1cwUG~-yNqG|YCn7my@1k)>cYEmRi-a@sKS$(>iA}1hM~baiG=ddi zDnnFuPyK^Q3AisX$YV@(Dnmcg^z&Dh6kG6`13Wpd@>vIGwbU#Gb0gkenVK zN=aC5#T0LA)&54}`hd5lZQ_L1WA&$k2Lfyc55+5ofckVChkr_nM`EQ&#OMm*%{(iW z4?~P()`HAJHdT3EIa=}FTIxkhJ}aVINByT1EH~aZ$o8v2%?l1Sk(yk}Niym)E_U^l zRahJte`D&ADPw_p_B;Z?YImzTepjR-yVc*+ZB8anx^Id|m4T;ym?Tt>C_Vk+p{?Z0 zWvyowV-L|idr2Q^*u!SAtyB?r=7zj|993EOR$YrKh9%lV&BHr%9bz+&7^GB(c%=rd zUhTTYyq`_If;=~AB#1Zx9h_!da!GTwUTTohl16{oJQf&Y7+nEKgV?p~t z5UezF7xIp8uCH+L^|7`YW$&i=mkx1YoiRkbTs&m<)17Cg@{2gR#-DZR%T>1YtE1vV zn2A@Z5Z(8Qhlzn0K zM)K;Z(Vla^WNUdN78PyXLGYJ;j;+;l?b6hd7zSOsiaen8vM-f^VldFx=c=tUY_!MA zO^LYkGj>t5y+!m$0Ui^u6o+59~KZq_G%_#IVxAtvzO04Q<46|_`t}ZdZ_&ZEZ zneSQh%y+MTD}h1I0pv|dSVZGWBO?l4r1WuK@d-lM&fu}@=$=~@Q#BYSPHsc|x(Y-{ z%Um(G6;sp694Ts;_H&}7C6;04#R(CDmEgDO7=kgSV_{G+JG-q{lps-=*W7?3MxH%( zUFpp4h61KTT2kg5_^l!Cr(TS%np!ILHB-x*>C2~jpsTRGqyI%Tt9rLDYiR(*gDq{9~18-OWffB z2`gJa;#qSdRFudpPnJ%Zs?1hCF%n&8k5Tb|uw(unq1L%;wmKqhZ7_ulJInsi(KM+Y z-SsqSiB|Pd`%MCNiS}K417QG`T2oVm+L>jseg%>SGd-BGB&@v|$-QeOX9KtePvLfT z!I_)5bWZp$c=|(U3=xB@_`$ V2uK!AIbbQfV~iUB2t;r7{|~)9EC&Dp delta 2790 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 literal 0 HcmV?d00001 diff --git a/tools/mapmerge/Source/src/MapMerge.java b/tools/mapmerge/Source/src/MapMerge.java new file mode 100644 index 00000000000..120078cc264 --- /dev/null +++ b/tools/mapmerge/Source/src/MapMerge.java @@ -0,0 +1,101 @@ +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Scanner; + +public class MapMerge { + + private static Scanner input = new Scanner(System.in); + private static Path pathToMaps; + + public static void main(String[] mapPath) throws IOException { + pathToMaps = Paths.get(mapPath[0]); + FileFinder dmmFinder = new FileFinder("*.dmm"); + Files.walkFileTree(pathToMaps, dmmFinder); + ArrayList foundFiles = dmmFinder.foundPaths; + if (foundFiles.size() > 0) { + try { + MapMerge.merge(foundFiles); + } catch (Exception e) { + System.out.println("Something went wrong."); + e.printStackTrace(); + } + } else { + System.out.println("No files were found in provided directory!"); + System.out.print("Path to maps folder: "); + pathToMaps = Paths.get(input.nextLine()); + dmmFinder = new FileFinder("*.dmm"); + Files.walkFileTree(pathToMaps, dmmFinder); + foundFiles = dmmFinder.foundPaths; + try { + MapMerge.merge(foundFiles); + } catch (Exception e) { + System.out.println("Something went wrong."); + e.printStackTrace(); + } + } + } + + public static void merge(ArrayList foundFiles) throws IOException { + + System.out.println("How many files do you want to merge?"); + int selection1; + inputCheck: while (true) { + while (!input.hasNextInt()) { + String temp = input.next(); + System.out.println(temp + " is not a valid int."); + } + selection1 = input.nextInt(); + if (selection1 < 0) { + System.out.println("Use a number greater than 0!"); + continue inputCheck; + } else { + break inputCheck; + } + } + + for (int numOfFiles = selection1; numOfFiles != 0; numOfFiles--) { + + for (int num = 0; num < foundFiles.size(); num++) { + System.out.println(num + ": " + foundFiles.get(num)); + } + + System.out.print("File to use: "); + int selection2; + inputCheck: while (true) { + while (!input.hasNextInt()) { + String temp = input.next(); + System.out.println(temp + " is not a valid int."); + } + selection2 = input.nextInt(); + if ((selection2 < 0) || (selection2 >= foundFiles.size())) { + if (selection2 < 0) { + System.out.println("Use a number greater than 0!"); + } else { + System.out.println("Use a number less than " + foundFiles.size() + "!"); + } + continue inputCheck; + } else { + break inputCheck; + } + } + + String selected_map = foundFiles.get(selection2) + ""; + String backup_map = selected_map + ".backup"; + String edited_map = selected_map; + String to_save = selected_map; + String[] passInto = { "-clean", backup_map, edited_map, to_save }; + MapPatcher.main(passInto); + try{ + Process process = new ProcessBuilder("C:\\Python27\\python.exe", "dmm2tgm.py", selected_map).start(); + }catch(Exception e){ + e.printStackTrace(); + System.out.println("This was most likely caused by you not having python 2.7.x installed."); + System.out.println("Downloads can be found here: https://www.python.org/downloads/"); + } + + } + } +} \ No newline at end of file diff --git a/tools/mapmerge/Source/src/MapMergerMain.java b/tools/mapmerge/Source/src/MapMergerMain.java deleted file mode 100644 index 873ae69cd84..00000000000 --- a/tools/mapmerge/Source/src/MapMergerMain.java +++ /dev/null @@ -1,96 +0,0 @@ -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.Scanner; - -public class MapMergerMain { - - private static Scanner input = new Scanner(System.in); - - public static void main(String[] mapPath) throws IOException{ - Path pathToMaps = Paths.get(mapPath[0]); - FileFinder dmmFinder = new FileFinder("*.dmm"); - Files.walkFileTree(pathToMaps, dmmFinder); - ArrayList foundFiles = dmmFinder.foundPaths; - if (foundFiles.size() > 0) { - try{ - merge(foundFiles); - }catch(Exception e){ - System.out.println("Something went wrong."); - e.printStackTrace(); - } - }else{ - System.out.println("No files were found in provided directory!"); - System.out.print("Path to maps folder: "); - pathToMaps = Paths.get(input.nextLine()); - dmmFinder = new FileFinder("*.dmm"); - Files.walkFileTree(pathToMaps, dmmFinder); - foundFiles = dmmFinder.foundPaths; - try{ - merge(foundFiles); - }catch(Exception e){ - System.out.println("Something went wrong."); - e.printStackTrace(); - } - } - } - - - public static void merge(ArrayList foundFiles){ - - System.out.println("How many files do you want to merge?"); - int selection1; - inputCheck:while(true){ - while(!input.hasNextInt()){ - String temp = input.next(); - System.out.println(temp + " is not a valid int."); - } - selection1 = input.nextInt(); - if(selection1 < 0){ - System.out.println("Use a number greater than 0!"); - continue inputCheck; - }else{ - break inputCheck; - } - } - - for(int numOfFiles = selection1; numOfFiles != 0; numOfFiles--){ - - for(int num = 0;num < foundFiles.size();num++){ - System.out.println(num + ": " + foundFiles.get(num)); - } - - System.out.print("File to use: "); - int selection2; - inputCheck:while(true){ - while(!input.hasNextInt()){ - String temp = input.next(); - System.out.println(temp + " is not a valid int."); - } - selection2 = input.nextInt(); - if(selection2 < 0 || selection2 >= foundFiles.size()){ - if(selection2 < 0){ - System.out.println("Use a number greater than 0!"); - }else{ - System.out.println("Use a number less than " + foundFiles.size() +"!"); - } - continue inputCheck; - }else{ - break inputCheck; - } - } - - String newMap = foundFiles.get(selection2) + ""; - String oldMap = foundFiles.get(selection2) + ".backup"; - String[] passInto = new String[4]; - passInto[0] = "-clean"; - passInto[1] = oldMap; - passInto[2] = newMap; - passInto[3] = newMap; - MapPatcher.main(passInto); - } - } - -} \ No newline at end of file diff --git a/tools/mapmerge/dmm2tgm.py b/tools/mapmerge/dmm2tgm.py new file mode 100644 index 00000000000..637986f9a67 --- /dev/null +++ b/tools/mapmerge/dmm2tgm.py @@ -0,0 +1,77 @@ + +import sys + +# .dmm format converter, by RemieRichards +# Version 2.0 +# Converts the internal structure of a .dmm file to a syntax +# that git can better handle conflicts-wise, it's also fairly human readable! +# Processes Boxstation (tgstation.2.1.3) almost instantly + + +def convert_map(map_file): + #CHECK FOR PREVIOUS CONVERSION + with open(map_file, "r") as conversion_candidate: + header = conversion_candidate.readline() + if header.find("//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE") != -1: + sys.exit() + return + + + #ACTUAL CONVERSION + with open(map_file, "r+") as unconverted_map: + characters = unconverted_map.read() + converted_map = "" + in_object_block = False #() + in_variable_block = False #{} + in_quote_block = False #'' + in_double_quote_block = False #"" + for char in characters: + if not in_quote_block: #Checking for things like "Flashbangs (Warning!)" Because we only care about ({'";, that are used as byond syntax, not strings + if not in_double_quote_block: + if not in_variable_block: + if char == "(": + in_object_block = True + char = char + "\n" + if char == ")": + in_object_block = False + if char == ",": + char = char + "\n" + + if char == "{": + in_variable_block = True + if in_object_block: + char = char + "\n\t" + if char == "}": + in_variable_block = False + if in_object_block: + char = "\n\t" + char + + if char == ";": + char = char + "\n\t" + + if char == "\"": + if in_double_quote_block: + in_double_quote_block = False + else: + in_double_quote_block = True + + if char == "'": + if not in_double_quote_block: + if in_quote_block: + in_quote_block = False + else: + in_quote_block = True + + converted_map = converted_map + char + + #OVERWRITE MAP FILE WITH CONVERTED MAP STRING + with open(map_file, "r+") as final_converted_map: + final_converted_map.write("//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE \n") + final_converted_map.write(converted_map) + + sys.exit() + + +if sys.argv[1]: #Run like dmm2tgm.py "folder/folder/a_map.dmm" + convert_map(sys.argv[1]) +