diff --git a/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/ItemEditor.java b/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/ItemEditor.java index 9692fd8..b2686c7 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/ItemEditor.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/ItemEditor.java @@ -14,7 +14,6 @@ import com.gpl.rpg.atcontentstudio.utils.UiUtils; import com.jidesoft.swing.JideBoxLayout; import javax.swing.*; -import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; @@ -32,11 +31,6 @@ public class ItemEditor extends JSONElementEditor { private Common.ActorConditionEffect selectedEquipEffectCondition; - private Common.TimedActorConditionEffect selectedHitEffectSourceCondition; - private Common.TimedActorConditionEffect selectedHitEffectTargetCondition; - private Common.TimedActorConditionEffect selectedKillEffectCondition; - private Common.TimedActorConditionEffect selectedHitReceivedEffectSourceCondition; - private Common.TimedActorConditionEffect selectedHitReceivedEffectTargetCondition; private JButton itemIcon; @@ -66,7 +60,7 @@ public class ItemEditor extends JSONElementEditor { private JSpinner equipIncUseCost; private JSpinner equipIncReequipCost; private JSpinner equipIncAttackCost; - private ConditionsListModel equipConditionsModel; + private EquipConditionsListModel equipConditionsModel; @SuppressWarnings("rawtypes") private JList equipConditionsList; private MyComboBox equipConditionBox; @@ -74,90 +68,9 @@ public class ItemEditor extends JSONElementEditor { private JRadioButton equipConditionImmunity; private JSpinner equipConditionMagnitude; - private CollapsiblePanel hitEffectPane; - private Common.HitEffect hitEffect; - private JSpinner hitHPMin; - private JSpinner hitHPMax; - private JSpinner hitAPMin; - private JSpinner hitAPMax; - private SourceTimedConditionsListModel hitSourceConditionsModel; - @SuppressWarnings("rawtypes") - private JList hitSourceConditionsList; - private MyComboBox hitSourceConditionBox; - private JSpinner hitSourceConditionChance; - private JRadioButton hitSourceConditionClear; - private JRadioButton hitSourceConditionApply; - private JRadioButton hitSourceConditionImmunity; - private JSpinner hitSourceConditionMagnitude; - private JRadioButton hitSourceConditionTimed; - private JRadioButton hitSourceConditionForever; - private JSpinner hitSourceConditionDuration; - private TargetTimedConditionsListModel hitTargetConditionsModel; - @SuppressWarnings("rawtypes") - private JList hitTargetConditionsList; - private MyComboBox hitTargetConditionBox; - private JSpinner hitTargetConditionChance; - private JRadioButton hitTargetConditionClear; - private JRadioButton hitTargetConditionApply; - private JRadioButton hitTargetConditionImmunity; - private JSpinner hitTargetConditionMagnitude; - private JRadioButton hitTargetConditionTimed; - private JRadioButton hitTargetConditionForever; - private JSpinner hitTargetConditionDuration; - - private CollapsiblePanel killEffectPane; - private Common.DeathEffect killEffect; - private JSpinner killHPMin; - private JSpinner killHPMax; - private JSpinner killAPMin; - private JSpinner killAPMax; - private SourceTimedConditionsListModel killSourceConditionsModel; - @SuppressWarnings("rawtypes") - private JList killSourceConditionsList; - private MyComboBox killSourceConditionBox; - private JSpinner killSourceConditionChance; - private JRadioButton killSourceConditionClear; - private JRadioButton killSourceConditionApply; - private JRadioButton killSourceConditionImmunity; - private JSpinner killSourceConditionMagnitude; - private JRadioButton killSourceConditionTimed; - private JRadioButton killSourceConditionForever; - private JSpinner killSourceConditionDuration; - - private CollapsiblePanel hitReceivedEffectPane; - private Common.HitReceivedEffect hitReceivedEffect; - private JSpinner hitReceivedHPMin; - private JSpinner hitReceivedHPMax; - private JSpinner hitReceivedAPMin; - private JSpinner hitReceivedAPMax; - private JSpinner hitReceivedHPMinTarget; - private JSpinner hitReceivedHPMaxTarget; - private JSpinner hitReceivedAPMinTarget; - private JSpinner hitReceivedAPMaxTarget; - private SourceTimedConditionsListModel hitReceivedSourceConditionsModel; - @SuppressWarnings("rawtypes") - private JList hitReceivedSourceConditionsList; - private MyComboBox hitReceivedSourceConditionBox; - private JSpinner hitReceivedSourceConditionChance; - private JRadioButton hitReceivedSourceConditionClear; - private JRadioButton hitReceivedSourceConditionApply; - private JRadioButton hitReceivedSourceConditionImmunity; - private JSpinner hitReceivedSourceConditionMagnitude; - private JRadioButton hitReceivedSourceConditionTimed; - private JRadioButton hitReceivedSourceConditionForever; - private JSpinner hitReceivedSourceConditionDuration; - private TargetTimedConditionsListModel hitReceivedTargetConditionsModel; - @SuppressWarnings("rawtypes") - private JList hitReceivedTargetConditionsList; - private MyComboBox hitReceivedTargetConditionBox; - private JSpinner hitReceivedTargetConditionChance; - private JRadioButton hitReceivedTargetConditionClear; - private JRadioButton hitReceivedTargetConditionApply; - private JRadioButton hitReceivedTargetConditionImmunity; - private JSpinner hitReceivedTargetConditionMagnitude; - private JRadioButton hitReceivedTargetConditionTimed; - private JRadioButton hitReceivedTargetConditionForever; - private JSpinner hitReceivedTargetConditionDuration; + private CommonEditor.HitEffectPane hitEffectPane; + private CommonEditor.DeathEffectPane killEffectPane; + private CommonEditor.HitRecievedEffectPane hitReceivedEffectPane; public ItemEditor(Item item) { super(item, item.getDesc(), item.getIcon()); @@ -210,7 +123,7 @@ public class ItemEditor extends JSONElementEditor { equipIncAttackCost = addIntegerField(equipEffectPane, "Increase attack cost: ", equipEffect.increase_attack_cost, true, item.writable, listener); String titleEquipConditions = "Actor Conditions applied when equipped: "; - equipConditionsModel = new ConditionsListModel(equipEffect); + equipConditionsModel = new EquipConditionsListModel(equipEffect); CommonEditor.ConditionsCellRenderer cellRendererEquipConditions = new CommonEditor.ConditionsCellRenderer(); BasicLambdaWithArg selectedSetEquipConditions = (value)->selectedEquipEffectCondition = value; BasicLambdaWithReturn selectedGetEquipConditions = ()->selectedEquipEffectCondition ; @@ -240,508 +153,62 @@ public class ItemEditor extends JSONElementEditor { equipEffectPane.collapse(); } - hitEffectPane = new CollapsiblePanel("Effect on every hit: "); - hitEffectPane.setLayout(new JideBoxLayout(hitEffectPane, JideBoxLayout.PAGE_AXIS)); + Common.HitEffect hitEffect; if (item.hit_effect == null) { hitEffect = new Common.HitEffect(); } else { hitEffect = item.hit_effect; } - hitHPMin = addIntegerField(hitEffectPane, "HP bonus min: ", hitEffect.hp_boost_min, true, item.writable, listener); - hitHPMax = addIntegerField(hitEffectPane, "HP bonus max: ", hitEffect.hp_boost_max, true, item.writable, listener); - hitAPMin = addIntegerField(hitEffectPane, "AP bonus min: ", hitEffect.ap_boost_min, true, item.writable, listener); - hitAPMax = addIntegerField(hitEffectPane, "AP bonus max: ", hitEffect.ap_boost_max, true, item.writable, listener); + if (hitEffectPane == null) + hitEffectPane = new CommonEditor.HitEffectPane("Effect on every hit: ", Common.TimedActorConditionEffect::new, this, null, null); + hitEffectPane.createHitEffectPaneContent(listener, item.writable, hitEffect, new CommonEditor.SourceTimedConditionsListModel(hitEffect), new CommonEditor.TargetTimedConditionsListModel(hitEffect)); + pane.add(hitEffectPane.effectPane, JideBoxLayout.FIX); - String title = "Actor Conditions applied to the source: "; - hitSourceConditionsModel = new SourceTimedConditionsListModel(hitEffect); - CommonEditor.TimedConditionsCellRenderer cellRenderer = new CommonEditor.TimedConditionsCellRenderer(); - BasicLambdaWithArg setSelected = (selectedItem) -> selectedHitEffectSourceCondition = selectedItem; - BasicLambdaWithReturn getSelected = () -> hitSourceConditionsList.getSelectedValue(); - BasicLambda resetSelected = () -> selectedHitEffectSourceCondition = null; - BasicLambdaWithArg valueChanged = (selectedReply) -> { - }; - BasicLambdaWithArg updateEditorPane = (editorPane) -> updateHitSourceTimedConditionEditorPane(editorPane, selectedHitEffectSourceCondition, listener); - - var collapsibleItemList = UiUtils.getCollapsibleItemList( - listener, - hitSourceConditionsModel, - resetSelected, - setSelected, - getSelected, - valueChanged, - updateEditorPane, - item.writable, - Common.TimedActorConditionEffect::new, - cellRenderer, - title, - (x) -> null - ); - CollapsiblePanel hitSourceConditionsPane = collapsibleItemList.collapsiblePanel; - hitSourceConditionsList = collapsibleItemList.list; - if (item.hit_effect == null || item.hit_effect.conditions_source == null || item.hit_effect.conditions_source.isEmpty()) { - hitSourceConditionsPane.collapse(); - } - hitEffectPane.add(hitSourceConditionsPane, JideBoxLayout.FIX); - - String titleHitTargetConditions = "Actor Conditions applied to the target: "; - hitTargetConditionsModel = new TargetTimedConditionsListModel(hitEffect); - CommonEditor.TimedConditionsCellRenderer cellRendererHitTargetConditions = new CommonEditor.TimedConditionsCellRenderer(); - BasicLambdaWithArg selectedSetHitTargetConditions = (value)->selectedHitEffectTargetCondition = value; - BasicLambdaWithReturn selectedGetHitTargetConditions = ()->selectedHitEffectTargetCondition ; - BasicLambda selectedResetHitTargetConditions = ()->selectedHitEffectTargetCondition = null; - BasicLambdaWithArg updatePaneHitTargetConditions = (editorPane) -> updateHitTargetTimedConditionEditorPane(editorPane, selectedHitEffectTargetCondition, listener); - var resultHitTargetConditions = UiUtils.getCollapsibleItemList(listener, - hitTargetConditionsModel, - selectedResetHitTargetConditions, - selectedSetHitTargetConditions, - selectedGetHitTargetConditions, - (x) -> {}, - updatePaneHitTargetConditions, - item.writable, - Common.TimedActorConditionEffect::new, - cellRendererHitTargetConditions, - titleHitTargetConditions, - (x) -> null); - hitTargetConditionsList = resultHitTargetConditions.list; - CollapsiblePanel hitTargetConditionsPane = resultHitTargetConditions.collapsiblePanel; - if (item.hit_effect == null || item.hit_effect.conditions_target == null || item.hit_effect.conditions_target.isEmpty()) { - hitTargetConditionsPane.collapse(); - } - hitEffectPane.add(hitTargetConditionsPane, JideBoxLayout.FIX); - if (item.hit_effect == null) { - hitEffectPane.collapse(); - } - pane.add(hitEffectPane, JideBoxLayout.FIX); - - - killEffectPane = new CollapsiblePanel(killLabel); - killEffectPane.setLayout(new JideBoxLayout(killEffectPane, JideBoxLayout.PAGE_AXIS)); + Common.DeathEffect killEffect; if (item.kill_effect == null) { killEffect = new Common.DeathEffect(); } else { killEffect = item.kill_effect; } - killHPMin = addIntegerField(killEffectPane, "HP bonus min: ", killEffect.hp_boost_min, true, item.writable, listener); - killHPMax = addIntegerField(killEffectPane, "HP bonus max: ", killEffect.hp_boost_max, true, item.writable, listener); - killAPMin = addIntegerField(killEffectPane, "AP bonus min: ", killEffect.ap_boost_min, true, item.writable, listener); - killAPMax = addIntegerField(killEffectPane, "AP bonus max: ", killEffect.ap_boost_max, true, item.writable, listener); + if (killEffectPane == null) + killEffectPane = new CommonEditor.DeathEffectPane(killLabel, Common.TimedActorConditionEffect::new, this, null); + killEffectPane.createDeathEffectPaneContent(listener, item.writable, killEffect, new CommonEditor.SourceTimedConditionsListModel(killEffect)); + pane.add(killEffectPane.effectPane, JideBoxLayout.FIX); - String titleKillSourceConditions = "Actor Conditions applied to the source: "; - killSourceConditionsModel = new SourceTimedConditionsListModel(killEffect); - CommonEditor.TimedConditionsCellRenderer cellRendererKillSourceConditions = new CommonEditor.TimedConditionsCellRenderer(); - BasicLambdaWithArg selectedSetKillSourceConditions = (value)->selectedKillEffectCondition = value; - BasicLambdaWithReturn selectedGetKillSourceConditions = ()->selectedKillEffectCondition ; - BasicLambda selectedResetKillSourceConditions = ()->selectedKillEffectCondition = null; - BasicLambdaWithArg updatePaneKillSourceConditions = (editorPane) -> updateKillSourceTimedConditionEditorPane(editorPane, selectedKillEffectCondition, listener); - var resultKillSourceConditions = UiUtils.getCollapsibleItemList(listener, - killSourceConditionsModel, - selectedResetKillSourceConditions, - selectedSetKillSourceConditions, - selectedGetKillSourceConditions, - (x) -> {}, - updatePaneKillSourceConditions, - item.writable, - Common.TimedActorConditionEffect::new, - cellRendererKillSourceConditions, - titleKillSourceConditions, - (x) -> null); - killSourceConditionsList = resultKillSourceConditions.list; - CollapsiblePanel killSourceConditionsPane = resultKillSourceConditions.collapsiblePanel; - if (item.kill_effect == null || item.kill_effect.conditions_source == null || item.kill_effect.conditions_source.isEmpty()) { - killSourceConditionsPane.collapse(); - } - killEffectPane.add(killSourceConditionsPane, JideBoxLayout.FIX); - - if (item.kill_effect == null) { - killEffectPane.collapse(); - } - pane.add(killEffectPane, JideBoxLayout.FIX); - - - hitReceivedEffectPane = new CollapsiblePanel("Effect on every hit received: "); - hitReceivedEffectPane.setLayout(new JideBoxLayout(hitReceivedEffectPane, JideBoxLayout.PAGE_AXIS)); + Common.HitReceivedEffect hitReceivedEffect; if (item.hit_received_effect == null) { hitReceivedEffect = new Common.HitReceivedEffect(); } else { hitReceivedEffect = item.hit_received_effect; } - hitReceivedHPMin = addIntegerField(hitReceivedEffectPane, "Player HP bonus min: ", hitReceivedEffect.hp_boost_min, true, item.writable, listener); - hitReceivedHPMax = addIntegerField(hitReceivedEffectPane, "Player HP bonus max: ", hitReceivedEffect.hp_boost_max, true, item.writable, listener); - hitReceivedAPMin = addIntegerField(hitReceivedEffectPane, "Player AP bonus min: ", hitReceivedEffect.ap_boost_min, true, item.writable, listener); - hitReceivedAPMax = addIntegerField(hitReceivedEffectPane, "Player AP bonus max: ", hitReceivedEffect.ap_boost_max, true, item.writable, listener); - String roleHitReceivedTarget = "Attacker"; - hitReceivedHPMinTarget = addIntegerField(hitReceivedEffectPane, roleHitReceivedTarget + " HP bonus min: ", hitReceivedEffect.target.hp_boost_min, true, item.writable, listener); - hitReceivedHPMaxTarget = addIntegerField(hitReceivedEffectPane, roleHitReceivedTarget + " HP bonus max: ", hitReceivedEffect.target.hp_boost_max, true, item.writable, listener); - hitReceivedAPMinTarget = addIntegerField(hitReceivedEffectPane, roleHitReceivedTarget + " AP bonus min: ", hitReceivedEffect.target.ap_boost_min, true, item.writable, listener); - hitReceivedAPMaxTarget = addIntegerField(hitReceivedEffectPane, roleHitReceivedTarget + " AP bonus max: ", hitReceivedEffect.target.ap_boost_max, true, item.writable, listener); - - String titleHitReceivedSourceConditions = "Actor Conditions applied to the player: "; - hitReceivedSourceConditionsModel = new SourceTimedConditionsListModel(killEffect); - CommonEditor.TimedConditionsCellRenderer cellRendererHitReceivedSourceConditions = new CommonEditor.TimedConditionsCellRenderer(); - BasicLambdaWithArg selectedSetHitReceivedSourceConditions = (value)->selectedHitReceivedEffectSourceCondition = value; - BasicLambdaWithReturn selectedGetHitReceivedSourceConditions = ()->selectedHitReceivedEffectSourceCondition ; - BasicLambda selectedResetHitReceivedSourceConditions = ()->selectedHitReceivedEffectSourceCondition = null; - BasicLambdaWithArg updatePaneHitReceivedSourceConditions = (editorPane) -> updateHitReceivedSourceTimedConditionEditorPane(editorPane, selectedHitReceivedEffectSourceCondition, listener); - var resultHitReceivedSourceConditions = UiUtils.getCollapsibleItemList(listener, - hitReceivedSourceConditionsModel, - selectedResetHitReceivedSourceConditions, - selectedSetHitReceivedSourceConditions, - selectedGetHitReceivedSourceConditions, - (x) -> {}, - updatePaneHitReceivedSourceConditions, - item.writable, - Common.TimedActorConditionEffect::new, - cellRendererHitReceivedSourceConditions, - titleHitReceivedSourceConditions, - (x) -> null); - hitReceivedSourceConditionsList = resultHitReceivedSourceConditions.list; - CollapsiblePanel hitReceivedSourceConditionsPane = resultHitReceivedSourceConditions.collapsiblePanel; - if (item.hit_received_effect == null || item.hit_received_effect.conditions_source == null || item.hit_received_effect.conditions_source.isEmpty()) { - hitReceivedSourceConditionsPane.collapse(); - } - hitReceivedEffectPane.add(hitReceivedSourceConditionsPane, JideBoxLayout.FIX); - - String titleHitReceivedTargetConditions = "Actor Conditions applied to the attacker: "; - hitReceivedTargetConditionsModel = new TargetTimedConditionsListModel(hitReceivedEffect); - CommonEditor.TimedConditionsCellRenderer cellRendererHitReceivedTargetConditions = new CommonEditor.TimedConditionsCellRenderer(); - BasicLambdaWithArg selectedSetHitReceivedTargetConditions = (value)->selectedHitReceivedEffectTargetCondition = value; - BasicLambdaWithReturn selectedGetHitReceivedTargetConditions = ()->selectedHitReceivedEffectTargetCondition ; - BasicLambda selectedResetHitReceivedTargetConditions = ()->selectedHitReceivedEffectTargetCondition = null; - BasicLambdaWithArg updatePaneHitReceivedTargetConditions = (editorPane) -> updateHitReceivedTargetTimedConditionEditorPane(editorPane, selectedHitReceivedEffectTargetCondition, listener); - var resultHitReceivedTargetConditions = UiUtils.getCollapsibleItemList(listener, - hitReceivedTargetConditionsModel, - selectedResetHitReceivedTargetConditions, - selectedSetHitReceivedTargetConditions, - selectedGetHitReceivedTargetConditions, - (x) -> {}, - updatePaneHitReceivedTargetConditions, - item.writable, - Common.TimedActorConditionEffect::new, - cellRendererHitReceivedTargetConditions, - titleHitReceivedTargetConditions, - (x) -> null); - hitReceivedTargetConditionsList = resultHitReceivedTargetConditions.list; - CollapsiblePanel hitReceivedTargetConditionsPane = resultHitReceivedTargetConditions.collapsiblePanel; - if (item.hit_received_effect == null || item.hit_received_effect.conditions_target == null || item.hit_received_effect.conditions_target.isEmpty()) { - hitReceivedTargetConditionsPane.collapse(); - } - hitReceivedEffectPane.add(hitReceivedTargetConditionsPane, JideBoxLayout.FIX); - - if (item.hit_received_effect == null) { - hitReceivedEffectPane.collapse(); - } - pane.add(hitReceivedEffectPane, JideBoxLayout.FIX); + if (hitReceivedEffectPane == null) + hitReceivedEffectPane = new CommonEditor.HitRecievedEffectPane("Effect on every hit received: ", Common.TimedActorConditionEffect::new, this, null, null); + hitReceivedEffectPane.createHitReceivedEffectPaneContent(listener, item.writable, hitReceivedEffect, new CommonEditor.SourceTimedConditionsListModel(hitReceivedEffect), new CommonEditor.TargetTimedConditionsListModel(hitReceivedEffect)); + pane.add(killEffectPane.effectPane, JideBoxLayout.FIX); if (item.category == null || item.category.action_type == null || item.category.action_type == ItemCategory.ActionType.none) { equipEffectPane.setVisible(false); - hitEffectPane.setVisible(false); - killEffectPane.setVisible(false); + hitEffectPane.effectPane.setVisible(false); + killEffectPane.effectPane.setVisible(false); } else if (item.category.action_type == ItemCategory.ActionType.use) { equipEffectPane.setVisible(false); - hitEffectPane.setVisible(false); - killEffectPane.setVisible(true); - killEffectPane.setTitle(useLabel); - killEffectPane.revalidate(); - killEffectPane.repaint(); + hitEffectPane.effectPane.setVisible(false); + killEffectPane.effectPane.setVisible(true); + killEffectPane.effectPane.setTitle(useLabel); + killEffectPane.effectPane.revalidate(); + killEffectPane.effectPane.repaint(); } else if (item.category.action_type == ItemCategory.ActionType.equip) { equipEffectPane.setVisible(true); - hitEffectPane.setVisible(true); - killEffectPane.setVisible(true); - killEffectPane.setTitle(killLabel); - killEffectPane.revalidate(); - killEffectPane.repaint(); + hitEffectPane.effectPane.setVisible(true); + killEffectPane.effectPane.setVisible(true); + killEffectPane.effectPane.setTitle(killLabel); + killEffectPane.effectPane.revalidate(); + killEffectPane.effectPane.repaint(); } } - public void updateHitSourceTimedConditionEditorPane(JPanel pane, Common.TimedActorConditionEffect condition, final FieldUpdateListener listener) { - pane.removeAll(); - if (hitSourceConditionBox != null) { - removeElementListener(hitSourceConditionBox); - } - if (condition == null) { - pane.revalidate(); - pane.repaint(); - return; - } - - boolean writable = ((Item) target).writable; - Project proj = ((Item) target).getProject(); - - hitSourceConditionBox = addActorConditionBox(pane, proj, "Actor Condition: ", condition.condition, writable, listener); - hitSourceConditionChance = addDoubleField(pane, "Chance: ", condition.chance, writable, listener); - - hitSourceConditionClear = new JRadioButton("Clear active condition"); - pane.add(hitSourceConditionClear, JideBoxLayout.FIX); - hitSourceConditionApply = new JRadioButton("Apply condition with magnitude"); - pane.add(hitSourceConditionApply, JideBoxLayout.FIX); - hitSourceConditionMagnitude = addIntegerField(pane, "Magnitude: ", condition.magnitude == null ? null : condition.magnitude >= 0 ? condition.magnitude : 0, 1, false, writable, listener); - hitSourceConditionImmunity = new JRadioButton("Give immunity to condition"); - pane.add(hitSourceConditionImmunity, JideBoxLayout.FIX); - - ButtonGroup radioEffectGroup = new ButtonGroup(); - radioEffectGroup.add(hitSourceConditionApply); - radioEffectGroup.add(hitSourceConditionClear); - radioEffectGroup.add(hitSourceConditionImmunity); - - hitSourceConditionTimed = new JRadioButton("For a number of rounds"); - pane.add(hitSourceConditionTimed, JideBoxLayout.FIX); - hitSourceConditionDuration = addIntegerField(pane, "Duration: ", condition.duration, 1, false, writable, listener); - hitSourceConditionForever = new JRadioButton("Forever"); - pane.add(hitSourceConditionForever, JideBoxLayout.FIX); - - ButtonGroup radioDurationGroup = new ButtonGroup(); - radioDurationGroup.add(hitSourceConditionTimed); - radioDurationGroup.add(hitSourceConditionForever); - - updateHitSourceTimedConditionWidgets(condition); - - hitSourceConditionClear.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - listener.valueChanged(hitSourceConditionClear, hitSourceConditionClear.isSelected()); - } - }); - hitSourceConditionApply.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - listener.valueChanged(hitSourceConditionApply, hitSourceConditionApply.isSelected()); - } - }); - hitSourceConditionImmunity.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - listener.valueChanged(hitSourceConditionImmunity, hitSourceConditionImmunity.isSelected()); - } - }); - - hitSourceConditionTimed.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - listener.valueChanged(hitSourceConditionTimed, hitSourceConditionTimed.isSelected()); - } - }); - hitSourceConditionForever.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - listener.valueChanged(hitSourceConditionForever, hitSourceConditionForever.isSelected()); - } - }); - - pane.revalidate(); - pane.repaint(); - } - - public void updateHitSourceTimedConditionWidgets(Common.TimedActorConditionEffect condition) { - - boolean immunity = condition.isImmunity(); - boolean clear = condition.isClear(); - boolean forever = condition.isInfinite(); - - hitSourceConditionClear.setSelected(clear); - hitSourceConditionApply.setSelected(!clear && !immunity); - hitSourceConditionMagnitude.setEnabled(!clear && !immunity); - hitSourceConditionImmunity.setSelected(immunity); - - hitSourceConditionTimed.setSelected(!forever); - hitSourceConditionTimed.setEnabled(!clear); - hitSourceConditionDuration.setEnabled(!clear && !forever); - hitSourceConditionForever.setSelected(forever); - hitSourceConditionForever.setEnabled(!clear); - } - - public void updateHitTargetTimedConditionEditorPane(JPanel pane, Common.TimedActorConditionEffect condition, final FieldUpdateListener listener) { - pane.removeAll(); - if (hitTargetConditionBox != null) { - removeElementListener(hitTargetConditionBox); - } - if (condition == null) { - pane.revalidate(); - pane.repaint(); - return; - } - - boolean writable = ((Item) target).writable; - Project proj = ((Item) target).getProject(); - - hitTargetConditionBox = addActorConditionBox(pane, proj, "Actor Condition: ", condition.condition, writable, listener); - hitTargetConditionChance = addDoubleField(pane, "Chance: ", condition.chance, writable, listener); - - hitTargetConditionClear = new JRadioButton("Clear active condition"); - pane.add(hitTargetConditionClear, JideBoxLayout.FIX); - hitTargetConditionApply = new JRadioButton("Apply condition with magnitude"); - pane.add(hitTargetConditionApply, JideBoxLayout.FIX); - hitTargetConditionMagnitude = addIntegerField(pane, "Magnitude: ", condition.magnitude == null ? null : condition.magnitude >= 0 ? condition.magnitude : 0, 1, false, writable, listener); - hitTargetConditionImmunity = new JRadioButton("Give immunity to condition"); - pane.add(hitTargetConditionImmunity, JideBoxLayout.FIX); - - ButtonGroup radioEffectGroup = new ButtonGroup(); - radioEffectGroup.add(hitTargetConditionApply); - radioEffectGroup.add(hitTargetConditionClear); - radioEffectGroup.add(hitTargetConditionImmunity); - - hitTargetConditionTimed = new JRadioButton("For a number of rounds"); - pane.add(hitTargetConditionTimed, JideBoxLayout.FIX); - hitTargetConditionDuration = addIntegerField(pane, "Duration: ", condition.duration, 1, false, writable, listener); - hitTargetConditionForever = new JRadioButton("Forever"); - pane.add(hitTargetConditionForever, JideBoxLayout.FIX); - - ButtonGroup radioDurationGroup = new ButtonGroup(); - radioDurationGroup.add(hitTargetConditionTimed); - radioDurationGroup.add(hitTargetConditionForever); - - updateHitTargetTimedConditionWidgets(condition); - - hitTargetConditionClear.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - listener.valueChanged(hitTargetConditionClear, hitTargetConditionClear.isSelected()); - } - }); - hitTargetConditionApply.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - listener.valueChanged(hitTargetConditionApply, hitTargetConditionApply.isSelected()); - } - }); - hitTargetConditionImmunity.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - listener.valueChanged(hitTargetConditionImmunity, hitTargetConditionImmunity.isSelected()); - } - }); - - hitTargetConditionTimed.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - listener.valueChanged(hitTargetConditionTimed, hitTargetConditionTimed.isSelected()); - } - }); - hitTargetConditionForever.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - listener.valueChanged(hitTargetConditionForever, hitTargetConditionForever.isSelected()); - } - }); - - pane.revalidate(); - pane.repaint(); - } - - public void updateHitTargetTimedConditionWidgets(Common.TimedActorConditionEffect condition) { - boolean immunity = condition.isImmunity(); - boolean clear = condition.isClear(); - boolean forever = condition.isInfinite(); - - hitTargetConditionClear.setSelected(clear); - hitTargetConditionApply.setSelected(!clear && !immunity); - hitTargetConditionMagnitude.setEnabled(!clear && !immunity); - hitTargetConditionImmunity.setSelected(immunity); - - hitTargetConditionTimed.setSelected(!forever); - hitTargetConditionTimed.setEnabled(!clear); - hitTargetConditionDuration.setEnabled(!clear && !forever); - hitTargetConditionForever.setSelected(forever); - hitTargetConditionForever.setEnabled(!clear); - } - - public void updateKillSourceTimedConditionEditorPane(JPanel pane, Common.TimedActorConditionEffect condition, final FieldUpdateListener listener) { - pane.removeAll(); - if (killSourceConditionBox != null) { - removeElementListener(killSourceConditionBox); - } - if (condition == null) { - pane.revalidate(); - pane.repaint(); - return; - } - - boolean writable = ((Item) target).writable; - Project proj = ((Item) target).getProject(); - - killSourceConditionBox = addActorConditionBox(pane, proj, "Actor Condition: ", condition.condition, writable, listener); - killSourceConditionChance = addDoubleField(pane, "Chance: ", condition.chance, writable, listener); - - killSourceConditionClear = new JRadioButton("Clear active condition"); - pane.add(killSourceConditionClear, JideBoxLayout.FIX); - killSourceConditionApply = new JRadioButton("Apply condition with magnitude"); - pane.add(killSourceConditionApply, JideBoxLayout.FIX); - killSourceConditionMagnitude = addIntegerField(pane, "Magnitude: ", condition.magnitude == null ? null : condition.magnitude >= 0 ? condition.magnitude : 0, 1, false, writable, listener); - killSourceConditionImmunity = new JRadioButton("Give immunity to condition"); - pane.add(killSourceConditionImmunity, JideBoxLayout.FIX); - - ButtonGroup radioEffectGroup = new ButtonGroup(); - radioEffectGroup.add(killSourceConditionApply); - radioEffectGroup.add(killSourceConditionClear); - radioEffectGroup.add(killSourceConditionImmunity); - - killSourceConditionTimed = new JRadioButton("For a number of rounds"); - pane.add(killSourceConditionTimed, JideBoxLayout.FIX); - killSourceConditionDuration = addIntegerField(pane, "Duration: ", condition.duration, 1, false, writable, listener); - killSourceConditionForever = new JRadioButton("Forever"); - pane.add(killSourceConditionForever, JideBoxLayout.FIX); - - ButtonGroup radioDurationGroup = new ButtonGroup(); - radioDurationGroup.add(killSourceConditionTimed); - radioDurationGroup.add(killSourceConditionForever); - - updateKillSourceTimedConditionWidgets(condition); - - killSourceConditionClear.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - listener.valueChanged(killSourceConditionClear, killSourceConditionClear.isSelected()); - } - }); - killSourceConditionApply.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - listener.valueChanged(killSourceConditionApply, killSourceConditionApply.isSelected()); - } - }); - killSourceConditionImmunity.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - listener.valueChanged(killSourceConditionImmunity, killSourceConditionImmunity.isSelected()); - } - }); - - killSourceConditionTimed.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - listener.valueChanged(killSourceConditionTimed, killSourceConditionTimed.isSelected()); - } - }); - killSourceConditionForever.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - listener.valueChanged(killSourceConditionForever, killSourceConditionForever.isSelected()); - } - }); - - pane.revalidate(); - pane.repaint(); - } - - public void updateKillSourceTimedConditionWidgets(Common.TimedActorConditionEffect condition) { - - boolean immunity = condition.isImmunity(); - boolean clear = condition.isClear(); - boolean forever = condition.isInfinite(); - - killSourceConditionClear.setSelected(clear); - killSourceConditionApply.setSelected(!clear && !immunity); - killSourceConditionMagnitude.setEnabled(!clear && !immunity); - killSourceConditionImmunity.setSelected(immunity); - - killSourceConditionTimed.setSelected(!forever); - killSourceConditionTimed.setEnabled(!clear); - killSourceConditionDuration.setEnabled(!clear && !forever); - killSourceConditionForever.setSelected(forever); - killSourceConditionForever.setEnabled(!clear); - } - public void updateEquipConditionEditorPane(JPanel pane, Common.ActorConditionEffect condition, final FieldUpdateListener listener) { pane.removeAll(); if (equipConditionBox != null) { @@ -790,233 +257,8 @@ public class ItemEditor extends JSONElementEditor { pane.repaint(); } - public void updateHitReceivedSourceTimedConditionEditorPane(JPanel pane, Common.TimedActorConditionEffect condition, final FieldUpdateListener listener) { - pane.removeAll(); - if (hitReceivedSourceConditionBox != null) { - removeElementListener(hitReceivedSourceConditionBox); - } - if (condition == null) { - pane.revalidate(); - pane.repaint(); - return; - } - - boolean writable = ((Item) target).writable; - Project proj = ((Item) target).getProject(); - - hitReceivedSourceConditionBox = addActorConditionBox(pane, proj, "Actor Condition: ", condition.condition, writable, listener); - hitReceivedSourceConditionChance = addDoubleField(pane, "Chance: ", condition.chance, writable, listener); - - hitReceivedSourceConditionClear = new JRadioButton("Clear active condition"); - pane.add(hitReceivedSourceConditionClear, JideBoxLayout.FIX); - hitReceivedSourceConditionApply = new JRadioButton("Apply condition with magnitude"); - pane.add(hitReceivedSourceConditionApply, JideBoxLayout.FIX); - hitReceivedSourceConditionMagnitude = addIntegerField(pane, "Magnitude: ", condition.magnitude == null ? null : condition.magnitude >= 0 ? condition.magnitude : 0, 1, false, writable, listener); - hitReceivedSourceConditionImmunity = new JRadioButton("Give immunity to condition"); - pane.add(hitReceivedSourceConditionImmunity, JideBoxLayout.FIX); - - ButtonGroup radioEffectGroup = new ButtonGroup(); - radioEffectGroup.add(hitReceivedSourceConditionApply); - radioEffectGroup.add(hitReceivedSourceConditionClear); - radioEffectGroup.add(hitReceivedSourceConditionImmunity); - - hitReceivedSourceConditionTimed = new JRadioButton("For a number of rounds"); - pane.add(hitReceivedSourceConditionTimed, JideBoxLayout.FIX); - hitReceivedSourceConditionDuration = addIntegerField(pane, "Duration: ", condition.duration, 1, false, writable, listener); - hitReceivedSourceConditionForever = new JRadioButton("Forever"); - pane.add(hitReceivedSourceConditionForever, JideBoxLayout.FIX); - - ButtonGroup radioDurationGroup = new ButtonGroup(); - radioDurationGroup.add(hitReceivedSourceConditionTimed); - radioDurationGroup.add(hitReceivedSourceConditionForever); - - updateHitReceivedSourceTimedConditionWidgets(condition); - - hitReceivedSourceConditionClear.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - listener.valueChanged(hitReceivedSourceConditionClear, hitReceivedSourceConditionClear.isSelected()); - } - }); - hitReceivedSourceConditionApply.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - listener.valueChanged(hitReceivedSourceConditionApply, hitReceivedSourceConditionApply.isSelected()); - } - }); - hitReceivedSourceConditionImmunity.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - listener.valueChanged(hitReceivedSourceConditionImmunity, hitReceivedSourceConditionImmunity.isSelected()); - } - }); - - hitReceivedSourceConditionTimed.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - listener.valueChanged(hitReceivedSourceConditionTimed, hitReceivedSourceConditionTimed.isSelected()); - } - }); - hitReceivedSourceConditionForever.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - listener.valueChanged(hitReceivedSourceConditionForever, hitReceivedSourceConditionForever.isSelected()); - } - }); - - pane.revalidate(); - pane.repaint(); - } - - public void updateHitReceivedSourceTimedConditionWidgets(Common.TimedActorConditionEffect condition) { - - boolean immunity = condition.isImmunity(); - boolean clear = condition.isClear(); - boolean forever = condition.isInfinite(); - - hitReceivedSourceConditionClear.setSelected(clear); - hitReceivedSourceConditionApply.setSelected(!clear && !immunity); - hitReceivedSourceConditionMagnitude.setEnabled(!clear && !immunity); - hitReceivedSourceConditionImmunity.setSelected(immunity); - - hitReceivedSourceConditionTimed.setSelected(!forever); - hitReceivedSourceConditionTimed.setEnabled(!clear); - hitReceivedSourceConditionDuration.setEnabled(!clear && !forever); - hitReceivedSourceConditionForever.setSelected(forever); - hitReceivedSourceConditionForever.setEnabled(!clear); - } - - public void updateHitReceivedTargetTimedConditionEditorPane(JPanel pane, Common.TimedActorConditionEffect condition, final FieldUpdateListener listener) { - pane.removeAll(); - if (hitReceivedTargetConditionBox != null) { - removeElementListener(hitReceivedTargetConditionBox); - } - if (condition == null) { - pane.revalidate(); - pane.repaint(); - return; - } - - boolean writable = ((Item) target).writable; - Project proj = ((Item) target).getProject(); - - hitReceivedTargetConditionBox = addActorConditionBox(pane, proj, "Actor Condition: ", condition.condition, writable, listener); - hitReceivedTargetConditionChance = addDoubleField(pane, "Chance: ", condition.chance, writable, listener); - - hitReceivedTargetConditionClear = new JRadioButton("Clear active condition"); - pane.add(hitReceivedTargetConditionClear, JideBoxLayout.FIX); - hitReceivedTargetConditionApply = new JRadioButton("Apply condition with magnitude"); - pane.add(hitReceivedTargetConditionApply, JideBoxLayout.FIX); - hitReceivedTargetConditionMagnitude = addIntegerField(pane, "Magnitude: ", condition.magnitude == null ? null : condition.magnitude >= 0 ? condition.magnitude : 0, 1, false, writable, listener); - hitReceivedTargetConditionImmunity = new JRadioButton("Give immunity to condition"); - pane.add(hitReceivedTargetConditionImmunity, JideBoxLayout.FIX); - - ButtonGroup radioEffectGroup = new ButtonGroup(); - radioEffectGroup.add(hitReceivedTargetConditionApply); - radioEffectGroup.add(hitReceivedTargetConditionClear); - radioEffectGroup.add(hitReceivedTargetConditionImmunity); - - hitReceivedTargetConditionTimed = new JRadioButton("For a number of rounds"); - pane.add(hitReceivedTargetConditionTimed, JideBoxLayout.FIX); - hitReceivedTargetConditionDuration = addIntegerField(pane, "Duration: ", condition.duration, 1, false, writable, listener); - hitReceivedTargetConditionForever = new JRadioButton("Forever"); - pane.add(hitReceivedTargetConditionForever, JideBoxLayout.FIX); - - ButtonGroup radioDurationGroup = new ButtonGroup(); - radioDurationGroup.add(hitReceivedTargetConditionTimed); - radioDurationGroup.add(hitReceivedTargetConditionForever); - - updateHitReceivedTargetTimedConditionWidgets(condition); - - hitReceivedTargetConditionClear.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - listener.valueChanged(hitReceivedTargetConditionClear, hitReceivedTargetConditionClear.isSelected()); - } - }); - hitReceivedTargetConditionApply.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - listener.valueChanged(hitReceivedTargetConditionApply, hitReceivedTargetConditionApply.isSelected()); - } - }); - hitReceivedTargetConditionImmunity.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - listener.valueChanged(hitReceivedTargetConditionImmunity, hitReceivedTargetConditionImmunity.isSelected()); - } - }); - - hitReceivedTargetConditionTimed.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - listener.valueChanged(hitReceivedTargetConditionTimed, hitReceivedTargetConditionTimed.isSelected()); - } - }); - hitReceivedTargetConditionForever.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - listener.valueChanged(hitReceivedTargetConditionForever, hitReceivedTargetConditionForever.isSelected()); - } - }); - - pane.revalidate(); - pane.repaint(); - } - - public void updateHitReceivedTargetTimedConditionWidgets(Common.TimedActorConditionEffect condition) { - - boolean immunity = condition.isImmunity(); - boolean clear = condition.isClear(); - boolean forever = condition.isInfinite(); - - hitReceivedTargetConditionClear.setSelected(clear); - hitReceivedTargetConditionApply.setSelected(!clear && !immunity); - hitReceivedTargetConditionMagnitude.setEnabled(!clear && !immunity); - hitReceivedTargetConditionImmunity.setSelected(immunity); - - hitReceivedTargetConditionTimed.setSelected(!forever); - hitReceivedTargetConditionTimed.setEnabled(!clear); - hitReceivedTargetConditionDuration.setEnabled(!clear && !forever); - hitReceivedTargetConditionForever.setSelected(forever); - hitReceivedTargetConditionForever.setEnabled(!clear); - } - - - public static class SourceTimedConditionsListModel extends OrderedListenerListModel { - public SourceTimedConditionsListModel(Common.DeathEffect effect) { - super(effect); - } - - @Override - protected List getItems() { - return source.conditions_source; - } - - @Override - protected void setItems(List items) { - source.conditions_source = items; - } - } - - public static class TargetTimedConditionsListModel extends OrderedListenerListModel { - public TargetTimedConditionsListModel(Common.HitEffect effect) { - super(effect); - } - - @Override - protected List getItems() { - return source.conditions_target; - } - - @Override - protected void setItems(List items) { - source.conditions_target = items; - } - } - - public static class ConditionsListModel extends OrderedListenerListModel { - public ConditionsListModel(Item.EquipEffect equipEffect) { + public static class EquipConditionsListModel extends OrderedListenerListModel { + public EquipConditionsListModel(Item.EquipEffect equipEffect) { super(equipEffect); } @@ -1031,7 +273,6 @@ public class ItemEditor extends JSONElementEditor { } } - public static boolean isNull(Item.EquipEffect effect) { if (effect.conditions != null) return false; if (effect.critical_multiplier != null) return false; @@ -1051,42 +292,6 @@ public class ItemEditor extends JSONElementEditor { return true; } - - public static boolean isNull(Common.HitEffect effect) { - if (effect.ap_boost_min != null) return false; - if (effect.ap_boost_max != null) return false; - if (effect.hp_boost_min != null) return false; - if (effect.hp_boost_max != null) return false; - if (effect.conditions_source != null) return false; - if (effect.conditions_target != null) return false; - return true; - } - - - public static boolean isNull(Common.DeathEffect effect) { - if (effect.ap_boost_min != null) return false; - if (effect.ap_boost_max != null) return false; - if (effect.hp_boost_min != null) return false; - if (effect.hp_boost_max != null) return false; - if (effect.conditions_source != null) return false; - return true; - } - - public static boolean isNull(Common.HitReceivedEffect effect) { - if (effect.ap_boost_min != null) return false; - if (effect.ap_boost_max != null) return false; - if (effect.hp_boost_min != null) return false; - if (effect.hp_boost_max != null) return false; - if (effect.target.ap_boost_min != null) return false; - if (effect.target.ap_boost_max != null) return false; - if (effect.target.hp_boost_min != null) return false; - if (effect.target.hp_boost_max != null) return false; - if (effect.conditions_source != null) return false; - if (effect.conditions_target != null) return false; - return true; - } - - public class ItemFieldUpdater implements FieldUpdateListener { @Override @@ -1158,34 +363,34 @@ public class ItemEditor extends JSONElementEditor { if (item.category == null || item.category.action_type == null || item.category.action_type == ItemCategory.ActionType.none) { equipEffectPane.setVisible(false); item.equip_effect = null; - hitEffectPane.setVisible(false); + hitEffectPane.effectPane.setVisible(false); item.hit_effect = null; - killEffectPane.setVisible(false); + killEffectPane.effectPane.setVisible(false); item.kill_effect = null; - hitReceivedEffectPane.setVisible(false); + hitReceivedEffectPane.effectPane.setVisible(false); item.hit_received_effect = null; ItemEditor.this.revalidate(); ItemEditor.this.repaint(); } else if (item.category.action_type == ItemCategory.ActionType.use) { equipEffectPane.setVisible(false); item.equip_effect = null; - hitEffectPane.setVisible(false); + hitEffectPane.effectPane.setVisible(false); item.hit_effect = null; - killEffectPane.setVisible(true); + killEffectPane.effectPane.setVisible(true); updateKill = true; - hitReceivedEffectPane.setVisible(false); + hitReceivedEffectPane.effectPane.setVisible(false); item.hit_received_effect = null; - killEffectPane.setTitle(useLabel); + killEffectPane.effectPane.setTitle(useLabel); ItemEditor.this.revalidate(); ItemEditor.this.repaint(); } else if (item.category.action_type == ItemCategory.ActionType.equip) { equipEffectPane.setVisible(true); - hitEffectPane.setVisible(true); - killEffectPane.setVisible(true); + hitEffectPane.effectPane.setVisible(true); + killEffectPane.effectPane.setVisible(true); updateKill = true; - hitReceivedEffectPane.setVisible(true); + hitReceivedEffectPane.effectPane.setVisible(true); updateEquip = true; - killEffectPane.setTitle(killLabel); + killEffectPane.effectPane.setTitle(killLabel); ItemEditor.this.revalidate(); ItemEditor.this.repaint(); } @@ -1261,339 +466,14 @@ public class ItemEditor extends JSONElementEditor { selectedEquipEffectCondition.magnitude = (Integer) equipConditionMagnitude.getValue(); equipConditionMagnitude.setEnabled(true); equipConditionsModel.itemChanged(selectedEquipEffectCondition); - } else if (source == hitHPMin) { - hitEffect.hp_boost_min = (Integer) value; + } else if (hitEffectPane.valueChanged(source, value, item)) { updatePrice = true; updateHit = true; - } else if (source == hitHPMax) { - hitEffect.hp_boost_max = (Integer) value; - updatePrice = true; - updateHit = true; - } else if (source == hitAPMin) { - hitEffect.ap_boost_min = (Integer) value; - updatePrice = true; - updateHit = true; - } else if (source == hitAPMax) { - hitEffect.ap_boost_max = (Integer) value; - updatePrice = true; - updateHit = true; - } else if (source == hitSourceConditionsList) { - updateHit = true; - } else if (source == hitSourceConditionBox) { - updateConditionEffect((ActorCondition)value, item, selectedHitEffectSourceCondition, hitSourceConditionsModel); - updateHit = true; - } else if (source == hitSourceConditionClear && (Boolean) value) { - selectedHitEffectSourceCondition.magnitude = ActorCondition.MAGNITUDE_CLEAR; - selectedHitEffectSourceCondition.duration = null; - updateHitSourceTimedConditionWidgets(selectedHitEffectSourceCondition); - hitSourceConditionsModel.itemChanged(selectedHitEffectSourceCondition); - updateHit = true; - } else if (source == hitSourceConditionApply && (Boolean) value) { - selectedHitEffectSourceCondition.magnitude = (Integer) hitSourceConditionMagnitude.getValue(); - selectedHitEffectSourceCondition.duration = hitSourceConditionForever.isSelected() ? ActorCondition.DURATION_FOREVER : (Integer) hitSourceConditionDuration.getValue(); - if (selectedHitEffectSourceCondition.duration == null) { - selectedHitEffectSourceCondition.duration = 1; - } - updateHitSourceTimedConditionWidgets(selectedHitEffectSourceCondition); - hitSourceConditionsModel.itemChanged(selectedHitEffectSourceCondition); - updateHit = true; - } else if (source == hitSourceConditionImmunity && (Boolean) value) { - selectedHitEffectSourceCondition.magnitude = ActorCondition.MAGNITUDE_CLEAR; - selectedHitEffectSourceCondition.duration = hitSourceConditionForever.isSelected() ? ActorCondition.DURATION_FOREVER : (Integer) hitSourceConditionDuration.getValue(); - if (selectedHitEffectSourceCondition.duration == null || selectedHitEffectSourceCondition.duration == ActorCondition.DURATION_NONE) { - selectedHitEffectSourceCondition.duration = 1; - } - updateHitSourceTimedConditionWidgets(selectedHitEffectSourceCondition); - hitSourceConditionsModel.itemChanged(selectedHitEffectSourceCondition); - updateHit = true; - } else if (source == hitSourceConditionMagnitude) { - selectedHitEffectSourceCondition.magnitude = (Integer) value; - hitSourceConditionsModel.itemChanged(selectedHitEffectSourceCondition); - updateHit = true; - } else if (source == hitSourceConditionTimed && (Boolean) value) { - selectedHitEffectSourceCondition.duration = (Integer) hitSourceConditionDuration.getValue(); - if (selectedHitEffectSourceCondition.duration == null || selectedHitEffectSourceCondition.duration == ActorCondition.DURATION_NONE) { - selectedHitEffectSourceCondition.duration = 1; - } - updateHitSourceTimedConditionWidgets(selectedHitEffectSourceCondition); - hitSourceConditionsModel.itemChanged(selectedHitEffectSourceCondition); - updateHit = true; - } else if (source == hitSourceConditionForever && (Boolean) value) { - selectedHitEffectSourceCondition.duration = ActorCondition.DURATION_FOREVER; - updateHitSourceTimedConditionWidgets(selectedHitEffectSourceCondition); - hitSourceConditionsModel.itemChanged(selectedHitEffectSourceCondition); - updateHit = true; - } else if (source == hitSourceConditionDuration) { - selectedHitEffectSourceCondition.duration = (Integer) value; - hitSourceConditionsModel.itemChanged(selectedHitEffectSourceCondition); - updateHit = true; - } else if (source == hitSourceConditionChance) { - selectedHitEffectSourceCondition.chance = (Double) value; - hitSourceConditionsModel.itemChanged(selectedHitEffectSourceCondition); - updateHit = true; - } else if (source == hitTargetConditionsList) { - updateHit = true; - } else if (source == hitTargetConditionBox) { - updateConditionEffect((ActorCondition)value, item, selectedHitEffectTargetCondition, hitTargetConditionsModel); - updateHit = true; - } else if (source == hitTargetConditionClear && (Boolean) value) { - selectedHitEffectTargetCondition.magnitude = ActorCondition.MAGNITUDE_CLEAR; - selectedHitEffectTargetCondition.duration = null; - updateHitTargetTimedConditionWidgets(selectedHitEffectTargetCondition); - hitTargetConditionsModel.itemChanged(selectedHitEffectTargetCondition); - updateHit = true; - } else if (source == hitTargetConditionApply && (Boolean) value) { - selectedHitEffectTargetCondition.magnitude = (Integer) hitTargetConditionMagnitude.getValue(); - selectedHitEffectTargetCondition.duration = hitTargetConditionForever.isSelected() ? ActorCondition.DURATION_FOREVER : (Integer) hitTargetConditionDuration.getValue(); - if (selectedHitEffectTargetCondition.duration == null || selectedHitEffectTargetCondition.duration == ActorCondition.DURATION_NONE) { - selectedHitEffectTargetCondition.duration = 1; - } - updateHitTargetTimedConditionWidgets(selectedHitEffectTargetCondition); - hitTargetConditionsModel.itemChanged(selectedHitEffectTargetCondition); - updateHit = true; - } else if (source == hitTargetConditionImmunity && (Boolean) value) { - selectedHitEffectTargetCondition.magnitude = ActorCondition.MAGNITUDE_CLEAR; - selectedHitEffectTargetCondition.duration = hitTargetConditionForever.isSelected() ? ActorCondition.DURATION_FOREVER : (Integer) hitTargetConditionDuration.getValue(); - if (selectedHitEffectTargetCondition.duration == null || selectedHitEffectTargetCondition.duration == ActorCondition.DURATION_NONE) { - selectedHitEffectTargetCondition.duration = 1; - } - updateHitTargetTimedConditionWidgets(selectedHitEffectTargetCondition); - hitTargetConditionsModel.itemChanged(selectedHitEffectTargetCondition); - updateHit = true; - } else if (source == hitTargetConditionMagnitude) { - selectedHitEffectTargetCondition.magnitude = (Integer) value; - hitTargetConditionsModel.itemChanged(selectedHitEffectTargetCondition); - updateHit = true; - } else if (source == hitTargetConditionTimed && (Boolean) value) { - selectedHitEffectTargetCondition.duration = (Integer) hitTargetConditionDuration.getValue(); - if (selectedHitEffectTargetCondition.duration == null || selectedHitEffectTargetCondition.duration == ActorCondition.DURATION_NONE) { - selectedHitEffectTargetCondition.duration = 1; - } - updateHitTargetTimedConditionWidgets(selectedHitEffectTargetCondition); - hitTargetConditionsModel.itemChanged(selectedHitEffectTargetCondition); - updateHit = true; - } else if (source == hitTargetConditionForever && (Boolean) value) { - selectedHitEffectTargetCondition.duration = ActorCondition.DURATION_FOREVER; - updateHitTargetTimedConditionWidgets(selectedHitEffectTargetCondition); - hitTargetConditionsModel.itemChanged(selectedHitEffectTargetCondition); - updateHit = true; - } else if (source == hitTargetConditionDuration) { - selectedHitEffectTargetCondition.duration = (Integer) value; - hitTargetConditionsModel.itemChanged(selectedHitEffectTargetCondition); - updateHit = true; - } else if (source == hitTargetConditionChance) { - selectedHitEffectTargetCondition.chance = (Double) value; - hitTargetConditionsModel.itemChanged(selectedHitEffectTargetCondition); - updateHit = true; - } else if (source == killHPMin) { - killEffect.hp_boost_min = (Integer) value; + } else if (killEffectPane.valueChanged(source, value, item)) { updatePrice = true; updateKill = true; - } else if (source == killHPMax) { - killEffect.hp_boost_max = (Integer) value; + } else if (hitReceivedEffectPane.valueChanged(source, value, item)) { updatePrice = true; - updateKill = true; - } else if (source == killAPMin) { - killEffect.ap_boost_min = (Integer) value; - updatePrice = true; - updateKill = true; - } else if (source == killAPMax) { - killEffect.ap_boost_max = (Integer) value; - updatePrice = true; - updateKill = true; - } else if (source == killSourceConditionsList) { - updateKill = true; - } else if (source == killSourceConditionBox) { - updateConditionEffect((ActorCondition) value, item, selectedKillEffectCondition, killSourceConditionsModel); - updateKill = true; - } else if (source == killSourceConditionClear && (Boolean) value) { - selectedKillEffectCondition.magnitude = ActorCondition.MAGNITUDE_CLEAR; - selectedKillEffectCondition.duration = null; - updateKillSourceTimedConditionWidgets(selectedKillEffectCondition); - killSourceConditionsModel.itemChanged(selectedKillEffectCondition); - updateKill = true; - } else if (source == killSourceConditionApply && (Boolean) value) { - selectedKillEffectCondition.magnitude = (Integer) killSourceConditionMagnitude.getValue(); - selectedKillEffectCondition.duration = killSourceConditionForever.isSelected() ? ActorCondition.DURATION_FOREVER : (Integer) killSourceConditionDuration.getValue(); - if (selectedKillEffectCondition.duration == null || selectedKillEffectCondition.duration == ActorCondition.DURATION_NONE) { - selectedKillEffectCondition.duration = 1; - } - updateKillSourceTimedConditionWidgets(selectedKillEffectCondition); - killSourceConditionsModel.itemChanged(selectedKillEffectCondition); - updateKill = true; - } else if (source == killSourceConditionImmunity && (Boolean) value) { - selectedKillEffectCondition.magnitude = ActorCondition.MAGNITUDE_CLEAR; - selectedKillEffectCondition.duration = killSourceConditionForever.isSelected() ? ActorCondition.DURATION_FOREVER : (Integer) killSourceConditionDuration.getValue(); - if (selectedKillEffectCondition.duration == null || selectedKillEffectCondition.duration == ActorCondition.DURATION_NONE) { - selectedKillEffectCondition.duration = 1; - } - updateKillSourceTimedConditionWidgets(selectedKillEffectCondition); - killSourceConditionsModel.itemChanged(selectedKillEffectCondition); - updateKill = true; - } else if (source == killSourceConditionMagnitude) { - selectedKillEffectCondition.magnitude = (Integer) value; - killSourceConditionsModel.itemChanged(selectedKillEffectCondition); - updateKill = true; - } else if (source == killSourceConditionTimed && (Boolean) value) { - selectedKillEffectCondition.duration = (Integer) killSourceConditionDuration.getValue(); - if (selectedKillEffectCondition.duration == null || selectedKillEffectCondition.duration == ActorCondition.DURATION_NONE) { - selectedKillEffectCondition.duration = 1; - } - updateKillSourceTimedConditionWidgets(selectedKillEffectCondition); - killSourceConditionsModel.itemChanged(selectedKillEffectCondition); - updateKill = true; - } else if (source == killSourceConditionForever && (Boolean) value) { - selectedKillEffectCondition.duration = ActorCondition.DURATION_FOREVER; - updateKillSourceTimedConditionWidgets(selectedKillEffectCondition); - killSourceConditionsModel.itemChanged(selectedKillEffectCondition); - updateKill = true; - } else if (source == killSourceConditionDuration) { - selectedKillEffectCondition.duration = (Integer) value; - killSourceConditionsModel.itemChanged(selectedKillEffectCondition); - updateKill = true; - } else if (source == killSourceConditionChance) { - selectedKillEffectCondition.chance = (Double) value; - killSourceConditionsModel.itemChanged(selectedKillEffectCondition); - updateKill = true; - } else if (source == hitReceivedHPMin) { - hitReceivedEffect.hp_boost_min = (Integer) value; - updatePrice = true; - updateHitReceived = true; - } else if (source == hitReceivedHPMax) { - hitReceivedEffect.hp_boost_max = (Integer) value; - updatePrice = true; - updateHitReceived = true; - } else if (source == hitReceivedAPMin) { - hitReceivedEffect.ap_boost_min = (Integer) value; - updatePrice = true; - updateHitReceived = true; - } else if (source == hitReceivedAPMax) { - hitReceivedEffect.ap_boost_max = (Integer) value; - updatePrice = true; - updateHitReceived = true; - } else if (source == hitReceivedHPMinTarget) { - hitReceivedEffect.target.hp_boost_min = (Integer) value; - updatePrice = true; - updateHitReceived = true; - } else if (source == hitReceivedHPMaxTarget) { - hitReceivedEffect.target.hp_boost_max = (Integer) value; - updatePrice = true; - updateHitReceived = true; - } else if (source == hitReceivedAPMinTarget) { - hitReceivedEffect.target.ap_boost_min = (Integer) value; - updatePrice = true; - updateHitReceived = true; - } else if (source == hitReceivedAPMaxTarget) { - hitReceivedEffect.target.ap_boost_max = (Integer) value; - updatePrice = true; - updateHitReceived = true; - } else if (source == hitReceivedSourceConditionsList) { - updateHitReceived = true; - } else if (source == hitReceivedSourceConditionBox) { - updateConditionEffect((ActorCondition) value, item, selectedHitReceivedEffectSourceCondition, hitReceivedSourceConditionsModel); - updateHitReceived = true; - } else if (source == hitReceivedSourceConditionClear && (Boolean) value) { - selectedHitReceivedEffectSourceCondition.magnitude = ActorCondition.MAGNITUDE_CLEAR; - selectedHitReceivedEffectSourceCondition.duration = null; - updateHitReceivedSourceTimedConditionWidgets(selectedHitReceivedEffectSourceCondition); - hitReceivedSourceConditionsModel.itemChanged(selectedHitReceivedEffectSourceCondition); - updateHitReceived = true; - } else if (source == hitReceivedSourceConditionApply && (Boolean) value) { - selectedHitReceivedEffectSourceCondition.magnitude = (Integer) hitReceivedSourceConditionMagnitude.getValue(); - selectedHitReceivedEffectSourceCondition.duration = hitReceivedSourceConditionForever.isSelected() ? ActorCondition.DURATION_FOREVER : (Integer) hitReceivedSourceConditionDuration.getValue(); - if (selectedHitReceivedEffectSourceCondition.duration == null) { - selectedHitReceivedEffectSourceCondition.duration = 1; - } - updateHitReceivedSourceTimedConditionWidgets(selectedHitReceivedEffectSourceCondition); - hitReceivedSourceConditionsModel.itemChanged(selectedHitReceivedEffectSourceCondition); - updateHitReceived = true; - } else if (source == hitReceivedSourceConditionImmunity && (Boolean) value) { - selectedHitReceivedEffectSourceCondition.magnitude = ActorCondition.MAGNITUDE_CLEAR; - selectedHitReceivedEffectSourceCondition.duration = hitReceivedSourceConditionForever.isSelected() ? ActorCondition.DURATION_FOREVER : (Integer) hitReceivedSourceConditionDuration.getValue(); - if (selectedHitReceivedEffectSourceCondition.duration == null || selectedHitReceivedEffectSourceCondition.duration == ActorCondition.DURATION_NONE) { - selectedHitReceivedEffectSourceCondition.duration = 1; - } - updateHitReceivedSourceTimedConditionWidgets(selectedHitReceivedEffectSourceCondition); - hitReceivedSourceConditionsModel.itemChanged(selectedHitReceivedEffectSourceCondition); - updateHitReceived = true; - } else if (source == hitReceivedSourceConditionMagnitude) { - selectedHitReceivedEffectSourceCondition.magnitude = (Integer) value; - hitReceivedSourceConditionsModel.itemChanged(selectedHitReceivedEffectSourceCondition); - updateHitReceived = true; - } else if (source == hitReceivedSourceConditionTimed && (Boolean) value) { - selectedHitReceivedEffectSourceCondition.duration = (Integer) hitReceivedSourceConditionDuration.getValue(); - if (selectedHitReceivedEffectSourceCondition.duration == null || selectedHitReceivedEffectSourceCondition.duration == ActorCondition.DURATION_NONE) { - selectedHitReceivedEffectSourceCondition.duration = 1; - } - updateHitReceivedSourceTimedConditionWidgets(selectedHitReceivedEffectSourceCondition); - hitReceivedSourceConditionsModel.itemChanged(selectedHitReceivedEffectSourceCondition); - updateHitReceived = true; - } else if (source == hitReceivedSourceConditionForever && (Boolean) value) { - selectedHitReceivedEffectSourceCondition.duration = ActorCondition.DURATION_FOREVER; - updateHitReceivedSourceTimedConditionWidgets(selectedHitReceivedEffectSourceCondition); - hitReceivedSourceConditionsModel.itemChanged(selectedHitReceivedEffectSourceCondition); - updateHitReceived = true; - } else if (source == hitReceivedSourceConditionDuration) { - selectedHitReceivedEffectSourceCondition.duration = (Integer) value; - hitReceivedSourceConditionsModel.itemChanged(selectedHitReceivedEffectSourceCondition); - updateHitReceived = true; - } else if (source == hitReceivedSourceConditionChance) { - selectedHitReceivedEffectSourceCondition.chance = (Double) value; - hitReceivedSourceConditionsModel.itemChanged(selectedHitReceivedEffectSourceCondition); - updateHitReceived = true; - } else if (source == hitReceivedTargetConditionsList) { - updateHitReceived = true; - } else if (source == hitReceivedTargetConditionBox) { - updateConditionEffect((ActorCondition) value, item, selectedHitReceivedEffectTargetCondition, hitReceivedTargetConditionsModel); - updateHitReceived = true; - } else if (source == hitReceivedTargetConditionClear && (Boolean) value) { - selectedHitReceivedEffectTargetCondition.magnitude = ActorCondition.MAGNITUDE_CLEAR; - selectedHitReceivedEffectTargetCondition.duration = null; - updateHitReceivedTargetTimedConditionWidgets(selectedHitReceivedEffectTargetCondition); - hitReceivedTargetConditionsModel.itemChanged(selectedHitReceivedEffectTargetCondition); - updateHitReceived = true; - } else if (source == hitReceivedTargetConditionApply && (Boolean) value) { - selectedHitReceivedEffectTargetCondition.magnitude = (Integer) hitReceivedTargetConditionMagnitude.getValue(); - selectedHitReceivedEffectTargetCondition.duration = hitReceivedTargetConditionForever.isSelected() ? ActorCondition.DURATION_FOREVER : (Integer) hitReceivedTargetConditionDuration.getValue(); - if (selectedHitReceivedEffectTargetCondition.duration == null || selectedHitReceivedEffectTargetCondition.duration == ActorCondition.DURATION_NONE) { - selectedHitReceivedEffectTargetCondition.duration = 1; - } - updateHitReceivedTargetTimedConditionWidgets(selectedHitReceivedEffectTargetCondition); - hitReceivedTargetConditionsModel.itemChanged(selectedHitReceivedEffectTargetCondition); - updateHitReceived = true; - } else if (source == hitReceivedTargetConditionImmunity && (Boolean) value) { - selectedHitReceivedEffectTargetCondition.magnitude = ActorCondition.MAGNITUDE_CLEAR; - selectedHitReceivedEffectTargetCondition.duration = hitReceivedTargetConditionForever.isSelected() ? ActorCondition.DURATION_FOREVER : (Integer) hitReceivedTargetConditionDuration.getValue(); - if (selectedHitReceivedEffectTargetCondition.duration == null || selectedHitReceivedEffectTargetCondition.duration == ActorCondition.DURATION_NONE) { - selectedHitReceivedEffectTargetCondition.duration = 1; - } - updateHitReceivedTargetTimedConditionWidgets(selectedHitReceivedEffectTargetCondition); - hitReceivedTargetConditionsModel.itemChanged(selectedHitReceivedEffectTargetCondition); - updateHitReceived = true; - } else if (source == hitReceivedTargetConditionMagnitude) { - selectedHitReceivedEffectTargetCondition.magnitude = (Integer) value; - hitReceivedTargetConditionsModel.itemChanged(selectedHitReceivedEffectTargetCondition); - updateHitReceived = true; - } else if (source == hitReceivedTargetConditionTimed && (Boolean) value) { - selectedHitReceivedEffectTargetCondition.duration = (Integer) hitReceivedTargetConditionDuration.getValue(); - if (selectedHitReceivedEffectTargetCondition.duration == null || selectedHitReceivedEffectTargetCondition.duration == ActorCondition.DURATION_NONE) { - selectedHitReceivedEffectTargetCondition.duration = 1; - } - updateHitReceivedTargetTimedConditionWidgets(selectedHitReceivedEffectTargetCondition); - hitReceivedTargetConditionsModel.itemChanged(selectedHitReceivedEffectTargetCondition); - updateHitReceived = true; - } else if (source == hitReceivedTargetConditionForever && (Boolean) value) { - selectedHitReceivedEffectTargetCondition.duration = ActorCondition.DURATION_FOREVER; - updateHitReceivedTargetTimedConditionWidgets(selectedHitReceivedEffectTargetCondition); - hitReceivedTargetConditionsModel.itemChanged(selectedHitReceivedEffectTargetCondition); - updateHitReceived = true; - } else if (source == hitReceivedTargetConditionDuration) { - selectedHitReceivedEffectTargetCondition.duration = (Integer) value; - hitReceivedTargetConditionsModel.itemChanged(selectedHitReceivedEffectTargetCondition); - updateHitReceived = true; - } else if (source == hitReceivedTargetConditionChance) { - selectedHitReceivedEffectTargetCondition.chance = (Double) value; - hitReceivedTargetConditionsModel.itemChanged(selectedHitReceivedEffectTargetCondition); updateHitReceived = true; } @@ -1605,24 +485,24 @@ public class ItemEditor extends JSONElementEditor { } } if (updateHit) { - if (isNull(hitEffect)) { + if (hitEffectPane.effect.isNull()) { item.hit_effect = null; } else { - item.hit_effect = hitEffect; + item.hit_effect = hitEffectPane.effect; } } if (updateKill) { - if (isNull(killEffect)) { + if (killEffectPane.effect.isNull()) { item.kill_effect = null; } else { - item.kill_effect = killEffect; + item.kill_effect = killEffectPane.effect; } } if (updateHitReceived) { - if (isNull(hitReceivedEffect)) { + if (hitReceivedEffectPane.effect.isNull()) { item.hit_received_effect = null; } else { - item.hit_received_effect = hitReceivedEffect; + item.hit_received_effect = hitReceivedEffectPane.effect; } } if (updatePrice && !manualPriceBox.isSelected()) { @@ -1637,10 +517,7 @@ public class ItemEditor extends JSONElementEditor { ATContentStudio.frame.editorChanged(ItemEditor.this); } updateJsonViewText(item.toJsonString()); - } - - } }