From a23e3e5c72341fab840e4ef2fd93fc60a5a1b259 Mon Sep 17 00:00:00 2001 From: kimura Date: Fri, 10 Sep 2021 14:33:55 +0900 Subject: [PATCH] =?UTF-8?q?=E8=B3=BC=E5=85=A5=E3=83=9C=E3=82=BF=E3=83=B3?= =?UTF-8?q?=E3=81=AE=E6=8C=99=E5=8B=95=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Scenes/shopping/Prefabs/Frame.prefab | 2 ++ .../Scripts/ShopItemPurchaseButton.cs | 20 ++++++++++++++----- .../Scenes/shopping/Scripts/ShopItemView.cs | 3 ++- .../Scenes/shopping/Scripts/Shopping.cs | 13 +++++------- 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/popcorn/Assets/MyGame/Scenes/shopping/Prefabs/Frame.prefab b/popcorn/Assets/MyGame/Scenes/shopping/Prefabs/Frame.prefab index 01fbec01..176d812e 100644 --- a/popcorn/Assets/MyGame/Scenes/shopping/Prefabs/Frame.prefab +++ b/popcorn/Assets/MyGame/Scenes/shopping/Prefabs/Frame.prefab @@ -242,6 +242,8 @@ MonoBehaviour: onObject: {fileID: 8536603422629144349} offObject: {fileID: 8536603424418812070} soldOutObject: {fileID: 8536603424566114136} + learnedObject: {fileID: 8536603424476639146} + purchasedObject: {fileID: 1735230268650569057} --- !u!114 &1342298367473717200 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/popcorn/Assets/MyGame/Scenes/shopping/Scripts/ShopItemPurchaseButton.cs b/popcorn/Assets/MyGame/Scenes/shopping/Scripts/ShopItemPurchaseButton.cs index 13a0d90c..af5d4d85 100644 --- a/popcorn/Assets/MyGame/Scenes/shopping/Scripts/ShopItemPurchaseButton.cs +++ b/popcorn/Assets/MyGame/Scenes/shopping/Scripts/ShopItemPurchaseButton.cs @@ -5,15 +5,18 @@ using UnityEngine.UI; public class ShopItemPurchaseButton : MonoBehaviour { - private ShopItemType itemType; [SerializeField] private Button purchaseButton; [SerializeField] private GameObject onObject; [SerializeField] private GameObject offObject; [SerializeField] private GameObject soldOutObject; + [SerializeField] private GameObject learnedObject; + [SerializeField] private GameObject purchasedObject; + private ShopItemType itemType; + private bool isPurchased; public IObservable ClickObservable => purchaseButton.OnClickAsObservable().TakeUntilDestroy(this); - public void SetItemType(ShopItemType type) + public void SetItemType(ItemCategory category, ShopItemType type) { itemType = type; switch (type) @@ -22,13 +25,19 @@ public class ShopItemPurchaseButton : MonoBehaviour soldOutObject.SetActive(false); break; case ShopItemType.NonConsumable: - offObject.SetActive(false); + learnedObject.SetActive(category == ItemCategory.Recipe); + purchasedObject.SetActive(category == ItemCategory.Pan); break; default: throw new ArgumentOutOfRangeException(nameof(type), type, null); } } + public void SetItemPurchased(bool active) + { + isPurchased = active; + } + public void SetButtonActive(bool active) { switch (itemType) @@ -38,8 +47,9 @@ public class ShopItemPurchaseButton : MonoBehaviour offObject.SetActive(!active); break; case ShopItemType.NonConsumable: - onObject.SetActive(active); - soldOutObject.SetActive(!active); + onObject.SetActive(active && !isPurchased); + offObject.SetActive(!active && !isPurchased); + soldOutObject.SetActive(isPurchased); break; default: throw new ArgumentOutOfRangeException(); diff --git a/popcorn/Assets/MyGame/Scenes/shopping/Scripts/ShopItemView.cs b/popcorn/Assets/MyGame/Scenes/shopping/Scripts/ShopItemView.cs index 7fe20a67..76ffcd7d 100644 --- a/popcorn/Assets/MyGame/Scenes/shopping/Scripts/ShopItemView.cs +++ b/popcorn/Assets/MyGame/Scenes/shopping/Scripts/ShopItemView.cs @@ -23,12 +23,13 @@ public class ShopItemView : MonoBehaviour { stockCount.transform.parent.gameObject.SetActive(false); } - purchaseButton.SetItemType(shopData.ConsumeType); + purchaseButton.SetItemType(shopData.Category, shopData.ConsumeType); } public void SetStockCount(int stock) { stockCount.text = $"{stock}"; + purchaseButton.SetItemPurchased(stock > 0); } public void SetItemActive(bool active) diff --git a/popcorn/Assets/MyGame/Scenes/shopping/Scripts/Shopping.cs b/popcorn/Assets/MyGame/Scenes/shopping/Scripts/Shopping.cs index 7c5be5dd..9c3fdda1 100644 --- a/popcorn/Assets/MyGame/Scenes/shopping/Scripts/Shopping.cs +++ b/popcorn/Assets/MyGame/Scenes/shopping/Scripts/Shopping.cs @@ -25,16 +25,13 @@ public class Shopping : MonoBehaviour // コインを監視して購入可能状態を切り替え changeCoinSubject.Subscribe(ownCoin => { - if (shopData.ConsumeType == ShopItemType.NonConsumable && GetItemAmount(shopData) > 0) - { - itemView.SetItemActive(false); - return; - } - itemView.SetItemActive(shopData.price < ownCoin); + itemView.SetItemActive(shopData.price <= ownCoin); }).AddTo(this); // アイテム購入クリック購読 - itemView.PurchaseButtonObservable.Subscribe(_ => - { + itemView.PurchaseButtonObservable + .Where(_ => shopData.price <= CoinManager.Instance.OwnCoin) + .Subscribe(_ => + { // アイテムを増やす AddItem(shopData); itemView.SetStockCount(GetItemAmount(shopData));