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();
}
}