From 4d787b7c8eb657a5b1376432574e707c869f0e47 Mon Sep 17 00:00:00 2001 From: kimura Date: Mon, 22 Nov 2021 13:56:24 +0900 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=93=81=E3=81=8C=E7=84=A1=E3=81=84?= =?UTF-8?q?=E5=A0=B4=E5=90=88=E3=80=81=E5=AE=A3=E4=BC=9D=E3=83=9C=E3=82=BF?= =?UTF-8?q?=E3=83=B3=E3=82=92=E9=9D=9E=E8=A1=A8=E7=A4=BA=E3=81=AB=E3=81=99?= =?UTF-8?q?=E3=82=8B=E5=87=A6=E7=90=86=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Scenes/marketing/Scripts/MarketManager.cs | 104 ++++++++++-------- 1 file changed, 57 insertions(+), 47 deletions(-) diff --git a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/MarketManager.cs b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/MarketManager.cs index 345c2d21..6ce20a33 100644 --- a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/MarketManager.cs +++ b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/MarketManager.cs @@ -25,9 +25,11 @@ public class MarketManager : MonoBehaviour List productDataList; private readonly Subject resetRefreshTimer = new Subject(); + private readonly CompositeDisposable ShopClosedCompositeDisposable = new CompositeDisposable(); private void Start() { + ShopClosedCompositeDisposable.AddTo(this); resetRefreshTimer.AddTo(this); market = Market.Instance; @@ -46,26 +48,25 @@ public class MarketManager : MonoBehaviour var controller = market.SetTutorialCustomer(); walkerMask.SetTargetArrow(controller.transform); controller.State - .Where(x => x == CustomerState.Wait) - .Take(1) - .Subscribe(state => { }, () => + .FirstOrDefault(x => x == CustomerState.Wait) + .Subscribe(_ => { }, () => { walkerMask.SetArrowActive(false); }).AddTo(controller).AddTo(this); - walkerMask.SetTargetArrow(controller.transform); controller.State - .Where(x => x == CustomerState.EatingLeave) + .FirstOrDefault(x => x == CustomerState.EatingLeave) .Delay(TimeSpan.FromSeconds(3f)) - .Take(1) - .Subscribe(_ => + .Subscribe(_ => { }, () => { // チュートリアル終了 gameData.FinishTutorial(); GameDataManager.SaveGameData(); walkerMask.gameObject.SetActive(false); 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); }); } @@ -218,45 +219,54 @@ public class MarketManager : MonoBehaviour }).AddTo(this); // 開閉店 - CompositeDisposable shopStateCompositeDisposable = new CompositeDisposable(); - shopStateCompositeDisposable.AddTo(this); - market.CurrentShopState.Subscribe(state => - { - shopStateCompositeDisposable.Clear(); - switch (state) + market.CurrentShopState + .Where(_ => !gameData.isFirstPlay) + .Subscribe(state => { - case ShopState.Open: - BrotherPinkView.Instance.SetNormal(); - closeSign.SetActive(false); - break; - case ShopState.Busy: - break; - case ShopState.Close: - if (market.CustomerList.Count(x => x.State.Value == CustomerState.Order) == 0) - { - BrotherPinkView.Instance.SetSleepy(); - closeSign.SetActive(true); - } - else - { - // お客さんがいなくなったあと、閉店の看板を出す - Observable.CombineLatest( - market.CustomerList - .Select(x => x.State) - .Where(x => x.Value == CustomerState.Order)) - .FirstOrDefault(states => states.Count(x => x == CustomerState.Order) == 0) - .Delay(TimeSpan.FromSeconds(2f)) - .Subscribe(_ => - { - BrotherPinkView.Instance.SetSleepy(); - closeSign.SetActive(true); - }).AddTo(shopStateCompositeDisposable); - } - break; - default: - throw new ArgumentOutOfRangeException(nameof(state), state, null); - } - }).AddTo(this); + SetShopView(state); + }).AddTo(this); + } + + private void SetShopView(ShopState state) + { + ShopClosedCompositeDisposable.Clear(); + switch (state) + { + case ShopState.Open: + // 宣伝ボタン表示 + rewardButtonView.gameObject.SetActive(true); + BrotherPinkView.Instance.SetNormal(); + closeSign.SetActive(false); + break; + case ShopState.Busy: + break; + case ShopState.Close: + // 宣伝ボタン非表示 + rewardButtonView.gameObject.SetActive(false); + if (market.CustomerList.Count(x => x.State.Value == CustomerState.Order) == 0) + { + BrotherPinkView.Instance.SetSleepy(); + closeSign.SetActive(true); + } + else + { + // お客さんがいなくなったあと、閉店の看板を出す + Observable.CombineLatest( + market.CustomerList + .Select(x => x.State) + .Where(x => x.Value == CustomerState.Order)) + .FirstOrDefault(states => states.Count(x => x == CustomerState.Order) == 0) + .Delay(TimeSpan.FromSeconds(2f)) + .Subscribe(_ => + { + BrotherPinkView.Instance.SetSleepy(); + closeSign.SetActive(true); + }).AddTo(ShopClosedCompositeDisposable); + } + break; + default: + throw new ArgumentOutOfRangeException(nameof(state), state, null); + } } private void CoinEffect(int count)