Merge branch 'develop' of bitbucket.org:usaya/popcorn into develop
This commit is contained in:
		
						commit
						e551edae50
					
				|  | @ -111,7 +111,7 @@ RectTransform: | ||||||
|   m_AnchorMin: {x: 0, y: 0} |   m_AnchorMin: {x: 0, y: 0} | ||||||
|   m_AnchorMax: {x: 1, y: 1} |   m_AnchorMax: {x: 1, y: 1} | ||||||
|   m_AnchoredPosition: {x: 0, y: 0} |   m_AnchoredPosition: {x: 0, y: 0} | ||||||
|   m_SizeDelta: {x: 0, y: 0} |   m_SizeDelta: {x: 0, y: 600} | ||||||
|   m_Pivot: {x: 0.5, y: 0.5} |   m_Pivot: {x: 0.5, y: 0.5} | ||||||
| --- !u!222 &4293843006989820483 | --- !u!222 &4293843006989820483 | ||||||
| CanvasRenderer: | CanvasRenderer: | ||||||
|  |  | ||||||
|  | @ -14768,7 +14768,7 @@ PrefabInstance: | ||||||
|     - target: {fileID: 4293843006989820480, guid: 1c993e9707f1a4fada56020be27dde28, |     - target: {fileID: 4293843006989820480, guid: 1c993e9707f1a4fada56020be27dde28, | ||||||
|         type: 3} |         type: 3} | ||||||
|       propertyPath: m_SizeDelta.y |       propertyPath: m_SizeDelta.y | ||||||
|       value: 0 |       value: 600 | ||||||
|       objectReference: {fileID: 0} |       objectReference: {fileID: 0} | ||||||
|     - target: {fileID: 4293843006989820480, guid: 1c993e9707f1a4fada56020be27dde28, |     - target: {fileID: 4293843006989820480, guid: 1c993e9707f1a4fada56020be27dde28, | ||||||
|         type: 3} |         type: 3} | ||||||
|  | @ -14848,7 +14848,7 @@ PrefabInstance: | ||||||
|     - target: {fileID: 4293843007976718249, guid: 1c993e9707f1a4fada56020be27dde28, |     - target: {fileID: 4293843007976718249, guid: 1c993e9707f1a4fada56020be27dde28, | ||||||
|         type: 3} |         type: 3} | ||||||
|       propertyPath: m_SizeDelta.y |       propertyPath: m_SizeDelta.y | ||||||
|       value: 806.6114 |       value: 826.3005 | ||||||
|       objectReference: {fileID: 0} |       objectReference: {fileID: 0} | ||||||
|     - target: {fileID: 4293843007976718249, guid: 1c993e9707f1a4fada56020be27dde28, |     - target: {fileID: 4293843007976718249, guid: 1c993e9707f1a4fada56020be27dde28, | ||||||
|         type: 3} |         type: 3} | ||||||
|  | @ -14858,12 +14858,12 @@ PrefabInstance: | ||||||
|     - target: {fileID: 4293843007976718249, guid: 1c993e9707f1a4fada56020be27dde28, |     - target: {fileID: 4293843007976718249, guid: 1c993e9707f1a4fada56020be27dde28, | ||||||
|         type: 3} |         type: 3} | ||||||
|       propertyPath: m_AnchoredPosition.y |       propertyPath: m_AnchoredPosition.y | ||||||
|       value: 173.4 |       value: 183.2 | ||||||
|       objectReference: {fileID: 0} |       objectReference: {fileID: 0} | ||||||
|     - target: {fileID: 7550014134400670843, guid: 1c993e9707f1a4fada56020be27dde28, |     - target: {fileID: 7550014134400670843, guid: 1c993e9707f1a4fada56020be27dde28, | ||||||
|         type: 3} |         type: 3} | ||||||
|       propertyPath: m_AnchoredPosition.y |       propertyPath: m_AnchoredPosition.y | ||||||
|       value: -565 |       value: 65 | ||||||
|       objectReference: {fileID: 0} |       objectReference: {fileID: 0} | ||||||
|     m_RemovedComponents: [] |     m_RemovedComponents: [] | ||||||
|   m_SourcePrefab: {fileID: 100100000, guid: 1c993e9707f1a4fada56020be27dde28, type: 3} |   m_SourcePrefab: {fileID: 100100000, guid: 1c993e9707f1a4fada56020be27dde28, type: 3} | ||||||
|  |  | ||||||
|  | @ -948,7 +948,7 @@ MonoBehaviour: | ||||||
|     m_SelectOnDown: {fileID: 0} |     m_SelectOnDown: {fileID: 0} | ||||||
|     m_SelectOnLeft: {fileID: 0} |     m_SelectOnLeft: {fileID: 0} | ||||||
|     m_SelectOnRight: {fileID: 0} |     m_SelectOnRight: {fileID: 0} | ||||||
|   m_Transition: 1 |   m_Transition: 0 | ||||||
|   m_Colors: |   m_Colors: | ||||||
|     m_NormalColor: {r: 1, g: 1, b: 1, a: 1} |     m_NormalColor: {r: 1, g: 1, b: 1, a: 1} | ||||||
|     m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} |     m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} | ||||||
|  | @ -1750,7 +1750,7 @@ MonoBehaviour: | ||||||
|     m_SelectOnDown: {fileID: 0} |     m_SelectOnDown: {fileID: 0} | ||||||
|     m_SelectOnLeft: {fileID: 0} |     m_SelectOnLeft: {fileID: 0} | ||||||
|     m_SelectOnRight: {fileID: 0} |     m_SelectOnRight: {fileID: 0} | ||||||
|   m_Transition: 1 |   m_Transition: 0 | ||||||
|   m_Colors: |   m_Colors: | ||||||
|     m_NormalColor: {r: 1, g: 1, b: 1, a: 1} |     m_NormalColor: {r: 1, g: 1, b: 1, a: 1} | ||||||
|     m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} |     m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} | ||||||
|  |  | ||||||
|  | @ -98,7 +98,7 @@ public class CornField : MonoBehaviour | ||||||
| 
 | 
 | ||||||
|         SetCornField(); |         SetCornField(); | ||||||
| 
 | 
 | ||||||
|         upgradeButton.OnClickAsObservable().Subscribe(_ => |         upgradeButton.OnClickAsObservable().ThrottleFirst(TimeSpan.FromSeconds(.3f)).Subscribe(_ => | ||||||
|         { |         { | ||||||
|             LocalCacheManager.Save(CornFieldReinforcement.CornFieldResetCallbackTag, new Action(() => SetCornField())); |             LocalCacheManager.Save(CornFieldReinforcement.CornFieldResetCallbackTag, new Action(() => SetCornField())); | ||||||
|             TransitionManager.Instance.LoadSceneAdditive(GameScenes.Reinforcement); |             TransitionManager.Instance.LoadSceneAdditive(GameScenes.Reinforcement); | ||||||
|  |  | ||||||
|  | @ -19,7 +19,7 @@ public class CornFieldReinforcement : MonoBehaviour | ||||||
|     private void Start() |     private void Start() | ||||||
|     { |     { | ||||||
|         compositeDisposable.AddTo(this); |         compositeDisposable.AddTo(this); | ||||||
|         closeButton.OnClickAsObservable().Subscribe(_ => |         closeButton.OnClickAsObservable().Take(1).Subscribe(_ => | ||||||
|         { |         { | ||||||
|             LocalCacheManager.Remove(CornFieldReinforcementDataTypeTag); |             LocalCacheManager.Remove(CornFieldReinforcementDataTypeTag); | ||||||
|             LocalCacheManager.Remove(CornFieldReinforcementDataTag); |             LocalCacheManager.Remove(CornFieldReinforcementDataTag); | ||||||
|  | @ -53,7 +53,7 @@ public class CornFieldReinforcement : MonoBehaviour | ||||||
|                     view.SetButtonActive(price <= CoinManager.Instance.OwnCoin); |                     view.SetButtonActive(price <= CoinManager.Instance.OwnCoin); | ||||||
|                     view.SetReinforcement(lineData, price); |                     view.SetReinforcement(lineData, price); | ||||||
|                     // 購入ボタン |                     // 購入ボタン | ||||||
|                     view.ButtonClickObserve.Subscribe(_ => |                     view.ButtonClickObserve.ThrottleFirst(TimeSpan.FromSeconds(.3f)).Subscribe(_ => | ||||||
|                     { |                     { | ||||||
|                         LocalCacheManager.Save(CornFieldReinforcementDataTypeTag, upgradeType); |                         LocalCacheManager.Save(CornFieldReinforcementDataTypeTag, upgradeType); | ||||||
|                         LocalCacheManager.Save(CornFieldReinforcementDataTag, (lineData, price, new Action(() => { |                         LocalCacheManager.Save(CornFieldReinforcementDataTag, (lineData, price, new Action(() => { | ||||||
|  | @ -71,7 +71,7 @@ public class CornFieldReinforcement : MonoBehaviour | ||||||
|                 view.SetButtonActive(price <= CoinManager.Instance.OwnCoin); |                 view.SetButtonActive(price <= CoinManager.Instance.OwnCoin); | ||||||
|                 view.SetRelease(price); |                 view.SetRelease(price); | ||||||
|                 // 購入ボタン |                 // 購入ボタン | ||||||
|                 view.ButtonClickObserve.Subscribe(_ => |                 view.ButtonClickObserve.ThrottleFirst(TimeSpan.FromSeconds(.3f)).Subscribe(_ => | ||||||
|                 { |                 { | ||||||
|                     LocalCacheManager.Save(CornFieldReinforcementDataTypeTag, upgradeType); |                     LocalCacheManager.Save(CornFieldReinforcementDataTypeTag, upgradeType); | ||||||
|                     LocalCacheManager.Save(CornFieldReinforcementDataTag, (lineData = null, price, new Action(() => { |                     LocalCacheManager.Save(CornFieldReinforcementDataTag, (lineData = null, price, new Action(() => { | ||||||
|  | @ -97,7 +97,7 @@ public class CornFieldReinforcement : MonoBehaviour | ||||||
|             machineUpgradeView.SetButtonActive(price <= CoinManager.Instance.OwnCoin); |             machineUpgradeView.SetButtonActive(price <= CoinManager.Instance.OwnCoin); | ||||||
|             machineUpgradeView.SetData(gameData.MachineLevel, price); |             machineUpgradeView.SetData(gameData.MachineLevel, price); | ||||||
|             // 購入ボタン |             // 購入ボタン | ||||||
|             machineUpgradeView.ButtonClickObserve.Subscribe(_ => |             machineUpgradeView.ButtonClickObserve.ThrottleFirst(TimeSpan.FromSeconds(.3f)).Subscribe(_ => | ||||||
|             { |             { | ||||||
|                 LocalCacheManager.Save(CornFieldReinforcementDataTypeTag, CornFieldUpgradeType.Machine); |                 LocalCacheManager.Save(CornFieldReinforcementDataTypeTag, CornFieldUpgradeType.Machine); | ||||||
|                 LocalCacheManager.Save(CornFieldReinforcementDataTag, (gameData.MachineLevel, price, new Action(() => { |                 LocalCacheManager.Save(CornFieldReinforcementDataTag, (gameData.MachineLevel, price, new Action(() => { | ||||||
|  |  | ||||||
|  | @ -55,7 +55,7 @@ public class CornFieldReinforcementDetailView : MonoBehaviour | ||||||
|             default: |             default: | ||||||
|                 throw new ArgumentOutOfRangeException(); |                 throw new ArgumentOutOfRangeException(); | ||||||
|         } |         } | ||||||
|         closeButton.OnClickAsObservable().Subscribe(_ => |         closeButton.OnClickAsObservable().Take(1).Subscribe(_ => | ||||||
|         { |         { | ||||||
|             transform.SetLocalScale(0); |             transform.SetLocalScale(0); | ||||||
|             backgroundAnimator.SetTrigger(CloseTrigger); |             backgroundAnimator.SetTrigger(CloseTrigger); | ||||||
|  | @ -66,8 +66,11 @@ public class CornFieldReinforcementDetailView : MonoBehaviour | ||||||
|         }).AddTo(this); |         }).AddTo(this); | ||||||
|         purchaseButton.OnClickAsObservable() |         purchaseButton.OnClickAsObservable() | ||||||
|             .Merge(releaseButton.OnClickAsObservable()) |             .Merge(releaseButton.OnClickAsObservable()) | ||||||
|             .Subscribe(_ => |             .Take(1) | ||||||
|  |             .Subscribe(_ => { }, () => | ||||||
|             { |             { | ||||||
|  |                 purchaseButton.interactable = false; | ||||||
|  |                 releaseButton.interactable = false; | ||||||
|                 // 購入処理 |                 // 購入処理 | ||||||
|                 callback?.Invoke(); |                 callback?.Invoke(); | ||||||
|                 transform.SetLocalScale(0); |                 transform.SetLocalScale(0); | ||||||
|  |  | ||||||
|  | @ -10,6 +10,7 @@ GameObject: | ||||||
|   m_Component: |   m_Component: | ||||||
|   - component: {fileID: 9117079084301130545} |   - component: {fileID: 9117079084301130545} | ||||||
|   - component: {fileID: 9117079084301130544} |   - component: {fileID: 9117079084301130544} | ||||||
|  |   - component: {fileID: 8528884583953186477} | ||||||
|   m_Layer: 5 |   m_Layer: 5 | ||||||
|   m_Name: UICamera |   m_Name: UICamera | ||||||
|   m_TagString: Untagged |   m_TagString: Untagged | ||||||
|  | @ -74,3 +75,15 @@ Camera: | ||||||
|   m_OcclusionCulling: 0 |   m_OcclusionCulling: 0 | ||||||
|   m_StereoConvergence: 10 |   m_StereoConvergence: 10 | ||||||
|   m_StereoSeparation: 0.022 |   m_StereoSeparation: 0.022 | ||||||
|  | --- !u!114 &8528884583953186477 | ||||||
|  | MonoBehaviour: | ||||||
|  |   m_ObjectHideFlags: 0 | ||||||
|  |   m_CorrespondingSourceObject: {fileID: 0} | ||||||
|  |   m_PrefabInstance: {fileID: 0} | ||||||
|  |   m_PrefabAsset: {fileID: 0} | ||||||
|  |   m_GameObject: {fileID: 9117079084301130547} | ||||||
|  |   m_Enabled: 1 | ||||||
|  |   m_EditorHideFlags: 0 | ||||||
|  |   m_Script: {fileID: 11500000, guid: c11194ed6fd84a1f812fa2cfae75f873, type: 3} | ||||||
|  |   m_Name:  | ||||||
|  |   m_EditorClassIdentifier:  | ||||||
|  |  | ||||||
|  | @ -35,7 +35,7 @@ public class BulkOrder : MonoBehaviour | ||||||
| 
 | 
 | ||||||
|     private void Start() |     private void Start() | ||||||
|     { |     { | ||||||
|         closeButton.OnClickAsObservable().Subscribe(_ => |         closeButton.OnClickAsObservable().Take(1).Subscribe(_ => | ||||||
|         { |         { | ||||||
|             transform.parent.SetLocalScale(0); |             transform.parent.SetLocalScale(0); | ||||||
|             backgroundAnimator.SetTrigger(CloseTrigger); |             backgroundAnimator.SetTrigger(CloseTrigger); | ||||||
|  |  | ||||||
|  | @ -32,7 +32,7 @@ public class BulkOrderAchievedView : MonoBehaviour | ||||||
|             messageText.text = messageList.First(data => data.id == gameData.OrderTextId).thanksText; |             messageText.text = messageList.First(data => data.id == gameData.OrderTextId).thanksText; | ||||||
|             orderCharacterImage.sprite = bulkOrderCharacter.GetThanksIcon(gameData.OrderIconIndex); |             orderCharacterImage.sprite = bulkOrderCharacter.GetThanksIcon(gameData.OrderIconIndex); | ||||||
|         } |         } | ||||||
|         closeButton.OnClickAsObservable().Subscribe(_ => |         closeButton.OnClickAsObservable().Take(1).Subscribe(_ => | ||||||
|         { |         { | ||||||
|             if (LocalCacheManager.Load<Action>(BulkOrder.AchievedCallbackTag, null) is Action callback) |             if (LocalCacheManager.Load<Action>(BulkOrder.AchievedCallbackTag, null) is Action callback) | ||||||
|             { |             { | ||||||
|  |  | ||||||
|  | @ -21,7 +21,7 @@ public class BulkOrderCancelView : MonoBehaviour | ||||||
|             coinText.text = orderData.rewardCoin.ToString(); |             coinText.text = orderData.rewardCoin.ToString(); | ||||||
|             heartText.text = orderData.rewardHeart.ToString(); |             heartText.text = orderData.rewardHeart.ToString(); | ||||||
|         } |         } | ||||||
|         closeButton.OnClickAsObservable().Subscribe(_ => |         closeButton.OnClickAsObservable().Take(1).Subscribe(_ => | ||||||
|         { |         { | ||||||
|             transform.parent.SetLocalScale(0); |             transform.parent.SetLocalScale(0); | ||||||
|             backgroundAnimator.SetTrigger(CloseTrigger); |             backgroundAnimator.SetTrigger(CloseTrigger); | ||||||
|  | @ -30,7 +30,7 @@ public class BulkOrderCancelView : MonoBehaviour | ||||||
|                 TransitionManager.Instance.UnloadScene(GameScenes.BulkOrderCancel); |                 TransitionManager.Instance.UnloadScene(GameScenes.BulkOrderCancel); | ||||||
|             }); |             }); | ||||||
|         }).AddTo(this); |         }).AddTo(this); | ||||||
|         cancelButton.OnClickAsObservable().Subscribe(_ => |         cancelButton.OnClickAsObservable().Take(1).Subscribe(_ => | ||||||
|         { |         { | ||||||
|             if (LocalCacheManager.Load<Action>(BulkOrder.CancelCallbackTag, null) is Action callback) |             if (LocalCacheManager.Load<Action>(BulkOrder.CancelCallbackTag, null) is Action callback) | ||||||
|             { |             { | ||||||
|  |  | ||||||
|  | @ -64,7 +64,7 @@ public class BulkOrderNotifyView : MonoBehaviour | ||||||
|                 itemView3.SetActive(false); |                 itemView3.SetActive(false); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         closeButton.OnClickAsObservable().Subscribe(_ => |         closeButton.OnClickAsObservable().Take(1).Subscribe(_ => | ||||||
|         { |         { | ||||||
|             transform.parent.SetLocalScale(0); |             transform.parent.SetLocalScale(0); | ||||||
|             backgroundAnimator.SetTrigger(CloseTrigger); |             backgroundAnimator.SetTrigger(CloseTrigger); | ||||||
|  |  | ||||||
|  | @ -43,7 +43,7 @@ public class Information : MonoBehaviour | ||||||
| 
 | 
 | ||||||
|     private void Start() |     private void Start() | ||||||
|     { |     { | ||||||
|         closeButton.OnClickAsObservable().Subscribe(_ => |         closeButton.OnClickAsObservable().Take(1).Subscribe(_ => | ||||||
|         { |         { | ||||||
|             transform.SetLocalScale(0); |             transform.SetLocalScale(0); | ||||||
|             backgroundAnimator.SetTrigger(CloseTrigger); |             backgroundAnimator.SetTrigger(CloseTrigger); | ||||||
|  |  | ||||||
|  | @ -23,7 +23,8 @@ public class KitchenManager : MonoBehaviour | ||||||
|     void Start() |     void Start() | ||||||
|     { |     { | ||||||
|          |          | ||||||
|         SoundManager.Instance.PlayBGM("bgm_Main"); |         // 実機でアプリ初回起動時にBGMならないの回避。1フレーム遅らせると鳴る | ||||||
|  |         Observable.NextFrame().Subscribe(_ => SoundManager.Instance.PlayBGM("bgm_Main")); | ||||||
|         var gameData = GameDataManager.GameData; |         var gameData = GameDataManager.GameData; | ||||||
|          |          | ||||||
|         // レシピの表示 |         // レシピの表示 | ||||||
|  |  | ||||||
|  | @ -18,7 +18,7 @@ public class MissionCompleteView : MonoBehaviour | ||||||
|     { |     { | ||||||
|         var (missionData, callback) = LocalCacheManager.Load< (MissionData, Action)>(MissionManager.MissionDataTag); |         var (missionData, callback) = LocalCacheManager.Load< (MissionData, Action)>(MissionManager.MissionDataTag); | ||||||
|         LocalCacheManager.Remove(MissionManager.MissionDataTag); |         LocalCacheManager.Remove(MissionManager.MissionDataTag); | ||||||
|         closeButton.OnClickAsObservable().Subscribe(_ => |         closeButton.OnClickAsObservable().Take(1).Subscribe(_ => | ||||||
|         { |         { | ||||||
|             callback?.Invoke(); |             callback?.Invoke(); | ||||||
|             transform.SetLocalScale(0); |             transform.SetLocalScale(0); | ||||||
|  |  | ||||||
|  | @ -22,7 +22,7 @@ public class MissionManager : MonoBehaviour | ||||||
| 
 | 
 | ||||||
|     private void Start() |     private void Start() | ||||||
|     { |     { | ||||||
|         closeButton.OnClickAsObservable().Subscribe(_ => |         closeButton.OnClickAsObservable().Take(1).Subscribe(_ => | ||||||
|         { |         { | ||||||
|             LocalCacheManager.Remove(MissionDataTag); |             LocalCacheManager.Remove(MissionDataTag); | ||||||
|             transform.SetLocalScale(0); |             transform.SetLocalScale(0); | ||||||
|  | @ -76,7 +76,7 @@ public class MissionManager : MonoBehaviour | ||||||
|             { |             { | ||||||
|                 count = gameData.dailyMissionIdArray.Length, |                 count = gameData.dailyMissionIdArray.Length, | ||||||
|                 reward = dailyMissionCompleteRewardCoin, |                 reward = dailyMissionCompleteRewardCoin, | ||||||
|                 text = "デイリーミッションすべて完了で達成", |                 text = "デイリーミッションを達成しよう", | ||||||
|                 category = (int)MissionCategory.Daily, |                 category = (int)MissionCategory.Daily, | ||||||
|             }; |             }; | ||||||
|             var progressValue = gameData.dailyMissionAchievedIdArray.Length; |             var progressValue = gameData.dailyMissionAchievedIdArray.Length; | ||||||
|  |  | ||||||
|  | @ -19,7 +19,7 @@ namespace MyGame.Scenes.Settings.Scripts | ||||||
| 
 | 
 | ||||||
|         private void Start() |         private void Start() | ||||||
|         { |         { | ||||||
|             closeButton.OnClickAsObservable().Subscribe(_ => |             closeButton.OnClickAsObservable().Take(1).Subscribe(_ => | ||||||
|             { |             { | ||||||
|                 SoundManager.Instance.SaveVolumeBGM(); |                 SoundManager.Instance.SaveVolumeBGM(); | ||||||
|                 SoundManager.Instance.SaveVolumeSE(); |                 SoundManager.Instance.SaveVolumeSE(); | ||||||
|  |  | ||||||
|  | @ -99,16 +99,17 @@ public class Market : SingletonMonoBehaviour<Market> | ||||||
|          |          | ||||||
|         // 購入リクエスト |         // 購入リクエスト | ||||||
|         var maxOrder = orderPosisionObject.transform.childCount; |         var maxOrder = orderPosisionObject.transform.childCount; | ||||||
|         orderSubject.Do(_ => { Debug.Log($"aa orderSubject");}) |         Observable.Merge( | ||||||
|             .Merge(waitCustomerList.ObserveAdd().AsUnitObservable().Do(_ => { Debug.Log($"aa waitCustomerListAdd");})) |                 orderSubject /*.Do(_ => { Debug.Log($"aa orderSubject");})*/, | ||||||
|             .Merge(shopState.Where(x => x == ShopState.Open).AsUnitObservable().Do(_ => { Debug.Log($"aa shopStateOpen");})) |                 waitCustomerList.ObserveAdd().AsUnitObservable() /*.Do(_ => { Debug.Log($"aa waitCustomerListAdd");})*/, | ||||||
|  |                 shopState.Where(x => x == ShopState.Open).AsUnitObservable() /*.Do(_ => { Debug.Log($"aa shopStateOpen");})*/ | ||||||
|  |             ) | ||||||
|             .BatchFrame() |             .BatchFrame() | ||||||
|             .Where(_ => waitCustomerList.Count > 0) |             .Where(_ => waitCustomerList.Count > 0) | ||||||
|             .SelectMany(_ => waitCustomerList.ToList().GetRange(0, Mathf.Min(maxOrder, waitCustomerList.Count))) |             .SelectMany(_ => waitCustomerList.ToList().GetRange(0, Mathf.Min(maxOrder, waitCustomerList.Count))) | ||||||
|             .Subscribe(customer => |             .Subscribe(customer => | ||||||
|             { |             { | ||||||
|                 var count = customerList.Count(x => x.State.Value == CustomerState.Order); |                 var count = customerList.Count(x => x.State.Value == CustomerState.Order); | ||||||
|                 Debug.Log($"aa order:{count} Request {Time.time} {customer.GetHashCode()}"); |  | ||||||
|                 if (count >= maxOrder) |                 if (count >= maxOrder) | ||||||
|                 { |                 { | ||||||
|                     // shopState.Value = ShopState.Busy; |                     // shopState.Value = ShopState.Busy; | ||||||
|  | @ -171,8 +172,17 @@ public class Market : SingletonMonoBehaviour<Market> | ||||||
|                 } |                 } | ||||||
|                 catch (Exception e) |                 catch (Exception e) | ||||||
|                 { |                 { | ||||||
|                     Debug.LogError($"d:{displayFlavors.Count}, {string.Join("", tmpOrders)}"); |                     Debug.LogError($"d:{displayFlavors.Count}, {string.Join("", tmpOrders)}" + | ||||||
|                     throw; |                                    $"\nshuffled:{shuffledOrder.Count}, maxNum:{shuffledOrder.Max()}"); | ||||||
|  |                     /* | ||||||
|  |                      * 例外握りつぶし | ||||||
|  |                      * 存在しないorderを引いたのでそのまま処理せず逃がす | ||||||
|  |                      */ | ||||||
|  |                     controller.CallWaitForSeconds(1.5f, () => | ||||||
|  |                     { | ||||||
|  |                         controller.ChangeCustomerState(CustomerState.Leave); | ||||||
|  |                     }); | ||||||
|  |                     dontBuyCustomerList.Add(controller); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|             foreach (var customerController in dontBuyCustomerList) |             foreach (var customerController in dontBuyCustomerList) | ||||||
|  | @ -470,9 +480,26 @@ public class Market : SingletonMonoBehaviour<Market> | ||||||
|         } |         } | ||||||
|         // 補充候補リスト |         // 補充候補リスト | ||||||
|         var orders = Enumerable.Range(0, shopStock.Count).Except(shuffledOrder).ToList(); |         var orders = Enumerable.Range(0, shopStock.Count).Except(shuffledOrder).ToList(); | ||||||
|         var refillList = orders.OrderBy(_ => Random.value).ToList(); |         var refillList = orders.GetRange(0, refillCount).OrderBy(_ => Random.value).ToList(); | ||||||
|         shuffledOrder.AddRange(refillList); |         shuffledOrder.AddRange(refillList); | ||||||
|         displayFlavors = shopStock.ToList(); |         try | ||||||
|  |         { | ||||||
|  |             if (displayFlavors.Count <= shopStock.Count) | ||||||
|  |             { | ||||||
|  |                 displayFlavors = shopStock.ToList(); | ||||||
|  |             } | ||||||
|  |             else | ||||||
|  |             { | ||||||
|  |                 for (int i = 0; i < refillList.Count; i++) | ||||||
|  |                 { | ||||||
|  |                     displayFlavors[refillList[i]] = shopStock[shopStock.Count - 1 - i]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         catch (Exception e) | ||||||
|  |         { | ||||||
|  |             throw; | ||||||
|  |         } | ||||||
|         return refillList; |         return refillList; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -83,7 +83,23 @@ public class MarketManager : MonoBehaviour | ||||||
|          |          | ||||||
|         productDataList = SpreadsheetDataManager.Instance.GetBaseDataList<ProductData>(Const.ProductDataSheet); |         productDataList = SpreadsheetDataManager.Instance.GetBaseDataList<ProductData>(Const.ProductDataSheet); | ||||||
|         stockView.SetStock(gameData.StorageTanks); |         stockView.SetStock(gameData.StorageTanks); | ||||||
|         var startStocks = market.ShuffledOrder.Select(x => (x, market.DisplayFlavors[x])).ToList(); |         List<(int, ProductStockData)> startStocks; | ||||||
|  |         try | ||||||
|  |         { | ||||||
|  |             startStocks = market.ShuffledOrder.Select(x => (x, market.DisplayFlavors[x])).ToList(); | ||||||
|  |         } | ||||||
|  |         catch (Exception e) | ||||||
|  |         { | ||||||
|  | #if UNITY_EDITOR | ||||||
|  |             Debug.LogError($"{market.ShuffledOrder.Count}, {market.DisplayFlavors.Count}"); | ||||||
|  | #endif | ||||||
|  |             /* | ||||||
|  |              * 例外握りつぶし | ||||||
|  |              */ | ||||||
|  |             startStocks = market.ShuffledOrder | ||||||
|  |                 .Where(x => x < market.DisplayFlavors.Count) | ||||||
|  |                 .Select(x => (x, market.DisplayFlavors[x])).ToList(); | ||||||
|  |         } | ||||||
|         cartView.Initialize(); |         cartView.Initialize(); | ||||||
|         cartView.SetStock(startStocks, false); |         cartView.SetStock(startStocks, false); | ||||||
|         BrotherPinkView.Instance.SetBrotherView(pinkTarget); |         BrotherPinkView.Instance.SetBrotherView(pinkTarget); | ||||||
|  |  | ||||||
|  | @ -24,7 +24,7 @@ public class ShopLevelUp : MonoBehaviour | ||||||
|         var shopLevel = LocalCacheManager.Load<int>(DataTag); |         var shopLevel = LocalCacheManager.Load<int>(DataTag); | ||||||
|         var scriptList = SpreadsheetDataManager.Instance.GetBaseDataList<BrotherScriptData>(Const.ScriptDataSheet); |         var scriptList = SpreadsheetDataManager.Instance.GetBaseDataList<BrotherScriptData>(Const.ScriptDataSheet); | ||||||
|         var targetScriptList = scriptList.Where(data => data.id == shopLevel).ToList(); |         var targetScriptList = scriptList.Where(data => data.id == shopLevel).ToList(); | ||||||
|         closeButton.OnClickAsObservable().Subscribe(_ => |         closeButton.OnClickAsObservable().Take(1).Subscribe(_ => | ||||||
|         { |         { | ||||||
|             transform.SetLocalScale(0); |             transform.SetLocalScale(0); | ||||||
|             backgroundAnimator.SetTrigger(CloseTrigger); |             backgroundAnimator.SetTrigger(CloseTrigger); | ||||||
|  |  | ||||||
|  | @ -26,7 +26,7 @@ public class TankDetailView : MonoBehaviour | ||||||
|     private void Start() |     private void Start() | ||||||
|     { |     { | ||||||
|         var data = LocalCacheManager.Load<(int tankNum, int totalStock, StorageTank tankData, ProductData productData, List<(ProductRarity rarity, int price, int stock)> raritySummaryData)>(TankDetailDataTag); |         var data = LocalCacheManager.Load<(int tankNum, int totalStock, StorageTank tankData, ProductData productData, List<(ProductRarity rarity, int price, int stock)> raritySummaryData)>(TankDetailDataTag); | ||||||
|         closeButton.OnClickAsObservable().Subscribe(_ => |         closeButton.OnClickAsObservable().Take(1).Subscribe(_ => | ||||||
|         { |         { | ||||||
|             transform.SetLocalScale(0); |             transform.SetLocalScale(0); | ||||||
|             backgroundAnimator.SetTrigger(CloseTrigger); |             backgroundAnimator.SetTrigger(CloseTrigger); | ||||||
|  |  | ||||||
|  | @ -25,7 +25,7 @@ public class TastingView : MonoBehaviour | ||||||
|             packageImageTarget.DestroyAllChildrens(); |             packageImageTarget.DestroyAllChildrens(); | ||||||
|             Instantiate(x.productData.GetIconPrefab(), packageImageTarget); |             Instantiate(x.productData.GetIconPrefab(), packageImageTarget); | ||||||
|         }).AddTo(this); |         }).AddTo(this); | ||||||
|         closeButton.OnClickAsObservable().Subscribe(_ => |         closeButton.OnClickAsObservable().Take(1).Subscribe(_ => | ||||||
|         { |         { | ||||||
|             backgroundAnimator.SetTrigger(CloseTrigger); |             backgroundAnimator.SetTrigger(CloseTrigger); | ||||||
|             this.CallWaitForSeconds(.5f, () => |             this.CallWaitForSeconds(.5f, () => | ||||||
|  | @ -34,7 +34,7 @@ public class TastingView : MonoBehaviour | ||||||
|                 TransitionManager.Instance.UnloadScene(GameScenes.Tasting); |                 TransitionManager.Instance.UnloadScene(GameScenes.Tasting); | ||||||
|             }); |             }); | ||||||
|         }).AddTo(this); |         }).AddTo(this); | ||||||
|         tastingButton.OnClickAsObservable().Subscribe(_ => |         tastingButton.OnClickAsObservable().ThrottleFirst(TimeSpan.FromSeconds(.3f)).Subscribe(_ => | ||||||
|         { |         { | ||||||
|             backgroundAnimator.SetTrigger(CloseTrigger); |             backgroundAnimator.SetTrigger(CloseTrigger); | ||||||
|             this.CallWaitForSeconds(.5f, () => |             this.CallWaitForSeconds(.5f, () => | ||||||
|  |  | ||||||
|  | @ -1064,6 +1064,7 @@ GameObject: | ||||||
|   - component: {fileID: 658354829} |   - component: {fileID: 658354829} | ||||||
|   - component: {fileID: 658354828} |   - component: {fileID: 658354828} | ||||||
|   - component: {fileID: 658354831} |   - component: {fileID: 658354831} | ||||||
|  |   - component: {fileID: 658354832} | ||||||
|   m_Layer: 0 |   m_Layer: 0 | ||||||
|   m_Name: Main Camera |   m_Name: Main Camera | ||||||
|   m_TagString: MainCamera |   m_TagString: MainCamera | ||||||
|  | @ -1110,7 +1111,7 @@ Camera: | ||||||
|   m_Depth: -1 |   m_Depth: -1 | ||||||
|   m_CullingMask: |   m_CullingMask: | ||||||
|     serializedVersion: 2 |     serializedVersion: 2 | ||||||
|     m_Bits: 4294967295 |     m_Bits: 23 | ||||||
|   m_RenderingPath: -1 |   m_RenderingPath: -1 | ||||||
|   m_TargetTexture: {fileID: 0} |   m_TargetTexture: {fileID: 0} | ||||||
|   m_TargetDisplay: 0 |   m_TargetDisplay: 0 | ||||||
|  | @ -1152,6 +1153,18 @@ MonoBehaviour: | ||||||
|     serializedVersion: 2 |     serializedVersion: 2 | ||||||
|     m_Bits: 4294967295 |     m_Bits: 4294967295 | ||||||
|   m_MaxRayIntersections: 0 |   m_MaxRayIntersections: 0 | ||||||
|  | --- !u!114 &658354832 | ||||||
|  | MonoBehaviour: | ||||||
|  |   m_ObjectHideFlags: 0 | ||||||
|  |   m_CorrespondingSourceObject: {fileID: 0} | ||||||
|  |   m_PrefabInstance: {fileID: 0} | ||||||
|  |   m_PrefabAsset: {fileID: 0} | ||||||
|  |   m_GameObject: {fileID: 658354827} | ||||||
|  |   m_Enabled: 1 | ||||||
|  |   m_EditorHideFlags: 0 | ||||||
|  |   m_Script: {fileID: 11500000, guid: c11194ed6fd84a1f812fa2cfae75f873, type: 3} | ||||||
|  |   m_Name:  | ||||||
|  |   m_EditorClassIdentifier:  | ||||||
| --- !u!1 &658817260 | --- !u!1 &658817260 | ||||||
| GameObject: | GameObject: | ||||||
|   m_ObjectHideFlags: 0 |   m_ObjectHideFlags: 0 | ||||||
|  | @ -1636,7 +1649,7 @@ PrefabInstance: | ||||||
|     - target: {fileID: 4293843006989820480, guid: 1c993e9707f1a4fada56020be27dde28, |     - target: {fileID: 4293843006989820480, guid: 1c993e9707f1a4fada56020be27dde28, | ||||||
|         type: 3} |         type: 3} | ||||||
|       propertyPath: m_SizeDelta.y |       propertyPath: m_SizeDelta.y | ||||||
|       value: 0 |       value: 400 | ||||||
|       objectReference: {fileID: 0} |       objectReference: {fileID: 0} | ||||||
|     - target: {fileID: 4293843006989820480, guid: 1c993e9707f1a4fada56020be27dde28, |     - target: {fileID: 4293843006989820480, guid: 1c993e9707f1a4fada56020be27dde28, | ||||||
|         type: 3} |         type: 3} | ||||||
|  | @ -1736,7 +1749,7 @@ PrefabInstance: | ||||||
|     - target: {fileID: 4293843007976718249, guid: 1c993e9707f1a4fada56020be27dde28, |     - target: {fileID: 4293843007976718249, guid: 1c993e9707f1a4fada56020be27dde28, | ||||||
|         type: 3} |         type: 3} | ||||||
|       propertyPath: m_SizeDelta.y |       propertyPath: m_SizeDelta.y | ||||||
|       value: -653.7666 |       value: -1063.2974 | ||||||
|       objectReference: {fileID: 0} |       objectReference: {fileID: 0} | ||||||
|     - target: {fileID: 4293843007976718249, guid: 1c993e9707f1a4fada56020be27dde28, |     - target: {fileID: 4293843007976718249, guid: 1c993e9707f1a4fada56020be27dde28, | ||||||
|         type: 3} |         type: 3} | ||||||
|  | @ -1746,7 +1759,7 @@ PrefabInstance: | ||||||
|     - target: {fileID: 4293843007976718249, guid: 1c993e9707f1a4fada56020be27dde28, |     - target: {fileID: 4293843007976718249, guid: 1c993e9707f1a4fada56020be27dde28, | ||||||
|         type: 3} |         type: 3} | ||||||
|       propertyPath: m_AnchoredPosition.y |       propertyPath: m_AnchoredPosition.y | ||||||
|       value: 58.699707 |       value: 58.69995 | ||||||
|       objectReference: {fileID: 0} |       objectReference: {fileID: 0} | ||||||
|     m_RemovedComponents: [] |     m_RemovedComponents: [] | ||||||
|   m_SourcePrefab: {fileID: 100100000, guid: 1c993e9707f1a4fada56020be27dde28, type: 3} |   m_SourcePrefab: {fileID: 100100000, guid: 1c993e9707f1a4fada56020be27dde28, type: 3} | ||||||
|  |  | ||||||
|  | @ -65,7 +65,7 @@ public class RecipeDetailView : MonoBehaviour | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|          |          | ||||||
|         cancelButton.OnClickAsObservable().Subscribe(_ => |         cancelButton.OnClickAsObservable().Take(1).Subscribe(_ => | ||||||
|         { |         { | ||||||
|             transform.parent.SetLocalScale(0); |             transform.parent.SetLocalScale(0); | ||||||
|             backgroundAnimator.SetTrigger(CloseTrigger); |             backgroundAnimator.SetTrigger(CloseTrigger); | ||||||
|  | @ -76,7 +76,7 @@ public class RecipeDetailView : MonoBehaviour | ||||||
|             }); |             }); | ||||||
|         }).AddTo(this); |         }).AddTo(this); | ||||||
|          |          | ||||||
|         nextButton.OnClickAsObservable().Subscribe(_ => |         nextButton.OnClickAsObservable().Take(1).Subscribe(_ => | ||||||
|         { |         { | ||||||
|             LocalCacheManager.Save(PopcornGameManager.PanDataTag, panSelector.SelectedPanData.Value); |             LocalCacheManager.Save(PopcornGameManager.PanDataTag, panSelector.SelectedPanData.Value); | ||||||
|             // 消費 |             // 消費 | ||||||
|  |  | ||||||
|  | @ -21,7 +21,7 @@ public class RecipeSelectDialog : MonoBehaviour | ||||||
|     void Start() |     void Start() | ||||||
|     { |     { | ||||||
|         var gameData = GameDataManager.GameData; |         var gameData = GameDataManager.GameData; | ||||||
|         closeButton.OnClickAsObservable().Subscribe(_ => |         closeButton.OnClickAsObservable().Take(1).Subscribe(_ => | ||||||
|         { |         { | ||||||
|             transform.SetLocalScale(0); |             transform.SetLocalScale(0); | ||||||
|             backgroundAnimator.SetTrigger(CloseTrigger); |             backgroundAnimator.SetTrigger(CloseTrigger); | ||||||
|  | @ -56,7 +56,7 @@ public class RecipeSelectDialog : MonoBehaviour | ||||||
|             if (hasRecipe) |             if (hasRecipe) | ||||||
|             { |             { | ||||||
|                 view.SetLockPanel(false); |                 view.SetLockPanel(false); | ||||||
|                 view.RecipeClickObservable.Subscribe(_ => |                 view.RecipeClickObservable.ThrottleFirst(TimeSpan.FromSeconds(.3f)).Subscribe(_ => | ||||||
|                 { |                 { | ||||||
|                     LocalCacheManager.Save(PopcornGameManager.CookingDataTag, productData); |                     LocalCacheManager.Save(PopcornGameManager.CookingDataTag, productData); | ||||||
|                     RecipeDetailView.ShowDialog(() => |                     RecipeDetailView.ShowDialog(() => | ||||||
|  |  | ||||||
|  | @ -133,6 +133,16 @@ PrefabInstance: | ||||||
|       propertyPath: m_AnchoredPosition.y |       propertyPath: m_AnchoredPosition.y | ||||||
|       value: 50 |       value: 50 | ||||||
|       objectReference: {fileID: 0} |       objectReference: {fileID: 0} | ||||||
|  |     - target: {fileID: 9133304335268316946, guid: 3ea48dc60c16147799619e2fb9fe1cd9, | ||||||
|  |         type: 3} | ||||||
|  |       propertyPath: m_Transition | ||||||
|  |       value: 0 | ||||||
|  |       objectReference: {fileID: 0} | ||||||
|  |     - target: {fileID: 9133304335268316946, guid: 3ea48dc60c16147799619e2fb9fe1cd9, | ||||||
|  |         type: 3} | ||||||
|  |       propertyPath: m_Interactable | ||||||
|  |       value: 1 | ||||||
|  |       objectReference: {fileID: 0} | ||||||
|     - target: {fileID: 9133304335334808081, guid: 3ea48dc60c16147799619e2fb9fe1cd9, |     - target: {fileID: 9133304335334808081, guid: 3ea48dc60c16147799619e2fb9fe1cd9, | ||||||
|         type: 3} |         type: 3} | ||||||
|       propertyPath: m_AnchoredPosition.x |       propertyPath: m_AnchoredPosition.x | ||||||
|  |  | ||||||
|  | @ -19,7 +19,7 @@ public class ShopItemDetailView : MonoBehaviour | ||||||
|     { |     { | ||||||
|         var data = LocalCacheManager.Load<ShopData>(ItemDetailTag); |         var data = LocalCacheManager.Load<ShopData>(ItemDetailTag); | ||||||
|         SetData(data); |         SetData(data); | ||||||
|         closeButton.OnClickAsObservable().Subscribe(_ => |         closeButton.OnClickAsObservable().Take(1).Subscribe(_ => | ||||||
|         { |         { | ||||||
|             transform.SetLocalScale(0); |             transform.SetLocalScale(0); | ||||||
|             backgroundAnimator.SetTrigger(CloseTrigger); |             backgroundAnimator.SetTrigger(CloseTrigger); | ||||||
|  |  | ||||||
|  | @ -43,7 +43,7 @@ public class ShopItemPurchaseView : MonoBehaviour | ||||||
|         var data = LocalCacheManager.Load<(ShopData shopData, int stockCount)>(ItemPurchaseTag); |         var data = LocalCacheManager.Load<(ShopData shopData, int stockCount)>(ItemPurchaseTag); | ||||||
|         LocalCacheManager.Remove(ItemPurchaseTag); |         LocalCacheManager.Remove(ItemPurchaseTag); | ||||||
|         SetData(data.shopData, data.stockCount); |         SetData(data.shopData, data.stockCount); | ||||||
|         closeButton.OnClickAsObservable().Subscribe(_ => |         closeButton.OnClickAsObservable().Take(1).Subscribe(_ => | ||||||
|         { |         { | ||||||
|             LocalCacheManager.Load<Action>(CloseCallbackTag, null)?.Invoke(); |             LocalCacheManager.Load<Action>(CloseCallbackTag, null)?.Invoke(); | ||||||
|             transform.SetLocalScale(0); |             transform.SetLocalScale(0); | ||||||
|  | @ -53,8 +53,9 @@ public class ShopItemPurchaseView : MonoBehaviour | ||||||
|                 TransitionManager.Instance.UnloadScene(GameScenes.Purchase); |                 TransitionManager.Instance.UnloadScene(GameScenes.Purchase); | ||||||
|             }); |             }); | ||||||
|         }).AddTo(this); |         }).AddTo(this); | ||||||
|         purchaseOnButton.OnClickAsObservable().Subscribe(_ => |         purchaseOnButton.OnClickAsObservable().Take(1).Subscribe(_ => | ||||||
|         { |         { | ||||||
|  |             purchaseOnButton.interactable = false; | ||||||
|             LocalCacheManager.Load<Action<int>>(PurchaseCallbackTag, null)?.Invoke(currentCount.Value); |             LocalCacheManager.Load<Action<int>>(PurchaseCallbackTag, null)?.Invoke(currentCount.Value); | ||||||
|             transform.SetLocalScale(0); |             transform.SetLocalScale(0); | ||||||
|             backgroundAnimator.SetTrigger(CloseTrigger); |             backgroundAnimator.SetTrigger(CloseTrigger); | ||||||
|  |  | ||||||
|  | @ -57,6 +57,7 @@ public class Shopping : MonoBehaviour | ||||||
|             }).AddTo(itemView); |             }).AddTo(itemView); | ||||||
|             // アイテム購入クリック購読 |             // アイテム購入クリック購読 | ||||||
|             itemView.PurchaseButtonObservable |             itemView.PurchaseButtonObservable | ||||||
|  |                 .ThrottleFirst(TimeSpan.FromSeconds(.3f)) | ||||||
|                 .Where(_ => shopData.price <= CoinManager.Instance.OwnCoin) |                 .Where(_ => shopData.price <= CoinManager.Instance.OwnCoin) | ||||||
|                 .Subscribe(_ => |                 .Subscribe(_ => | ||||||
|                 { |                 { | ||||||
|  | @ -77,7 +78,7 @@ public class Shopping : MonoBehaviour | ||||||
|                     }); |                     }); | ||||||
|                 }).AddTo(itemView); |                 }).AddTo(itemView); | ||||||
|             // show detail view |             // show detail view | ||||||
|             itemView.DetailButtonObservable.Subscribe(_ => |             itemView.DetailButtonObservable.ThrottleFirst(TimeSpan.FromSeconds(.3f)).Subscribe(_ => | ||||||
|             { |             { | ||||||
|                 LocalCacheManager.Save(ShopItemDetailView.ItemDetailTag, shopData); |                 LocalCacheManager.Save(ShopItemDetailView.ItemDetailTag, shopData); | ||||||
|                 TransitionManager.Instance.LoadSceneAdditive(GameScenes.ShoppingExplanation); |                 TransitionManager.Instance.LoadSceneAdditive(GameScenes.ShoppingExplanation); | ||||||
|  |  | ||||||
|  | @ -16,6 +16,7 @@ public sealed class ApplicationExitConfirmDialogManager : MonoBehaviour | ||||||
|     { |     { | ||||||
|         backButton.OnClickAsObservable() |         backButton.OnClickAsObservable() | ||||||
|             .Merge(closeButton.OnClickAsObservable()) |             .Merge(closeButton.OnClickAsObservable()) | ||||||
|  |             .Take(1) | ||||||
|             .Subscribe(_ => |             .Subscribe(_ => | ||||||
|             { |             { | ||||||
|                 transform.parent.SetLocalScale(0); |                 transform.parent.SetLocalScale(0); | ||||||
|  |  | ||||||
|  | @ -33,6 +33,9 @@ namespace MyGame.Scripts | ||||||
|                 case GameScenes.Main: |                 case GameScenes.Main: | ||||||
|                     camera.orthographicSize = 14f; |                     camera.orthographicSize = 14f; | ||||||
|                     break; |                     break; | ||||||
|  |                 case GameScenes.marketing: | ||||||
|  |                     camera.orthographicSize = 13.5f; | ||||||
|  |                     break; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | @ -7,58 +7,143 @@ using UnityEngine; | ||||||
| public class GameDataObserver : SingletonMonoBehaviour<GameDataObserver> | public class GameDataObserver : SingletonMonoBehaviour<GameDataObserver> | ||||||
| { | { | ||||||
|     [SerializeField] private FloatReactiveProperty checkInterval = new FloatReactiveProperty(.1f); |     [SerializeField] private FloatReactiveProperty checkInterval = new FloatReactiveProperty(.1f); | ||||||
|     private IObservable<int> heartObserver; |     private readonly Subject<int> heartObserver = new Subject<int>(); | ||||||
|     public IObservable<int> Heart => heartObserver; |     private readonly Subject<int> sceneCounter = new Subject<int>(); | ||||||
|  |     private readonly Subject<int> shopLevelObserver = new Subject<int>(); | ||||||
|  |     private readonly Subject<int> achievedMissionObserver = new Subject<int>(); | ||||||
|  |     private readonly Subject<int> addCoinObserver = new Subject<int>(); | ||||||
|  |     private readonly Subject<int> subCoinObserver = new Subject<int>(); | ||||||
|  |     private readonly Subject<int> addCornObserver = new Subject<int>(); | ||||||
|  |     private readonly Subject<int> addCustomerObserver = new Subject<int>(); | ||||||
|  |     private readonly Subject<int> addSalesObserver = new Subject<int>(); | ||||||
|  |     private readonly Subject<int> addRareSalesObserver = new Subject<int>(); | ||||||
|  |     private readonly Subject<int> hasRecipeObserver = new Subject<int>(); | ||||||
|  |     private readonly Subject<int> deliveredBulkOrderObserver = new Subject<int>(); | ||||||
|  |     private readonly BoolReactiveProperty updateMissionAchieved = new BoolReactiveProperty(); | ||||||
|  |     public IReadOnlyReactiveProperty<bool> UpdateMissionAchieved => updateMissionAchieved; | ||||||
| 
 | 
 | ||||||
|     private IObservable<int> sceneCounter; |     public IObservable<bool> ShopLevelUpdate { get; private set; } | ||||||
|     public IObservable<int> SceneCounter => sceneCounter; |  | ||||||
|      |  | ||||||
|     public IObservable<bool> ShopLevelUpdate; |  | ||||||
| 
 | 
 | ||||||
|     private void Start() |     private void Start() | ||||||
|     { |     { | ||||||
|         checkInterval.AddTo(this); |         checkInterval.AddTo(this); | ||||||
|  |         updateMissionAchieved.AddTo(this); | ||||||
|         var levelList = SpreadsheetDataManager.Instance.GetBaseDataList<ShopLevelData>(Const.ShopLevelDataSheet); |         var levelList = SpreadsheetDataManager.Instance.GetBaseDataList<ShopLevelData>(Const.ShopLevelDataSheet); | ||||||
|         heartObserver = checkInterval |         checkInterval.Select(x => Observable.Interval(TimeSpan.FromSeconds(x))).Switch().Subscribe(_ => | ||||||
|             .Select(x => |         { | ||||||
|                 Observable.Interval(TimeSpan.FromSeconds(x)) |             var gameData = GameDataManager.GameData; | ||||||
|                     .Select(_ => GameDataManager.GameData.Heart) |             heartObserver.OnNext(gameData.Heart); | ||||||
|                     .DistinctUntilChanged()) |             sceneCounter.OnNext(UnityEngine.SceneManagement.SceneManager.sceneCount); | ||||||
|             .Switch(); |             shopLevelObserver.OnNext(gameData.ViewedShopLevel); | ||||||
|          |             achievedMissionObserver.OnNext(gameData.AchievedMission.Count); | ||||||
|         var shopLevelObserver = checkInterval |             // addCoinObserver.OnNext(gameData.TotalAddCoin); | ||||||
|             .Select(x => |             subCoinObserver.OnNext(gameData.TotalSubCoin); | ||||||
|                 Observable.Interval(TimeSpan.FromSeconds(x)) |             addCornObserver.OnNext(gameData.TotalAddCornSeed); | ||||||
|                     .Select(_ => GameDataManager.GameData.ViewedShopLevel) |             addCustomerObserver.OnNext(gameData.TotalCustomerCount); | ||||||
|                     .DistinctUntilChanged()) |             addSalesObserver.OnNext(gameData.TotalSales); | ||||||
|             .Switch(); |             addRareSalesObserver.OnNext(gameData.RareTotalSales); | ||||||
|  |             hasRecipeObserver.OnNext(gameData.MyRecipes.Length); | ||||||
|  |             deliveredBulkOrderObserver.OnNext(gameData.BulkOrderDeliveredCount); | ||||||
|  |         }).AddTo(this); | ||||||
| 
 | 
 | ||||||
|         sceneCounter = checkInterval |         ShopLevelUpdate = Observable.CombineLatest( | ||||||
|             .Select(x => |                 heartObserver.DistinctUntilChanged(), | ||||||
|                 Observable.Interval(TimeSpan.FromSeconds(x)) |                 sceneCounter.DistinctUntilChanged().Delay(TimeSpan.FromSeconds(.4f)), | ||||||
|                     .Select(_ => UnityEngine.SceneManagement.SceneManager.sceneCount) |                 (heart, sceneCount) => | ||||||
|                     .DistinctUntilChanged() |  | ||||||
|                     .Delay(TimeSpan.FromSeconds(.4f)) |  | ||||||
|                     // .Do(c => { Debug.Log($"sceneCount:{c}");}) |  | ||||||
|                 ) |  | ||||||
|             .Switch(); |  | ||||||
|          |  | ||||||
|         ShopLevelUpdate = Observable.CombineLatest(heartObserver, shopLevelObserver, sceneCounter, |  | ||||||
|             (heart, level, sceneCount) => |  | ||||||
|             { |  | ||||||
|                 if (level == 0 && GameDataManager.GameData.isFirstPlay) |  | ||||||
|                 { |                 { | ||||||
|                     return false; |                     var viewedLevel = GameDataManager.GameData.ViewedShopLevel; | ||||||
|                 } |                     if (viewedLevel == 0 && GameDataManager.GameData.isFirstPlay) | ||||||
|                 var currentLevel = levelList.LastOrDefault(data => data.heart <= heart)?.shopLevel ?? 1; |                     { | ||||||
|                 return currentLevel > level && sceneCount == 1; |                         return false; | ||||||
|             }) |                     } | ||||||
|  |                     var currentLevel = levelList.LastOrDefault(data => data.heart <= heart)?.shopLevel ?? 1; | ||||||
|  |                     return currentLevel > viewedLevel && sceneCount == 1; | ||||||
|  |                 }) | ||||||
|             .DistinctUntilChanged() |             .DistinctUntilChanged() | ||||||
|             .Publish(false) |             .Publish(false) | ||||||
|             .RefCount(); |             .RefCount(); | ||||||
| #if UNITY_EDITOR | #if UNITY_EDITOR | ||||||
|         // ShopLevelUpdate.Subscribe(x => { Debug.Log($"change:{x}"); }); |         // ShopLevelUpdate.Subscribe(x => { Debug.Log($"change:{x}"); }); | ||||||
| #endif | #endif | ||||||
|  |          | ||||||
|  |         // ミッション達成チェッカー | ||||||
|  |         var missionList = SpreadsheetDataManager.Instance.GetBaseDataList<MissionData>(Const.MissionDataSheet); | ||||||
|  |         var normalMissionList = missionList.Where(data => data.Category == MissionCategory.Normal).ToList(); | ||||||
|  |         var latestMissionList = GetLatestMissionList(); | ||||||
|  |         // 各条件の最前の未達成のミッションのみにフィルタ | ||||||
|  |         List<MissionData> GetLatestMissionList() => normalMissionList | ||||||
|  |             .Where(data => data.shopLevel <= GameDataManager.GameData.ViewedShopLevel) | ||||||
|  |             .Where(data => !GameDataManager.GameData.AchievedMission.Contains(data.id)) | ||||||
|  |             .GroupBy(data => data.Condition, (_, list) => list.FirstOrDefault()).ToList(); | ||||||
|  |         // 店舗レベルアップorミッション達成でリスト更新して達成チェック | ||||||
|  |         Observable.Merge( | ||||||
|  |             shopLevelObserver.DistinctUntilChanged(), | ||||||
|  |             achievedMissionObserver.DistinctUntilChanged()) | ||||||
|  |             .Subscribe(_ => | ||||||
|  |             { | ||||||
|  |                 latestMissionList = GetLatestMissionList(); | ||||||
|  |                 // ここで達成を再確認 | ||||||
|  |                 updateMissionAchieved.Value = latestMissionList | ||||||
|  |                     .Any(data => data.count <= MissionManager.GetProgressValue(data)); | ||||||
|  |                  | ||||||
|  |                 // CheckDailyCompleteMission | ||||||
|  |                 if (!GameDataManager.GameData.dailyMissionCompleted) | ||||||
|  |                 { | ||||||
|  |                     if (GameDataManager.GameData.dailyMissionIdArray.Length <= GameDataManager.GameData.dailyMissionAchievedIdArray.Length) | ||||||
|  |                     { | ||||||
|  |                         updateMissionAchieved.Value = true; | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |             }); | ||||||
|  |          | ||||||
|  |         // 各種ポップコーン以外の達成を確認 | ||||||
|  |         Observable.Merge( | ||||||
|  |                 subCoinObserver.DistinctUntilChanged().Select(_ => MissionCondition.CoinConsumeCount), | ||||||
|  |                 addCornObserver.DistinctUntilChanged().Select(_ => MissionCondition.CornCount), | ||||||
|  |                 addCustomerObserver.DistinctUntilChanged().Select(_ => MissionCondition.CustomerCount), | ||||||
|  |                 hasRecipeObserver.DistinctUntilChanged().Select(_ => MissionCondition.RecipeCount), | ||||||
|  |                 deliveredBulkOrderObserver.DistinctUntilChanged().Select(_ => MissionCondition.BulkOrderDeliveredCount)) | ||||||
|  |             .Subscribe(condition => | ||||||
|  |             { | ||||||
|  |                 if (latestMissionList | ||||||
|  |                     .Where(data => data.Condition == condition) | ||||||
|  |                     .Any(data => data.count <= MissionManager.GetProgressValue(data))) | ||||||
|  |                 { | ||||||
|  |                     updateMissionAchieved.Value = true; | ||||||
|  |                 } | ||||||
|  |                  | ||||||
|  |                 // dailyMission | ||||||
|  |                 var ids = GameDataManager.GameData.dailyMissionIdArray.Except(GameDataManager.GameData.dailyMissionAchievedIdArray); | ||||||
|  |                 if (missionList | ||||||
|  |                     .Where(data => ids.Contains(data.id)) | ||||||
|  |                     .Any(missionData => missionData.count <= MissionManager.GetDailyProgressValue(missionData))) | ||||||
|  |                 { | ||||||
|  |                     updateMissionAchieved.Value = true; | ||||||
|  |                 } | ||||||
|  |             }); | ||||||
|  | 
 | ||||||
|  |         // ポップコーン達成確認 | ||||||
|  |         Observable.Merge( | ||||||
|  |                 addSalesObserver.DistinctUntilChanged(), | ||||||
|  |                 addRareSalesObserver.DistinctUntilChanged()) | ||||||
|  |             .Subscribe(_ => | ||||||
|  |             { | ||||||
|  |                 if (latestMissionList | ||||||
|  |                     .Any(data => data.count <= MissionManager.GetProgressValue(data))) | ||||||
|  |                 { | ||||||
|  |                     updateMissionAchieved.Value = true; | ||||||
|  |                 } | ||||||
|  |                  | ||||||
|  |                 // dailyMission | ||||||
|  |                 var ids = GameDataManager.GameData.dailyMissionIdArray.Except(GameDataManager.GameData.dailyMissionAchievedIdArray); | ||||||
|  |                 if (missionList | ||||||
|  |                     .Where(data => ids.Contains(data.id)) | ||||||
|  |                     .Any(missionData => missionData.count <= MissionManager.GetDailyProgressValue(missionData))) | ||||||
|  |                 { | ||||||
|  |                     updateMissionAchieved.Value = true; | ||||||
|  |                 } | ||||||
|  |             }); | ||||||
|  | 
 | ||||||
|         // デイリーミッション日付チェック |         // デイリーミッション日付チェック | ||||||
|         sceneCounter |         sceneCounter | ||||||
|             .Where(x => x <= 1) |             .Where(x => x <= 1) | ||||||
|  | @ -93,7 +178,6 @@ public class GameDataObserver : SingletonMonoBehaviour<GameDataObserver> | ||||||
|                 gameData.dailyMissionCompleted = false; |                 gameData.dailyMissionCompleted = false; | ||||||
|                 gameData.ResetDailyTotalCount(); |                 gameData.ResetDailyTotalCount(); | ||||||
|                 // 新ミッション登録 |                 // 新ミッション登録 | ||||||
|                 var missionList = SpreadsheetDataManager.Instance.GetBaseDataList<MissionData>(Const.MissionDataSheet); |  | ||||||
|                 var targetList = missionList.Where(data => |                 var targetList = missionList.Where(data => | ||||||
|                     data.Category == MissionCategory.Daily && data.shopLevel <= gameData.ViewedShopLevel); |                     data.Category == MissionCategory.Daily && data.shopLevel <= gameData.ViewedShopLevel); | ||||||
|                 gameData.dailyMissionIdArray = targetList.ToList().RandomChoose(3).Select(data => data.id).ToArray(); |                 gameData.dailyMissionIdArray = targetList.ToList().RandomChoose(3).Select(data => data.id).ToArray(); | ||||||
|  |  | ||||||
|  | @ -21,43 +21,16 @@ public class HeaderManager : MonoBehaviour | ||||||
|         }); |         }); | ||||||
|         missionButton.OnClickAsObservable().ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ => |         missionButton.OnClickAsObservable().ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ => | ||||||
|         { |         { | ||||||
|             MissionManager.ShowDialog(onAchieved:() => missionIndicator.SetActive(CheckMissionIndicate())); |             MissionManager.ShowDialog(); | ||||||
|         }); |         }); | ||||||
|         informationButton.OnClickAsObservable().ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ => |         informationButton.OnClickAsObservable().ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ => | ||||||
|         { |         { | ||||||
|             TransitionManager.Instance.LoadSceneAdditive(GameScenes.Information); |             TransitionManager.Instance.LoadSceneAdditive(GameScenes.Information); | ||||||
|         }); |         }); | ||||||
|         // mission報酬通知 |         // mission報酬通知 | ||||||
|         missionIndicator.SetActive(CheckMissionIndicate()); |         GameDataObserver.Instance.UpdateMissionAchieved.Subscribe(x => | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     private bool CheckMissionIndicate() |  | ||||||
|     { |  | ||||||
|         // ミッション読み込み |  | ||||||
|         var missionList = SpreadsheetDataManager.Instance.GetBaseDataList<MissionData>(Const.MissionDataSheet); |  | ||||||
|         var gameData = GameDataManager.GameData; |  | ||||||
|         // ミッション表示 |  | ||||||
|         if (missionList |  | ||||||
|             .Where(data => data.Category == MissionCategory.Normal && data.shopLevel <= gameData.ViewedShopLevel) |  | ||||||
|             .Where(missionData => !GameDataManager.GameData.AchievedMission.Contains(missionData.id)) |  | ||||||
|             .Any(missionData => missionData.count <= MissionManager.GetProgressValue(missionData))) |  | ||||||
|         { |         { | ||||||
|             return true; |             missionIndicator.SetActive(x); | ||||||
|         } |         }).AddTo(this); | ||||||
| 
 |  | ||||||
|         // dailyMission |  | ||||||
|         // コンプリートミッション |  | ||||||
|         if (!gameData.dailyMissionCompleted) |  | ||||||
|         { |  | ||||||
|             if (gameData.dailyMissionIdArray.Length <= gameData.dailyMissionAchievedIdArray.Length) |  | ||||||
|             { |  | ||||||
|                 return true; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         var ids = gameData.dailyMissionIdArray.Except(gameData.dailyMissionAchievedIdArray); |  | ||||||
|         return missionList |  | ||||||
|             .Where(data => ids.Contains(data.id)) |  | ||||||
|             .Any(missionData => missionData.count <= MissionManager.GetDailyProgressValue(missionData)); |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -15,7 +15,7 @@ namespace MyGame.Scripts | ||||||
| 
 | 
 | ||||||
|         private void Start() |         private void Start() | ||||||
|         { |         { | ||||||
|             closeButton.OnClickAsObservable().Subscribe(_ => |             closeButton.OnClickAsObservable().Take(1).Subscribe(_ => | ||||||
|             { |             { | ||||||
|                 transform.parent.SetLocalScale(0); |                 transform.parent.SetLocalScale(0); | ||||||
|                 backgroundAnimator.SetTrigger(CloseTrigger); |                 backgroundAnimator.SetTrigger(CloseTrigger); | ||||||
|  |  | ||||||
|  | @ -0,0 +1,13 @@ | ||||||
|  | { | ||||||
|  |   "MonoBehaviour": { | ||||||
|  |     "Version": 3, | ||||||
|  |     "EnableBurstCompilation": true, | ||||||
|  |     "EnableOptimisations": true, | ||||||
|  |     "EnableSafetyChecks": false, | ||||||
|  |     "EnableDebugInAllBuilds": false, | ||||||
|  |     "CpuMinTargetX32": 0, | ||||||
|  |     "CpuMaxTargetX32": 0, | ||||||
|  |     "CpuMinTargetX64": 0, | ||||||
|  |     "CpuMaxTargetX64": 0 | ||||||
|  |   } | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue