仕入れに広告視聴回数でレシピ開放機能を追加
This commit is contained in:
		
							parent
							
								
									f73c00a420
								
							
						
					
					
						commit
						7e28d48528
					
				|  | @ -416,7 +416,7 @@ RectTransform: | ||||||
|   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} | ||||||
|   m_AnchorMin: {x: 0.5, y: 0.5} |   m_AnchorMin: {x: 0.5, y: 0.5} | ||||||
|   m_AnchorMax: {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_SizeDelta: {x: 150, y: 150} | ||||||
|   m_Pivot: {x: 0.5, y: 0.5} |   m_Pivot: {x: 0.5, y: 0.5} | ||||||
| --- !u!1 &594261736 | --- !u!1 &594261736 | ||||||
|  | @ -1232,14 +1232,13 @@ MonoBehaviour: | ||||||
|   m_GameObject: {fileID: 1684918699} |   m_GameObject: {fileID: 1684918699} | ||||||
|   m_Enabled: 1 |   m_Enabled: 1 | ||||||
|   m_EditorHideFlags: 0 |   m_EditorHideFlags: 0 | ||||||
|   m_Script: {fileID: 11500000, guid: 5f2a9cddac65495987f3657236411f7a, type: 3} |   m_Script: {fileID: 11500000, guid: 145ec1a447b54867a4992cca4a0a5803, type: 3} | ||||||
|   m_Name:  |   m_Name:  | ||||||
|   m_EditorClassIdentifier:  |   m_EditorClassIdentifier:  | ||||||
|   backgroundAnimator: {fileID: 418527617} |   backgroundAnimator: {fileID: 418527617} | ||||||
|   normalMissionObject: {fileID: 0} |   name: {fileID: 1264740260} | ||||||
|   dailyMissionObject: {fileID: 1193390268} |   iconTarget: {fileID: 497670574} | ||||||
|   closeButton: {fileID: 1115920389} |   closeButton: {fileID: 1115920389} | ||||||
|   coinText: {fileID: 1264740260} |  | ||||||
| --- !u!1001 &1803163400 | --- !u!1001 &1803163400 | ||||||
| PrefabInstance: | PrefabInstance: | ||||||
|   m_ObjectHideFlags: 0 |   m_ObjectHideFlags: 0 | ||||||
|  | @ -1350,7 +1349,7 @@ PrefabInstance: | ||||||
|     - target: {fileID: 3719207458405043424, guid: 9a2aaf7985e538d42b6167af79daf316, |     - target: {fileID: 3719207458405043424, guid: 9a2aaf7985e538d42b6167af79daf316, | ||||||
|         type: 3} |         type: 3} | ||||||
|       propertyPath: m_AnchoredPosition.y |       propertyPath: m_AnchoredPosition.y | ||||||
|       value: -4 |       value: 0 | ||||||
|       objectReference: {fileID: 0} |       objectReference: {fileID: 0} | ||||||
|     - target: {fileID: 3719207458405043424, guid: 9a2aaf7985e538d42b6167af79daf316, |     - target: {fileID: 3719207458405043424, guid: 9a2aaf7985e538d42b6167af79daf316, | ||||||
|         type: 3} |         type: 3} | ||||||
|  |  | ||||||
|  | @ -1618,6 +1618,14 @@ MonoBehaviour: | ||||||
|   itemName: {fileID: 8536603424255746891} |   itemName: {fileID: 8536603424255746891} | ||||||
|   price: {fileID: 8536603424463105953} |   price: {fileID: 8536603424463105953} | ||||||
|   stockCount: {fileID: 8536603422883751234} |   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 | --- !u!1 &8536603423534268947 | ||||||
| GameObject: | GameObject: | ||||||
|   m_ObjectHideFlags: 0 |   m_ObjectHideFlags: 0 | ||||||
|  |  | ||||||
|  | @ -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<ShopData>(ShopDataTag); | ||||||
|  |         LocalCacheManager.Remove(ShopDataTag); | ||||||
|  |         SetData(shopData); | ||||||
|  |         closeButton.OnClickAsObservable().Take(1).Subscribe(_ => | ||||||
|  |         { | ||||||
|  |             LocalCacheManager.Load<Action>(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); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,3 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 145ec1a447b54867a4992cca4a0a5803 | ||||||
|  | timeCreated: 1639119851 | ||||||
|  | @ -1,4 +1,5 @@ | ||||||
| using System; | using System; | ||||||
|  | using TMPro; | ||||||
| using UniRx; | using UniRx; | ||||||
| using UnityEngine; | using UnityEngine; | ||||||
| using UnityEngine.UI; | using UnityEngine.UI; | ||||||
|  | @ -11,9 +12,20 @@ public class ShopItemView : MonoBehaviour | ||||||
|     [SerializeField] private Text itemName; |     [SerializeField] private Text itemName; | ||||||
|     [SerializeField] private Text price; |     [SerializeField] private Text price; | ||||||
|     [SerializeField] private Text stockCount; |     [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<Unit> DetailButtonObservable => detailButton.OnClickAsObservable().TakeUntilDestroy(this); |     public IObservable<Unit> DetailButtonObservable => detailButton.OnClickAsObservable().TakeUntilDestroy(this); | ||||||
|     public IObservable<Unit> PurchaseButtonObservable => purchaseButton.ClickObservable.TakeUntilDestroy(this); |     public IObservable<Unit> PurchaseButtonObservable => purchaseButton.ClickObservable; | ||||||
|  |     public IObservable<Unit> ExchangeButtonObservable => exchangeButton.OnClickAsObservable().TakeUntilDestroy(this); | ||||||
| 
 | 
 | ||||||
|     public void SetData(ShopData shopData) |     public void SetData(ShopData shopData) | ||||||
|     { |     { | ||||||
|  | @ -26,12 +38,29 @@ public class ShopItemView : MonoBehaviour | ||||||
|         iconTarget.DestroyAllChildrens(); |         iconTarget.DestroyAllChildrens(); | ||||||
|         Instantiate(shopData.GetPrefab(), iconTarget); |         Instantiate(shopData.GetPrefab(), iconTarget); | ||||||
|         purchaseButton.SetItemType(shopData.Category, shopData.ConsumeType); |         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) |     public void SetStockCount(int stock) | ||||||
|     { |     { | ||||||
|         stockCount.text = $"{stock}"; |         stockCount.text = $"{stock}"; | ||||||
|         purchaseButton.SetItemPurchased(stock > 0); |         purchaseButton.SetItemPurchased(stock > 0); | ||||||
|  |         soldOutObject.SetActive(stock > 0); | ||||||
|  |         if (soldOutObject.activeSelf) | ||||||
|  |         { | ||||||
|  |             onObject.SetActive(false); | ||||||
|  |             offObject.SetActive(false); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public void SetItemActive(bool active) |     public void SetItemActive(bool active) | ||||||
|  |  | ||||||
|  | @ -90,6 +90,21 @@ public class Shopping : MonoBehaviour | ||||||
|                         } |                         } | ||||||
|                     }); |                     }); | ||||||
|                 }).AddTo(itemView); |                 }).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 |             // show detail view | ||||||
|             itemView.DetailButtonObservable.ThrottleFirst(TimeSpan.FromSeconds(.3f)).Subscribe(_ => |             itemView.DetailButtonObservable.ThrottleFirst(TimeSpan.FromSeconds(.3f)).Subscribe(_ => | ||||||
|             { |             { | ||||||
|  |  | ||||||
|  | @ -319,6 +319,10 @@ public sealed class GameData { | ||||||
|         MoveCoin(WaitAddCoin); |         MoveCoin(WaitAddCoin); | ||||||
|         MoveHeart(WaitAddHeart); |         MoveHeart(WaitAddHeart); | ||||||
|     } |     } | ||||||
|  |      | ||||||
|  |     public void AddAdCount(){ | ||||||
|  |         ++adCount; | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     // public void ChangeAvatar(AvatarData avatarData){ |     // public void ChangeAvatar(AvatarData avatarData){ | ||||||
|     //     newAvatarIdList.Remove(avatarData.id); |     //     newAvatarIdList.Remove(avatarData.id); | ||||||
|  |  | ||||||
|  | @ -93,6 +93,7 @@ namespace MyGame.Scripts | ||||||
|                     { |                     { | ||||||
|                         if (result) |                         if (result) | ||||||
|                         { |                         { | ||||||
|  |                             GameDataManager.GameData.AddAdCount(); | ||||||
|                             LocalCacheManager.Load<Action>(OkCallbackTag, null)?.Invoke(); |                             LocalCacheManager.Load<Action>(OkCallbackTag, null)?.Invoke(); | ||||||
|                             LocalCacheManager.Remove(OkCallbackTag); |                             LocalCacheManager.Remove(OkCallbackTag); | ||||||
|                         } |                         } | ||||||
|  |  | ||||||
|  | @ -20,6 +20,7 @@ public enum GameScenes | ||||||
|     shopping, |     shopping, | ||||||
|     ShoppingExplanation, |     ShoppingExplanation, | ||||||
|     Purchase, |     Purchase, | ||||||
|  |     ExchangeAchievement, | ||||||
|     ProductManagement, |     ProductManagement, | ||||||
|     PopcornDescription, |     PopcornDescription, | ||||||
|     Tasting, |     Tasting, | ||||||
|  |  | ||||||
|  | @ -50,6 +50,9 @@ EditorBuildSettings: | ||||||
|   - enabled: 1 |   - enabled: 1 | ||||||
|     path: Assets/MyGame/Scenes/shopping/Purchase.unity |     path: Assets/MyGame/Scenes/shopping/Purchase.unity | ||||||
|     guid: 6cdf801ecd42cd543a2b68afba311048 |     guid: 6cdf801ecd42cd543a2b68afba311048 | ||||||
|  |   - enabled: 1 | ||||||
|  |     path: Assets/MyGame/Scenes/shopping/ExchangeAchievement.unity | ||||||
|  |     guid: 0c5950b18bf59e54ab2ac02980fb3051 | ||||||
|   - enabled: 1 |   - enabled: 1 | ||||||
|     path: Assets/MyGame/Scenes/DebugOption/DebugOption.unity |     path: Assets/MyGame/Scenes/DebugOption/DebugOption.unity | ||||||
|     guid: fe763d31ed9d54598b71a92ae78adefe |     guid: fe763d31ed9d54598b71a92ae78adefe | ||||||
|  | @ -102,6 +105,6 @@ EditorBuildSettings: | ||||||
|     path: Assets/MyGame/Scenes/ApplicationExitConfirmDialog/ApplicationExitConfirmDialog.unity |     path: Assets/MyGame/Scenes/ApplicationExitConfirmDialog/ApplicationExitConfirmDialog.unity | ||||||
|     guid: c25d0bb8eeefa744eb98fc07808adad7 |     guid: c25d0bb8eeefa744eb98fc07808adad7 | ||||||
|   - enabled: 1 |   - enabled: 1 | ||||||
|     path: Assets/MyGame/Scenes/Main/Update.unity |     path: Assets/MyGame/Scenes/Main/update.unity | ||||||
|     guid: 940b0354731698e4381318e56969feaf |     guid: 940b0354731698e4381318e56969feaf | ||||||
|   m_configObjects: {} |   m_configObjects: {} | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue