v1.3.0, Added game saving mechanic (WIP)

This commit is contained in:
Nicola Sovic
2022-06-04 18:49:32 +02:00
parent bb052cef6b
commit a0fc2e4790
10 changed files with 405 additions and 41 deletions

View File

@@ -1,3 +1,4 @@
using Assets.Scripts;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
@@ -115,36 +116,13 @@ public class AudioHandler : MonoBehaviour
public void loadAudioSettings()
{
if (File.Exists(filepath))
{
string[] lines = File.ReadAllLines(filepath);
cameraAudio.volume = float.Parse(lines[0].Split(':')[1]);
playerAudio.volume = float.Parse(lines[1].Split(':')[1]);
}
else
{
StreamWriter sw = File.CreateText(filepath);
sw.WriteLine("Music:0.5");
sw.WriteLine("Effects:0.5");
sw.Flush();
}
FileHandler.loadAudio(filepath, cameraAudio, playerAudio);
}
public void saveAudioSettings()
{
float music = GameObject.Find("slideMusic").GetComponent<Slider>().value;
float effects = GameObject.Find("slideEffects").GetComponent<Slider>().value;
StreamWriter sw;
if (!File.Exists(filepath))
{
sw = File.CreateText(filepath);
}
else
{
sw = new StreamWriter(filepath);
}
sw.WriteLine("Music:"+ music);
sw.WriteLine("Effects:"+ effects);
sw.Flush();
FileHandler.saveAudio(filepath, music, effects);
}
}

View File

@@ -11,11 +11,13 @@ namespace Assets.Scripts
UIHandler uihandler;
Player player;
AudioHandler audioHandler;
WorldGenerator worldGenerator;
private void Start()
{
uihandler = GameObject.Find("UIHandler").GetComponent<UIHandler>();
player = GameObject.Find("Player").GetComponent<Player>();
worldGenerator = GameObject.Find("WorldGenerator").GetComponent<WorldGenerator>();
audioHandler = GameObject.Find("AudioHandler").GetComponent<AudioHandler>();
}
@@ -111,5 +113,13 @@ namespace Assets.Scripts
audioHandler.playButtonClick();
uihandler.switchPauseMenu();
}
public void saveGame()
{
audioHandler.playButtonClick();
string saveString = "[\r\n{\r\n\"Player\": {\r\n" + player.saveGame();
saveString = saveString + "\r\n},\r\n\"World\": {\r\n" + worldGenerator.saveGame() + "\r\n}\r\n}\r\n]";
FileHandler.saveGame(saveString, "./save.json");
}
}
}

View File

@@ -0,0 +1,71 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.UI;
namespace Assets.Scripts
{
public class FileHandler
{
static StreamWriter sw;
public static void saveGame(string data, string path)
{
if (!File.Exists(path))
{
sw = File.CreateText(path);
}
else
{
sw = new StreamWriter(path);
}
sw.Write(data);
sw.Flush();
}
public static void loadGame()
{
}
public static void saveAudio(string path, float music, float effects)
{
if (!File.Exists(path))
{
sw = File.CreateText(path);
}
else
{
sw = new StreamWriter(path);
}
sw.WriteLine("Music:" + music);
sw.WriteLine("Effects:" + effects);
sw.Flush();
}
public static void loadAudio(string path, AudioSource cameraAudio, AudioSource playerAudio)
{
if (File.Exists(path))
{
string[] lines = File.ReadAllLines(path);
cameraAudio.volume = float.Parse(lines[0].Split(':')[1]);
playerAudio.volume = float.Parse(lines[1].Split(':')[1]);
}
else
{
sw = File.CreateText(path);
sw.WriteLine("Music:0.5");
sw.WriteLine("Effects:0.5");
sw.Flush();
}
}
public static string generateJSON(string key, object value)
{
return "\"" + key + "\": " + value;
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 0aa6cfe5b8d20a24d9aa6ebaa044c2e8
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -557,5 +557,28 @@ namespace Assets.Scripts
{
return role;
}
public string saveGame()
{
string result = "";
result = result + FileHandler.generateJSON("playername", "\"" + playername + "\"") + ",\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("health", health) + ",\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) + ",\r\n";
result = result + FileHandler.generateJSON("maxExperience", maxExperience) + ",\r\n";
result = result + FileHandler.generateJSON("race", "\"" + race.racename + "\"") + ",\r\n";
result = result + FileHandler.generateJSON("role", "\"" + role.classname + "\"") + ",\r\n";
result = result + FileHandler.generateJSON("points", points) + ",\r\n";
result = result + FileHandler.generateJSON("isDodging", "\"" + isDodging + "\"") + ",\r\n";
result = result + FileHandler.generateJSON("killcount", killcount) + ",\r\n";
result = result + FileHandler.generateJSON("difficulty", difficulty);
return result;
}
}
}

View File

@@ -214,4 +214,10 @@ public class Tile : MonoBehaviour
{
return tiletype;
}
public string saveTile()
{
string result = "";
return result;
}
}

View File

@@ -1,3 +1,4 @@
using Assets.Scripts;
using System;
using System.Collections;
using System.Collections.Generic;
@@ -178,4 +179,31 @@ public class WorldGenerator : MonoBehaviour
{
gameObject.GetComponent<Text>().text = "Cities: " + (maxCityAmount - cityAmount) + "/" + maxCityAmount;
}
public string saveGame()
{
Dictionary<Vector3, GameObject> tiles;
GameObject currentTile;
string result = "";
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;*/
return result;
}
}