Commit 7861051d authored by 18신대성's avatar 18신대성

플레이어가 클리어했었는지 여부를 저장하게 만듬

parent 81c4870a
...@@ -51,4 +51,5 @@ sysinfo.txt ...@@ -51,4 +51,5 @@ sysinfo.txt
*.unitypackage *.unitypackage
# Crashlytics generated file # Crashlytics generated file
crashlytics-build.properties crashlytics-build.properties
\ No newline at end of file saveData.json
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO;
using UnityEngine; using UnityEngine;
using UnityEngine.SceneManagement; using UnityEngine.SceneManagement;
using UnityEngine.UI; using UnityEngine.UI;
using Newtonsoft.Json;
public class GameManager : SingletonBehaviour<GameManager> public class GameManager : SingletonBehaviour<GameManager>
{ {
[Space(10)] [Header("Saved Data")]
public ClearData playerData;
/// <summary>
/// The index of the current stage.
/// </summary>
public TextAsset currentStage;
public int stageIdx;
[Header("UIs in Scene")]
public ClearUIGenerator uiGenerator; public ClearUIGenerator uiGenerator;
public BulletUIGenerator bulletUIGenerator; public BulletUIGenerator bulletUIGenerator;
public CommentUIGenerator commentUIGenerator; public CommentUIGenerator commentUIGenerator;
public Image whiteout; public Image whiteout;
[Space(10)] [Header("Stage Data")]
public bool isGameOver = false; public bool isGameOver = false;
public bool isPlayerMoving, isPlayerShooting, isZooming, isBulletFlying; public bool isPlayerMoving, isPlayerShooting, isZooming, isBulletFlying;
...@@ -20,11 +30,6 @@ public class GameManager : SingletonBehaviour<GameManager> ...@@ -20,11 +30,6 @@ public class GameManager : SingletonBehaviour<GameManager>
public int clearCounter = 0; public int clearCounter = 0;
public static int nFloor, nTurret, nCase, nPlayer, aFloor, aTurret, aCase, white, black; public static int nFloor, nTurret, nCase, nPlayer, aFloor, aTurret, aCase, white, black;
/// <summary>
/// The index of the current stage.
/// </summary>
public TextAsset currentStage;
public void ResetClearIndex() public void ResetClearIndex()
{ {
//Reset clear index to -1. //Reset clear index to -1.
...@@ -89,6 +94,7 @@ public class GameManager : SingletonBehaviour<GameManager> ...@@ -89,6 +94,7 @@ public class GameManager : SingletonBehaviour<GameManager>
Debug.Log("Stage Clear!"); Debug.Log("Stage Clear!");
Cursor.visible = true; Cursor.visible = true;
Cursor.lockState = CursorLockMode.None; Cursor.lockState = CursorLockMode.None;
SaveClearData(stageIdx, true);
yield return new WaitForSeconds(3); yield return new WaitForSeconds(3);
BackToStageSelect(); BackToStageSelect();
...@@ -97,6 +103,7 @@ public class GameManager : SingletonBehaviour<GameManager> ...@@ -97,6 +103,7 @@ public class GameManager : SingletonBehaviour<GameManager>
public void GameOver() public void GameOver()
{ {
Debug.Log("Game Over!"); Debug.Log("Game Over!");
SaveClearData(stageIdx, false);
isGameOver = true; isGameOver = true;
StopAllCoroutines(); StopAllCoroutines();
StartCoroutine(RestartStage()); StartCoroutine(RestartStage());
...@@ -117,14 +124,52 @@ public class GameManager : SingletonBehaviour<GameManager> ...@@ -117,14 +124,52 @@ public class GameManager : SingletonBehaviour<GameManager>
SceneManager.LoadScene("SelectStage"); SceneManager.LoadScene("SelectStage");
} }
public void SaveClearData(int stage = -1, bool isClear = false)
{
if (stage != -1)
{
if (playerData.isCleared.ContainsKey(stage))
{
playerData.isCleared[stage] = isClear;
}
else playerData.isCleared.Add(stage, isClear);
}
string jsonData = JsonConvert.SerializeObject(playerData);
File.WriteAllText("./saveData.json", jsonData);
}
public void LoadClearData()
{
if (File.Exists("./saveData.json"))
{
Debug.Log("data Load");
string strData = File.ReadAllText("./saveData.json");
playerData = JsonConvert.DeserializeObject<ClearData>(strData);
}
else
{
Debug.Log("generate New Data");
playerData = new ClearData();
SaveClearData();
}
}
public class ClearData
{
public Dictionary<int, bool> isCleared = new Dictionary<int, bool>();
}
// Start is called before the first frame update // Start is called before the first frame update
void Start() void Start()
{ {
GameManager.inst.LoadClearData();
if (!MapManager.inst.isMapEditingOn) if (!MapManager.inst.isMapEditingOn)
{ {
isGameOver = false; isGameOver = false;
stageIdx = StageSelector.selectedStage + 1;
currentStage = Resources.Load<TextAsset>("Stages/" + "stage" + (StageSelector.selectedStage + 1)); currentStage = Resources.Load<TextAsset>("Stages/" + "stage" + (StageSelector.selectedStage + 1));
StartStage(); if (MapManager.inst.emptyMap != null) StartStage();
//Destroy(FindObjectOfType<StageSelector>().gameObject); //Destroy(FindObjectOfType<StageSelector>().gameObject);
} }
} }
......
...@@ -33,6 +33,7 @@ public class StageSelector : MonoBehaviour ...@@ -33,6 +33,7 @@ public class StageSelector : MonoBehaviour
// Start is called before the first frame update // Start is called before the first frame update
void Start() void Start()
{ {
GameManager.inst.LoadClearData();
selectedStage = 0; selectedStage = 0;
totalStageCount = stage.Length; totalStageCount = stage.Length;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment