룰렛 MVP 패턴 구현중
This commit is contained in:
@@ -1,18 +1,19 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.Events;
|
using UnityEngine.Events;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
|
using UniRx;
|
||||||
|
|
||||||
|
|
||||||
namespace TON
|
namespace TON
|
||||||
{
|
{
|
||||||
// View ?
|
// View
|
||||||
public class Roulette : MonoBehaviour
|
public class Roulette : MonoBehaviour
|
||||||
{
|
{
|
||||||
[SerializeField] private Transform piecePrefab; // 룰렛에 표시되는 정보 프리팹
|
[SerializeField] private Transform piecePrefab; // 룰렛에 표시되는 정보 프리팹
|
||||||
[SerializeField] private Transform linePrefab; // 정보들을 구분하는 선 프리팹
|
[SerializeField] private Transform linePrefab; // 정보들을 구분하는 선 프리팹
|
||||||
[SerializeField] private Transform pieceParent; // 정보들이 배치되는 부모 Transform
|
[SerializeField] private Transform pieceParent; // 정보들이 배치되는 부모 Transform
|
||||||
[SerializeField] private Transform lineParent; // 선들이 배치되는 부모 Transform
|
[SerializeField] private Transform lineParent; // 선들이 배치되는 부모 Transform
|
||||||
[SerializeField] private RoulettePieceData[] roulettePieceData;
|
[SerializeField] public RoulettePieceData[] roulettePieceData;
|
||||||
|
|
||||||
[SerializeField] private int spinDuration; // 회전 시간
|
[SerializeField] private int spinDuration; // 회전 시간
|
||||||
[SerializeField] private Transform spinningRoulette; // 실제 회전하는 회전판 Transfrom
|
[SerializeField] private Transform spinningRoulette; // 실제 회전하는 회전판 Transfrom
|
||||||
@@ -26,12 +27,26 @@ namespace TON
|
|||||||
private bool isSpinning = false; // 현재 회전중인지
|
private bool isSpinning = false; // 현재 회전중인지
|
||||||
private int selectedIndex = 0; // 룰렛에서 선택된 아이템
|
private int selectedIndex = 0; // 룰렛에서 선택된 아이템
|
||||||
|
|
||||||
|
private RoulettePresenter _presenter;
|
||||||
|
|
||||||
|
public void Bind(RouletteItemPresenter presenter)
|
||||||
|
{
|
||||||
|
// presenter.Gold.Subscribe()
|
||||||
|
}
|
||||||
|
|
||||||
|
public class RouletteItemPresenter
|
||||||
|
{
|
||||||
|
public ReactiveProperty<int> Gold { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
pieceAngle = 360 / roulettePieceData.Length;
|
pieceAngle = 360 / roulettePieceData.Length;
|
||||||
halfPieceAngle = pieceAngle * 0.5f;
|
halfPieceAngle = pieceAngle * 0.5f;
|
||||||
halfPieceAngleWithPaddings = halfPieceAngle - (halfPieceAngle * 0.25f);
|
halfPieceAngleWithPaddings = halfPieceAngle - (halfPieceAngle * 0.25f);
|
||||||
|
|
||||||
|
_presenter = new RoulettePresenter();
|
||||||
|
|
||||||
SpawnPiecesAndLines();
|
SpawnPiecesAndLines();
|
||||||
CalculateWeightsAndIndices();
|
CalculateWeightsAndIndices();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ using UnityEngine.UI;
|
|||||||
|
|
||||||
namespace TON
|
namespace TON
|
||||||
{
|
{
|
||||||
// View?
|
// View
|
||||||
public class RoulettePiece : MonoBehaviour
|
public class RoulettePiece : MonoBehaviour
|
||||||
{
|
{
|
||||||
[SerializeField] private Image imageIcon;
|
[SerializeField] private Image imageIcon;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ using UnityEngine;
|
|||||||
|
|
||||||
namespace TON
|
namespace TON
|
||||||
{
|
{
|
||||||
// Model?
|
// Model
|
||||||
[System.Serializable]
|
[System.Serializable]
|
||||||
public class RoulettePieceData
|
public class RoulettePieceData
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -5,12 +5,14 @@ using UnityEngine;
|
|||||||
|
|
||||||
namespace TON
|
namespace TON
|
||||||
{
|
{
|
||||||
public class RoulettePresenter : MonoBehaviour
|
public class RoulettePresenter
|
||||||
{
|
{
|
||||||
private PlayerDataManager playerDataManager;
|
private PlayerDataManager playerDataManager;
|
||||||
// ReactiveProperty
|
private Roulette roulette;
|
||||||
|
|
||||||
private void Awake()
|
private List<RoulettePieceData> roulettePieceData = new();
|
||||||
|
|
||||||
|
public RoulettePresenter()
|
||||||
{
|
{
|
||||||
// 싱글톤으로 PlayerDataManager 접근
|
// 싱글톤으로 PlayerDataManager 접근
|
||||||
playerDataManager = PlayerDataManager.Singleton;
|
playerDataManager = PlayerDataManager.Singleton;
|
||||||
@@ -21,12 +23,24 @@ namespace TON
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Todo : UI 바인딩
|
// 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}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ namespace TON
|
|||||||
[SerializeField] private Button buttonSpin;
|
[SerializeField] private Button buttonSpin;
|
||||||
|
|
||||||
private PlayerDataManager playerDataManager;
|
private PlayerDataManager playerDataManager;
|
||||||
// Todo : Presenter 변수
|
private RoulettePresenter roulettePresenter;
|
||||||
|
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
@@ -29,25 +29,13 @@ namespace TON
|
|||||||
buttonSpin.interactable = false;
|
buttonSpin.interactable = false;
|
||||||
roulette.Spin(EndOfSpin);
|
roulette.Spin(EndOfSpin);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Presenter 생성
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void EndOfSpin(RoulettePieceData selectedData)
|
private void EndOfSpin(RoulettePieceData selectedData)
|
||||||
{
|
{
|
||||||
buttonSpin.interactable = true;
|
buttonSpin.interactable = true;
|
||||||
|
|
||||||
// 재화 획득 코드 추가
|
roulettePresenter.InsertRouletteResult(selectedData);
|
||||||
playerDataManager.AddGold(int.Parse(selectedData.description));
|
|
||||||
|
|
||||||
// UI 갱신 코드 추가
|
|
||||||
UIManager.Singleton.UpdateCashData();
|
|
||||||
Debug.Log($"{selectedData.index}:{selectedData.description}");
|
|
||||||
}
|
|
||||||
|
|
||||||
public class RoulettePresenter
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user