From 506afb95ed8c772122e4f5a2c2a97968e31e551b Mon Sep 17 00:00:00 2001 From: Zukero Date: Sat, 19 Aug 2017 11:47:30 +0200 Subject: [PATCH] Simple UI improvements. Combo box to select skill ID in skill level requirement. Icons for most requirements types in requirements list in dialogue editor. More verbose description of requirement in requirement list. --- .../gpl/rpg/atcontentstudio/img/bonemeal.png | Bin 0 -> 607 bytes src/com/gpl/rpg/atcontentstudio/img/timer.png | Bin 0 -> 881 bytes .../rpg/atcontentstudio/img/ui_icon_skill.png | Bin 0 -> 5118 bytes .../model/gamedata/Requirement.java | 47 +++++++++++++++++- .../rpg/atcontentstudio/ui/DefaultIcons.java | 12 +++++ .../ui/gamedataeditors/DialogueEditor.java | 28 ++++++++++- .../atcontentstudio/ui/map/TMXMapEditor.java | 32 ++++++++---- .../utils/DesktopIntegration.java | 4 +- 8 files changed, 108 insertions(+), 15 deletions(-) create mode 100644 src/com/gpl/rpg/atcontentstudio/img/bonemeal.png create mode 100644 src/com/gpl/rpg/atcontentstudio/img/timer.png create mode 100644 src/com/gpl/rpg/atcontentstudio/img/ui_icon_skill.png diff --git a/src/com/gpl/rpg/atcontentstudio/img/bonemeal.png b/src/com/gpl/rpg/atcontentstudio/img/bonemeal.png new file mode 100644 index 0000000000000000000000000000000000000000..84a53052b7ee6de8b445a098c3b575cfb08f8fa7 GIT binary patch literal 607 zcmV-l0-*hgP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2jK`4 z2_70n;w&8i0013nR9JLFZ*6U5Zgc_CX>@2HM@dakWG-a~0005D zNklzbS>_%w7E<}b} z7${h5Ng*UI;)FbEGBceB;)RgcP0yKg&%J4Y{~ne~G9e^s%8BDx={Idv#xIu_+3~^Y z8E%JH+4=eKL0JLY)XK}bvPwuRuwKmp0Lklh;ktjaU&-lod-7#fk!!Z7=SzbYO-Kky z)~h*a0Qhc7WIT-uIfH(>dKDu|D-g%AC8QnRykR_zaQ`&THX(iMT`=eazI%wh-3Wl2 zfe-q6bHG+D0f29CQ3|(U!cMoBv{HgiX3UpCH z1GL(3(<~5VT5ZE}2qSJAL}&Fsfzu%E1f_R}DR5m9#3Z;534)eFmIN`qdgG%w{CEcd z@Mx!cZ@B~jILYV6XP?K-nC8V+^Cw2#m49^)iY4 tUPc*9<}cVb(e!$@OnniV`d0k)_ySvy95MUw?KJ=Z002ovPDHLkV1m$>^bi05 literal 0 HcmV?d00001 diff --git a/src/com/gpl/rpg/atcontentstudio/img/timer.png b/src/com/gpl/rpg/atcontentstudio/img/timer.png new file mode 100644 index 0000000000000000000000000000000000000000..eb897a4f623300e27bffea4711905ad6526538a6 GIT binary patch literal 881 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 gJ9+tSAKuIRf3%wey$l!N + ,weaponProficiencyDagger + ,weaponProficiency1hsword + ,weaponProficiency2hsword + ,weaponProficiencyAxe + ,weaponProficiencyBlunt + ,weaponProficiencyUnarmed + ,armorProficiencyShield + ,armorProficiencyUnarmored + ,armorProficiencyLight + ,armorProficiencyHeavy + ,fightstyleDualWield + ,fightstyle2hand + ,fightstyleWeaponShield + ,specializationDualWield + ,specialization2hand + ,specializationWeaponShield + } + @Override public String getDesc() { - return ((negated != null && negated) ? "NOT " : "")+required_obj_id+(required_value == null ? "" : ":"+required_value.toString()); + return ((negated != null && negated) ? "NOT " : "")+(type == null ? "" : type.toString()+":")+required_obj_id+(required_value == null ? "" : ":"+required_value.toString()); } @Override diff --git a/src/com/gpl/rpg/atcontentstudio/ui/DefaultIcons.java b/src/com/gpl/rpg/atcontentstudio/ui/DefaultIcons.java index c2fc23a..a7512be 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/DefaultIcons.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/DefaultIcons.java @@ -107,6 +107,10 @@ public class DefaultIcons { public static Image getNPCImage() { return getImage(NPC_RES); } public static Image getNPCIcon() { return getIcon(NPC_RES); } + private static String BONEMEAL_RES = "/com/gpl/rpg/atcontentstudio/img/bonemeal.png"; + public static Image getBonemealImage() { return getImage(BONEMEAL_RES); } + public static Image getBonemealIcon() { return getIcon(BONEMEAL_RES); } + private static String NPC_CLOSE_RES = "/com/gpl/rpg/atcontentstudio/img/npc_close.png"; public static Image getNPCCloseImage() { return getImage(NPC_CLOSE_RES); } public static Image getNPCCloseIcon() { return getIcon(NPC_CLOSE_RES); } @@ -130,6 +134,10 @@ public class DefaultIcons { private static String GOLD_RES = "/com/gpl/rpg/atcontentstudio/img/ui_icon_coins.png"; public static Image getGoldImage() { return getImage(GOLD_RES); } public static Image getGoldIcon() { return getIcon(GOLD_RES); } + + private static String SKILL_RES = "/com/gpl/rpg/atcontentstudio/img/ui_icon_skill.png"; + public static Image getSkillImage() { return getImage(SKILL_RES); } + public static Image getSkillIcon() { return getIcon(SKILL_RES); } private static String ITEM_CATEGORY_RES = "/com/gpl/rpg/atcontentstudio/img/equip_weapon.png"; public static Image getItemCategoryImage() { return getImage(ITEM_CATEGORY_RES); } @@ -235,6 +243,10 @@ public class DefaultIcons { public static Image getZoomImage() { return getImage(ZOOM_RES); } public static Image getZoomIcon() { return getIcon(ZOOM_RES); } + private static String TIMER_RES = "/com/gpl/rpg/atcontentstudio/img/timer.png"; + public static Image getTimerImage() { return getImage(TIMER_RES); } + public static Image getTimerIcon() { return getIcon(TIMER_RES); } + private static String STATUS_RED_RES = "/com/gpl/rpg/atcontentstudio/img/status_red.png"; public static Image getStatusRedImage() { return getImage(STATUS_RED_RES); } public static Image getStatusRedIcon() { return getIcon(STATUS_RED_RES); } diff --git a/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/DialogueEditor.java b/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/DialogueEditor.java index d8c5922..ca8134e 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/DialogueEditor.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/DialogueEditor.java @@ -114,6 +114,7 @@ public class DialogueEditor extends JSONElementEditor { private JComboBox requirementTypeCombo; private JPanel requirementParamsPane; private MyComboBox requirementObj; + private JComboBox requirementSkill; private JTextField requirementObjId; private JComponent requirementValue; private BooleanBasedCheckBox requirementNegated; @@ -684,8 +685,13 @@ public class DialogueEditor extends JSONElementEditor { requirementValue = addQuestStageBox(pane, project, "Quest stage: ", requirement.required_value, writable, listener, (Quest) requirement.required_obj, requirementObj); break; case skillLevel: + Requirement.SkillID skillId = null; + try { + skillId = requirement.required_obj_id == null ? null : Requirement.SkillID.valueOf(requirement.required_obj_id); + } catch(IllegalArgumentException e) {} requirementObj = null; - requirementObjId = addTextField(pane, "Skill ID:", requirement.required_obj_id, writable, listener); + requirementSkill = addEnumValueBox(pane, "Skill ID:", Requirement.SkillID.values(), skillId, writable, listener); + requirementObjId = null;//addTextField(pane, "Skill ID:", requirement.required_obj_id, writable, listener); requirementValue = addIntegerField(pane, "Level: ", requirement.required_value, false, writable, listener); break; case timerElapsed: @@ -1071,7 +1077,16 @@ public class DialogueEditor extends JSONElementEditor { if (req.required_obj.getIcon() != null) { label.setIcon(new ImageIcon(req.required_obj.getIcon())); } - } if (req.type == null) { + } else if (req.type == Requirement.RequirementType.skillLevel) { + label.setIcon(new ImageIcon(DefaultIcons.getSkillIcon())); + } else if (req.type == Requirement.RequirementType.spentGold) { + label.setIcon(new ImageIcon(DefaultIcons.getGoldIcon())); + } else if (req.type == Requirement.RequirementType.consumedBonemeals) { + label.setIcon(new ImageIcon(DefaultIcons.getBonemealIcon())); + } else if (req.type == Requirement.RequirementType.timerElapsed) { + label.setIcon(new ImageIcon(DefaultIcons.getTimerIcon())); + } + if (req.type == null) { label.setText("New, undefined requirement."); } } @@ -1205,6 +1220,15 @@ public class DialogueEditor extends JSONElementEditor { selectedRequirement.required_obj_id = null; } requirementsListModel.itemChanged(selectedRequirement); + } else if (source == requirementSkill) { + if (selectedRequirement.required_obj != null) { + selectedRequirement.required_obj.removeBacklink(dialogue); + selectedRequirement.required_obj = null; + } + if (selectedRequirement.type == Requirement.RequirementType.skillLevel) { + selectedRequirement.required_obj_id = value == null ? null : value.toString(); + } + requirementsListModel.itemChanged(selectedRequirement); } else if (source == requirementObjId) { selectedRequirement.required_obj_id = (String) value; selectedRequirement.required_obj = null; diff --git a/src/com/gpl/rpg/atcontentstudio/ui/map/TMXMapEditor.java b/src/com/gpl/rpg/atcontentstudio/ui/map/TMXMapEditor.java index 2aa5ac4..87a5c00 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/map/TMXMapEditor.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/map/TMXMapEditor.java @@ -697,8 +697,12 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe requirementValue = addQuestStageBox(pane, project, "Quest stage: ", requirement.required_value, writable, listener, (Quest) requirement.required_obj, requirementObj); break; case skillLevel: - requirementObj = null; - requirementObjId = addTextField(pane, "Skill ID:", requirement.required_obj_id, writable, listener); + Requirement.SkillID skillId = null; + try { + skillId = requirement.required_obj_id == null ? null : Requirement.SkillID.valueOf(requirement.required_obj_id); + } catch(IllegalArgumentException e) {} + requirementObj = addEnumValueBox(pane, "Skill ID:", Requirement.SkillID.values(), skillId, writable, listener); + requirementObjId = null;//addTextField(pane, "Skill ID:", requirement.required_obj_id, writable, listener); requirementValue = addIntegerField(pane, "Level: ", requirement.required_value, false, writable, listener); break; case timerElapsed: @@ -2006,11 +2010,15 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe } else if (source == requirementObj) { if (selectedMapObject instanceof KeyArea) { KeyArea area = (KeyArea) selectedMapObject; - area.requirement.required_obj = (GameDataElement) value; - if (area.requirement.required_obj != null) { - area.requirement.required_obj_id = area.requirement.required_obj.id; + if (area.requirement.type == Requirement.RequirementType.skillLevel) { + area.requirement.required_obj_id = value == null ? null : value.toString(); } else { - area.requirement.required_obj_id = null; + area.requirement.required_obj = (GameDataElement) value; + if (area.requirement.required_obj != null) { + area.requirement.required_obj_id = area.requirement.required_obj.id; + } else { + area.requirement.required_obj_id = null; + } } if (area.oldSchoolRequirement) { area.updateNameFromRequirementChange(); @@ -2019,11 +2027,15 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe } } else if (selectedMapObject instanceof ReplaceArea) { ReplaceArea area = (ReplaceArea) selectedMapObject; - area.requirement.required_obj = (GameDataElement) value; - if (area.requirement.required_obj != null) { - area.requirement.required_obj_id = area.requirement.required_obj.id; + if (area.requirement.type == Requirement.RequirementType.skillLevel) { + area.requirement.required_obj_id = value == null ? null : value.toString(); } else { - area.requirement.required_obj_id = null; + area.requirement.required_obj = (GameDataElement) value; + if (area.requirement.required_obj != null) { + area.requirement.required_obj_id = area.requirement.required_obj.id; + } else { + area.requirement.required_obj_id = null; + } } if (area.oldSchoolRequirement) { area.updateNameFromRequirementChange(); diff --git a/src/com/gpl/rpg/atcontentstudio/utils/DesktopIntegration.java b/src/com/gpl/rpg/atcontentstudio/utils/DesktopIntegration.java index 8505652..91ae199 100644 --- a/src/com/gpl/rpg/atcontentstudio/utils/DesktopIntegration.java +++ b/src/com/gpl/rpg/atcontentstudio/utils/DesktopIntegration.java @@ -18,7 +18,7 @@ public class DesktopIntegration { } } else { try { - Runtime.getRuntime().exec(Workspace.activeWorkspace.settings.mapEditorCommand.getCurrentValue()+" "+f.getAbsolutePath()); + Runtime.getRuntime().exec(Workspace.activeWorkspace.settings.mapEditorCommand.getCurrentValue()+" \""+f.getAbsolutePath()+"\""); } catch (IOException e) { e.printStackTrace(); } @@ -40,7 +40,7 @@ public class DesktopIntegration { } } else { try { - Runtime.getRuntime().exec(Workspace.activeWorkspace.settings.imageEditorCommand.getCurrentValue()+" "+f.getAbsolutePath()); + Runtime.getRuntime().exec(Workspace.activeWorkspace.settings.imageEditorCommand.getCurrentValue()+" \""+f.getAbsolutePath()+"\""); } catch (IOException e) { e.printStackTrace(); }