mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +00:00
Merge pull request #3 from TrueFuFLeaderG/adventure
adventure: fixed saving poi data, added date to load screen
This commit is contained in:
@@ -1,11 +1,11 @@
|
|||||||
package forge.adventure.data;
|
package forge.adventure.data;
|
||||||
|
|
||||||
import com.badlogic.gdx.files.FileHandle;
|
import com.badlogic.gdx.files.FileHandle;
|
||||||
|
import com.badlogic.gdx.math.Vector2;
|
||||||
import com.badlogic.gdx.utils.Array;
|
import com.badlogic.gdx.utils.Array;
|
||||||
import com.badlogic.gdx.utils.Json;
|
import com.badlogic.gdx.utils.Json;
|
||||||
import forge.adventure.util.Config;
|
import forge.adventure.util.Config;
|
||||||
import forge.adventure.util.Paths;
|
import forge.adventure.util.Paths;
|
||||||
import forge.util.MyRandom;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
@@ -39,13 +39,13 @@ public class PointOfInterestData {
|
|||||||
}
|
}
|
||||||
return pointOfInterestList;
|
return pointOfInterestList;
|
||||||
}
|
}
|
||||||
public static PointOfInterestData getPointOfInterest(String name) {
|
public static PointOfInterestData getPointOfInterest(String name, Vector2 index) {
|
||||||
ArrayList<PointOfInterestData> candidates = new ArrayList<PointOfInterestData>();
|
ArrayList<PointOfInterestData> candidates = new ArrayList<PointOfInterestData>();
|
||||||
for(PointOfInterestData data: new Array.ArrayIterator<>(getAllPointOfInterest())){
|
for(PointOfInterestData data: new Array.ArrayIterator<>(getAllPointOfInterest())){
|
||||||
if(data.name.equals(name)) candidates.add(data); //Populate candidates with specified name.
|
if(data.name.equals(name)) candidates.add(data); //Populate candidates with specified name.
|
||||||
}
|
}
|
||||||
if(candidates.size() > 0){ //If we got any candidates, return a random one.
|
if(candidates.size() > 0){ //If we got any candidates, return a random one.
|
||||||
return candidates.get(MyRandom.getRandom().nextInt(candidates.size()));
|
return candidates.get(((int)(index.x*6719+index.y)%candidates.size()));//6719 is just a big prime to avoid collisions
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ public class PointOfInterest implements SaveFileContent {
|
|||||||
@Override
|
@Override
|
||||||
public void load(SaveFileData saveFileData) {
|
public void load(SaveFileData saveFileData) {
|
||||||
|
|
||||||
data=PointOfInterestData.getPointOfInterest(saveFileData.readString("name"));
|
|
||||||
position.set(saveFileData.readVector2("position"));
|
position.set(saveFileData.readVector2("position"));
|
||||||
|
data=PointOfInterestData.getPointOfInterest(saveFileData.readString("name"),position);
|
||||||
rectangle.set(saveFileData.readRectangle("rectangle"));
|
rectangle.set(saveFileData.readRectangle("rectangle"));
|
||||||
spriteIndex=saveFileData.readInt("spriteIndex");
|
spriteIndex=saveFileData.readInt("spriteIndex");
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,69 @@
|
|||||||
package forge.adventure.pointofintrest;
|
package forge.adventure.pointofintrest;
|
||||||
|
|
||||||
|
import forge.adventure.util.SaveFileContent;
|
||||||
|
import forge.adventure.util.SaveFileData;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class to save point of interest changes, like sold cards and dead enemies
|
* Class to save point of interest changes, like sold cards and dead enemies
|
||||||
*/
|
*/
|
||||||
public class PointOfInterestChanges {
|
public class PointOfInterestChanges implements SaveFileContent {
|
||||||
|
|
||||||
|
public static class Map extends HashMap<String,PointOfInterestChanges> implements SaveFileContent
|
||||||
|
{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void load(SaveFileData data) {
|
||||||
|
|
||||||
|
this.clear();
|
||||||
|
if(data==null||!data.containsKey("keys"))
|
||||||
|
return;
|
||||||
|
String[] keys= (String[]) data.readObject("keys");
|
||||||
|
for(int i=0;i<keys.length;i++)
|
||||||
|
{
|
||||||
|
SaveFileData elementData = data.readSubData("value_"+i);
|
||||||
|
PointOfInterestChanges newChanges=new PointOfInterestChanges();
|
||||||
|
newChanges.load(elementData);
|
||||||
|
this.put(keys[i],newChanges);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SaveFileData save() {
|
||||||
|
SaveFileData data=new SaveFileData();
|
||||||
|
ArrayList<String> keys=new ArrayList<>();
|
||||||
|
ArrayList<PointOfInterestChanges> items=new ArrayList<>();
|
||||||
|
for (Map.Entry<String,PointOfInterestChanges> entry : this.entrySet()) {
|
||||||
|
keys.add(entry.getKey());
|
||||||
|
items.add(entry.getValue());
|
||||||
|
}
|
||||||
|
data.storeObject("keys",keys.toArray(new String[0]));
|
||||||
|
for(int i=0;i<items.size();i++)
|
||||||
|
data.store("value_"+i,items.get(0).save());
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void load(SaveFileData data) {
|
||||||
|
deletedObjects.clear();
|
||||||
|
deletedObjects.addAll((HashSet<Integer>) data.readObject("deletedObjects"));
|
||||||
|
cardsBought.clear();
|
||||||
|
cardsBought.putAll((HashMap<Integer, HashSet<Integer>>) data.readObject("cardsBought"));
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SaveFileData save() {
|
||||||
|
SaveFileData data=new SaveFileData();
|
||||||
|
data.storeObject("deletedObjects",deletedObjects);
|
||||||
|
data.storeObject("cardsBought",cardsBought);
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
private final HashSet<Integer> deletedObjects=new HashSet<>();
|
private final HashSet<Integer> deletedObjects=new HashSet<>();
|
||||||
private final HashMap<Integer, HashSet<Integer>> cardsBought=new HashMap<>();
|
private final HashMap<Integer, HashSet<Integer>> cardsBought=new HashMap<>();
|
||||||
@@ -38,4 +93,5 @@ public class PointOfInterestChanges {
|
|||||||
}
|
}
|
||||||
return cardsBought.get(objectID).contains(cardIndex);
|
return cardsBought.get(objectID).contains(cardIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import java.io.File;
|
|||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.ObjectInputStream;
|
import java.io.ObjectInputStream;
|
||||||
|
import java.text.DateFormat;
|
||||||
import java.util.zip.InflaterInputStream;
|
import java.util.zip.InflaterInputStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -37,6 +38,7 @@ public class SaveLoadScene extends UIScene {
|
|||||||
Label header;
|
Label header;
|
||||||
int currentSlot = -3, lastSelectedSlot = 0;
|
int currentSlot = -3, lastSelectedSlot = 0;
|
||||||
Image previewImage;
|
Image previewImage;
|
||||||
|
Label previewDate;
|
||||||
Image previewBorder;
|
Image previewBorder;
|
||||||
TextButton saveLoadButton, back;
|
TextButton saveLoadButton, back;
|
||||||
TextButton quickSave;
|
TextButton quickSave;
|
||||||
@@ -83,10 +85,17 @@ public class SaveLoadScene extends UIScene {
|
|||||||
previewImage.setDrawable(new TextureRegionDrawable(new Texture(header.preview)));
|
previewImage.setDrawable(new TextureRegionDrawable(new Texture(header.preview)));
|
||||||
previewImage.layout();
|
previewImage.layout();
|
||||||
previewImage.setVisible(true);
|
previewImage.setVisible(true);
|
||||||
|
previewDate.setVisible(true);
|
||||||
|
if (header.saveDate != null)
|
||||||
|
previewDate.setText(DateFormat.getDateInstance().format(header.saveDate));
|
||||||
|
else
|
||||||
|
previewDate.setText("");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (previewImage != null)
|
if (previewImage != null)
|
||||||
previewImage.setVisible(false);
|
previewImage.setVisible(false);
|
||||||
|
if (previewDate != null)
|
||||||
|
previewDate.setVisible(false);
|
||||||
}
|
}
|
||||||
for (IntMap.Entry<TextButton> butt : new IntMap.Entries<TextButton>(buttons)) {
|
for (IntMap.Entry<TextButton> butt : new IntMap.Entries<TextButton>(buttons)) {
|
||||||
butt.value.setColor(defColor);
|
butt.value.setColor(defColor);
|
||||||
@@ -123,7 +132,9 @@ public class SaveLoadScene extends UIScene {
|
|||||||
break;
|
break;
|
||||||
case NewGamePlus:
|
case NewGamePlus:
|
||||||
if (WorldSave.load(currentSlot)) {
|
if (WorldSave.load(currentSlot)) {
|
||||||
|
WorldSave.getCurrentSave().clearChanges();
|
||||||
WorldSave.getCurrentSave().getWorld().generateNew(0);
|
WorldSave.getCurrentSave().getWorld().generateNew(0);
|
||||||
|
|
||||||
Current.player().setWorldPosY((int) (WorldSave.getCurrentSave().getWorld().getData().playerStartPosY * WorldSave.getCurrentSave().getWorld().getData().height * WorldSave.getCurrentSave().getWorld().getTileSize()));
|
Current.player().setWorldPosY((int) (WorldSave.getCurrentSave().getWorld().getData().playerStartPosY * WorldSave.getCurrentSave().getWorld().getData().height * WorldSave.getCurrentSave().getWorld().getTileSize()));
|
||||||
Current.player().setWorldPosX((int) (WorldSave.getCurrentSave().getWorld().getData().playerStartPosX * WorldSave.getCurrentSave().getWorld().getData().width * WorldSave.getCurrentSave().getWorld().getTileSize()));
|
Current.player().setWorldPosX((int) (WorldSave.getCurrentSave().getWorld().getData().playerStartPosX * WorldSave.getCurrentSave().getWorld().getData().width * WorldSave.getCurrentSave().getWorld().getTileSize()));
|
||||||
Forge.setTransitionScreen(new TransitionScreen(new Runnable() {
|
Forge.setTransitionScreen(new TransitionScreen(new Runnable() {
|
||||||
@@ -285,6 +296,7 @@ public class SaveLoadScene extends UIScene {
|
|||||||
//makes dialog hidden immediately when you open saveload scene..
|
//makes dialog hidden immediately when you open saveload scene..
|
||||||
dialog.getColor().a = 0;
|
dialog.getColor().a = 0;
|
||||||
previewImage = ui.findActor("preview");
|
previewImage = ui.findActor("preview");
|
||||||
|
previewDate = ui.findActor("saveDate");
|
||||||
previewBorder = ui.findActor("preview_border");
|
previewBorder = ui.findActor("preview_border");
|
||||||
header = Controls.newLabel(Forge.getLocalizer().getMessage("lblSave"));
|
header = Controls.newLabel(Forge.getLocalizer().getMessage("lblSave"));
|
||||||
header.setAlignment(Align.center);
|
header.setAlignment(Align.center);
|
||||||
|
|||||||
@@ -6,13 +6,7 @@ import com.badlogic.gdx.math.Rectangle;
|
|||||||
import com.badlogic.gdx.math.Vector2;
|
import com.badlogic.gdx.math.Vector2;
|
||||||
import forge.Forge;
|
import forge.Forge;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.*;
|
||||||
import java.io.ByteArrayOutputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.ObjectInputStream;
|
|
||||||
import java.io.ObjectOutputStream;
|
|
||||||
import java.io.ObjectStreamClass;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
public class SaveFileData extends HashMap<String,byte[]>
|
public class SaveFileData extends HashMap<String,byte[]>
|
||||||
@@ -329,6 +323,9 @@ public class SaveFileData extends HashMap<String,byte[]>
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class DecompressibleInputStream extends ObjectInputStream {
|
class DecompressibleInputStream extends ObjectInputStream {
|
||||||
|
|
||||||
/*https://stackoverflow.com/questions/1816559/make-java-runtime-ignore-serialversionuids*/
|
/*https://stackoverflow.com/questions/1816559/make-java-runtime-ignore-serialversionuids*/
|
||||||
|
|||||||
@@ -11,13 +11,8 @@ import forge.deck.Deck;
|
|||||||
import forge.localinstance.properties.ForgeConstants;
|
import forge.localinstance.properties.ForgeConstants;
|
||||||
import forge.player.GamePlayerUtil;
|
import forge.player.GamePlayerUtil;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.*;
|
||||||
import java.io.FileInputStream;
|
import java.util.Date;
|
||||||
import java.io.FileOutputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.ObjectInputStream;
|
|
||||||
import java.io.ObjectOutputStream;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.zip.DeflaterOutputStream;
|
import java.util.zip.DeflaterOutputStream;
|
||||||
import java.util.zip.InflaterInputStream;
|
import java.util.zip.InflaterInputStream;
|
||||||
|
|
||||||
@@ -33,7 +28,7 @@ public class WorldSave {
|
|||||||
public WorldSaveHeader header = new WorldSaveHeader();
|
public WorldSaveHeader header = new WorldSaveHeader();
|
||||||
private final AdventurePlayer player=new AdventurePlayer();
|
private final AdventurePlayer player=new AdventurePlayer();
|
||||||
private final World world=new World();
|
private final World world=new World();
|
||||||
private final HashMap<String, PointOfInterestChanges> pointOfInterestChanges=new HashMap<>();
|
private final PointOfInterestChanges.Map pointOfInterestChanges= new PointOfInterestChanges.Map();
|
||||||
|
|
||||||
|
|
||||||
private final SignalList onLoadList=new SignalList();
|
private final SignalList onLoadList=new SignalList();
|
||||||
@@ -73,7 +68,9 @@ public class WorldSave {
|
|||||||
GamePlayerUtil.getGuiPlayer().setName(currentSave.player.getName());
|
GamePlayerUtil.getGuiPlayer().setName(currentSave.player.getName());
|
||||||
try {
|
try {
|
||||||
currentSave.world.load(mainData.readSubData("world"));
|
currentSave.world.load(mainData.readSubData("world"));
|
||||||
|
currentSave.pointOfInterestChanges.load(mainData.readSubData("pointOfInterestChanges"));
|
||||||
WorldStage.getInstance().load(mainData.readSubData("worldStage"));
|
WorldStage.getInstance().load(mainData.readSubData("worldStage"));
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.err.println("Generating New World");
|
System.err.println("Generating New World");
|
||||||
currentSave.world.generateNew(0);
|
currentSave.world.generateNew(0);
|
||||||
@@ -124,7 +121,7 @@ public class WorldSave {
|
|||||||
public static WorldSave generateNewWorld(String name, boolean male, int race, int avatarIndex, int startingDeckIndex, DifficultyData diff, long seed) {
|
public static WorldSave generateNewWorld(String name, boolean male, int race, int avatarIndex, int startingDeckIndex, DifficultyData diff, long seed) {
|
||||||
|
|
||||||
currentSave.world.generateNew(seed);
|
currentSave.world.generateNew(seed);
|
||||||
|
currentSave.pointOfInterestChanges.clear();
|
||||||
Deck starterDeck = Config.instance().starterDecks()[startingDeckIndex];
|
Deck starterDeck = Config.instance().starterDecks()[startingDeckIndex];
|
||||||
currentSave.player.create(name, starterDeck, male, race, avatarIndex,diff);
|
currentSave.player.create(name, starterDeck, male, race, avatarIndex,diff);
|
||||||
currentSave.player.setWorldPosY((int) (currentSave.world.getData().playerStartPosY * currentSave.world.getData().height * currentSave.world.getTileSize()));
|
currentSave.player.setWorldPosY((int) (currentSave.world.getData().playerStartPosY * currentSave.world.getData().height * currentSave.world.getTileSize()));
|
||||||
@@ -154,11 +151,13 @@ public class WorldSave {
|
|||||||
DeflaterOutputStream def= new DeflaterOutputStream(fos);
|
DeflaterOutputStream def= new DeflaterOutputStream(fos);
|
||||||
ObjectOutputStream oos = new ObjectOutputStream(def))
|
ObjectOutputStream oos = new ObjectOutputStream(def))
|
||||||
{
|
{
|
||||||
|
header.saveDate= new Date();
|
||||||
oos.writeObject(header);
|
oos.writeObject(header);
|
||||||
SaveFileData mainData=new SaveFileData();
|
SaveFileData mainData=new SaveFileData();
|
||||||
mainData.store("player",currentSave.player.save());
|
mainData.store("player",currentSave.player.save());
|
||||||
mainData.store("world",currentSave.world.save());
|
mainData.store("world",currentSave.world.save());
|
||||||
mainData.store("worldStage", WorldStage.getInstance().save());
|
mainData.store("worldStage", WorldStage.getInstance().save());
|
||||||
|
mainData.store("pointOfInterestChanges",currentSave.pointOfInterestChanges.save());
|
||||||
|
|
||||||
oos.writeObject(mainData);
|
oos.writeObject(mainData);
|
||||||
}
|
}
|
||||||
@@ -170,4 +169,8 @@ public class WorldSave {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void clearChanges() {
|
||||||
|
pointOfInterestChanges.clear();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,12 +3,12 @@
|
|||||||
"height": 4300,
|
"height": 4300,
|
||||||
"width": 2
|
"width": 2
|
||||||
},
|
},
|
||||||
"activeFile": "map/aerie_1.tmx",
|
"activeFile": "map/barbariancamp_2.tmx",
|
||||||
"automapping.whileDrawing": false,
|
"automapping.whileDrawing": false,
|
||||||
"expandedProjectPaths": [
|
"expandedProjectPaths": [
|
||||||
"obj",
|
|
||||||
"map/main_story",
|
"map/main_story",
|
||||||
"tileset",
|
"tileset",
|
||||||
|
"obj",
|
||||||
"map"
|
"map"
|
||||||
],
|
],
|
||||||
"file.lastUsedOpenFilter": "All Files (*)",
|
"file.lastUsedOpenFilter": "All Files (*)",
|
||||||
@@ -49,8 +49,8 @@
|
|||||||
"scale": 4,
|
"scale": 4,
|
||||||
"selectedLayer": 4,
|
"selectedLayer": 4,
|
||||||
"viewCenter": {
|
"viewCenter": {
|
||||||
"x": 201.75,
|
"x": 370.25,
|
||||||
"y": 167.75
|
"y": 101.75
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"map/barbariancamp_3.tmx": {
|
"map/barbariancamp_3.tmx": {
|
||||||
@@ -105,7 +105,7 @@
|
|||||||
"scale": 3,
|
"scale": 3,
|
||||||
"selectedLayer": 1,
|
"selectedLayer": 1,
|
||||||
"viewCenter": {
|
"viewCenter": {
|
||||||
"x": 240,
|
"x": 239.99999999999997,
|
||||||
"y": 136
|
"y": 136
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -529,8 +529,8 @@
|
|||||||
"scale": 0.75,
|
"scale": 0.75,
|
||||||
"selectedLayer": 4,
|
"selectedLayer": 4,
|
||||||
"viewCenter": {
|
"viewCenter": {
|
||||||
"x": 312,
|
"x": 311.99999999999994,
|
||||||
"y": 319.9999999999999
|
"y": 320
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"map/cave_23B10.tmx": {
|
"map/cave_23B10.tmx": {
|
||||||
@@ -673,7 +673,7 @@
|
|||||||
"scale": 1.0166158536585366,
|
"scale": 1.0166158536585366,
|
||||||
"selectedLayer": 4,
|
"selectedLayer": 4,
|
||||||
"viewCenter": {
|
"viewCenter": {
|
||||||
"x": 311.8188633978108,
|
"x": 311.81886339781073,
|
||||||
"y": 320.6717648822912
|
"y": 320.6717648822912
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1497,7 +1497,7 @@
|
|||||||
"scale": 1.5,
|
"scale": 1.5,
|
||||||
"selectedLayer": 4,
|
"selectedLayer": 4,
|
||||||
"viewCenter": {
|
"viewCenter": {
|
||||||
"x": 400,
|
"x": 399.99999999999994,
|
||||||
"y": 400
|
"y": 400
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1993,7 +1993,7 @@
|
|||||||
"scale": 1.3694556451612903,
|
"scale": 1.3694556451612903,
|
||||||
"selectedLayer": 0,
|
"selectedLayer": 0,
|
||||||
"viewCenter": {
|
"viewCenter": {
|
||||||
"x": 231.4788369525212,
|
"x": 231.47883695252114,
|
||||||
"y": 136.5506072874494
|
"y": 136.5506072874494
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -2465,7 +2465,7 @@
|
|||||||
"scale": 1.5,
|
"scale": 1.5,
|
||||||
"selectedLayer": 6,
|
"selectedLayer": 6,
|
||||||
"viewCenter": {
|
"viewCenter": {
|
||||||
"x": 400,
|
"x": 399.99999999999994,
|
||||||
"y": 400
|
"y": 400
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -2497,7 +2497,7 @@
|
|||||||
"scale": 3,
|
"scale": 3,
|
||||||
"selectedLayer": 6,
|
"selectedLayer": 6,
|
||||||
"viewCenter": {
|
"viewCenter": {
|
||||||
"x": 240,
|
"x": 239.99999999999997,
|
||||||
"y": 136
|
"y": 136
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -2631,7 +2631,7 @@
|
|||||||
"scale": 0.75,
|
"scale": 0.75,
|
||||||
"selectedLayer": 0,
|
"selectedLayer": 0,
|
||||||
"viewCenter": {
|
"viewCenter": {
|
||||||
"x": 480,
|
"x": 479.99999999999994,
|
||||||
"y": 320
|
"y": 320
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -2728,7 +2728,67 @@
|
|||||||
"map/plains_town.tmx",
|
"map/plains_town.tmx",
|
||||||
"map/main_story/colorless_castle.tmx",
|
"map/main_story/colorless_castle.tmx",
|
||||||
"map/main_story/blue_castle.tmx",
|
"map/main_story/blue_castle.tmx",
|
||||||
"map/aerie_1.tmx"
|
"map/aerie_1.tmx",
|
||||||
|
"map/cave_13.tmx",
|
||||||
|
"map/cave_14.tmx",
|
||||||
|
"map/cave_15.tmx",
|
||||||
|
"map/cave_16.tmx",
|
||||||
|
"map/cave_16B.tmx",
|
||||||
|
"map/cave_23B10.tmx",
|
||||||
|
"map/cave_23B2.tmx",
|
||||||
|
"map/cave_23B4.tmx",
|
||||||
|
"map/cave_23C5.tmx",
|
||||||
|
"map/cave_3.tmx",
|
||||||
|
"map/cave_25.tmx",
|
||||||
|
"map/cave_25B.tmx",
|
||||||
|
"map/cave_25C.tmx",
|
||||||
|
"map/cave_9.tmx",
|
||||||
|
"map/cave_8.tmx",
|
||||||
|
"map/cave_7.tmx",
|
||||||
|
"map/cave_4.tmx",
|
||||||
|
"map/crypt.tmx",
|
||||||
|
"map/crypt_2.tmx",
|
||||||
|
"map/crypt_3.tmx",
|
||||||
|
"map/crypt_4.tmx",
|
||||||
|
"map/crypt_5.tmx",
|
||||||
|
"map/djinnpalace_1.tmx",
|
||||||
|
"map/djinnpalace_2.tmx",
|
||||||
|
"map/djinnpalace_3.tmx",
|
||||||
|
"map/djinnpalace_3B.tmx",
|
||||||
|
"map/elftown.tmx",
|
||||||
|
"map/evilgrove_1.tmx",
|
||||||
|
"map/evilgrove_2.tmx",
|
||||||
|
"map/evilgrove_3.tmx",
|
||||||
|
"map/factory_1.tmx",
|
||||||
|
"map/factory_2.tmx",
|
||||||
|
"map/factory_3.tmx",
|
||||||
|
"map/factory_4.tmx",
|
||||||
|
"map/evilgrove_4.tmx",
|
||||||
|
"map/evilgrove_5.tmx",
|
||||||
|
"map/magetower_5.tmx",
|
||||||
|
"map/magetower_6.tmx",
|
||||||
|
"map/magetower_7.tmx",
|
||||||
|
"map/vampirecastle_4.tmx",
|
||||||
|
"map/portal_2.tmx",
|
||||||
|
"map/portal_2C.tmx",
|
||||||
|
"map/portal_2C2.tmx",
|
||||||
|
"map/portal_2D.tmx",
|
||||||
|
"map/portal_2E.tmx",
|
||||||
|
"map/portal_2F.tmx",
|
||||||
|
"map/portal_2G.tmx",
|
||||||
|
"map/cave_23I2.tmx",
|
||||||
|
"map/cave_23G4.tmx",
|
||||||
|
"map/cave_23E6.tmx",
|
||||||
|
"map/cave_23C8.tmx",
|
||||||
|
"map/cave_23B1.tmx",
|
||||||
|
"map/cave_2.tmx",
|
||||||
|
"map/cave_16BL2U.tmx",
|
||||||
|
"map/cave_16BL1.tmx",
|
||||||
|
"map/cave_1.tmx",
|
||||||
|
"map/catlair_3.tmx",
|
||||||
|
"map/catlair_2.tmx",
|
||||||
|
"map/catlair_1.tmx",
|
||||||
|
"map/barbariancamp_2.tmx"
|
||||||
],
|
],
|
||||||
"project": "main.tiled-project",
|
"project": "main.tiled-project",
|
||||||
"property.type": "object",
|
"property.type": "object",
|
||||||
|
|||||||
@@ -25,6 +25,14 @@
|
|||||||
"width": 96,
|
"width": 96,
|
||||||
"height": 54
|
"height": 54
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "Label",
|
||||||
|
"name": "saveDate",
|
||||||
|
"x": 300,
|
||||||
|
"y": 120,
|
||||||
|
"width": 96,
|
||||||
|
"height": 16
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "TextButton",
|
"type": "TextButton",
|
||||||
"name": "return",
|
"name": "return",
|
||||||
@@ -42,10 +50,6 @@
|
|||||||
"height": 16,
|
"height": 16,
|
||||||
"x": 115,
|
"x": 115,
|
||||||
"y": 250
|
"y": 250
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Table",
|
|
||||||
"font": "default"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -42,6 +42,14 @@
|
|||||||
"x": 376,
|
"x": 376,
|
||||||
"y": 33
|
"y": 33
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "Label",
|
||||||
|
"name": "saveDate",
|
||||||
|
"x": 376,
|
||||||
|
"y": 85,
|
||||||
|
"width": 86,
|
||||||
|
"height": 32
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "TextButton",
|
"type": "TextButton",
|
||||||
"name": "return",
|
"name": "return",
|
||||||
|
|||||||
Reference in New Issue
Block a user