using System; using System.Collections; using System.Collections.Generic; using UniRx; using UnityEngine; using UnityEngine.UI; namespace TON { // View <> Presenter <> Model public class RouletteSpin : MonoBehaviour { [SerializeField] private Roulette roulette; [SerializeField] private Button buttonSpin; // TODO : Roulette 변수 선언 private RoulettePresenter roulettePresenter; private void Start() { // Presenter 초기화 roulettePresenter = new RoulettePresenter(); // TODO : UI와 Presenter 바인딩 } private void Awake() { buttonSpin.onClick.AddListener(()=> { buttonSpin.interactable = false; roulette.Spin(EndOfSpin); }); } private void EndOfSpin(RoulettePieceData selectedData) { buttonSpin.interactable = true; roulettePresenter.InsertRouletteResult(selectedData); } } // Presenter public class RouletteItemPresenter { public ReactiveProperty Description { get; set; } public ReactiveProperty Chance { get; set; } public ReactiveCommand BuyCommand { get; set; } private RoulettePieceData _model; public RouletteItemPresenter(RoulettePresenter roulettePresenter, RoulettePieceData model) { _model = model; Description = new ReactiveProperty(model.description); Chance = new ReactiveProperty(model.chance); BuyCommand = new ReactiveCommand(); BuyCommand.Subscribe(_ => roulettePresenter.InsertRouletteResult(this)); } } }