From 900d0bc9b53362379d08c540ef467f364de0e182 Mon Sep 17 00:00:00 2001 From: Zukero Date: Tue, 20 Dec 2016 16:43:10 +0100 Subject: [PATCH] v0.5.0 ! First release of new Dialogue Sketch feature. --- packaging/Linux/ATCS/ATCS.cmd | 2 +- packaging/Linux/ATCS/ATCS.sh | 2 +- packaging/Windows/ATCS.cmd | 2 +- packaging/Windows/ATCS_Installer.nsi | 2 +- .../rpg/atcontentstudio/ATContentStudio.java | 2 +- .../tools/writermode/WriterModeData.java | 26 ++++++++++++++++--- .../tools/writermode/WriterModeDataSet.java | 9 +++++-- .../rpg/atcontentstudio/ui/ProjectsTree.java | 8 +++--- .../rpg/atcontentstudio/ui/StudioFrame.java | 11 +++++--- .../atcontentstudio/ui/WorkspaceActions.java | 19 ++++++++++---- .../ui/tools/writermode/WriterModeEditor.java | 7 ++++- 11 files changed, 65 insertions(+), 25 deletions(-) diff --git a/packaging/Linux/ATCS/ATCS.cmd b/packaging/Linux/ATCS/ATCS.cmd index 3a67dc1..cbce53a 100644 --- a/packaging/Linux/ATCS/ATCS.cmd +++ b/packaging/Linux/ATCS/ATCS.cmd @@ -1 +1 @@ -start "" "javaw.exe" -Xmx512M -cp "lib\ATCS_v0.4.8.jar;lib\jide-oss.jar;lib\ui.jar;lib\junit-4.10.jar;lib\json_simple-1.1.jar;lib\rsyntaxtextarea.jar;lib\prefuse.jar;lib\AndorsTrainer_v0.1.2.jar;lib\bsh-2.0b4.jar" com.gpl.rpg.atcontentstudio.ATContentStudio +start "" "javaw.exe" -Xmx512M -cp "lib\ATCS_v0.5.0.jar;lib\jide-oss.jar;lib\ui.jar;lib\junit-4.10.jar;lib\json_simple-1.1.jar;lib\rsyntaxtextarea.jar;lib\prefuse.jar;lib\AndorsTrainer_v0.1.2.jar;lib\bsh-2.0b4.jar" com.gpl.rpg.atcontentstudio.ATContentStudio diff --git a/packaging/Linux/ATCS/ATCS.sh b/packaging/Linux/ATCS/ATCS.sh index c0f1cd0..d2cfcac 100644 --- a/packaging/Linux/ATCS/ATCS.sh +++ b/packaging/Linux/ATCS/ATCS.sh @@ -1,2 +1,2 @@ #!/bin/bash -java -Xmx512M -cp lib/AndorsTrainer_v0.1.2.jar:lib/ATCS_v0.4.8.jar:lib/prefuse.jar:lib/json_simple-1.1.jar:lib/jide-oss.jar:lib/ui.jar:lib/junit-4.10.jar:lib/rsyntaxtextarea.jar:lib/bsh-2.0b4.jar com.gpl.rpg.atcontentstudio.ATContentStudio +java -Xmx512M -cp lib/AndorsTrainer_v0.1.2.jar:lib/ATCS_v0.5.0.jar:lib/prefuse.jar:lib/json_simple-1.1.jar:lib/jide-oss.jar:lib/ui.jar:lib/junit-4.10.jar:lib/rsyntaxtextarea.jar:lib/bsh-2.0b4.jar com.gpl.rpg.atcontentstudio.ATContentStudio diff --git a/packaging/Windows/ATCS.cmd b/packaging/Windows/ATCS.cmd index a245836..cbce53a 100644 --- a/packaging/Windows/ATCS.cmd +++ b/packaging/Windows/ATCS.cmd @@ -1 +1 @@ -start "" "javaw.exe" -Xmx512M -cp "lib\ATCS_v0.4.6.jar;lib\jide-oss.jar;lib\ui.jar;lib\junit-4.10.jar;lib\json_simple-1.1.jar;lib\rsyntaxtextarea.jar;lib\prefuse.jar;lib\AndorsTrainer_v0.1.2.jar;lib\bsh-2.0b4.jar" com.gpl.rpg.atcontentstudio.ATContentStudio +start "" "javaw.exe" -Xmx512M -cp "lib\ATCS_v0.5.0.jar;lib\jide-oss.jar;lib\ui.jar;lib\junit-4.10.jar;lib\json_simple-1.1.jar;lib\rsyntaxtextarea.jar;lib\prefuse.jar;lib\AndorsTrainer_v0.1.2.jar;lib\bsh-2.0b4.jar" com.gpl.rpg.atcontentstudio.ATContentStudio diff --git a/packaging/Windows/ATCS_Installer.nsi b/packaging/Windows/ATCS_Installer.nsi index 35b1214..029cfcb 100644 --- a/packaging/Windows/ATCS_Installer.nsi +++ b/packaging/Windows/ATCS_Installer.nsi @@ -1,6 +1,6 @@ !include MUI2.nsh -!define VERSION "0.4.8" +!define VERSION "0.5.0" !define JAVA_BIN "java" Name "Andor's Trail Content Studio v${VERSION}" diff --git a/src/com/gpl/rpg/atcontentstudio/ATContentStudio.java b/src/com/gpl/rpg/atcontentstudio/ATContentStudio.java index 088a9cd..d5aa3ff 100644 --- a/src/com/gpl/rpg/atcontentstudio/ATContentStudio.java +++ b/src/com/gpl/rpg/atcontentstudio/ATContentStudio.java @@ -22,7 +22,7 @@ import com.gpl.rpg.atcontentstudio.ui.WorkspaceSelector; public class ATContentStudio { public static final String APP_NAME = "Andor's Trail Content Studio"; - public static final String APP_VERSION = "v0.4.8"; + public static final String APP_VERSION = "v0.5.0"; public static boolean STARTED = false; public static StudioFrame frame = null; diff --git a/src/com/gpl/rpg/atcontentstudio/model/tools/writermode/WriterModeData.java b/src/com/gpl/rpg/atcontentstudio/model/tools/writermode/WriterModeData.java index 9a0e843..08bd303 100644 --- a/src/com/gpl/rpg/atcontentstudio/model/tools/writermode/WriterModeData.java +++ b/src/com/gpl/rpg/atcontentstudio/model/tools/writermode/WriterModeData.java @@ -78,6 +78,14 @@ public class WriterModeData extends GameDataElement { } + public WriterDialogue createDialogue(Dialogue dialogue) { + if (dialogue.message == null) { + return new SelectorDialogue(dialogue); + } else { + return new WriterDialogue(dialogue); + } + } + public class WriterDialogue extends WriterNode { public String id; public String id_prefix; @@ -104,7 +112,7 @@ public class WriterModeData extends GameDataElement { nodesById.put(this.id, this); if (dialogue.replies != null) { for (Dialogue.Reply reply : dialogue.replies) { - if (Dialogue.Reply.GO_NEXT_TEXT.equals(reply.text)) { + if (Dialogue.Reply.GO_NEXT_TEXT.equals(reply.text) || reply.text == null) { replies.add(new EmptyReply(this, reply)); } else { replies.add(new WriterReply(this, reply)); @@ -194,7 +202,9 @@ public class WriterModeData extends GameDataElement { modified.add(dialogue); } else { //Altering a game source Dialogue - Dialogue clone = (Dialogue) dialogue.clone(); + //Dialogue clone = (Dialogue) dialogue.clone(); + dialogue.getProject().makeWritable(dialogue); + Dialogue clone = dialogue.getProject().getDialogue(dialogue.id); if (this.replies != null) { for (WriterReply wReply : this.replies) { if (wReply.reply != null) { @@ -247,11 +257,19 @@ public class WriterModeData extends GameDataElement { public abstract class SpecialDialogue extends WriterDialogue { + public SpecialDialogue() {} public boolean isSpecial() {return true;} public abstract SpecialDialogue duplicate(); + public SpecialDialogue(Dialogue dialogue) { + super(dialogue); + } } public class SelectorDialogue extends SpecialDialogue { + public SelectorDialogue() {} public SpecialDialogue duplicate() {return new SelectorDialogue();} + public SelectorDialogue(Dialogue dialogue) { + super(dialogue); + } } public class ShopDialogue extends SpecialDialogue { public static final String id = Dialogue.Reply.SHOP_PHRASE_ID; @@ -369,7 +387,7 @@ public class WriterModeData extends GameDataElement { super(parent); } - public SpecialReply(WriterDialogue parent, Map json) { + public SpecialReply(WriterDialogue parent, @SuppressWarnings("rawtypes") Map json) { super(parent, json); } } @@ -385,7 +403,7 @@ public class WriterModeData extends GameDataElement { text = Dialogue.Reply.GO_NEXT_TEXT; } - public EmptyReply(WriterDialogue parent, Map json) { + public EmptyReply(WriterDialogue parent, @SuppressWarnings("rawtypes") Map json) { super(parent, json); text = Dialogue.Reply.GO_NEXT_TEXT; } diff --git a/src/com/gpl/rpg/atcontentstudio/model/tools/writermode/WriterModeDataSet.java b/src/com/gpl/rpg/atcontentstudio/model/tools/writermode/WriterModeDataSet.java index a8483ea..d03ee2b 100644 --- a/src/com/gpl/rpg/atcontentstudio/model/tools/writermode/WriterModeDataSet.java +++ b/src/com/gpl/rpg/atcontentstudio/model/tools/writermode/WriterModeDataSet.java @@ -41,7 +41,7 @@ public class WriterModeDataSet implements ProjectTreeNode, Serializable { public GameSource parent; public File writerFile; - List writerModeDataList = new ArrayList(); + public List writerModeDataList = new ArrayList(); public WriterModeDataSet(GameSource gameSource) { this.parent = gameSource; @@ -79,6 +79,7 @@ public class WriterModeDataSet implements ProjectTreeNode, Serializable { return false; } + @SuppressWarnings("rawtypes") @Override public Enumeration children() { return Collections.enumeration(writerModeDataList); @@ -201,6 +202,7 @@ public class WriterModeDataSet implements ProjectTreeNode, Serializable { return events; } + @SuppressWarnings("rawtypes") public void parse() { if (!writerFile.exists()) return; JSONParser parser = new JSONParser(); @@ -210,7 +212,9 @@ public class WriterModeDataSet implements ProjectTreeNode, Serializable { List writerDataListJson = (List) parser.parse(reader); for (Object obj : writerDataListJson) { Map jsonObj = (Map)obj; - writerModeDataList.add(new WriterModeData(this, jsonObj)); + WriterModeData data = new WriterModeData(this, jsonObj); + data.writable = true; + writerModeDataList.add(data); } } catch (FileNotFoundException e) { Notification.addError("Error while parsing JSON file "+writerFile.getAbsolutePath()+": "+e.getMessage()); @@ -252,6 +256,7 @@ public class WriterModeDataSet implements ProjectTreeNode, Serializable { } if (higherEmptyParent == this && !this.isEmpty()) higherEmptyParent = null; writerModeDataList.add(node); + node.writable = true; if (node.jsonFile == null) node.jsonFile = this.writerFile; node.parent = this; if (higherEmptyParent != null) higherEmptyParent.notifyCreated(); diff --git a/src/com/gpl/rpg/atcontentstudio/ui/ProjectsTree.java b/src/com/gpl/rpg/atcontentstudio/ui/ProjectsTree.java index e763e8e..6c07a46 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/ProjectsTree.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/ProjectsTree.java @@ -241,10 +241,10 @@ public class ProjectsTree extends JPanel { addNextSeparator = true; popupMenu.add(new JMenuItem(actions.testWriter)); } - if (actions.testCommitWriter.isEnabled()) { - addNextSeparator = true; - popupMenu.add(new JMenuItem(actions.testCommitWriter)); - } +// if (actions.testCommitWriter.isEnabled()) { +// addNextSeparator = true; +// popupMenu.add(new JMenuItem(actions.testCommitWriter)); +// } if (actions.createWriter.isEnabled()) { addNextSeparator = true; popupMenu.add(new JMenuItem(actions.createWriter)); diff --git a/src/com/gpl/rpg/atcontentstudio/ui/StudioFrame.java b/src/com/gpl/rpg/atcontentstudio/ui/StudioFrame.java index 6e45cb5..6f7318a 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/StudioFrame.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/StudioFrame.java @@ -195,6 +195,11 @@ public class StudioFrame extends JFrame { editors.openEditor(node); } + public void openEditor(WriterModeData node) { + node.link(); + editors.openEditor(node); + } + public void openEditor(GameDataElement node) { if (node instanceof JSONElement) { @@ -203,6 +208,8 @@ public class StudioFrame extends JFrame { openEditor((Spritesheet) node); } else if (node instanceof TMXMap) { openEditor((TMXMap) node); + } else if (node instanceof WriterModeData) { + openEditor((WriterModeData) node); } } @@ -214,10 +221,6 @@ public class StudioFrame extends JFrame { editors.openEditor(node); } - public void openEditor(WriterModeData node) { - editors.openEditor(node); - } - public void closeEditor(ProjectTreeNode node) { editors.closeEditor(node); } diff --git a/src/com/gpl/rpg/atcontentstudio/ui/WorkspaceActions.java b/src/com/gpl/rpg/atcontentstudio/ui/WorkspaceActions.java index 3589c3a..ff48fb6 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/WorkspaceActions.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/WorkspaceActions.java @@ -6,7 +6,6 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; import java.util.ArrayList; -import java.util.Collection; import java.util.HashSet; import java.util.IdentityHashMap; import java.util.LinkedHashMap; @@ -35,6 +34,7 @@ import com.gpl.rpg.atcontentstudio.model.maps.TMXMap; import com.gpl.rpg.atcontentstudio.model.maps.TMXMapSet; import com.gpl.rpg.atcontentstudio.model.saves.SavedGamesSet; import com.gpl.rpg.atcontentstudio.model.tools.writermode.WriterModeData; +import com.gpl.rpg.atcontentstudio.model.tools.writermode.WriterModeDataSet; import com.gpl.rpg.atcontentstudio.ui.tools.BeanShellView; import com.gpl.rpg.atcontentstudio.ui.tools.ItemsTableView; import com.gpl.rpg.atcontentstudio.ui.tools.NPCsTableView; @@ -131,6 +131,9 @@ public class WorkspaceActions { } else if (element instanceof TMXMap) { TMXMapSet parent = (TMXMapSet) element.getParent(); parent.tmxMaps.remove(element); + } else if (element instanceof WriterModeData) { + WriterModeDataSet parent = (WriterModeDataSet) element.getParent(); + parent.writerModeDataList.remove(element); } } new Thread() { @@ -169,6 +172,12 @@ public class WorkspaceActions { } else { new SaveItemsWizard(events, null).setVisible(true); } + } else if (node instanceof TMXMap) { + TMXMapSet parent = (TMXMapSet) node.getParent(); + parent.tmxMaps.remove(node); + } else if (node instanceof WriterModeData) { + WriterModeDataSet parent = (WriterModeDataSet) node.getParent(); + parent.writerModeDataList.remove(node); } } }.start(); @@ -315,7 +324,7 @@ public class WorkspaceActions { }; }; - public ATCSAction testWriter = new ATCSAction("Create dialogue sketch", "Test the Writer Mode"){ + public ATCSAction testWriter = new ATCSAction("Create dialogue sketch", "Create a dialogue sketch for fast dialogue edition"){ public void actionPerformed(ActionEvent e) { if (selectedNode == null || selectedNode.getProject() == null) return; new WriterSketchCreationWizard(selectedNode.getProject()).setVisible(true); @@ -336,7 +345,7 @@ public class WorkspaceActions { } }; - public ATCSAction testCommitWriter = new ATCSAction("Export dialogue sketch", "Exports the dialogue sketch as real JSON data dialogues") { + /*public ATCSAction testCommitWriter = new ATCSAction("Export dialogue sketch", "Exports the dialogue sketch as real JSON data dialogues") { public void actionPerformed(ActionEvent e) { if (selectedNode == null || selectedNode.getProject() == null || !(selectedNode instanceof WriterModeData)) return; WriterModeData wData = (WriterModeData)selectedNode; @@ -348,7 +357,7 @@ public class WorkspaceActions { public void selectionChanged(ProjectTreeNode selectedNode, TreePath[] selectedPaths) { setEnabled(selectedNode != null && selectedNode instanceof WriterModeData); } - }; + };*/ public ATCSAction createWriter = new ATCSAction("Generate dialogue sketch", "Generates a dialogue sketch from this dialogue and its tree.") { public void actionPerformed(ActionEvent e) { @@ -379,7 +388,7 @@ public class WorkspaceActions { actions.add(showAbout); actions.add(exitATCS); actions.add(testWriter); - actions.add(testCommitWriter); +// actions.add(testCommitWriter); actions.add(createWriter); selectionChanged(null, null); } diff --git a/src/com/gpl/rpg/atcontentstudio/ui/tools/writermode/WriterModeEditor.java b/src/com/gpl/rpg/atcontentstudio/ui/tools/writermode/WriterModeEditor.java index 3ef9608..3c3fb00 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/tools/writermode/WriterModeEditor.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/tools/writermode/WriterModeEditor.java @@ -15,6 +15,7 @@ import java.util.List; import java.util.Map; import javax.swing.AbstractAction; +import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JInternalFrame; @@ -74,12 +75,15 @@ public class WriterModeEditor extends Editor { private JComponent overlay = null; private Display view; - private WriterModeData data; + final private WriterModeData data; private WriterNode selected = null; private WriterNode prevSelected = null; public WriterModeEditor(WriterModeData data) { + this.target = data; this.data = data; + this.name = data.id; + this.icon = new ImageIcon(DefaultIcons.getDialogueIcon()); selected = data.begin; view = new WriterGraphView(); view.setLocation(0, 0); @@ -367,6 +371,7 @@ public class WriterModeEditor extends Editor { @Override protected String getText(VisualItem item) { + if (!item.getBoolean(IS_REPLY) && super.getText(item) == null) return "[Selector]"; return wordWrap(super.getText(item), 40); }