66 lines
1.8 KiB
C#
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));
|
|
}
|
|
}
|
|
}
|