Files
ATCS/src/com/gpl/rpg/atcontentstudio/ui/tools/NPCsTableView.java
Zukero 5e73b59d06 v0.6.0 released! Weblate integration is complete. New icons (created for
weblate integration) now replace to old ugly ones for the notification
area.
2017-04-12 15:57:35 +02:00

176 lines
5.9 KiB
Java

package com.gpl.rpg.atcontentstudio.ui.tools;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
import com.gpl.rpg.atcontentstudio.model.Project;
import com.gpl.rpg.atcontentstudio.model.gamedata.NPC;
import com.gpl.rpg.atcontentstudio.ui.DefaultIcons;
public class NPCsTableView extends ElementTableView {
private static final long serialVersionUID = -4196852140899079621L;
public NPCsTableView(Project proj) {
super(new NPCsTableModel(proj), "Compare "+proj.getNPCCountIncludingAltered()+" NPCs.", new ImageIcon(DefaultIcons.getNPCIcon()));
}
private static class NPCsTableModel implements TableModel {
Project proj;
public NPCsTableModel(Project proj) {
this.proj = proj;
}
@Override
public int getRowCount() {
return proj.getNPCCountIncludingAltered();
}
@Override
public int getColumnCount() {
return 25;
}
@Override
public String getColumnName(int columnIndex) {
switch (columnIndex) {
case 0: return "Icon"; //Icon
case 1: return "ID"; //ID
case 2: return "Name"; //Name
case 3: return "Category type"; //Source type (created, altered, source)
case 4: return "Unique";
case 5: return "Class";
case 6: return "Movement type";
case 7: return "Spawngroup";
case 8: return "Faction";
case 9: return "HP";
case 10: return "AP";
case 11: return "Attack Cost";
case 12: return "AC";
case 13: return "BC";
case 14: return "AD min";
case 15: return "AD max";
case 16: return "DR";
case 17: return "CS";
case 18: return "CM";
case 19: return "On hit - HP min";
case 20: return "On hit - HP max";
case 21: return "On hit - AP min";
case 22: return "On hit - AP max";
case 23: return "On hit - # conditions";
case 24: return "Experience reward";
}
return null;
}
@Override
public Class<?> getColumnClass(int columnIndex) {
switch (columnIndex) {
case 0: return Icon.class; //Icon
case 1: return String.class; //ID
case 2: return String.class; //Name
case 3: return String.class; //Source type (created, altered, source)
case 4: return Boolean.class; //"Unique";
case 5: return String.class; //"Class";
case 6: return String.class; //"Movement type";
case 7: return String.class; //"Spawngroup";
case 8: return String.class; //"Faction";
case 9: return Integer.class; //"HP";
case 10: return Integer.class; //"AP";
case 11: return Integer.class; //"Attack Cost";
case 12: return Integer.class; //"AC";
case 13: return Integer.class; //"BC";
case 14: return Integer.class; //"AD min";
case 15: return Integer.class; //"AD max";
case 16: return Integer.class; //"DR";
case 17: return Integer.class; //"CS";
case 18: return Double.class; //"CM";
case 19: return Integer.class; //"On hit - HP min";
case 20: return Integer.class; //"On hit - HP max";
case 21: return Integer.class; //"On hit - AP min";
case 22: return Integer.class; //"On hit - AP max";
case 23: return Integer.class; //"On hit - # conditions";
case 24: return Integer.class; //"Experience reward";
}
return null;
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
NPC npc = proj.getNPCIncludingAltered(rowIndex);
switch (columnIndex) {
case 0: return new ImageIcon(npc.getIcon()); // Icon
case 1: return npc.id; //ID
case 2: return npc.name; //Name
case 3: return npc.getDataType().toString(); //Source type (created, altered, source)
case 4: return npc.unique != null && npc.unique == 1;//"Unique";
case 5: return npc.monster_class != null ? npc.monster_class.toString() : null; //"Class";
case 6: return npc.movement_type != null ? npc.movement_type.toString() : null; //"Movement type";
case 7: return npc.spawngroup_id; //"Spawngroup";
case 8: return npc.faction_id; //"Faction";
case 9: return npc.max_hp; //"HP";
case 10: return npc.max_ap; //"AP";
case 11: return npc.attack_cost; //"Attack Cost";
case 12: return npc.attack_chance; //"AC";
case 13: return npc.block_chance; //"BC";
case 14: return npc.attack_damage_min; //"AD min";
case 15: return npc.attack_damage_max; //"AD max";
case 16: return npc.damage_resistance; //"DR";
case 17: return npc.critical_skill; //"CS";
case 18: return npc.critical_multiplier; //"CM";
case 19: return npc.hit_effect != null ? npc.hit_effect.hp_boost_min : null; //"On hit - HP min";
case 20: return npc.hit_effect != null ? npc.hit_effect.hp_boost_max : null; //"On hit - HP max";
case 21: return npc.hit_effect != null ? npc.hit_effect.ap_boost_min : null; //"On hit - AP min";
case 22: return npc.hit_effect != null ? npc.hit_effect.ap_boost_max : null; //"On hit - AP max";
case 23: //"On hit - # conditions";
if (npc.hit_effect != null) {
Integer val = null;
if (npc.hit_effect.conditions_source != null) {
val = npc.hit_effect.conditions_source.size();
}
if (npc.hit_effect.conditions_target != null) {
if (val == null) val = npc.hit_effect.conditions_target.size();
else val += npc.hit_effect.conditions_target.size();
}
return val;
}
return null;
case 24: return npc.getMonsterExperience();
}
return null;
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
//not editable.
}
List<TableModelListener> listeners = new CopyOnWriteArrayList<TableModelListener>();
@Override
public void addTableModelListener(TableModelListener l) {
listeners.add(l);
}
@Override
public void removeTableModelListener(TableModelListener l) {
listeners.remove(l);
}
}
}