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

@ -938,12 +938,12 @@ RectTransform:
m_Children:
- {fileID: 1052813663}
m_Father: {fileID: 583695243}
m_RootOrder: 3
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.4, y: 0.2}
m_AnchorMin: {x: 0.4, y: 0.3}
m_AnchorMax: {x: 0.6, y: 0.4}
m_AnchoredPosition: {x: 0, y: -12.5}
m_SizeDelta: {x: 0, y: -25}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &78655901
MonoBehaviour:
@ -2091,12 +2091,12 @@ RectTransform:
m_Children:
- {fileID: 1172954269}
m_Father: {fileID: 583695243}
m_RootOrder: 2
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.4, y: 0.4}
m_AnchorMax: {x: 0.6, y: 0.6}
m_AnchoredPosition: {x: 0, y: -12.5}
m_SizeDelta: {x: 0, y: -25}
m_AnchorMax: {x: 0.6, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &215966563
MonoBehaviour:
@ -2491,6 +2491,136 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 240318489}
m_CullTransparentMesh: 1
--- !u!1 &257718088
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 257718089}
- component: {fileID: 257718092}
- component: {fileID: 257718091}
- component: {fileID: 257718090}
m_Layer: 5
m_Name: btnSave
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &257718089
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 257718088}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 347957836}
m_Father: {fileID: 583695243}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.4, y: 0.5}
m_AnchorMax: {x: 0.6, y: 0.6}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &257718090
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 257718088}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Texture: {fileID: 2800000, guid: cb116eb6b0a00b3498e75469e4a3ac7f, type: 3}
m_UVRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
--- !u!114 &257718091
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 257718088}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 257718090}
m_OnClick:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 1706844940}
m_TargetAssemblyTypeName: Assets.Scripts.ButtonHandler, Assembly-CSharp
m_MethodName: saveGame
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!222 &257718092
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 257718088}
m_CullTransparentMesh: 1
--- !u!1 &260699459
GameObject:
m_ObjectHideFlags: 0
@ -3445,6 +3575,85 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 345934873}
m_CullTransparentMesh: 1
--- !u!1 &347957835
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 347957836}
- component: {fileID: 347957838}
- component: {fileID: 347957837}
m_Layer: 5
m_Name: Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &347957836
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 347957835}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 257718089}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &347957837
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 347957835}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 26
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 2
m_MaxSize: 40
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Save
--- !u!222 &347957838
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 347957835}
m_CullTransparentMesh: 1
--- !u!1 &350334947
GameObject:
m_ObjectHideFlags: 0
@ -4344,7 +4553,7 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 583695243}
m_RootOrder: 4
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.2, y: 0}
m_AnchorMax: {x: 0.8, y: 0}
@ -4384,7 +4593,7 @@ MonoBehaviour:
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: A game created by Nicola Sovic
m_Text: A game created by Finnchen
--- !u!222 &402242114
CanvasRenderer:
m_ObjectHideFlags: 0
@ -6245,6 +6454,7 @@ RectTransform:
m_Children:
- {fileID: 1223560242}
- {fileID: 1928144700}
- {fileID: 257718089}
- {fileID: 215966562}
- {fileID: 78655900}
- {fileID: 402242112}
@ -12422,7 +12632,7 @@ MonoBehaviour:
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Exit to menu
m_Text: Exit
--- !u!222 &1052813665
CanvasRenderer:
m_ObjectHideFlags: 0
@ -15945,7 +16155,7 @@ RectTransform:
- {fileID: 39651747}
- {fileID: 631077882}
m_Father: {fileID: 583695243}
m_RootOrder: 5
m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
@ -20105,9 +20315,9 @@ RectTransform:
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.4, y: 0.6}
m_AnchorMax: {x: 0.6, y: 0.8}
m_AnchoredPosition: {x: 0, y: -12.5}
m_SizeDelta: {x: 0, y: -25}
m_AnchorMax: {x: 0.6, y: 0.7}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1928144701
MonoBehaviour:

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;
}
}

View File

@ -1,2 +1,2 @@
Music:0
Effects:0
Effects:0.5051396

27
save.json Normal file
View File

@ -0,0 +1,27 @@
[
{
"Player": {
"playername": "",
"maxHealth": 110,
"maxSecondary": 10,
"secondary": 10,
"health": 110,
"strength": 7,
"dexterity": 5,
"intelligence": 3,
"level": 0,
"experience": 0,
"maxExperience": 10,
"race": "Human",
"role": "Warrior",
"points": 0,
"isDodging": "False",
"killcount": 0,
"difficulty": 0,
},
"World": {
}
}
]