Disconsented

Untitled

Jun 4th, 2014
327
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.92 KB | None | 0 0
  1. package disconsented.anssrpg.config;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.BufferedWriter;
  5. import java.io.File;
  6. import java.io.FileNotFoundException;
  7. import java.io.FileReader;
  8. import java.io.FileWriter;
  9. import java.io.IOException;
  10. import java.util.ArrayList;
  11. import java.util.LinkedHashMap;
  12.  
  13. import net.minecraft.block.Block;
  14. import net.minecraft.item.Item;
  15. import disconsented.anssrpg.data.SkillInfo;
  16.  
  17. public class ConfigurationHandler {
  18.     public static ArrayList<SkillInfo> skillInfo = new ArrayList<SkillInfo>(); //Has to be static
  19.     public static double experienceCurve = 1.6;
  20.     public static boolean debugInfo = true;
  21.     public static boolean printOutItem = false;
  22.     public static boolean printOutBlock = false;
  23.     public static boolean printOutEntity = false;
  24.     static ArrayList names = new ArrayList();
  25.     static ArrayList mainStore = new ArrayList();
  26.     LinkedHashMap entityList = new LinkedHashMap();
  27.     static File fileNameMain = new File("/config/ANSSRPG","main.cfg");
  28.     static String line = null;
  29.    
  30.     final static String LEVEL_CURVE = "Level Curve";
  31.     final static String DEBUG_INFO = "Debug info";
  32.     final static String PRINT_OUT_BLOCK  = "printOutItem";
  33.     final static String PRINT_OUT_ITEM = "printOutBlock";
  34.     final static String PRINT_OUT_Entity  = "printOutEntity";
  35.    
  36.     private static void writeDefaultSkill(String name, byte type){
  37.         File fileName = new File ("config/ANSSRPG", name.toLowerCase()+".cfg");
  38.         try {
  39.             // Assume default encoding.
  40.             FileWriter fileWriter = new FileWriter(fileName);
  41.             // Always wrap FileWriter in BufferedWriter.
  42.             BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
  43.             bufferedWriter.write("//Skill Name: "+name);
  44.             bufferedWriter.newLine();
  45.             bufferedWriter.write("//Skill Type: "+type);
  46.             bufferedWriter.newLine();
  47.             bufferedWriter.write("//the ; represents a new section");
  48.             bufferedWriter.newLine();
  49.             bufferedWriter.write("//Information must be structued like: (notice the lack of spaces after:)");
  50.             bufferedWriter.newLine();
  51.             bufferedWriter.write("//Entry name:tile.stone");
  52.             bufferedWriter.newLine();
  53.             bufferedWriter.write("//Entry experience:1");
  54.             bufferedWriter.newLine();
  55.             bufferedWriter.write("//Entry level requirement:0");
  56.             bufferedWriter.newLine();
  57.             bufferedWriter.write("Entry name:");
  58.             bufferedWriter.newLine();
  59.             bufferedWriter.write("Entry experience:");
  60.             bufferedWriter.newLine();
  61.             bufferedWriter.write("Entry level requirement:");
  62.             // Note that write() does not automatically
  63.             // append a newline character.
  64.  
  65.             // Always close files.
  66.             bufferedWriter.close();
  67.         }
  68.         catch(IOException ex) {
  69.             System.out.println("Error writing to file '"+ fileName + "'");
  70.             // Or we could just do this:
  71.             // ex.printStackTrace();
  72.         }
  73.     }
  74.     private static void writeDefaultMain(){
  75.         try {
  76.             // Assume default encoding.
  77.              if (!fileNameMain.exists())
  78.              {
  79.                  fileNameMain.createNewFile();
  80.              }
  81.             FileWriter fileWriter = new FileWriter(fileNameMain);
  82.            
  83.             // Always wrap FileWriter in BufferedWriter.
  84.             BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
  85.             bufferedWriter.write("//the ; represents a new section");
  86.             bufferedWriter.newLine();
  87.             bufferedWriter.write("// List of skillnames goes here (Make sure there is only one per line)");
  88.             bufferedWriter.newLine();
  89.             bufferedWriter.write("//And suffixed by -# where # is the skill type number");
  90.             bufferedWriter.newLine();
  91.             bufferedWriter.write("// 1 = Block Breaking");
  92.             bufferedWriter.newLine();
  93.             bufferedWriter.write("// 2 = Crafting");
  94.             bufferedWriter.newLine();
  95.             bufferedWriter.write("// 3 = Killing Entities");
  96.             bufferedWriter.newLine();
  97.             bufferedWriter.write("example skill name=1");
  98.             bufferedWriter.newLine();
  99.             bufferedWriter.write(";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;");
  100.             bufferedWriter.newLine();
  101.             bufferedWriter.write(DEBUG_INFO+":false");
  102.             bufferedWriter.newLine();
  103.             bufferedWriter.write(LEVEL_CURVE+"1.6");
  104.             bufferedWriter.newLine();
  105.             bufferedWriter.write("PrintOutItem:false");
  106.             bufferedWriter.newLine();
  107.             bufferedWriter.write("PrintOutBlock:false");
  108.             bufferedWriter.newLine();
  109.             bufferedWriter.write("PrintOutEntity:false");
  110.             // Note that write() does not automatically
  111.             // append a newline character.
  112.  
  113.             // Always close files.
  114.             bufferedWriter.close();
  115.         }
  116.         catch(IOException ex) {
  117.             System.out.println("Error writing to file '"+ fileNameMain + "'");            
  118.             // Or we could just do this:
  119.              ex.printStackTrace();
  120.              
  121.         }
  122.     }
  123.     /**
  124.      * Handles the configuration files
  125.      */
  126.     public static void loadAndSave(){
  127.         ArrayList skillNames = new ArrayList();
  128.         ArrayList<Integer> type = new ArrayList<Integer>();
  129.         int stage = 0;
  130.  
  131.          try { // Main reader
  132.                 // FileReader reads text files in the default encoding.
  133.                 FileReader fileReader =
  134.                     new FileReader(fileNameMain);
  135.  
  136.                 // Always wrap FileReader in BufferedReader.
  137.                 BufferedReader bufferedReader =
  138.                     new BufferedReader(fileReader);
  139. /*ignore comment lines
  140.  * get the skill names
  141.  * substring them to seperate the names(between":" and "-" and the type (after "-"/ last char)
  142.  * Get debug info
  143.  *
  144.  */
  145.                 while((line = bufferedReader.readLine()) != null) {
  146.                     if (!line.startsWith("/")){ //All ANSSRPG config files should start with a comment
  147.                         mainStore.add(line);
  148.                     }
  149.                 }  
  150.  
  151.                 // Always close files.
  152.                 System.out.println(mainStore);
  153.                 bufferedReader.close();        
  154.             }
  155.             catch(FileNotFoundException ex) {
  156.                 System.out.println(
  157.                     "Unable to open file '" + fileNameMain + "'");
  158.                 ex.printStackTrace();
  159.                     writeDefaultMain();
  160.             }
  161.             catch(IOException ex) {
  162.                 System.out.println(
  163.                     "Error reading file '" + fileNameMain + "'");                  
  164.             }
  165.          for (int i = 0; i < mainStore.size(); i++){
  166.              if (!mainStore.get(i).toString().startsWith("/")){
  167.                  switch (stage){
  168.                  case 0:
  169.                      if (mainStore.get(i).toString().startsWith(";")){
  170.                          stage++;
  171.                      }
  172.                      else
  173.                      {
  174.                          names.add(mainStore.get(i).toString().substring(0, mainStore.get(i).toString().indexOf("=")));//Adding the skill name
  175.                          type.add(Integer.parseInt(mainStore.get(i).toString().substring(mainStore.get(i).toString().indexOf("=")+1)) );
  176.                      }                       
  177.                      break;
  178.                  case 1:
  179.                      debugInfo = Boolean.parseBoolean(mainStore.get(i).toString().substring(mainStore.get(i).toString().indexOf(":")+1));
  180.                      stage++;
  181.                      break;
  182.                  case 2:
  183.                  experienceCurve = Double.parseDouble(mainStore.get(i).toString().substring(mainStore.get(i).toString().indexOf(":")+1));
  184.                      break;
  185.                  case 3:
  186.                      printOutItem = Boolean.parseBoolean(mainStore.get(i).toString().substring(mainStore.get(i).toString().indexOf(":")+1));
  187.                      break;
  188.                  case 4:
  189.                      printOutBlock = Boolean.parseBoolean(mainStore.get(i).toString().substring(mainStore.get(i).toString().indexOf(":")+1));
  190.                      break;
  191.                  case 5:
  192.                      printOutEntity = Boolean.parseBoolean(mainStore.get(i).toString().substring(mainStore.get(i).toString().indexOf(":")+1));
  193.                      stage = 0;
  194.                      break;              
  195.                  }
  196.                  if (mainStore.get(i).toString().contains("=")){ //If it contains - aka a skill name
  197.                      
  198.                  }
  199.                  if (mainStore.get(i).toString().contains(":")){//If it contans : aka a setting
  200.                      if (mainStore.get(i).toString().contains(DEBUG_INFO)){
  201.                          debugInfo = Boolean.parseBoolean(mainStore.get(i).toString());
  202.                      }
  203.                      else if (mainStore.get(i).toString().contains(LEVEL_CURVE)){
  204.                          experienceCurve = Double.parseDouble(mainStore.get(i).toString());
  205.                      }
  206.                  }
  207.              }
  208.          }
  209.         for(int i = 0; i < names.size(); i++){ // For the skills
  210.             ArrayList entryName = new ArrayList();
  211.             ArrayList entryExperience = new ArrayList();
  212.             ArrayList entryRequirement = new ArrayList();
  213.             File fileName = new File ("config/ANSSRPG", names.get(i).toString().toLowerCase()+".cfg");
  214.             int x = 0;
  215.              try {
  216.                     // FileReader reads text files in the default encoding.
  217.                     FileReader fileReader =
  218.                         new FileReader(fileName);
  219.  
  220.                     // Always wrap FileReader in BufferedReader.
  221.                     BufferedReader bufferedReader =
  222.                         new BufferedReader(fileReader);
  223.  
  224.                     while((line = bufferedReader.readLine()) != null) {
  225.                             if (line.startsWith("/")){
  226.                             }
  227.                         else {
  228.                             switch (x){
  229.                             case 0:
  230.                                 if(type.get(i)== 1){
  231.                                 entryName.add((Item)Block.blockRegistry.getObject((line.substring(line.indexOf(":")+1))));
  232.                                 }
  233.                                 if(type.get(i)== 2){
  234.                                
  235.                                 }
  236.                                 if(type.get(i)== 3){
  237.                                    
  238.                                 }
  239.                                 x++;
  240.                                 break;
  241.                             case 1:
  242.                                 entryExperience.add(Integer.parseInt(line.substring(line.indexOf(":")+1)));
  243.                                 x++;
  244.                                 break;
  245.                             case 2:
  246.                                 entryRequirement.add(Integer.parseInt(line.substring(line.indexOf(":")+1)));
  247.                                 x = 0;
  248.                                 break;
  249.                             }
  250.                            
  251.                         }
  252.                     }  
  253.  
  254.                     // Always close files.
  255.                     bufferedReader.close();        
  256.                 }
  257.                 catch(FileNotFoundException ex) {
  258.                     System.out.println("Unable to open file '" + fileName + "'");
  259.                     writeDefaultSkill((String) names.get(i), type.get(i).byteValue());
  260.                     ex.printStackTrace();
  261.                 }
  262.                 catch(IOException ex) {
  263.                     System.out.println(
  264.                         "Error reading file '" + fileName + "'");                  
  265.                 }
  266.              skillInfo.add(new SkillInfo(entryExperience, entryRequirement, names.get(i).toString(), entryName,  type.get(i).byteValue()));
  267.             /* entryExperience.clear();
  268.              entryRequirement.clear();
  269.              entryName.clear(); */
  270.              for (int a = 0; a <+ skillInfo.size(); a++){
  271.                  System.out.println(skillInfo.get(a).name);
  272.              }
  273.              /**
  274.               * Perk config:
  275.               * Name:
  276.               * Description:
  277.               * Point cost:
  278.               * List of requirements: "Skill Name"-#
  279.               */
  280.              
  281.              
  282.         }
  283.     }
  284. }
Advertisement
Add Comment
Please, Sign In to add comment