Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- import java.io.*;
- public class Read_OpenXCOM_Experience {
- private static final String fileName = "D:\\Games\\Open X-COM 2021 FMP 2.8e\\user\\xcom1\\TACTICAL-0.sav";
- private static FileReader fileReader;
- private static BufferedReader bufferedReader;
- private static ArrayList <SoldierClass> soldiers, soldiersOnMission;
- public static void main (String [] args) throws IOException {
- int id, counter;
- boolean flag;
- String line, baseName;
- SoldierClass soldier;
- fileReader = new FileReader (fileName);
- bufferedReader = new BufferedReader (fileReader);
- line = bufferedReader .readLine ();
- System .out .print ("Internal name: ");
- System .out .println (line .substring (6));
- System .out .println ();
- System .out .println ("Bases:");
- flag = waitForKeyWord ("bases:");
- baseName = "";
- soldiers = new ArrayList <> ();
- soldiersOnMission = new ArrayList <> ();
- while (flag) {
- line = bufferedReader .readLine ();
- if (line == null) {
- System .out .println ("Unexpected end of file.");
- flag = false;
- break;
- }
- if (line .equals ("alienMissions:")) {
- System .out .println ();
- System .out .println ("All bases has been scanned.");
- //System .out .println (soldiers .size () + " soldier(s) found:");
- //soldiers .forEach (p -> {p .display ();});
- //System .out .println ("End of list.");
- //System .out .println ();
- break;
- }
- if (line .startsWith (" name: ")) {
- baseName = line .substring (10);
- System .out .println (baseName);
- }
- if (line .equals (" - type: STR_SOLDIER")) {
- soldier = readSoldierIdName ();
- soldier .base = baseName;
- soldiers .add (soldier);
- //soldier .display ();
- }
- }
- if (flag) {
- flag = waitForKeyWord ("battleGame:");
- }
- if (flag) {
- flag = waitForKeyWord (" units:");
- }
- soldier = null;
- counter = 0;
- while (flag) {
- line = bufferedReader .readLine ();
- if (line == null) {
- System .out .println ("Unexpected end of file.");
- flag = false;
- break;
- }
- if (line .equals (" items:")) {
- break;
- }
- if (line .startsWith (" - id: ")) {
- id = Integer .parseUnsignedInt (line .substring (10));
- if (1000000 <= id) {
- break;
- }
- soldier = findSoldierById (id);
- if (null == soldier) {
- System .out .println ("Unidentified soldier found.");
- flag = false;
- break;
- }
- soldiersOnMission .add (soldier);
- counter = 0;
- }
- if (line .startsWith (" expBravery: ")) {
- soldier .expBravery = Integer .parseUnsignedInt (line .substring (18));
- ++counter;
- }
- if (line .startsWith (" expReactions: ")) {
- soldier .expReactions = Integer .parseUnsignedInt (line .substring (20));
- ++counter;
- }
- if (line .startsWith (" expFiring: ")) {
- soldier .expFiring = Integer .parseUnsignedInt (line .substring (17));
- ++counter;
- }
- if (line .startsWith (" expThrowing: ")) {
- soldier .expThrowing = Integer .parseUnsignedInt (line .substring (19));
- ++counter;
- }
- if (line .startsWith (" expPsiSkill: ")) {
- soldier .expPsiSkill = Integer .parseUnsignedInt (line .substring (19));
- ++counter;
- }
- if (line .startsWith (" expPsiStrength: ")) {
- soldier .expPsiStrength = Integer .parseUnsignedInt (line .substring (22));
- ++counter;
- }
- if (line .startsWith (" expMelee: ")) {
- soldier .expMelee = Integer .parseUnsignedInt (line .substring (16));
- ++counter;
- }
- if (7 == counter) {
- soldier .flag = true;
- }
- }
- if (flag) {
- System .out .println ();
- System .out .println (soldiersOnMission .size () + " soldier(s) on mission found:");
- System .out .println (" ID Name BRV REA FIR THR PSK PST MLE Base");
- soldiersOnMission .forEach (p -> {p .display ();});
- System .out .println ("End of list.");
- System .out .println ();
- }
- bufferedReader .close ();
- fileReader .close ();
- }
- private static boolean waitForKeyWord (String keyWord) throws IOException {
- String line;
- while (true) {
- line = bufferedReader .readLine ();
- if (line == null) {
- System .out .println ("Key word not found.");
- return false;
- }
- if (line .equals (keyWord)) {
- return true;
- }
- }
- }
- private static SoldierClass readSoldierIdName () throws IOException {
- int id;
- String line, name;
- line = bufferedReader .readLine ();
- if (!line .startsWith (" id: ")) {
- System .out .println ("Unexpected identifier.");
- return null;
- }
- id = Integer .parseUnsignedInt (line .substring (12));
- line = bufferedReader .readLine ();
- if (!line .startsWith (" name: ")) {
- System .out .println ("Unexpected identifier.");
- return null;
- }
- name = line .substring (14);
- return new SoldierClass (id, name);
- }
- private static SoldierClass findSoldierById (int id) {
- SoldierClass soldier;
- Iterator <SoldierClass> iterator = soldiers .iterator ();
- while (iterator .hasNext ()) {
- soldier = iterator .next ();
- if (id == soldier .id) {
- return soldier;
- }
- }
- return null;
- }
- private static class SoldierClass implements Comparable <SoldierClass> {
- boolean flag;
- int expBravery;
- int expReactions;
- int expFiring;
- int expThrowing;
- int expPsiSkill;
- int expPsiStrength;
- int expMelee;
- int id;
- String base, name;
- public SoldierClass (int id, String name) {
- flag = false;
- this .id = id;
- this .name = name;
- }
- public void display () {
- if (flag) {
- System .out .println (String .format ("%6d %-28s %3d %3d %3d %3d %3d %3d %3d %s",
- id, name, expBravery, expReactions, expFiring, expThrowing, expPsiSkill, expPsiStrength, expMelee, base));
- } else {
- System .out .println (String .format ("%6d %-28s %s", id, name, base));
- }
- }
- @Override
- public int compareTo (SoldierClass arg) {
- return id - arg .id;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement