forked from MagicBane/Server
				
			
				 5 changed files with 175 additions and 1 deletions
			
			
		| @ -0,0 +1,6 @@ | |||||||
|  | package engine.ConfigParsing.EffectsData; | ||||||
|  | 
 | ||||||
|  | public class Condition { | ||||||
|  |     public String type; | ||||||
|  |     public String value; | ||||||
|  | } | ||||||
| @ -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 @@ | |||||||
|  | package engine.ConfigParsing.EffectsData; | ||||||
|  | 
 | ||||||
|  | import java.util.ArrayList; | ||||||
|  | 
 | ||||||
|  | public class Mod { | ||||||
|  |     public String type; | ||||||
|  |     public ArrayList<String> values; | ||||||
|  | } | ||||||
| @ -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