Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
117 lines
4.4 KiB
Java
117 lines
4.4 KiB
Java
package prc.utils;
|
|
|
|
import prc.autodoc.*;
|
|
|
|
import java.io.File;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* A tool for blanking ranges of 2da rows.
|
|
*
|
|
* @author Ornedan
|
|
*/
|
|
public class Blank2daRows {
|
|
|
|
/**
|
|
* Ye olde maine methode.
|
|
*
|
|
* @param args The program arguments, as usual.
|
|
* @throws Exception
|
|
*/
|
|
public static void main(String[] args) throws Exception {
|
|
if (args.length == 0) readMe();
|
|
String targetPath = null;
|
|
List<int[]> ranges = new ArrayList<int[]>();
|
|
|
|
for (String param : args) {//target B-E ... | [--help]
|
|
// Parameter parseage
|
|
if (param.startsWith("-")) {
|
|
if (param.equals("--help")) readMe();
|
|
else {
|
|
for (char c : param.substring(1).toCharArray()) {
|
|
switch (c) {
|
|
default:
|
|
System.err.println("Unknown parameter: " + c);
|
|
readMe();
|
|
}
|
|
}
|
|
}
|
|
} else
|
|
// If the target file hasn't been specified, assume this is it
|
|
if (targetPath == null)
|
|
targetPath = param;
|
|
else {
|
|
try {
|
|
if (!param.contains("-")) throw new Exception(); // Missing -
|
|
String[] rawNums = param.split("-");
|
|
if (rawNums.length != 2) throw new Exception(); // More than two numbers(?) in the string
|
|
int[] range = new int[]{Integer.parseInt(rawNums[0]), Integer.parseInt(rawNums[1])};
|
|
ranges.add(range);
|
|
} catch (Exception e) {
|
|
System.err.println("Malformed number pair:" + param);
|
|
System.exit(1);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Load the 2da
|
|
Data_2da target = Data_2da.load2da(targetPath);
|
|
|
|
// Bounds checks
|
|
for (int[] range : ranges) {
|
|
if (range[0] > range[1]) { // Lower bound > upper bound
|
|
System.err.println("Lower bound > upper bound in pair: " + range[0] + "-" + range[1]);
|
|
System.exit(1);
|
|
}
|
|
if (range[0] < 0 || range[1] < 0 ||
|
|
range[0] >= target.getEntryCount() ||
|
|
range[1] >= target.getEntryCount()) { // Bound out of range
|
|
System.err.println("Bound out of range in pair: " + range[0] + "-" + range[1]);
|
|
System.exit(1);
|
|
}
|
|
}
|
|
|
|
// Do blanking
|
|
for (int[] range : ranges)
|
|
blankRows(target, range[0], range[1]);
|
|
|
|
// Save 2da back out
|
|
target.save2da(new File(targetPath).getParent(), true, true);
|
|
}
|
|
|
|
/**
|
|
* Does the row blanking - replaces the contents of each column in the affected row range with whatever
|
|
* is the default value in this 2da.
|
|
*
|
|
* @param target Data_2da to perform the operation on
|
|
* @param begin Beginning of the range to blank, inclusive
|
|
* @param end End of the range to blank, inclusive
|
|
*/
|
|
private static void blankRows(Data_2da target, int begin, int end) {
|
|
for (int i = begin; i <= end; i++) {
|
|
for (String label : target.getLabels())
|
|
target.setEntry(label, i, null);
|
|
}
|
|
}
|
|
|
|
private static void readMe() {
|
|
// 0 1 2 3 4 5 6 7 8
|
|
// 12345678901234567890123456789012345678901234567890123456789012345678901234567890
|
|
System.out.println("Usage:\n" +
|
|
" target B-E ... | [--help]\n" +
|
|
"\n" +
|
|
" This tool blanks rows in a 2da file, replacing the contents of given rows with\n" +
|
|
" either **** or the 2da-specific default value if such is specified.\n" +
|
|
"\n" +
|
|
" target Path to the 2da file to apply the blanking operation to\n" +
|
|
" B-E Row number pair, specifying which rows in the file to blank. Inclusive,\n" +
|
|
" for example 1000-1002 would blank rows 1000, 1001 and 1002. Multiple\n" +
|
|
" ranges may be specified.\n" +
|
|
"\n" +
|
|
" --help prints this text\n"
|
|
);
|
|
System.exit(0);
|
|
}
|
|
}
|