package net.fe.unit; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Scanner; import org.newdawn.slick.util.ResourceLoader; public class WeaponFactory { private static final List<String> mounted = Arrays.asList("Paladin", "Valkyrie", "Falconknight", "Ephraim", "Eirika", "Eliwood"); private static final List<String> armored = Arrays.asList("Paladin", "General"); public static final List<String> fliers = Arrays.asList("Falconknight"); private static HashMap<String, Weapon> weapons = new HashMap<String, Weapon>(); public static void loadWeapons() { Scanner in = new Scanner(ResourceLoader.getResourceAsStream("res/weapons.txt")); int id = 0; while(in.hasNextLine()){ String line = in.nextLine(); if(line.startsWith("#") || line.equals("")){ continue; } String[] args = line.split("\\t+"); String name = args[0]; Weapon w = new Weapon(name); w.id = id++; w.type = Weapon.Type.valueOf(args[1].toUpperCase()); List<Integer> range = new ArrayList<Integer>(); String[] rangeArgs = args[2].split("-"); if(rangeArgs.length == 1){ range.add(Integer.parseInt(rangeArgs[0])); } else { int min = Integer.parseInt(rangeArgs[0]); int max = Integer.parseInt(rangeArgs[1]); for(int i = min; i <= max; i++){ range.add(i); } } w.range = range; w.mt = Integer.parseInt(args[3]); w.hit = Integer.parseInt(args[4]); w.crit = Integer.parseInt(args[5]); w.setMaxUses(Integer.parseInt(args[6])); if(!args[7].equals("-")){ w.setCost(Integer.parseInt(args[7])); } if(args[8].equals("Mount")){ w.effective.addAll(mounted); } else if (args[8].equals("Armor")){ w.effective.addAll(armored); } else if (args[8].equals("Flier")){ w.effective.addAll(fliers); } if(!args[9].equals("-")){ w.pref = args[9]; } if(!args[10].equals("-")){ String[] modArgs = args[10].split(" "); w.modifiers.put(modArgs[0], Integer.parseInt(modArgs[1])); } weapons.put(name, w); } in.close(); } public static Weapon getWeapon(String name){ return weapons.get(name).getCopy(); } public static Iterable<Weapon> getAllWeapons(){ return weapons.values(); } }