Added random requirement and a null pointer fix for the droplist editor

- used in conversations and replace areas
- using the droplist chance editor
This commit is contained in:
Gonk
2019-05-12 11:45:48 +02:00
parent e12c6bcc25
commit 5a3315da1a
4 changed files with 44 additions and 11 deletions

View File

@@ -123,7 +123,7 @@ public class DialogueEditor extends JSONElementEditor {
private MyComboBox requirementObj;
@SuppressWarnings("rawtypes")
private JComboBox requirementSkill;
private JTextField requirementObjId;
private JComponent requirementObjId;
private JComponent requirementValue;
private BooleanBasedCheckBox requirementNegated;
@@ -722,6 +722,11 @@ public class DialogueEditor extends JSONElementEditor {
requirementObjId = null;
requirementValue = addIntegerField(pane, "Quantity: ", requirement.required_value, false, writable, listener);
break;
case random:
requirementObj = null;
requirementObjId = addChanceField(pane, "Chance: ", requirement.required_obj_id, "50/100", writable, listener);
requirementValue = null;
break;
case hasActorCondition:
requirementObj = addActorConditionBox(pane, project, "Actor Condition: ", (ActorCondition) requirement.required_obj, writable, listener);
requirementObjId = null;

View File

@@ -221,9 +221,9 @@ public class DroplistEditor extends JSONElementEditor {
Droplist.DroppedItem di = (Droplist.DroppedItem)value;
if (di.item != null) {
label.setIcon(new ImageIcon(di.item.getIcon()));
label.setText(di.chance+(di.chance.contains("/") ? "" : "%")+" to get "+di.quantity_min+"-"+di.quantity_max+" "+di.item.getDesc());
label.setText(di.chance+(di.chance != null && di.chance.contains("/") ? "" : "%")+" to get "+di.quantity_min+"-"+di.quantity_max+" "+di.item.getDesc());
} else if (!isNull(di)) {
label.setText(di.chance+(di.chance.contains("/") ? "" : "%")+" to get "+di.quantity_min+"-"+di.quantity_max+" "+di.item_id);
label.setText(di.chance+(di.chance != null && di.chance.contains("/") ? "" : "%")+" to get "+di.quantity_min+"-"+di.quantity_max+" "+di.item_id);
} else {
label.setText("New, undefined, dropped item.");
}

View File

@@ -173,7 +173,7 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe
private JPanel requirementParamsPane;
@SuppressWarnings("rawtypes")
private JComboBox requirementObj;
private JTextField requirementObjId;
private JComponent requirementObjId;
private JComponent requirementValue;
private BooleanBasedCheckBox requirementNegated;
@@ -675,6 +675,11 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe
requirementObjId = null;
requirementValue = addIntegerField(pane, "Quantity: ", requirement.required_value, false, writable, listener);
break;
case random:
requirementObj = null;
requirementObjId = addChanceField(pane, "Chance: ", requirement.required_obj_id, "50/100", writable, listener);
requirementValue = null;
break;
case hasActorCondition:
requirementObj = addActorConditionBox(pane, project, "Actor Condition: ", (ActorCondition) requirement.required_obj, writable, listener);
requirementObjId = null;
@@ -2318,11 +2323,14 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe
if (!activeReplacements.containsKey(area)) {
activeReplacements.put(area, true);
}
for (ReplaceArea.Replacement repl : area.replacements) {
if (replacementsForLayer.get(repl.sourceLayer) == null) {
replacementsForLayer.put(repl.sourceLayer, new ArrayList<ReplaceArea>());
}
replacementsForLayer.get(repl.sourceLayer).add(area);
if(area.replacements != null) {
for (ReplaceArea.Replacement repl : area.replacements) {
if (replacementsForLayer.get(repl.sourceLayer) == null) {
replacementsForLayer.put(repl.sourceLayer, new ArrayList<ReplaceArea>());
}
replacementsForLayer.get(repl.sourceLayer).add(area);
}
}
}
}