package prc; import prc.autodoc.ErrorPrinter; import prc.autodoc.Spinner; /** * A menu class. Calls operations from classes in subpackages based on parameters * * @author heikki */ public class Main { /** Version number for public releases. Raise by one whenever doing a release. */ private static final int releaseNum = 1; /** A convenience object for printing both to log and System.err */ public static ErrorPrinter err_pr = new ErrorPrinter(); /** A boolean determining whether to spam the user with progress information */ public static boolean verbose = true; /** A decorative spinner to look at while the program is loading big files */ public static Spinner spinner = new Spinner(); /** * Ooh, a main method! * * @param args arguments, surprisingly enough * * @throws Throwable everything received from the classes called is passed on */ public static void main(String[] args) throws Throwable{ if(args.length == 0 || args[0].equals("--help")) readMe(); String toCall = args[0]; String[] paramsToPass = new String[args.length - 1]; System.arraycopy(args, 1, paramsToPass, 0, paramsToPass.length); if(toCall.equals("manual")){ prc.autodoc.Main.main(paramsToPass); } else if(toCall.equals("2da")){ prc.autodoc.Data_2da.main(paramsToPass); } else if(toCall.equals("codegen")){ prc.utils.CodeGen.main(paramsToPass); } else if(toCall.equals("radials")){ prc.utils.Radials.main(paramsToPass); } else if(toCall.equals("lssubrad")){ prc.utils.ListSubradials.main(paramsToPass); } else if(toCall.equals("dupsubrad")){ prc.utils.DuplicateSubradials.main(paramsToPass); } else if(toCall.equals("makedep")){ prc.makedep.Main.main(paramsToPass); } else if(toCall.equals("upclsfeat")){ prc.utils.AllClassFeatUpdater.main(paramsToPass); } else if(toCall.equals("lsentries")){ prc.utils.List2daEntries.main(paramsToPass); } else if(toCall.equals("dupentries")){ prc.utils.Duplicate2daEntryDetector.main(paramsToPass); } else if(toCall.equals("2datosql")){ prc.utils.SQLMaker.main(paramsToPass); } else if(toCall.equals("spellbookmaker")){ prc.utils.SpellbookMaker.main(paramsToPass); } else if(toCall.equals("amsspellbookmaker")){ prc.utils.AMSSpellbookMaker.main(paramsToPass); } else if(toCall.equals("itempropmaker")){ prc.utils.ItempropMaker.main(paramsToPass); } else if(toCall.equals("letoxml")){ prc.utils.LetoListsGenerator.main(paramsToPass); } else if(toCall.equals("prec2dagen")){ prc.utils.Precache2daGen.main(paramsToPass); } else if(toCall.equals("scrmrchgen")){ prc.utils.ScrollMerchantGen.main(paramsToPass); } else if(toCall.equals("npcevol")){ prc.utils.NPCEvolve.main(paramsToPass); } else if(toCall.equals("2damerge")){ prc.utils.Data2daMerge.main(paramsToPass); } else if(toCall.equals("blank2da")){ prc.utils.Blank2daRows.main(paramsToPass); } else if(toCall.equals("validator")){ prc.utils.Validator.main(paramsToPass); } else if(toCall.equals("updatedescrft")){ prc.utils.UpdateDes.main(paramsToPass); } else if(toCall.equals("scrollgen")){ prc.utils.ScrollGen.main(paramsToPass); } else if(toCall.equals("buildscrhack")){ prc.utils.BuildScrollHack.main(paramsToPass); } else{ System.out.println("Unknown class: " + toCall); readMe(); } } /** * Prints the use instructions for this program and kills execution. */ private static void readMe(){ // 0 1 2 3 4 5 6 7 8 // 12345678901234567890123456789012345678901234567890123456789012345678901234567890 System.out.println("Usage:\n"+ " java -jar prc.jar [--help] | tool [parameters]\n"+ "\n"+ "tool name of the tool to call. possible values:\n"+ " 2da - Either verifies a single 2da file or compares two\n"+ " 2damerge - Merges 2 directories of 2da files, and outputs to a third\n" + " blank2da - Blanks rows in a 2da\n" + " codegen - Autogenerates scripts (or other files)\n"+ " dupentries - Seeks for duplicate entries in the given columns\n" + " of a given 2da\n"+ " dupsubrad - Seeks through spells.2da and prints lines\n"+ " containing duplicate subradial values\n"+ " letoxml - Creates Leto XML lists from 2da and TLK\n" + " lsentries - Lists the unique entries in given columns of a\n" + " given 2da\n" + " lssubrad - Lists subradial IDs used in spells.2da\n" + " makedep - Builds include dependency lists\n" + " radials - Generates subradial FeatID values\n"+ "\n" + " The following tools are also available, but almost certainly too\n" + " specialized for general use:\n" + " 2datosql - Creates a SQL file from 2das\n" + " itempropmaker - Creates the itemproperty cache item templates\n" + " manual - Generates the manual\n"+ " npcevol - Alters packages based on logfile scores\n" + " upclsfeat - Updates base cls_feat_*.2da based on given templates\n" + " prec2dagen - Creates a 2da file that lists spells/feat.2da rows\n" + " that should be precached\n" + " scrmrchgen - Creates scroll merchant based on des_crft_scroll.2da\n" + " spellbookmaker - Creates and/or updates the new spellbooks data\n" + " amsspellbookmaker - Creates and/or updates the new AMS spellbooks data\n" + " validator - Performs a bunch of 2da integrity tests\n" + " updatedescrft - Updates des_crft_*.2da based on spells.2da\n" + " scrollgen - Create spell scrolls based on (iprp_)spells.2da\n" + "\n"+ "parameters a list of parameters passed to the tool called\n"+ "\n"+ "--help prints this info you are reading\n" + "\n" + "\n" + "Release number: " + releaseNum + "\n" ); System.exit(0); } }