Files
M-Gameton-06/Gameton-06/Assets/Gameton/Scripts/UI/RouletteSpin/RouletteSpin.cs
2025-07-02 20:50:15 +09:00

66 lines
1.8 KiB
C#

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<string> Description { get; set; }
public ReactiveProperty<int> Chance { get; set; }
public ReactiveCommand BuyCommand { get; set; }
private RoulettePieceData _model;
public RouletteItemPresenter(RoulettePresenter roulettePresenter, RoulettePieceData model)
{
_model = model;
Description = new ReactiveProperty<string>(model.description);
Chance = new ReactiveProperty<int>(model.chance);
BuyCommand = new ReactiveCommand();
BuyCommand.Subscribe(_ => roulettePresenter.InsertRouletteResult(this));
}
}
}