diff --git a/src/com/gpl/rpg/atcontentstudio/model/gamedata/Dialogue.java b/src/com/gpl/rpg/atcontentstudio/model/gamedata/Dialogue.java index feeff8c..c230057 100644 --- a/src/com/gpl/rpg/atcontentstudio/model/gamedata/Dialogue.java +++ b/src/com/gpl/rpg/atcontentstudio/model/gamedata/Dialogue.java @@ -63,8 +63,8 @@ public class Dialogue extends JSONElement { spawnAll, removeSpawnArea, deactivateSpawnArea, - activateMapChangeArea, - deactivateMapChangeArea + activateMapObjectGroup, + deactivateMapObjectGroup } } @@ -242,8 +242,8 @@ public class Dialogue extends JSONElement { for (Reward reward : rewards) { if (reward.reward_obj_id != null) { switch (reward.type) { - case activateMapChangeArea: - case deactivateMapChangeArea: + case activateMapObjectGroup: + case deactivateMapObjectGroup: case spawnAll: case removeSpawnArea: case deactivateSpawnArea: diff --git a/src/com/gpl/rpg/atcontentstudio/model/maps/MapObjectGroup.java b/src/com/gpl/rpg/atcontentstudio/model/maps/MapObjectGroup.java index 44f2b0b..c2f2383 100644 --- a/src/com/gpl/rpg/atcontentstudio/model/maps/MapObjectGroup.java +++ b/src/com/gpl/rpg/atcontentstudio/model/maps/MapObjectGroup.java @@ -13,12 +13,18 @@ public class MapObjectGroup { public String name; public boolean visible; public List mapObjects = new ArrayList(); + public Boolean active; public MapObjectGroup(tiled.core.ObjectGroup layer, TMXMap map) { this.tmxGroup = layer; this.name = layer.getName(); this.visible = layer.isVisible(); this.parentMap = map; + if (layer.getProperties().get("active") != null) { + active = new Boolean(((String) layer.getProperties().get("active"))); + } else { + active = true; + } for (tiled.core.MapObject obj : layer.getObjectsList()) { mapObjects.add(MapObject.buildObject(obj, map)); } @@ -44,6 +50,9 @@ public class MapObjectGroup { } tmxGroup.setVisible(visible); tmxGroup.setName(name); + if (!active) { + tmxGroup.getProperties().put("active", Boolean.toString(active)); + } for (MapObject object : mapObjects) { tmxGroup.addObject(object.toTmxObject()); } diff --git a/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/DialogueEditor.java b/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/DialogueEditor.java index d2a8be5..f29de6d 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/DialogueEditor.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/DialogueEditor.java @@ -320,8 +320,13 @@ public class DialogueEditor extends JSONElementEditor { } if (reward.type != null) { switch (reward.type) { - case activateMapChangeArea: - case deactivateMapChangeArea: + case activateMapObjectGroup: + case deactivateMapObjectGroup: + rewardMap = addMapBox(pane, ((Dialogue)target).getProject(), "Map Name: ", reward.map, writable, listener); + rewardObjId = addTextField(pane, "Group ID: ", reward.reward_obj_id, writable, listener); + rewardObj = null; + rewardValue = null; + break; case deactivateSpawnArea: case removeSpawnArea: case spawnAll: @@ -732,8 +737,9 @@ public class DialogueEditor extends JSONElementEditor { rewardObjDesc = reward.reward_obj_id; } switch (reward.type) { - case activateMapChangeArea: - label.setText("Activate mapchange area "+rewardObjDesc+" on map "+reward.map_name); + case activateMapObjectGroup: + label.setText("Activate map object group "+rewardObjDesc+" on map "+reward.map_name); + label.setIcon(new ImageIcon(DefaultIcons.getObjectLayerIcon())); break; case actorCondition: label.setText("Give actor condition "+rewardObjDesc+" for "+reward.reward_value+" turns"); @@ -745,11 +751,13 @@ public class DialogueEditor extends JSONElementEditor { case createTimer: label.setText("Create timer "+rewardObjDesc); break; - case deactivateMapChangeArea: - label.setText("Deactivate mapchange area "+rewardObjDesc+" on map "+reward.map_name); + case deactivateMapObjectGroup: + label.setText("Deactivate map object group "+rewardObjDesc+" on map "+reward.map_name); + label.setIcon(new ImageIcon(DefaultIcons.getObjectLayerIcon())); break; case deactivateSpawnArea: label.setText("Deactivate spawnarea area "+rewardObjDesc+" on map "+reward.map_name); + label.setIcon(new ImageIcon(DefaultIcons.getNPCIcon())); break; case dropList: label.setText("Give contents of droplist "+rewardObjDesc); @@ -765,12 +773,14 @@ public class DialogueEditor extends JSONElementEditor { break; case removeSpawnArea: label.setText("Remove all monsters in spawnarea area "+rewardObjDesc+" on map "+reward.map_name); + label.setIcon(new ImageIcon(DefaultIcons.getNPCIcon())); break; case skillIncrease: label.setText("Increase skill "+rewardObjDesc+" level"); break; case spawnAll: label.setText("Respawn all monsters in spawnarea area "+rewardObjDesc+" on map "+reward.map_name); + label.setIcon(new ImageIcon(DefaultIcons.getNPCIcon())); break; } } else { @@ -1027,6 +1037,10 @@ public class DialogueEditor extends JSONElementEditor { } else if (source == rewardTypeCombo) { if (selectedReward.type != value) { selectedReward.type = (Dialogue.Reward.RewardType) value; + if (selectedReward.map != null) { + selectedReward.map.removeBacklink(dialogue); + } + selectedReward.map = null; selectedReward.map_name = null; selectedReward.reward_obj = null; selectedReward.reward_obj_id = null; diff --git a/src/com/gpl/rpg/atcontentstudio/ui/map/TMXMapEditor.java b/src/com/gpl/rpg/atcontentstudio/ui/map/TMXMapEditor.java index 5a0b639..986c272 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/map/TMXMapEditor.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/map/TMXMapEditor.java @@ -124,6 +124,7 @@ public class TMXMapEditor extends Editor { private JPanel layerDetailsPane; private BooleanBasedCheckBox layerVisibleBox; + private BooleanBasedCheckBox activeLayerBox; private JTextField layerNameField; private MapObjectsListModel groupObjectsListModel; private JList groupObjectsList; @@ -308,6 +309,7 @@ public class TMXMapEditor extends Editor { break; } } + activeForNewGame = addBooleanBasedCheckBox(groupDetailPane, "Active for new game", objGroup.active, map.writable, listener); groupObjectsListModel = new MapObjectsListModel(objGroup); groupObjectsList = new JList(groupObjectsListModel); groupObjectsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); @@ -1683,6 +1685,11 @@ public class TMXMapEditor extends Editor { modified = false; tmxViewer.revalidate(); tmxViewer.repaint(); + } else if (source == activeForNewGame) { + if (selectedLayer instanceof tiled.core.ObjectGroup) { + map.getGroup((tiled.core.ObjectGroup) selectedLayer).active = activeForNewGame.isSelected(); + } + modified = true; } else if (source == layerList) { modified = false; tmxViewer.revalidate(); @@ -1692,15 +1699,8 @@ public class TMXMapEditor extends Editor { tmxViewer.revalidate(); tmxViewer.repaint(); } else if (source == areaField) { - if (selectedMapObject instanceof SpawnArea) { - SpawnArea area = (SpawnArea)selectedMapObject; - area.name = (String) value; - groupObjectsListModel.objectChanged(area); - } else if (selectedMapObject instanceof MapChange) { - MapChange area = (MapChange) selectedMapObject; - area.name = (String) value; - groupObjectsListModel.objectChanged(area); - } + selectedMapObject.name = (String) value; + groupObjectsListModel.objectChanged(selectedMapObject); } else if (source == spawngroupField) { if (selectedMapObject instanceof SpawnArea) { SpawnArea area = (SpawnArea)selectedMapObject; @@ -1709,7 +1709,7 @@ public class TMXMapEditor extends Editor { npc.removeBacklink(map); } } - area.name = (String) value; + area.spawngroup_id = (String) value; selectedMapObject.link(); npcList.setModel(new SpawnGroupNpcListModel(area)); groupObjectsListModel.objectChanged(area); @@ -1717,10 +1717,6 @@ public class TMXMapEditor extends Editor { npcList.repaint(); tmxViewer.revalidate(); tmxViewer.repaint(); - } else if (selectedMapObject instanceof MapChange) { - MapChange area = (MapChange) selectedMapObject; - area.name = (String) value; - groupObjectsListModel.objectChanged(area); } } else if (source == targetAreaCombo) { if (selectedMapObject instanceof MapChange) {