diff --git a/Gameton-06/Assets/Gameton/Scripts/UI/RouletteSpin/Roulette.cs b/Gameton-06/Assets/Gameton/Scripts/UI/RouletteSpin/Roulette.cs index 022fc54c..bce7f3bb 100644 --- a/Gameton-06/Assets/Gameton/Scripts/UI/RouletteSpin/Roulette.cs +++ b/Gameton-06/Assets/Gameton/Scripts/UI/RouletteSpin/Roulette.cs @@ -1,18 +1,19 @@ using UnityEngine; using UnityEngine.Events; using System.Collections; +using UniRx; namespace TON { - // View ? + // View public class Roulette : MonoBehaviour { [SerializeField] private Transform piecePrefab; // 룰렛에 표시되는 정보 프리팹 [SerializeField] private Transform linePrefab; // 정보들을 구분하는 선 프리팹 [SerializeField] private Transform pieceParent; // 정보들이 배치되는 부모 Transform [SerializeField] private Transform lineParent; // 선들이 배치되는 부모 Transform - [SerializeField] private RoulettePieceData[] roulettePieceData; + [SerializeField] public RoulettePieceData[] roulettePieceData; [SerializeField] private int spinDuration; // 회전 시간 [SerializeField] private Transform spinningRoulette; // 실제 회전하는 회전판 Transfrom @@ -25,6 +26,18 @@ namespace TON private int accumulatedWeight; // 가중치 계산을 위한 변수 private bool isSpinning = false; // 현재 회전중인지 private int selectedIndex = 0; // 룰렛에서 선택된 아이템 + + private RoulettePresenter _presenter; + + public void Bind(RouletteItemPresenter presenter) + { + // presenter.Gold.Subscribe() + } + + public class RouletteItemPresenter + { + public ReactiveProperty Gold { get; set; } + } private void Awake() { @@ -32,6 +45,8 @@ namespace TON halfPieceAngle = pieceAngle * 0.5f; halfPieceAngleWithPaddings = halfPieceAngle - (halfPieceAngle * 0.25f); + _presenter = new RoulettePresenter(); + SpawnPiecesAndLines(); CalculateWeightsAndIndices(); } diff --git a/Gameton-06/Assets/Gameton/Scripts/UI/RouletteSpin/RoulettePiece.cs b/Gameton-06/Assets/Gameton/Scripts/UI/RouletteSpin/RoulettePiece.cs index 69862b3c..b96975af 100644 --- a/Gameton-06/Assets/Gameton/Scripts/UI/RouletteSpin/RoulettePiece.cs +++ b/Gameton-06/Assets/Gameton/Scripts/UI/RouletteSpin/RoulettePiece.cs @@ -6,7 +6,7 @@ using UnityEngine.UI; namespace TON { - // View? + // View public class RoulettePiece : MonoBehaviour { [SerializeField] private Image imageIcon; diff --git a/Gameton-06/Assets/Gameton/Scripts/UI/RouletteSpin/RoulettePieceData.cs b/Gameton-06/Assets/Gameton/Scripts/UI/RouletteSpin/RoulettePieceData.cs index 090362a6..e9d9e822 100644 --- a/Gameton-06/Assets/Gameton/Scripts/UI/RouletteSpin/RoulettePieceData.cs +++ b/Gameton-06/Assets/Gameton/Scripts/UI/RouletteSpin/RoulettePieceData.cs @@ -4,7 +4,7 @@ using UnityEngine; namespace TON { - // Model? + // Model [System.Serializable] public class RoulettePieceData { diff --git a/Gameton-06/Assets/Gameton/Scripts/UI/RouletteSpin/RoulettePresenter.cs b/Gameton-06/Assets/Gameton/Scripts/UI/RouletteSpin/RoulettePresenter.cs index 1a755716..3144fedb 100644 --- a/Gameton-06/Assets/Gameton/Scripts/UI/RouletteSpin/RoulettePresenter.cs +++ b/Gameton-06/Assets/Gameton/Scripts/UI/RouletteSpin/RoulettePresenter.cs @@ -5,12 +5,14 @@ using UnityEngine; namespace TON { - public class RoulettePresenter : MonoBehaviour + public class RoulettePresenter { private PlayerDataManager playerDataManager; - // ReactiveProperty + private Roulette roulette; - private void Awake() + private List roulettePieceData = new(); + + public RoulettePresenter() { // 싱글톤으로 PlayerDataManager 접근 playerDataManager = PlayerDataManager.Singleton; @@ -21,12 +23,24 @@ namespace TON } // Todo : UI 바인딩 + + roulettePieceData.Add(new RoulettePieceData()); + + for (int i = 0; i < 5; i++) + { + roulettePieceData[i].description = 10.ToString(); + } } // 재화 획득 메서드 - public void InsertRouletteResult() + public void InsertRouletteResult(RoulettePieceData selectedData) { + // 재화 획득 코드 추가 + playerDataManager.AddGold(int.Parse(selectedData.description)); + // UI 갱신 코드 추가 + UIManager.Singleton.UpdateCashData(); + Debug.Log($"{selectedData.index}:{selectedData.description}"); } } } diff --git a/Gameton-06/Assets/Gameton/Scripts/UI/RouletteSpin/RouletteSpin.cs b/Gameton-06/Assets/Gameton/Scripts/UI/RouletteSpin/RouletteSpin.cs index 07f4481c..03b65c78 100644 --- a/Gameton-06/Assets/Gameton/Scripts/UI/RouletteSpin/RouletteSpin.cs +++ b/Gameton-06/Assets/Gameton/Scripts/UI/RouletteSpin/RouletteSpin.cs @@ -12,7 +12,7 @@ namespace TON [SerializeField] private Button buttonSpin; private PlayerDataManager playerDataManager; - // Todo : Presenter 변수 + private RoulettePresenter roulettePresenter; private void Awake() { @@ -29,25 +29,13 @@ namespace TON buttonSpin.interactable = false; roulette.Spin(EndOfSpin); }); - - // Presenter 생성 } private void EndOfSpin(RoulettePieceData selectedData) { buttonSpin.interactable = true; - - // 재화 획득 코드 추가 - playerDataManager.AddGold(int.Parse(selectedData.description)); - - // UI 갱신 코드 추가 - UIManager.Singleton.UpdateCashData(); - Debug.Log($"{selectedData.index}:{selectedData.description}"); - } - public class RoulettePresenter - { - + roulettePresenter.InsertRouletteResult(selectedData); } } }