diff --git a/Gameton-06/Assets/Gameton/Scripts/Backend/BackendCashDataManager.cs b/Gameton-06/Assets/Gameton/Scripts/Backend/BackendCashDataManager.cs
new file mode 100644
index 00000000..b449392f
--- /dev/null
+++ b/Gameton-06/Assets/Gameton/Scripts/Backend/BackendCashDataManager.cs
@@ -0,0 +1,119 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using BackEnd;
+using LitJson;
+
+namespace TON
+{
+ ///
+ /// 뒤끝 서버 데이터 관리 담당 클래스
+ ///
+ public class BackendCashDataManager
+ {
+ // 테이블 이름 상수
+ private const string CASH_TABLE = "CASH_DATA";
+
+
+ // PlayerDataManager에서 재화 데이터 로드
+ public void LoadMyCashData(System.Action onComplete)
+ {
+ CashData cashData = new CashData();
+
+ Backend.PlayerData.GetMyData(CASH_TABLE, callback =>
+ {
+ if (callback.IsSuccess() == false)
+ {
+ Debug.Log("데이터 읽기 중에 문제가 발생했습니다 : " + callback.ToString());
+ onComplete?.Invoke(cashData); // 에러 상황에서도 기본 데이터 반환
+ return;
+ }
+
+ // 불러오기에는 성공했으나 데이터가 존재하지 않는 경우
+ if (callback.IsSuccess() && callback.FlattenRows().Count <= 0)
+ {
+ Debug.Log("데이터가 존재하지 않습니다");
+ InsertInitData(() =>
+ {
+ // 초기 데이터 삽입 후 다시 데이터를 불러옴
+ LoadDataAfterInsert(onComplete);
+ });
+ return;
+ }
+
+ // 1개 이상 데이터를 불러온 경우
+ if (callback.FlattenRows().Count > 0)
+ {
+ cashData.fish = int.Parse(callback.FlattenRows()[0]["fish"].ToString());
+ cashData.gold = int.Parse(callback.FlattenRows()[0]["gold"].ToString());
+ onComplete?.Invoke(cashData); // 성공 시 데이터 반환
+ }
+ });
+ }
+
+ // 데이터 삽입 후 다시 불러오는 메소드
+ private void LoadDataAfterInsert(System.Action onComplete)
+ {
+ Backend.PlayerData.GetMyData(CASH_TABLE, callback =>
+ {
+ CashData cashData = new CashData();
+
+ if (callback.IsSuccess() && callback.FlattenRows().Count > 0)
+ {
+ cashData.fish = int.Parse(callback.FlattenRows()[0]["fish"].ToString());
+ cashData.gold = int.Parse(callback.FlattenRows()[0]["gold"].ToString());
+ }
+
+ onComplete?.Invoke(cashData);
+ });
+ }
+
+ ///
+ /// 캐릭터 초기 생성 시 row 삽입
+ ///
+ public void InsertInitData(System.Action onComplete = null)
+ {
+ Param param = new Param();
+ param.Add("gold", 0);
+ param.Add("fish", 0);
+
+ Backend.PlayerData.InsertData(CASH_TABLE, param, callback =>
+ {
+ if (callback.IsSuccess())
+ {
+ Debug.Log("초기 데이터 삽입 성공");
+ }
+ else
+ {
+ Debug.LogError("초기 데이터 삽입 실패: " + callback.ToString());
+ }
+
+ onComplete?.Invoke();
+ });
+ }
+
+ public void UpdateFishData(int fish, System.Action onComplete = null)
+ {
+ Param param = new Param();
+ param.Add("fish", fish);
+
+ Backend.PlayerData.UpdateMyLatestData(CASH_TABLE, param, callback =>
+ {
+ CashData updatedData = new CashData { fish = fish };
+ onComplete?.Invoke(updatedData);
+ });
+ }
+
+ public void UpdateGoldData(int gold, System.Action onComplete = null)
+ {
+ Param param = new Param();
+ param.Add("gold", gold);
+
+ Backend.PlayerData.UpdateMyLatestData(CASH_TABLE, param, callback =>
+ {
+ CashData updatedData = new CashData { gold = gold };
+ onComplete?.Invoke(updatedData);
+ });
+ }
+ }
+}
\ No newline at end of file
diff --git a/Gameton-06/Assets/Gameton/Scripts/Backend/BackendCashDataManager.cs.meta b/Gameton-06/Assets/Gameton/Scripts/Backend/BackendCashDataManager.cs.meta
new file mode 100644
index 00000000..d4f38126
--- /dev/null
+++ b/Gameton-06/Assets/Gameton/Scripts/Backend/BackendCashDataManager.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7af50547bf0c623478090ca1a2a45822
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Gameton-06/Assets/Gameton/Scripts/Backend/BackendManager.cs b/Gameton-06/Assets/Gameton/Scripts/Backend/BackendManager.cs
index 4ad75974..c9a3b24b 100644
--- a/Gameton-06/Assets/Gameton/Scripts/Backend/BackendManager.cs
+++ b/Gameton-06/Assets/Gameton/Scripts/Backend/BackendManager.cs
@@ -62,7 +62,8 @@ namespace TON
if (isSuccess)
{
Debug.Log("로그인 성공!");
- // 게임 시작 로직은 Main.cs에서 처리
+
+ PlayerDataManager.Singleton.Initalize();
}
else
{
diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/PlayerDataManager.cs b/Gameton-06/Assets/Gameton/Scripts/Character/PlayerDataManager.cs
index 589d1436..fbb59d8e 100644
--- a/Gameton-06/Assets/Gameton/Scripts/Character/PlayerDataManager.cs
+++ b/Gameton-06/Assets/Gameton/Scripts/Character/PlayerDataManager.cs
@@ -9,21 +9,23 @@ namespace TON
{
// 사용자가 생성해둔 플레이어 데이터를 싱글톤으로 전역 사용하기 위함
public List playersData { get; private set; }
-
public PlayerData player { get; private set; }
-
- [SerializeField]
- private int expVariable = 50; // 경험치 변수 (조정 가능)
- [SerializeField]
- private int attackGrowthFactor = 50; // 공격력 성장 변수 (조정 가능)
+ public int goldAmount { get; private set; }
+ public int fishAmount { get; private set; }
public int defensiveIntention { get; private set; } = 200; // 방어력 변수 (조정 가능)
+ [SerializeField] private int expVariable = 50; // 경험치 변수 (조정 가능)
+ [SerializeField] private int attackGrowthFactor = 50; // 공격력 성장 변수 (조정 가능)
+
+ private BackendCashDataManager cashDataManager;
public void Initalize()
{
+ cashDataManager = new BackendCashDataManager();
+
LoadPlayerData();
- // PlayerPrefs.SetInt("SelectedPlayerIndex", 0);
+ LoadPlayerCashData();
}
private void LoadPlayerData()
@@ -41,6 +43,35 @@ namespace TON
}
}
+ private void LoadPlayerCashData()
+ {
+ cashDataManager.LoadMyCashData(cashData =>
+ {
+ // 데이터 로드 완료 후 실행될 코드
+ goldAmount = cashData.gold;
+ fishAmount = cashData.fish;
+ Debug.Log($"로드된 골드: {cashData.gold}, 물고기: {cashData.fish}");
+ });
+ }
+
+ public void AddGold(int amount)
+ {
+ goldAmount += amount;
+ cashDataManager.UpdateGoldData(goldAmount, updatedData =>
+ {
+ // TODO: UI 업데이트 로직 적용
+ // UpdateUI();
+ });
+ }
+ public void AddFish(int amount)
+ {
+ fishAmount += amount;
+ cashDataManager.UpdateFishData(fishAmount, updatedData =>
+ {
+ // TODO: UI 업데이트 로직 적용
+ // UpdateUI();
+ });
+ }
// 공격력과 방어력 업데이트
private void UpdateStats(int currentLevel)
{
diff --git a/Gameton-06/Assets/Gameton/Scripts/Common/Main.cs b/Gameton-06/Assets/Gameton/Scripts/Common/Main.cs
index eb03d921..fcc006d2 100644
--- a/Gameton-06/Assets/Gameton/Scripts/Common/Main.cs
+++ b/Gameton-06/Assets/Gameton/Scripts/Common/Main.cs
@@ -28,9 +28,6 @@ namespace TON
BackendManager.Singleton.Initalize();
UIManager.Singleton.Initalize();
- // TODO : GameDataModel.Singleton.Initalize();
- PlayerDataManager.Singleton.Initalize();
-
isIniaialized = true;
}
diff --git a/Gameton-06/Assets/Gameton/Scripts/GameData/CashData.cs b/Gameton-06/Assets/Gameton/Scripts/GameData/CashData.cs
new file mode 100644
index 00000000..6db70254
--- /dev/null
+++ b/Gameton-06/Assets/Gameton/Scripts/GameData/CashData.cs
@@ -0,0 +1,19 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace TON
+{
+ [System.Serializable]
+ public class CashData
+ {
+ public int gold;
+ public int fish;
+
+ public CashData()
+ {
+ gold = 0;
+ fish = 0;
+ }
+ }
+}
diff --git a/Gameton-06/Assets/Gameton/Scripts/GameData/CashData.cs.meta b/Gameton-06/Assets/Gameton/Scripts/GameData/CashData.cs.meta
new file mode 100644
index 00000000..5b9c444a
--- /dev/null
+++ b/Gameton-06/Assets/Gameton/Scripts/GameData/CashData.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c5faca4862c71c94ab30d84b1ec35872
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Gameton-06/Assets/Gameton/Scripts/UI/OptionUI.cs b/Gameton-06/Assets/Gameton/Scripts/UI/OptionUI.cs
index e6977ca7..50ad3b98 100644
--- a/Gameton-06/Assets/Gameton/Scripts/UI/OptionUI.cs
+++ b/Gameton-06/Assets/Gameton/Scripts/UI/OptionUI.cs
@@ -1,7 +1,7 @@
using System.Collections;
using System.Collections.Generic;
+using TMPro;
using UnityEngine;
-using UnityEngine.SceneManagement;
namespace TON
{
@@ -18,7 +18,18 @@ namespace TON
// 상점 : 골드/생선
private void OnEnable()
{
- // Scene activeScene = UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene();
+ SetCashAmount();
+ SetObjectActive();
+ }
+
+ private void SetCashAmount()
+ {
+ goldObject.GetComponentInChildren().text = $"{PlayerDataManager.Singleton.goldAmount}";
+ fishObject.GetComponentInChildren().text = $"{PlayerDataManager.Singleton.fishAmount}";
+ }
+
+ private void SetObjectActive()
+ {
SceneType activeScene = Main.Singleton.currentSceneType;
if (activeScene == SceneType.Lobby)
@@ -42,7 +53,6 @@ namespace TON
settingObject.SetActive(false);
parseObject.SetActive(false);
}
-
}
public void OnClickSettingButton()