カスタマイズ機能長押し対応
This commit is contained in:
parent
7430e815af
commit
fe48169373
|
|
@ -1,5 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
using UniRx;
|
using UniRx;
|
||||||
|
using UniRx.Triggers;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
|
@ -24,8 +25,8 @@ namespace MyGame.Scenes.marketing.Scripts
|
||||||
[SerializeField] private Text unlockLevelText;
|
[SerializeField] private Text unlockLevelText;
|
||||||
[SerializeField] private Text priceText;
|
[SerializeField] private Text priceText;
|
||||||
[SerializeField] private Transform iconTarget;
|
[SerializeField] private Transform iconTarget;
|
||||||
|
float pressTime = .5f;
|
||||||
|
|
||||||
private IObservable<Unit> ClickObservable => button.OnClickAsObservable().TakeUntilDestroy(this);
|
|
||||||
public IObservable<Unit> PurchaseObservable => purchaseSubject;
|
public IObservable<Unit> PurchaseObservable => purchaseSubject;
|
||||||
private readonly Subject<Unit> purchaseSubject = new Subject<Unit>();
|
private readonly Subject<Unit> purchaseSubject = new Subject<Unit>();
|
||||||
public IObservable<Unit> SelectObservable => selectSubject;
|
public IObservable<Unit> SelectObservable => selectSubject;
|
||||||
|
|
@ -49,25 +50,43 @@ namespace MyGame.Scenes.marketing.Scripts
|
||||||
selectedFrameObject.SetActive(state == ShopCustomizeItemState.Selected);
|
selectedFrameObject.SetActive(state == ShopCustomizeItemState.Selected);
|
||||||
unselectedObject.SetActive(state == ShopCustomizeItemState.Purchased);
|
unselectedObject.SetActive(state == ShopCustomizeItemState.Purchased);
|
||||||
}).AddTo(this);
|
}).AddTo(this);
|
||||||
ClickObservable.ThrottleFirst(TimeSpan.FromSeconds(.2f)).Subscribe(_ =>
|
|
||||||
{
|
button.OnPointerDownAsObservable()
|
||||||
switch (itemState.Value)
|
.Select(_ =>
|
||||||
|
Observable.Amb(
|
||||||
|
Observable.Timer(TimeSpan.FromSeconds(pressTime)).Select(x => true),
|
||||||
|
button.OnPointerUpAsObservable().Select(x => false))
|
||||||
|
)
|
||||||
|
.Switch()
|
||||||
|
.Subscribe(longPress =>
|
||||||
{
|
{
|
||||||
case ShopCustomizeItemState.Lock:
|
if (longPress)
|
||||||
break;
|
{
|
||||||
case ShopCustomizeItemState.Unlock:
|
if (itemState.Value == ShopCustomizeItemState.Purchased)
|
||||||
purchaseSubject.OnNext(Unit.Default);
|
{
|
||||||
break;
|
detailSubject.OnNext(Unit.Default);
|
||||||
case ShopCustomizeItemState.Purchased:
|
}
|
||||||
selectSubject.OnNext(Unit.Default);
|
}
|
||||||
break;
|
else
|
||||||
case ShopCustomizeItemState.Selected:
|
{
|
||||||
detailSubject.OnNext(Unit.Default);
|
switch (itemState.Value)
|
||||||
break;
|
{
|
||||||
default:
|
case ShopCustomizeItemState.Lock:
|
||||||
throw new ArgumentOutOfRangeException();
|
break;
|
||||||
}
|
case ShopCustomizeItemState.Unlock:
|
||||||
}).AddTo(this);
|
purchaseSubject.OnNext(Unit.Default);
|
||||||
|
break;
|
||||||
|
case ShopCustomizeItemState.Purchased:
|
||||||
|
selectSubject.OnNext(Unit.Default);
|
||||||
|
break;
|
||||||
|
case ShopCustomizeItemState.Selected:
|
||||||
|
detailSubject.OnNext(Unit.Default);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new ArgumentOutOfRangeException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).AddTo(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetState(ShopCustomizeItemState state)
|
public void SetState(ShopCustomizeItemState state)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue