package net.fe.balance;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.*;
import javax.swing.*;
import net.fe.unit.*;
public class StatBalancer extends JFrame {
private static final long serialVersionUID = 1L;
private TreeMap<String, BalancerTab> classTabs;
public StatBalancer(List<Unit> units){
super("FE:Multiplayer Stat Balancer");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
classTabs = new TreeMap<String, BalancerTab>();
JTabbedPane panel = new JTabbedPane();
HashMap<String, ArrayList<BalanceData>> data =
new HashMap<String, ArrayList<BalanceData>>();
for(Unit u: units){
String clazz = u.getTheClass().name;
if(!data.containsKey(clazz)){
data.put(clazz, new ArrayList<BalanceData>());
}
data.get(clazz).add(new BalanceData(u));
}
for(String clazz: data.keySet()){
BalancerTab tab = new BalancerTab(data.get(clazz));
classTabs.put(clazz,tab);
panel.addTab(clazz, tab);
}
add(panel);
JButton button = new JButton("Export");
button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
JFileChooser chooser = new JFileChooser(".");
int ret = chooser.showSaveDialog(StatBalancer.this);
if(ret == JFileChooser.APPROVE_OPTION){
export(chooser.getSelectedFile());
}
}
});
add(button, BorderLayout.SOUTH);
pack();
}
private void export(File f){
try {
PrintWriter pw = new PrintWriter(f);
String head = "#Name\t\tClass\t\t\tLv\t";
for(String stat: BalanceData.ORDER){
head += stat + "\t";
}
head += "Con\tMov\t\t";
for(String stat: BalanceData.ORDER){
head += stat + "\t";
}
head += "\tGender";
pw.println(head);
for(String clazz: classTabs.keySet()){
pw.println(classTabs.get(clazz).exportString());
}
pw.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run() {
WeaponFactory.loadWeapons();
UnitFactory.loadUnits();
StatBalancer balancer = new StatBalancer(UnitFactory.getAllUnits());
balancer.setLocationRelativeTo(null);
balancer.setVisible(true);
}
});
}
}