Read/write requires[] and extracts[]
This commit is contained in:
@@ -163,12 +163,15 @@ public class Clifford implements ActionListener {
|
|||||||
JOptionPane.showMessageDialog(frame, "Mod name cannot be empty.", "Error", JOptionPane.ERROR_MESSAGE);
|
JOptionPane.showMessageDialog(frame, "Mod name cannot be empty.", "Error", JOptionPane.ERROR_MESSAGE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
container.put("version", mod.version);
|
container.put("version", mod.version);
|
||||||
container.put("friendlyName", mod.friendlyName);
|
container.put("friendlyName", mod.friendlyName);
|
||||||
container.put("author", mod.author);
|
container.put("author", mod.author);
|
||||||
container.put("description", mod.description);
|
container.put("description", mod.description);
|
||||||
container.put("loaderversion", mod.loaderversion);
|
container.put("loaderversion", mod.loaderversion);
|
||||||
container.put("game", mod.game);
|
container.put("game", mod.game);
|
||||||
|
if (!mod.requires.isEmpty()) container.put("requires", mod.requires);
|
||||||
|
if (!mod.extracts.isEmpty()) container.put("extracts", mod.extracts);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
new ZipFile(System.getProperty("user.home") + "/.firestar/mods/" + mod.path.trim()).setComment(container.toString());
|
new ZipFile(System.getProperty("user.home") + "/.firestar/mods/" + mod.path.trim()).setComment(container.toString());
|
||||||
@@ -213,22 +216,39 @@ public class Clifford implements ActionListener {
|
|||||||
hasScript = true;
|
hasScript = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ArrayList<String> requires = new ArrayList<>();
|
||||||
|
ArrayList<String> extracts = new ArrayList<>();
|
||||||
|
if (isSoundtrack) {
|
||||||
|
requires.add("data2.psarc");
|
||||||
|
extracts.add("data/plugins/music/Definition.xml");
|
||||||
|
extracts.add("data/plugins/languages/american/entries.xml");
|
||||||
|
extracts.add("data/plugins/languages/danish/entries.xml");
|
||||||
|
extracts.add("data/plugins/languages/dutch/entries.xml");
|
||||||
|
extracts.add("data/plugins/languages/english/entries.xml");
|
||||||
|
extracts.add("data/plugins/languages/finnish/entries.xml");
|
||||||
|
extracts.add("data/plugins/languages/french/entries.xml");
|
||||||
|
extracts.add("data/plugins/languages/german/entries.xml");
|
||||||
|
extracts.add("data/plugins/languages/italian/entries.xml");
|
||||||
|
extracts.add("data/plugins/languages/japanese/entries.xml");
|
||||||
|
extracts.add("data/plugins/languages/norwegian/entries.xml");
|
||||||
|
extracts.add("data/plugins/languages/polish/entries.xml");
|
||||||
|
extracts.add("data/plugins/languages/portuguese/entries.xml");
|
||||||
|
extracts.add("data/plugins/languages/russian/entries.xml");
|
||||||
|
extracts.add("data/plugins/languages/spanish/entries.xml");
|
||||||
|
extracts.add("data/plugins/languages/swedish/entries.xml");
|
||||||
|
}
|
||||||
|
|
||||||
JSONObject container = new JSONObject();
|
JSONObject container = new JSONObject();
|
||||||
container.put("version", Integer.parseInt(fVersion.getText()));
|
container.put("version", Integer.parseInt(fVersion.getText()));
|
||||||
container.put("friendlyName", fName.getText());
|
container.put("friendlyName", fName.getText());
|
||||||
container.put("author", fAuthor.getText());
|
container.put("author", fAuthor.getText());
|
||||||
container.put("description", fDescription.getText());
|
container.put("description", fDescription.getText());
|
||||||
|
if (!requires.isEmpty()) container.put("requires", requires);
|
||||||
|
if (!extracts.isEmpty()) container.put("extracts", extracts);
|
||||||
// todo later versions: handle logic for setting this depending on the fscript version too.
|
// todo later versions: handle logic for setting this depending on the fscript version too.
|
||||||
// firestar 1.3 can't generate any version other than v1 so this is not necessary right now, but will become necessary when fscript features are added.
|
// firestar 1.3 can't generate any version other than v1 so this is not necessary right now, but will become necessary when fscript features are added.
|
||||||
if (hasScript) {
|
if (hasScript) {
|
||||||
container.put("loaderversion", 1);
|
container.put("loaderversion", 1);
|
||||||
if (isSoundtrack) {
|
|
||||||
ArrayList<boolean[]> requiresTemp = new ArrayList<>();
|
|
||||||
requiresTemp.add(new boolean[]{false, true, false, false});
|
|
||||||
requiresTemp.add(new boolean[]{true, false, false, false});
|
|
||||||
container.put("requires", requiresTemp); // Pull localization files for patching.
|
|
||||||
// TODO: container.put paths patched in fscript
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
container.put("loaderversion", 0);
|
container.put("loaderversion", 0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ public class Main {
|
|||||||
|
|
||||||
public enum ArcTarget { // install target for 2048, type used by downloader
|
public enum ArcTarget { // install target for 2048, type used by downloader
|
||||||
BASE("http://zeus.dl.playstation.net/cdn/UP9000/PCSA00015_00/NYEoaBGfiWymSEVZKxoyrKyBFsZNoFqxdyAIpZayZYuLLbCAArYrYXjPNhKCfXcONmhIZzZEeArycSrjiJOuNMWuWsDONUxMIQtMk.pkg"),
|
BASE("http://zeus.dl.playstation.net/cdn/UP9000/PCSA00015_00/NYEoaBGfiWymSEVZKxoyrKyBFsZNoFqxdyAIpZayZYuLLbCAArYrYXjPNhKCfXcONmhIZzZEeArycSrjiJOuNMWuWsDONUxMIQtMk.pkg"),
|
||||||
FIRST("http://gs.ww.np.dl.playstation.net/ppkg/np/PCSA00015/PCSA00015_T5/a4b7d9e35ed56e86/UP9000-PCSA00015_00-WIPEOUT2048BASE0-A0104-V0100-059564fcab8ce66d19b5a563e92677e581313205-PE.pkg"), // TODO ALLOW DATA1 DOWNLOAD
|
FIRST("http://gs.ww.np.dl.playstation.net/ppkg/np/PCSA00015/PCSA00015_T5/a4b7d9e35ed56e86/UP9000-PCSA00015_00-WIPEOUT2048BASE0-A0104-V0100-059564fcab8ce66d19b5a563e92677e581313205-PE.pkg"),
|
||||||
LATEST("http://gs.ww.np.dl.playstation.net/ppkg/np/PCSA00015/PCSA00015_T5/a4b7d9e35ed56e86/UP9000-PCSA00015_00-WIPEOUT2048BASE0-A0104-V0100-059564fcab8ce66d19b5a563e92677e581313205-PE.pkg"),
|
LATEST("http://gs.ww.np.dl.playstation.net/ppkg/np/PCSA00015/PCSA00015_T5/a4b7d9e35ed56e86/UP9000-PCSA00015_00-WIPEOUT2048BASE0-A0104-V0100-059564fcab8ce66d19b5a563e92677e581313205-PE.pkg"),
|
||||||
ADDON_HD("http://zeus.dl.playstation.net/cdn/UP9000/PCSA00015_00/JYMqGNXUKqHEyNLjbOgrWcJdnQJUMzgadRFWekbWFBXAwMeGikOyiHkXKogKIfqGhtNwKgmNWwwcrJORmRUTDzylBPwjGVnVjyDfh.pkg"),
|
ADDON_HD("http://zeus.dl.playstation.net/cdn/UP9000/PCSA00015_00/JYMqGNXUKqHEyNLjbOgrWcJdnQJUMzgadRFWekbWFBXAwMeGikOyiHkXKogKIfqGhtNwKgmNWwwcrJORmRUTDzylBPwjGVnVjyDfh.pkg"),
|
||||||
ADDON_HD_FURY("http://zeus.dl.playstation.net/cdn/UP9000/PCSA00015_00/IAoJQaDpySenBmQCKiqecEPMzSdPfPcdXupxZXLTYYTuRgtsdTaHxbeejwGKRQpjJOKBdMMFzSoeEhsHYxNUasQrEzkZPeBxUEqnp.pkg");
|
ADDON_HD_FURY("http://zeus.dl.playstation.net/cdn/UP9000/PCSA00015_00/IAoJQaDpySenBmQCKiqecEPMzSdPfPcdXupxZXLTYYTuRgtsdTaHxbeejwGKRQpjJOKBdMMFzSoeEhsHYxNUasQrEzkZPeBxUEqnp.pkg");
|
||||||
@@ -97,8 +97,8 @@ public class Main {
|
|||||||
public int loaderversion = 0; //minimum required vint or feature level from Firestar
|
public int loaderversion = 0; //minimum required vint or feature level from Firestar
|
||||||
public String author; // if null, "Author is unknown."
|
public String author; // if null, "Author is unknown."
|
||||||
public boolean enabled = true;
|
public boolean enabled = true;
|
||||||
public List<boolean[]> requires = new ArrayList<>(); // TODO: load optional "requires" array from mod meta if it exists. it will be base, patches, hd dlc, and fury dlc in that order.
|
public List<String> requires = new ArrayList<>();
|
||||||
// TODO: save 'false true false false' in ost gen if necessary (patches change localization)
|
public List<String> extracts = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mods
|
// Mods
|
||||||
@@ -127,7 +127,7 @@ public class Main {
|
|||||||
System.out.printf("FIRESTAR MOD MANAGER for WipEout 2048\n" + vstr + " (codename " + vcode + ") major " + vint + "\n" +
|
System.out.printf("FIRESTAR MOD MANAGER for WipEout 2048\n" + vstr + " (codename " + vcode + ") major " + vint + "\n" +
|
||||||
"JVM host appears to be " + System.getProperty("os.name") +
|
"JVM host appears to be " + System.getProperty("os.name") +
|
||||||
"\nRunning from " + System.getProperty("user.dir") +
|
"\nRunning from " + System.getProperty("user.dir") +
|
||||||
"\nCopyright (C) 2024 bonkmaykr\n\nThis program is free software: you can redistribute it and/or modify\n" +
|
"\nCopyright (C) 2025 Canithesis Interactive\n\nThis program is free software: you can redistribute it and/or modify\n" +
|
||||||
"it under the terms of the GNU General Public License as published by\n" +
|
"it under the terms of the GNU General Public License as published by\n" +
|
||||||
"the Free Software Foundation, either version 3 of the License, or\n" +
|
"the Free Software Foundation, either version 3 of the License, or\n" +
|
||||||
"(at your option) any later version.\n" +
|
"(at your option) any later version.\n" +
|
||||||
@@ -273,10 +273,6 @@ public class Main {
|
|||||||
JOptionPane.showMessageDialog(null, "All remote dependencies satisfied.", "Download Completed", JOptionPane.INFORMATION_MESSAGE);
|
JOptionPane.showMessageDialog(null, "All remote dependencies satisfied.", "Download Completed", JOptionPane.INFORMATION_MESSAGE);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean callDownloaderStatically (String url, String folder, String name) {
|
|
||||||
return new Fozzie().DownloadFile(url, folder, name);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Process exec(String[] cmd, String cwd) throws IOException {
|
public static Process exec(String[] cmd, String cwd) throws IOException {
|
||||||
Process p;
|
Process p;
|
||||||
|
|||||||
@@ -31,8 +31,11 @@ import java.math.RoundingMode;
|
|||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.nio.file.*;
|
import java.nio.file.*;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import net.lingala.zip4j.*;
|
import net.lingala.zip4j.*;
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
@@ -230,6 +233,16 @@ public class MissPiggy implements ActionListener {
|
|||||||
if (metadata.has("loaderversion")) {m.loaderversion = Integer.parseInt(metadata.get("loaderversion").toString());}
|
if (metadata.has("loaderversion")) {m.loaderversion = Integer.parseInt(metadata.get("loaderversion").toString());}
|
||||||
if (metadata.has("game")) {m.game = metadata.get("game").toString();}
|
if (metadata.has("game")) {m.game = metadata.get("game").toString();}
|
||||||
|
|
||||||
|
if (m.loaderversion >= 1) {
|
||||||
|
// Firestar 1.3 features
|
||||||
|
if (metadata.has("requires"))
|
||||||
|
for (Object i : (ArrayList<Object>)((Map<String, Object>)metadata.toMap()).get("requires"))
|
||||||
|
m.requires.add(i.toString());
|
||||||
|
if (metadata.has("extracts"))
|
||||||
|
for (Object i : (ArrayList<Object>)((Map<String, Object>)metadata.toMap()).get("extracts"))
|
||||||
|
m.extracts.add(i.toString());
|
||||||
|
}
|
||||||
|
|
||||||
//send to list
|
//send to list
|
||||||
Main.Mods.add(m);
|
Main.Mods.add(m);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@@ -460,7 +473,6 @@ public class MissPiggy implements ActionListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void removeAllGUI() {
|
public void removeAllGUI() {
|
||||||
// todo warning dialog that nukes list when Yes is clicked
|
|
||||||
int result = JOptionPane.showConfirmDialog(frame, "Do you really want to delete all mods?", "Remove All", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
|
int result = JOptionPane.showConfirmDialog(frame, "Do you really want to delete all mods?", "Remove All", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
|
||||||
|
|
||||||
if (result == JOptionPane.YES_OPTION) {
|
if (result == JOptionPane.YES_OPTION) {
|
||||||
|
|||||||
Reference in New Issue
Block a user