forked from MagicBane/Server
				
			
				 5 changed files with 175 additions and 1 deletions
			
			
		| @ -0,0 +1,6 @@@@ -0,0 +1,6 @@ | ||||
| package engine.ConfigParsing.EffectsData; | ||||
| 
 | ||||
| public class Condition { | ||||
|     public String type; | ||||
|     public String value; | ||||
| } | ||||
| @ -0,0 +1,12 @@@@ -0,0 +1,12 @@ | ||||
| package engine.ConfigParsing.EffectsData; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| 
 | ||||
| public class EffectData { | ||||
|     public String id; | ||||
|     public String name; | ||||
|     public int icon; | ||||
|     public ArrayList<String> sources; | ||||
|     public ArrayList<Mod> mods; | ||||
|     public ArrayList<String> conditions; | ||||
| } | ||||
| @ -0,0 +1,8 @@@@ -0,0 +1,8 @@ | ||||
| package engine.ConfigParsing.EffectsData; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| 
 | ||||
| public class Mod { | ||||
|     public String type; | ||||
|     public ArrayList<String> values; | ||||
| } | ||||
| @ -0,0 +1,145 @@@@ -0,0 +1,145 @@ | ||||
| // • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | ||||
| // ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | ||||
| // ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | ||||
| // ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | ||||
| // ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | ||||
| //      Magicbane Emulator Project © 2013 - 2024
 | ||||
| //                www.magicbane.com
 | ||||
| 
 | ||||
| 
 | ||||
| package engine.ConfigParsing; | ||||
| import engine.ConfigParsing.EffectsData.Condition; | ||||
| import engine.ConfigParsing.EffectsData.EffectData; | ||||
| import engine.ConfigParsing.EffectsData.Mod; | ||||
| import engine.gameManager.ConfigManager; | ||||
| import java.io.BufferedReader; | ||||
| import java.io.FileReader; | ||||
| import java.io.IOException; | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
| 
 | ||||
| public class EffectsParser { | ||||
|     public static String EffectsPath = ConfigManager.DEFAULT_DATA_DIR + "/Effects.cfg"; | ||||
|     public static void init() throws IOException { | ||||
|         ArrayList<ArrayList<String>> compiledData = new ArrayList<>(); | ||||
|         String[] lines = readLines(EffectsPath); | ||||
|         ArrayList<String> data = new ArrayList<>(); | ||||
|         for(String line : lines) | ||||
|         { | ||||
|             if (line.contains("EFFECTBEGIN")) | ||||
|             { | ||||
|                 data = new ArrayList<>(); | ||||
|             } else if(!line.contains("EFFECTEND")) | ||||
|             { | ||||
|                 data.add(line); | ||||
|             } | ||||
|             else if (line.contains("EFFECTEND")) | ||||
|             { | ||||
|                 compiledData.add(data); | ||||
|             } | ||||
|         } | ||||
|         CreateBlocks(compiledData); | ||||
|     } | ||||
|     public static String[] readLines(String filename) throws IOException { | ||||
|         FileReader fileReader = new FileReader(filename); | ||||
|         BufferedReader bufferedReader = new BufferedReader(fileReader); | ||||
|         List<String> lines = new ArrayList<>(); | ||||
|         String line; | ||||
|         while ((line = bufferedReader.readLine()) != null) { | ||||
|             lines.add(line); | ||||
|         } | ||||
|         bufferedReader.close(); | ||||
|         return lines.toArray(new String[0]); | ||||
|     } | ||||
|     public static void CreateBlocks(ArrayList<ArrayList<String>> compiledData) | ||||
|     { | ||||
|         for (ArrayList<String> lines : compiledData) | ||||
|         { | ||||
|             EffectData data = new EffectData(); | ||||
|             data.id = lines.get(1).replace("     ", "").split(" ")[0]; | ||||
|             try | ||||
|             { | ||||
|                 data.name = lines.get(1).replace("     ", "").split(" ")[1]; | ||||
|             } | ||||
|             catch(Exception e) | ||||
|             { | ||||
| 
 | ||||
|             } | ||||
|             try | ||||
|             { | ||||
|                 data.icon = Integer.parseInt(lines.get(1).replace("     ", "").split(" ")[2]); | ||||
|             } | ||||
|             catch(Exception e) | ||||
|             { | ||||
| 
 | ||||
|             } | ||||
|             //log all sources
 | ||||
|             data.sources = new ArrayList<>(); | ||||
|             int index = 0; | ||||
|             for(String line : lines) { | ||||
|             if (line.contains("SOURCEBEGIN")) | ||||
|             { | ||||
|                 data.sources.add(lines.get(index).replace("          ", "")); | ||||
|             } | ||||
|             index++; | ||||
|         } | ||||
| 
 | ||||
|             //log all mods
 | ||||
|             data.mods = new ArrayList<>(); | ||||
|             index = 0; | ||||
| 
 | ||||
| 
 | ||||
|             for (String line : lines) | ||||
|             { | ||||
|                 if (line.contains("MODSBEGIN")) | ||||
|                 { | ||||
|                     int extra = 1; | ||||
|                     Mod mod = new Mod(); | ||||
|                     while(!lines.get(index + extra).contains("MODSEND")) | ||||
|                     { | ||||
|                         //data.mods.add(lines[index + extra].Replace("          ", ""));
 | ||||
|                         mod.type = lines.get(index + extra).replace("          ", "").split(" ")[0]; | ||||
|                         GenerateModValues(mod, lines.get(index + extra).replace("          ", "").replace("    ", "").split(" ")); | ||||
|                         extra++; | ||||
|                     } | ||||
|                     data.mods.add(mod); | ||||
|                 } | ||||
|                 index++; | ||||
|             } | ||||
| 
 | ||||
|             //log all conditions
 | ||||
|             data.conditions = new ArrayList<>(); | ||||
|             index = 0; | ||||
|             for (String line : lines) | ||||
|             { | ||||
|                 if (line.contains("CONDITIONBEGIN")) | ||||
|                 { | ||||
|                     int extra = 1; | ||||
|                     while (!lines.get(index + extra).contains("CONDITIONEND")) | ||||
|                     { | ||||
|                         if (!lines.get(index + extra).contains("#")) | ||||
|                         { | ||||
|                             //data.conditions.add(lines[index + extra].Replace("          ", ""));
 | ||||
|                             Condition condition = new Condition(); | ||||
|                             condition.type = lines.get(index + extra).replace("          ", "").split(" ")[0]; | ||||
|                             condition.value = lines.get(index + extra).replace("          ", "").split(" ")[1]; | ||||
|                         } | ||||
|                         extra++; | ||||
|                     } | ||||
|                 } | ||||
|                 index++; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     public static void GenerateModValues(Mod inMod, String[] data) | ||||
|     { | ||||
|         inMod.values = new ArrayList<>(); | ||||
|         for(int i = 1; i < data.length; i++) | ||||
|         { | ||||
|             if(data[i].length() != 0) | ||||
|             { | ||||
|                 inMod.values.add(data[i]); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
					Loading…
					
					
				
		Reference in new issue