From 82fc9773a6b070140b526ba6220c2172b94e190d Mon Sep 17 00:00:00 2001 From: Downforce Agent Date: Fri, 19 Apr 2024 18:06:52 -0500 Subject: [PATCH] next step is to implement our first i/o --- .idea/libraries/org_json_1_6_20240205.xml | 2 +- README.md | 2 +- lib/org.json.jar | Bin 0 -> 64685 bytes src/Main.java | 4 +- src/MasterWindowLayout.form | 17 ++++- src/MissPiggy.java | 83 ++++++++++++++++++---- 6 files changed, 88 insertions(+), 20 deletions(-) create mode 100755 lib/org.json.jar diff --git a/.idea/libraries/org_json_1_6_20240205.xml b/.idea/libraries/org_json_1_6_20240205.xml index a68417e..1a83525 100644 --- a/.idea/libraries/org_json_1_6_20240205.xml +++ b/.idea/libraries/org_json_1_6_20240205.xml @@ -1,7 +1,7 @@ - + diff --git a/README.md b/README.md index ca464d9..03dc814 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ![](https://files.worlio.com/users/bonkmaykr/http/git/embed/firestar.png) -# about 10% complete (basic frontend in progress, nonfunctional) +# about 30% complete (basic frontend in progress, nonfunctional) Firestar is a mod manager for WipEout 2048 which automatically handles sorting mods by priority and repacking game assets based on selected add-on packs. It runs on a desktop/laptop computer and aims to allow easy installation of mods for users who have only a surface level understanding of hacking the PSVita. TODO: modlist window screenshot diff --git a/lib/org.json.jar b/lib/org.json.jar new file mode 100755 index 0000000000000000000000000000000000000000..9074551bcb9f4a78505d19761f956fd657e86ac9 GIT binary patch literal 64685 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 literal 0 HcmV?d00001 diff --git a/src/Main.java b/src/Main.java index e592f9c..2b1de39 100644 --- a/src/Main.java +++ b/src/Main.java @@ -40,10 +40,10 @@ public class Main { //public static String psarc; //sdk location public class Mod { - public String path; + public String path; // file name public int version = 1; //public int gameversion; //TODO detect a game version and compatibility? // no - public int priority = 0; + public int priority = 0; //unused public String friendlyName; public String game; //TODO for multi game support public int loaderversion = 0; //minimum required vint or feature level from Firestar diff --git a/src/MasterWindowLayout.form b/src/MasterWindowLayout.form index 56aebf9..35191b2 100644 --- a/src/MasterWindowLayout.form +++ b/src/MasterWindowLayout.form @@ -9,7 +9,7 @@ - + @@ -19,7 +19,20 @@ - + + + + + + + + + + + + + + diff --git a/src/MissPiggy.java b/src/MissPiggy.java index c007522..ea0102e 100644 --- a/src/MissPiggy.java +++ b/src/MissPiggy.java @@ -17,9 +17,13 @@ */ import javax.swing.*; +import javax.swing.event.ListSelectionListener; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.io.File; +import java.math.RoundingMode; +import java.text.DecimalFormat; import static javax.swing.WindowConstants.EXIT_ON_CLOSE; @@ -37,7 +41,7 @@ public class MissPiggy implements ActionListener { //JMenuItem menuItem; JScrollPane modListScrollContainer; - public JList modList; + public JList modList; private JButton toggleButton; private JButton moveUpButton; private JButton deleteButton1; @@ -45,6 +49,7 @@ public class MissPiggy implements ActionListener { private JButton optionsButton; private JButton importButton; private JButton deployButton; + private JTextPane descriptionField; private int selectedItem; @@ -54,16 +59,29 @@ public class MissPiggy implements ActionListener { // todo display modlist /// DEBUG /// - Main.Mod testModEntry = /*entryPoint*/new Main().new Mod(); //this is retarded? we're making a new object of a certain type, why the fuck do you care where it comes from? static or regardless?? - testModEntry.friendlyName = "Example Mod"; + Main.Mod testModEntry = new Main().new Mod(); //this is retarded? we're making a new object of a certain type, why the fuck do you care where it comes from? static or regardless?? + testModEntry.friendlyName = "Example Mod 1"; testModEntry.game = "2048"; - testModEntry.path = "unused"; + testModEntry.path = "/home/bonkyboo/madarao_sneaky2_square.png"; //used to test file sizes testModEntry.version = 1; - testModEntry.priority = 0; //might discard this in favor of the list index for simplicity - testModEntry.loaderversion = 0; - Main.Mods.add(testModEntry); - Main.Mods.add(testModEntry); + //testModEntry.priority = 0; //will discard this in favor of the list index for simplicity Main.Mods.add(testModEntry); + Main.Mod testModEntry2 = new Main().new Mod(); + testModEntry2.friendlyName = "Example Mod 2"; + testModEntry2.author = "Daniel Chang"; + testModEntry2.game = "2048"; + testModEntry2.path = "/home/bonkyboo/chengou.mp4"; + testModEntry2.version = 1; + testModEntry2.loaderversion = 0; + Main.Mods.add(testModEntry2); + Main.Mod testModEntry3 = new Main().new Mod(); + testModEntry3.friendlyName = "Example Mod 3"; + testModEntry3.author = "John Dekka"; + testModEntry3.game = "2048"; + testModEntry3.path = "/home/bonkyboo/round2.mp4"; + testModEntry3.version = 1; + testModEntry3.loaderversion = 0; + Main.Mods.add(testModEntry3); ///-/////-/// // populate menu bar @@ -103,8 +121,42 @@ public class MissPiggy implements ActionListener { toolsMenu.getItem(1).addActionListener(this); helpMenu.getItem(0).addActionListener(this); + descriptionField.getDocument().putProperty("filterNewlines", Boolean.FALSE); + modList.addListSelectionListener(e -> { + String authorDisplay; + File pathReference = new File(Main.Mods.get(modList.getSelectedIndex()).path); + DecimalFormat df = new DecimalFormat("##.##"); + df.setRoundingMode(RoundingMode.UP); + float modFileSize = pathReference.length(); //precise units + String modFileSizeStr = String.valueOf(modFileSize); + String modFileSizeUnits = "bytes"; + if (pathReference.length() >= 1024) { + modFileSizeStr = String.valueOf(df.format(modFileSize / 1024)); + modFileSizeUnits = "Kilobytes"; + } + if (pathReference.length() >= 1024 * 1024) { + modFileSizeStr = String.valueOf(df.format(modFileSize / (1024 * 1024))); + modFileSizeUnits = "Megabytes"; + } + if (pathReference.length() >= 1024 * 1024 * 1024) { + modFileSizeStr = String.valueOf(df.format(modFileSize / (1024 * 1024 * 1024))); + modFileSizeUnits = "Gigabytes"; + } + if (Main.Mods.get(modList.getSelectedIndex()).author == null) { + authorDisplay = "an Unknown Author"; + } else { + authorDisplay = Main.Mods.get(modList.getSelectedIndex()).author; + } + descriptionField.setText( + "\"" + Main.Mods.get(modList.getSelectedIndex()).friendlyName + "\"\n" + + "by " + authorDisplay + "\n\n" + + "Version " + Main.Mods.get(modList.getSelectedIndex()).version + "\n" + + modFileSizeStr + " " + modFileSizeUnits + " in size" + );}); + // display window frame.setSize(800, 600); // 1280 800 + frame.setMinimumSize(new Dimension(640,480)); frame.setTitle("Firestar Mod Manager"); frame.setResizable(true); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); @@ -115,6 +167,7 @@ public class MissPiggy implements ActionListener { public void InitializeModListInGUI() { // i really wanted this to be "lights, camera, action" but the code organizing kept getting stupider and stupider so i gave up // cleanup + descriptionField.setText("Select a mod from the list on the right to view more details, or to make changes to your installation."); modList.clearSelection(); modList.removeAll(); modList.setVisibleRowCount(Main.Mods.size()); @@ -125,22 +178,24 @@ public class MissPiggy implements ActionListener { // add text entry for each int i = 0; /*JLabel[]*/String[] contents = new String[Main.Mods.size()]; - System.out.println("Initializing modList to GUI with length of" + Main.Mods.size() + "units"); //debug + System.out.println("Initializing modList to GUI with length of " + Main.Mods.size() + "units"); //debug while (i < Main.Mods.size()) { - //JLabel label = new JLabel(Main.Mods.get(i).friendlyName); - //label.setVisible(true); - //contents[i] = label; //modList.add(label); contents[i] = Main.Mods.get(i).friendlyName; //debug - if (Main.Mods.get(i).author == null) {Main.Mods.get(i).author = "Anonymous";} - System.out.println("Added " + Main.Mods.get(i).friendlyName + " by " + Main.Mods.get(i).author); + String authorDisplay; + if (Main.Mods.get(i).author == null) {authorDisplay = "Anonymous";} else {authorDisplay = "\"" + Main.Mods.get(i).author + "\"";} + System.out.println("Added " + Main.Mods.get(i).friendlyName + " by " + authorDisplay); i++; } modList.setListData(contents); } + private ListSelectionListener whenItemSelected() { + return null; + } + @Override public void actionPerformed(ActionEvent actionEvent) { if (actionEvent.getSource() == fileMenu.getItem(5)) {System.exit(0);} else