商品が無い場合、宣伝ボタンを非表示にする処理を追加

This commit is contained in:
kimura 2021-11-22 13:56:24 +09:00
parent a614121390
commit 4d787b7c8e
1 changed files with 57 additions and 47 deletions

View File

@ -25,9 +25,11 @@ public class MarketManager : MonoBehaviour
List<ProductData> productDataList; List<ProductData> productDataList;
private readonly Subject<int> resetRefreshTimer = new Subject<int>(); private readonly Subject<int> resetRefreshTimer = new Subject<int>();
private readonly CompositeDisposable ShopClosedCompositeDisposable = new CompositeDisposable();
private void Start() private void Start()
{ {
ShopClosedCompositeDisposable.AddTo(this);
resetRefreshTimer.AddTo(this); resetRefreshTimer.AddTo(this);
market = Market.Instance; market = Market.Instance;
@ -46,26 +48,25 @@ public class MarketManager : MonoBehaviour
var controller = market.SetTutorialCustomer(); var controller = market.SetTutorialCustomer();
walkerMask.SetTargetArrow(controller.transform); walkerMask.SetTargetArrow(controller.transform);
controller.State controller.State
.Where(x => x == CustomerState.Wait) .FirstOrDefault(x => x == CustomerState.Wait)
.Take(1) .Subscribe(_ => { }, () =>
.Subscribe(state => { }, () =>
{ {
walkerMask.SetArrowActive(false); walkerMask.SetArrowActive(false);
}).AddTo(controller).AddTo(this); }).AddTo(controller).AddTo(this);
walkerMask.SetTargetArrow(controller.transform);
controller.State controller.State
.Where(x => x == CustomerState.EatingLeave) .FirstOrDefault(x => x == CustomerState.EatingLeave)
.Delay(TimeSpan.FromSeconds(3f)) .Delay(TimeSpan.FromSeconds(3f))
.Take(1) .Subscribe(_ => { }, () =>
.Subscribe(_ =>
{ {
// チュートリアル終了 // チュートリアル終了
gameData.FinishTutorial(); gameData.FinishTutorial();
GameDataManager.SaveGameData(); GameDataManager.SaveGameData();
walkerMask.gameObject.SetActive(false); walkerMask.gameObject.SetActive(false);
resetRefreshTimer.OnNext((int) DateTime.FromBinary(gameData.increaseCustomerTime).Subtract(DateTime.UtcNow).TotalSeconds); resetRefreshTimer.OnNext((int) DateTime.FromBinary(gameData.increaseCustomerTime).Subtract(DateTime.UtcNow).TotalSeconds);
rewardButtonView.gameObject.SetActive(true); TutorialManager.Instance.ShowTutorialConversation(12, () =>
TutorialManager.Instance.ShowTutorialConversation(12); {
SetShopView(market.CurrentShopState.Value);
});
}).AddTo(controller).AddTo(this); }).AddTo(controller).AddTo(this);
}); });
} }
@ -218,20 +219,30 @@ public class MarketManager : MonoBehaviour
}).AddTo(this); }).AddTo(this);
// 開閉店 // 開閉店
CompositeDisposable shopStateCompositeDisposable = new CompositeDisposable(); market.CurrentShopState
shopStateCompositeDisposable.AddTo(this); .Where(_ => !gameData.isFirstPlay)
market.CurrentShopState.Subscribe(state => .Subscribe(state =>
{ {
shopStateCompositeDisposable.Clear(); SetShopView(state);
}).AddTo(this);
}
private void SetShopView(ShopState state)
{
ShopClosedCompositeDisposable.Clear();
switch (state) switch (state)
{ {
case ShopState.Open: case ShopState.Open:
// 宣伝ボタン表示
rewardButtonView.gameObject.SetActive(true);
BrotherPinkView.Instance.SetNormal(); BrotherPinkView.Instance.SetNormal();
closeSign.SetActive(false); closeSign.SetActive(false);
break; break;
case ShopState.Busy: case ShopState.Busy:
break; break;
case ShopState.Close: case ShopState.Close:
// 宣伝ボタン非表示
rewardButtonView.gameObject.SetActive(false);
if (market.CustomerList.Count(x => x.State.Value == CustomerState.Order) == 0) if (market.CustomerList.Count(x => x.State.Value == CustomerState.Order) == 0)
{ {
BrotherPinkView.Instance.SetSleepy(); BrotherPinkView.Instance.SetSleepy();
@ -250,13 +261,12 @@ public class MarketManager : MonoBehaviour
{ {
BrotherPinkView.Instance.SetSleepy(); BrotherPinkView.Instance.SetSleepy();
closeSign.SetActive(true); closeSign.SetActive(true);
}).AddTo(shopStateCompositeDisposable); }).AddTo(ShopClosedCompositeDisposable);
} }
break; break;
default: default:
throw new ArgumentOutOfRangeException(nameof(state), state, null); throw new ArgumentOutOfRangeException(nameof(state), state, null);
} }
}).AddTo(this);
} }
private void CoinEffect(int count) private void CoinEffect(int count)