diff --git a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/MarketManager.cs b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/MarketManager.cs index 078ba885..a37906b3 100644 --- a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/MarketManager.cs +++ b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/MarketManager.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using MyGame.Scenes.Main.Scripts; using MyGame.Scenes.marketing.Scripts; using MyGame.Scripts; using TMPro; @@ -26,9 +27,10 @@ public class MarketManager : MonoBehaviour [SerializeField] private Transform coinPrefab; [SerializeField] private Transform rootTransform; [SerializeField] private TutorialObjectMask walkerMask; + [SerializeField] private GameObject dollarBag; private Market market; List productDataList; - private bool isPartTimer; + private bool isPartTimerMode; private readonly Subject customerRewardTimerUpdateSubject = new Subject(); private readonly Subject vipTimerUpdateSubject = new Subject(); @@ -41,7 +43,7 @@ public class MarketManager : MonoBehaviour vipTimerUpdateSubject.AddTo(this); market = WorldMarketManager.Instance.GetCurrentCityMarket(); market.CheckPartTimerMode(); - isPartTimer = market.IsPartTimer; + isPartTimerMode = market.IsPartTimer; SoundManager.Instance.PlayBGM("bgm_marketing"); var globalGameData = GameDataManager.GameData; @@ -63,12 +65,36 @@ public class MarketManager : MonoBehaviour // 最新の都市ではない場合、バイトが有効 if (!market.IsLatestCity) { - partTimerView.StartAnimation(isPartTimer); + partTimerView.StartAnimation(isPartTimerMode); } - if (isPartTimer) + dollarBag.SetActive(isPartTimerMode && cityGameData.PartTimerElapsed > 10); + if (isPartTimerMode) { rewardButtonView.gameObject.SetActive(false); vipCustomerButtonView.gameObject.SetActive(false); + + var partTimersData = SpreadsheetDataManager.Instance.GetBaseDataList(Const.PartTimerDataSheet); + dollarBag.AddComponent().OnPointerClickAsObservable().Take(1).Subscribe(_ => + { + dollarBag.SetActive(false); + // dialog表示時点の値をcache + var partTimerElapsed = cityGameData.PartTimerElapsed; + EarningsReportDialog.ShowDialog((coinPos, heartPos) => + { + var partTimerData = partTimersData.First(data => data.level == cityGameData.PartTimerLevel); + var (coin, heart) = PartTimerManager.CalcEarnings(partTimerData, partTimerElapsed); + cityGameData.WaitAddHeart += heart; + HeartMeter.Instance.AddHeartForBulkOrder(heartPos, () => + { + cityGameData.MoveHeart(heart); + }); + CoinManager.Instance.AddCoinForBulkOrder(coin, coinPos); + cityGameData.Coin = CoinManager.Instance.OwnCoin; + cityGameData.PartTimerElapsed -= partTimerElapsed; + globalGameData.ShopCustomizeCoin += PartTimerManager.Instance.GetCustomizeCoin(); + GameDataManager.SaveGameData(); + }); + }).AddTo(this); } if (!globalGameData.FinishedFlags.HasFlag(TutorialFlag.FirstPlay)) @@ -157,8 +183,8 @@ public class MarketManager : MonoBehaviour { vipCustomerButtonView.SetActive(isPause); // バイト君モードでは兄弟非表示 - blueView.SetActive(!isPartTimer && !isPause); - BrotherPinkView.Instance.SetActive(!isPartTimer && !isPause); + blueView.SetActive(!isPartTimerMode && !isPause); + BrotherPinkView.Instance.SetActive(!isPartTimerMode && !isPause); // 最新の都市ではない場合バイト非表示 partTimerView.SetActive(!market.IsLatestCity && !isPause); }).AddTo(this); @@ -313,7 +339,7 @@ displayFlavors: {market.DisplayFlavors.Aggregate("", (s, data) => $"{s},{data.Fl .Subscribe(x => { var (isClose, isPromotion) = x; - if (isClose || isPartTimer) + if (isClose || isPartTimerMode) { BrotherPinkView.Instance.StopTasting(); rewardButtonView.gameObject.SetActive(false); @@ -491,7 +517,7 @@ displayFlavors: {market.DisplayFlavors.Aggregate("", (s, data) => $"{s},{data.Fl }).AddTo(customerAnimator); var eventTrigger = customerAnimator.gameObject.AddComponent(); eventTrigger.OnPointerClickAsObservable() - .Where(_ => !isPartTimer) + .Where(_ => !isPartTimerMode) .Take(1) .Subscribe(_ => { diff --git a/popcorn/Assets/MyGame/Scenes/marketing/marketing.unity b/popcorn/Assets/MyGame/Scenes/marketing/marketing.unity index 9dab5430..b3bd5e6e 100644 --- a/popcorn/Assets/MyGame/Scenes/marketing/marketing.unity +++ b/popcorn/Assets/MyGame/Scenes/marketing/marketing.unity @@ -3473,6 +3473,7 @@ MonoBehaviour: type: 3} rootTransform: {fileID: 714437465} walkerMask: {fileID: 237651842} + dollarBag: {fileID: 1217099569} --- !u!1 &1026166058 GameObject: m_ObjectHideFlags: 0 @@ -4171,6 +4172,8 @@ GameObject: m_Component: - component: {fileID: 1217099570} - component: {fileID: 1217099571} + - component: {fileID: 1217099573} + - component: {fileID: 1217099572} m_Layer: 5 m_Name: DollarBag m_TagString: Untagged @@ -4201,8 +4204,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 128, y: -321} - m_SizeDelta: {x: 0, y: 0} + m_AnchoredPosition: {x: 78, y: -271} + m_SizeDelta: {x: 100, y: 100} m_Pivot: {x: 0, y: 1} --- !u!95 &1217099571 Animator: @@ -4224,6 +4227,30 @@ Animator: m_HasTransformHierarchy: 1 m_AllowConstantClipSamplingOptimization: 1 m_KeepAnimatorControllerStateOnDisable: 0 +--- !u!114 &1217099572 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1217099569} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ee012d4774ae943b49c2443232200135, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &1217099573 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1217099569} + m_CullTransparentMesh: 1 --- !u!1 &1235629312 GameObject: m_ObjectHideFlags: 0