From 7e28d48528add5e118f5b09d12887f1924009794 Mon Sep 17 00:00:00 2001 From: kimura Date: Fri, 10 Dec 2021 17:18:04 +0900 Subject: [PATCH] =?UTF-8?q?=E4=BB=95=E5=85=A5=E3=82=8C=E3=81=AB=E5=BA=83?= =?UTF-8?q?=E5=91=8A=E8=A6=96=E8=81=B4=E5=9B=9E=E6=95=B0=E3=81=A7=E3=83=AC?= =?UTF-8?q?=E3=82=B7=E3=83=94=E9=96=8B=E6=94=BE=E6=A9=9F=E8=83=BD=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Scenes/shopping/ExchangeAchievement.unity | 11 ++-- .../Scenes/shopping/Prefabs/Frame.prefab | 8 +++ .../shopping/Scripts/ShopItemExchangeView.cs | 50 +++++++++++++++++++ .../Scripts/ShopItemExchangeView.cs.meta | 3 ++ .../Scenes/shopping/Scripts/ShopItemView.cs | 31 +++++++++++- .../Scenes/shopping/Scripts/Shopping.cs | 15 ++++++ .../Assets/MyGame/Scripts/GameDataManager.cs | 4 ++ .../Assets/MyGame/Scripts/GetRewardDialog.cs | 1 + .../MyGame/Scripts/TransitionManager.cs | 1 + .../ProjectSettings/EditorBuildSettings.asset | 5 +- 10 files changed, 121 insertions(+), 8 deletions(-) create mode 100644 popcorn/Assets/MyGame/Scenes/shopping/Scripts/ShopItemExchangeView.cs create mode 100644 popcorn/Assets/MyGame/Scenes/shopping/Scripts/ShopItemExchangeView.cs.meta diff --git a/popcorn/Assets/MyGame/Scenes/shopping/ExchangeAchievement.unity b/popcorn/Assets/MyGame/Scenes/shopping/ExchangeAchievement.unity index 6035619c..c2a0ec4e 100644 --- a/popcorn/Assets/MyGame/Scenes/shopping/ExchangeAchievement.unity +++ b/popcorn/Assets/MyGame/Scenes/shopping/ExchangeAchievement.unity @@ -416,7 +416,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -1, y: -18} + m_AnchoredPosition: {x: -1, y: -22} m_SizeDelta: {x: 150, y: 150} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &594261736 @@ -1232,14 +1232,13 @@ MonoBehaviour: m_GameObject: {fileID: 1684918699} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f2a9cddac65495987f3657236411f7a, type: 3} + m_Script: {fileID: 11500000, guid: 145ec1a447b54867a4992cca4a0a5803, type: 3} m_Name: m_EditorClassIdentifier: backgroundAnimator: {fileID: 418527617} - normalMissionObject: {fileID: 0} - dailyMissionObject: {fileID: 1193390268} + name: {fileID: 1264740260} + iconTarget: {fileID: 497670574} closeButton: {fileID: 1115920389} - coinText: {fileID: 1264740260} --- !u!1001 &1803163400 PrefabInstance: m_ObjectHideFlags: 0 @@ -1350,7 +1349,7 @@ PrefabInstance: - target: {fileID: 3719207458405043424, guid: 9a2aaf7985e538d42b6167af79daf316, type: 3} propertyPath: m_AnchoredPosition.y - value: -4 + value: 0 objectReference: {fileID: 0} - target: {fileID: 3719207458405043424, guid: 9a2aaf7985e538d42b6167af79daf316, type: 3} diff --git a/popcorn/Assets/MyGame/Scenes/shopping/Prefabs/Frame.prefab b/popcorn/Assets/MyGame/Scenes/shopping/Prefabs/Frame.prefab index 93f552ec..3e3c2b9b 100644 --- a/popcorn/Assets/MyGame/Scenes/shopping/Prefabs/Frame.prefab +++ b/popcorn/Assets/MyGame/Scenes/shopping/Prefabs/Frame.prefab @@ -1618,6 +1618,14 @@ MonoBehaviour: itemName: {fileID: 8536603424255746891} price: {fileID: 8536603424463105953} stockCount: {fileID: 8536603422883751234} + purchaseObject: {fileID: 1724054491481647808} + exchangeObject: {fileID: 5433729606380246405} + progressBar: {fileID: 7490815301205721763} + progressText: {fileID: 5831242374484716135} + onObject: {fileID: 8599340879278054956} + offObject: {fileID: 1852637203793855555} + soldOutObject: {fileID: 6377311622786111752} + exchangeButton: {fileID: 1139534594415698666} --- !u!1 &8536603423534268947 GameObject: m_ObjectHideFlags: 0 diff --git a/popcorn/Assets/MyGame/Scenes/shopping/Scripts/ShopItemExchangeView.cs b/popcorn/Assets/MyGame/Scenes/shopping/Scripts/ShopItemExchangeView.cs new file mode 100644 index 00000000..78ce73d0 --- /dev/null +++ b/popcorn/Assets/MyGame/Scenes/shopping/Scripts/ShopItemExchangeView.cs @@ -0,0 +1,50 @@ +using System; +using MyGame.Scripts; +using UniRx; +using UnityEngine; +using UnityEngine.UI; + +public class ShopItemExchangeView : MonoBehaviour +{ + private static readonly string ShopDataTag = "ShopItemExchangeViewShopData"; + private static readonly string CloseCallbackTag = "ShopItemExchangeViewCloseCallbackTag"; + private static readonly int OpenTrigger = Animator.StringToHash("OpenTrigger"); + private static readonly int CloseTrigger = Animator.StringToHash("CloseTrigger"); + + [SerializeField] private Animator backgroundAnimator; + [SerializeField] private Text name; + [SerializeField] private Transform iconTarget; + [SerializeField] private Button closeButton; + + private void Start() + { + // 表示データを受け取る + var shopData = LocalCacheManager.Load(ShopDataTag); + LocalCacheManager.Remove(ShopDataTag); + SetData(shopData); + closeButton.OnClickAsObservable().Take(1).Subscribe(_ => + { + LocalCacheManager.Load(CloseCallbackTag, null)?.Invoke(); + transform.SetLocalScale(0); + backgroundAnimator.SetTrigger(CloseTrigger); + this.CallWaitForSeconds(.25f, () => + { + TransitionManager.Instance.UnloadScene(GameScenes.ExchangeAchievement); + }); + }).AddTo(this); + } + + private void SetData(ShopData shopData) + { + name.text = shopData.name; + iconTarget.DestroyAllChildrens(); + Instantiate(shopData.GetPrefab(), iconTarget); + } + + public static void ShowDialog(ShopData shopData, Action onClose = null) + { + LocalCacheManager.Save(ShopDataTag, shopData); + LocalCacheManager.Save(CloseCallbackTag, onClose); + TransitionManager.Instance.LoadSceneAdditive(GameScenes.ExchangeAchievement); + } +} diff --git a/popcorn/Assets/MyGame/Scenes/shopping/Scripts/ShopItemExchangeView.cs.meta b/popcorn/Assets/MyGame/Scenes/shopping/Scripts/ShopItemExchangeView.cs.meta new file mode 100644 index 00000000..1d7bde7e --- /dev/null +++ b/popcorn/Assets/MyGame/Scenes/shopping/Scripts/ShopItemExchangeView.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 145ec1a447b54867a4992cca4a0a5803 +timeCreated: 1639119851 \ No newline at end of file diff --git a/popcorn/Assets/MyGame/Scenes/shopping/Scripts/ShopItemView.cs b/popcorn/Assets/MyGame/Scenes/shopping/Scripts/ShopItemView.cs index 2d2122ca..f5ef1697 100644 --- a/popcorn/Assets/MyGame/Scenes/shopping/Scripts/ShopItemView.cs +++ b/popcorn/Assets/MyGame/Scenes/shopping/Scripts/ShopItemView.cs @@ -1,4 +1,5 @@ using System; +using TMPro; using UniRx; using UnityEngine; using UnityEngine.UI; @@ -11,9 +12,20 @@ public class ShopItemView : MonoBehaviour [SerializeField] private Text itemName; [SerializeField] private Text price; [SerializeField] private Text stockCount; + [SerializeField] private GameObject purchaseObject; + [SerializeField] private GameObject exchangeObject; + + private static readonly string ProgressFormat = "{0} / {1}"; + [SerializeField] private Slider progressBar; + [SerializeField] private TextMeshProUGUI progressText; + [SerializeField] private GameObject onObject; + [SerializeField] private GameObject offObject; + [SerializeField] private GameObject soldOutObject; + [SerializeField] private Button exchangeButton; public IObservable DetailButtonObservable => detailButton.OnClickAsObservable().TakeUntilDestroy(this); - public IObservable PurchaseButtonObservable => purchaseButton.ClickObservable.TakeUntilDestroy(this); + public IObservable PurchaseButtonObservable => purchaseButton.ClickObservable; + public IObservable ExchangeButtonObservable => exchangeButton.OnClickAsObservable().TakeUntilDestroy(this); public void SetData(ShopData shopData) { @@ -26,12 +38,29 @@ public class ShopItemView : MonoBehaviour iconTarget.DestroyAllChildrens(); Instantiate(shopData.GetPrefab(), iconTarget); purchaseButton.SetItemType(shopData.Category, shopData.ConsumeType); + + /* + * レシピは広告視聴回数で開放 + * 別途フラグで切替も検討 + */ + purchaseObject.SetActive(shopData.Category != ItemCategory.Recipe); + exchangeObject.SetActive(shopData.Category == ItemCategory.Recipe); + progressBar.value = Mathf.InverseLerp(0, shopData.price, GameDataManager.GameData.adCount); + progressText.text = string.Format(ProgressFormat, GameDataManager.GameData.adCount, shopData.price); + onObject.SetActive(shopData.price <= GameDataManager.GameData.adCount); + offObject.SetActive(!onObject.activeSelf); } public void SetStockCount(int stock) { stockCount.text = $"{stock}"; purchaseButton.SetItemPurchased(stock > 0); + soldOutObject.SetActive(stock > 0); + if (soldOutObject.activeSelf) + { + onObject.SetActive(false); + offObject.SetActive(false); + } } 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 105d45c3..04acfdc1 100644 --- a/popcorn/Assets/MyGame/Scenes/shopping/Scripts/Shopping.cs +++ b/popcorn/Assets/MyGame/Scenes/shopping/Scripts/Shopping.cs @@ -90,6 +90,21 @@ public class Shopping : MonoBehaviour } }); }).AddTo(itemView); + + // 広告視聴獲得 + itemView.ExchangeButtonObservable + .ThrottleFirst(TimeSpan.FromSeconds(.3f)) + .Subscribe(_ => + { + ShopItemExchangeView.ShowDialog(shopData, () => + { + // アイテムを増やす + AddItem(shopData, 1); + itemView.SetStockCount(GetItemAmount(shopData)); + GameDataManager.SaveGameData(); + }); + }).AddTo(itemView); + // show detail view itemView.DetailButtonObservable.ThrottleFirst(TimeSpan.FromSeconds(.3f)).Subscribe(_ => { diff --git a/popcorn/Assets/MyGame/Scripts/GameDataManager.cs b/popcorn/Assets/MyGame/Scripts/GameDataManager.cs index f2878b5d..c6c44f18 100644 --- a/popcorn/Assets/MyGame/Scripts/GameDataManager.cs +++ b/popcorn/Assets/MyGame/Scripts/GameDataManager.cs @@ -319,6 +319,10 @@ public sealed class GameData { MoveCoin(WaitAddCoin); MoveHeart(WaitAddHeart); } + + public void AddAdCount(){ + ++adCount; + } // public void ChangeAvatar(AvatarData avatarData){ // newAvatarIdList.Remove(avatarData.id); diff --git a/popcorn/Assets/MyGame/Scripts/GetRewardDialog.cs b/popcorn/Assets/MyGame/Scripts/GetRewardDialog.cs index 952bb45d..47903203 100644 --- a/popcorn/Assets/MyGame/Scripts/GetRewardDialog.cs +++ b/popcorn/Assets/MyGame/Scripts/GetRewardDialog.cs @@ -93,6 +93,7 @@ namespace MyGame.Scripts { if (result) { + GameDataManager.GameData.AddAdCount(); LocalCacheManager.Load(OkCallbackTag, null)?.Invoke(); LocalCacheManager.Remove(OkCallbackTag); } diff --git a/popcorn/Assets/MyGame/Scripts/TransitionManager.cs b/popcorn/Assets/MyGame/Scripts/TransitionManager.cs index 45b0b9eb..2645625e 100644 --- a/popcorn/Assets/MyGame/Scripts/TransitionManager.cs +++ b/popcorn/Assets/MyGame/Scripts/TransitionManager.cs @@ -20,6 +20,7 @@ public enum GameScenes shopping, ShoppingExplanation, Purchase, + ExchangeAchievement, ProductManagement, PopcornDescription, Tasting, diff --git a/popcorn/ProjectSettings/EditorBuildSettings.asset b/popcorn/ProjectSettings/EditorBuildSettings.asset index 77364389..c7ba5889 100644 --- a/popcorn/ProjectSettings/EditorBuildSettings.asset +++ b/popcorn/ProjectSettings/EditorBuildSettings.asset @@ -50,6 +50,9 @@ EditorBuildSettings: - enabled: 1 path: Assets/MyGame/Scenes/shopping/Purchase.unity guid: 6cdf801ecd42cd543a2b68afba311048 + - enabled: 1 + path: Assets/MyGame/Scenes/shopping/ExchangeAchievement.unity + guid: 0c5950b18bf59e54ab2ac02980fb3051 - enabled: 1 path: Assets/MyGame/Scenes/DebugOption/DebugOption.unity guid: fe763d31ed9d54598b71a92ae78adefe @@ -102,6 +105,6 @@ EditorBuildSettings: path: Assets/MyGame/Scenes/ApplicationExitConfirmDialog/ApplicationExitConfirmDialog.unity guid: c25d0bb8eeefa744eb98fc07808adad7 - enabled: 1 - path: Assets/MyGame/Scenes/Main/Update.unity + path: Assets/MyGame/Scenes/Main/update.unity guid: 940b0354731698e4381318e56969feaf m_configObjects: {}