diff --git a/Assets/Scripts/Enemy.cs b/Assets/Scripts/Enemy.cs index 671ae13..a587cd8 100644 --- a/Assets/Scripts/Enemy.cs +++ b/Assets/Scripts/Enemy.cs @@ -119,5 +119,16 @@ namespace Assets.Scripts { return slime.getExperience(); } + + public string saveEnemy() + { + string result = ""; + result = result + FileHandler.generateJSON("enemyname", "\"" + enemyname + "\""); + if (slime != null) + { + result = result + ",\r\n" + slime.saveSlime(); + } + return result; + } } } \ No newline at end of file diff --git a/Assets/Scripts/FileHandler.cs b/Assets/Scripts/FileHandler.cs index 304b617..f08bdfd 100644 --- a/Assets/Scripts/FileHandler.cs +++ b/Assets/Scripts/FileHandler.cs @@ -24,6 +24,7 @@ namespace Assets.Scripts } sw.Write(data); sw.Flush(); + sw.Close(); } public static void loadGame() diff --git a/Assets/Scripts/Slimes/BasicSlime.cs b/Assets/Scripts/Slimes/BasicSlime.cs index 0b5b024..7a65e0a 100644 --- a/Assets/Scripts/Slimes/BasicSlime.cs +++ b/Assets/Scripts/Slimes/BasicSlime.cs @@ -80,5 +80,20 @@ namespace Assets.Scripts.Slimes { return experience; } + + public string saveSlime() + { + string result = ""; + result = result + FileHandler.generateJSON("health", health) + ",\r\n"; + result = result + FileHandler.generateJSON("maxHealth", maxHealth) + ",\r\n"; + result = result + FileHandler.generateJSON("maxSecondary", maxSecondary) + ",\r\n"; + result = result + FileHandler.generateJSON("secondary", secondary) + ",\r\n"; + result = result + FileHandler.generateJSON("strength", strength) + ",\r\n"; + result = result + FileHandler.generateJSON("dexterity", dexterity) + ",\r\n"; + result = result + FileHandler.generateJSON("intelligence", intelligence) + ",\r\n"; + result = result + FileHandler.generateJSON("level", level) + ",\r\n"; + result = result + FileHandler.generateJSON("experience", experience); + return result; + } } } diff --git a/Assets/Scripts/Tile.cs b/Assets/Scripts/Tile.cs index 5332b47..e284b20 100644 --- a/Assets/Scripts/Tile.cs +++ b/Assets/Scripts/Tile.cs @@ -218,6 +218,33 @@ public class Tile : MonoBehaviour public string saveTile() { string result = ""; + GameObject obj; + result = result + FileHandler.generateJSON("tiletype", "\"" + tiletype + "\"") + ",\r\n"; + result = result + FileHandler.generateJSON("positionX", position.x) + ",\r\n"; + result = result + FileHandler.generateJSON("positionY", position.y) + ",\r\n"; + result = result + FileHandler.generateJSON("positionZ", position.z) + ",\r\n"; + result = result + "\"Objects\": {\r\n"; + for (int i = 0; i < gameObject.transform.childCount; i++) + { + obj = gameObject.transform.GetChild(i).gameObject; + result = result + "\"Object" + i + "\": {\r\n"; + result = result + FileHandler.generateJSON("positionX", obj.transform.position.x) + ",\r\n"; + result = result + FileHandler.generateJSON("positionY", obj.transform.position.y) + ",\r\n"; + result = result + FileHandler.generateJSON("positionZ", obj.transform.position.z) + ",\r\n"; + if (obj.tag.Contains("Enemy")) + { + result = result + obj.GetComponent().saveEnemy() + "\r\n}"; + } + else + { + result = result + FileHandler.generateJSON("objectname", "\"" + obj.name + "\"") + "\r\n}"; + } + if (i < gameObject.transform.childCount - 1) + { + result = result + ",\r\n"; + } + } + result = result + "\r\n}"; return result; } } diff --git a/Assets/Scripts/WorldGenerator.cs b/Assets/Scripts/WorldGenerator.cs index 8696ac6..fd156d0 100644 --- a/Assets/Scripts/WorldGenerator.cs +++ b/Assets/Scripts/WorldGenerator.cs @@ -182,28 +182,24 @@ public class WorldGenerator : MonoBehaviour public string saveGame() { - Dictionary tiles; - GameObject currentTile; string result = ""; + int counter = 0; result = result + FileHandler.generateJSON("cityAmount", cityAmount) + ",\r\n"; result = result + FileHandler.generateJSON("maxCityAmount", maxCityAmount) + ",\r\n"; - /*result = result + "'playername': " + playername + ",\r\n"; - result = result + "'maxHealth': " + maxHealth + ",\r\n"; - result = result + "'maxSecondary': " + maxSecondary + ",\r\n"; - result = result + "'secondary': " + secondary + ",\r\n"; - result = result + "'health': " + health + ",\r\n"; - result = result + "'strength': " + strength + ",\r\n"; - result = result + "'dexterity': " + dexterity + ",\r\n"; - result = result + "'intelligence': " + intelligence + ",\r\n"; - result = result + "'level': " + level + ",\r\n"; - result = result + "'experience': " + experience + ",\r\n"; - result = result + "'maxExperience': " + maxExperience + ",\r\n"; - result = result + "'race': " + race.racename + ",\r\n"; - result = result + "'role': " + role.classname + ",\r\n"; - result = result + "'points': " + points + ",\r\n"; - result = result + "'isDodging': " + isDodging + ",\r\n"; - result = result + "'killcount': " + killcount + ",\r\n"; - result = result + "'difficulty': " + difficulty;*/ + result = result + "\"currentTile\": {\r\n"; + result = result + currentTile.GetComponent().saveTile() + "\r\n},\r\n"; + result = result + "\"Map\": {\r\n"; + foreach (GameObject tile in tiles.Values) + { + result = result + "\"Tile"+counter+"\": {\r\n"; + result = result + tile.GetComponent().saveTile() + "\r\n}"; + if (counter < tiles.Count - 1) + { + result = result + ",\r\n"; + } + counter++; + } + result = result + "\r\n}"; return result; } } diff --git a/save.json b/save.json index b8310ff..0b5162f 100644 --- a/save.json +++ b/save.json @@ -1,7 +1,7 @@ [ - { - "Player": { - "playername": "", +{ +"Player": { +"playername": "", "maxHealth": 110, "maxSecondary": 10, "secondary": 10, @@ -17,11 +17,125 @@ "points": 0, "isDodging": "False", "killcount": 0, -"difficulty": 0, - - }, - "World": { - +"difficulty": 0 +}, +"World": { +"cityAmount": 10, +"maxCityAmount": 10, +"currentTile": { +"tiletype": "", +"positionX": 0, +"positionY": 0, +"positionZ": 0, +"Objects": { +"Object0": { +"positionX": -33.3, +"positionY": 4.48, +"positionZ": 37.8, +"objectname": "OakTree" +}, +"Object1": { +"positionX": 9.49, +"positionY": 4.48, +"positionZ": 19.03, +"objectname": "PineTree" +}, +"Object2": { +"positionX": 30, +"positionY": 9.5, +"positionZ": 30, +"objectname": "HouseIdle" +}, +"Object3": { +"positionX": -26.1, +"positionY": 1.28, +"positionZ": 0, +"objectname": "StoneBasic" +}, +"Object4": { +"positionX": 0, +"positionY": 1.28, +"positionZ": -38.56, +"objectname": "StoneBasic (1)" +}, +"Object5": { +"positionX": -29.6, +"positionY": 4.48, +"positionZ": -27.38, +"objectname": "OakTree (1)" +}, +"Object6": { +"positionX": 28.87, +"positionY": 4.479999, +"positionZ": -12.93, +"objectname": "PineTree (1)" +}, +"Object7": { +"positionX": 30, +"positionY": 9.5, +"positionZ": -30, +"objectname": "HouseIdle (1)" +} +} +}, +"Map": { +"Tile0": { +"tiletype": "", +"positionX": 0, +"positionY": 0, +"positionZ": 0, +"Objects": { +"Object0": { +"positionX": -33.3, +"positionY": 4.48, +"positionZ": 37.8, +"objectname": "OakTree" +}, +"Object1": { +"positionX": 9.49, +"positionY": 4.48, +"positionZ": 19.03, +"objectname": "PineTree" +}, +"Object2": { +"positionX": 30, +"positionY": 9.5, +"positionZ": 30, +"objectname": "HouseIdle" +}, +"Object3": { +"positionX": -26.1, +"positionY": 1.28, +"positionZ": 0, +"objectname": "StoneBasic" +}, +"Object4": { +"positionX": 0, +"positionY": 1.28, +"positionZ": -38.56, +"objectname": "StoneBasic (1)" +}, +"Object5": { +"positionX": -29.6, +"positionY": 4.48, +"positionZ": -27.38, +"objectname": "OakTree (1)" +}, +"Object6": { +"positionX": 28.87, +"positionY": 4.479999, +"positionZ": -12.93, +"objectname": "PineTree (1)" +}, +"Object7": { +"positionX": 30, +"positionY": 9.5, +"positionZ": -30, +"objectname": "HouseIdle (1)" +} +} +} +} } } ] \ No newline at end of file