diff --git a/popcorn/Assets/MyGame/Scenes/Main/EmploymentList.unity b/popcorn/Assets/MyGame/Scenes/Main/EmploymentList.unity index 93438cec..73876eb9 100644 --- a/popcorn/Assets/MyGame/Scenes/Main/EmploymentList.unity +++ b/popcorn/Assets/MyGame/Scenes/Main/EmploymentList.unity @@ -3397,7 +3397,6 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1590155517} - - component: {fileID: 1590155518} m_Layer: 5 m_Name: MeterHeart m_TagString: Untagged @@ -3430,23 +3429,6 @@ RectTransform: m_AnchoredPosition: {x: -20, y: -21.999985} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 1} ---- !u!114 &1590155518 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1590155516} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c08102b0ec474c8b9e6dac7813ebc803, type: 3} - m_Name: - m_EditorClassIdentifier: - slider: {fileID: 41192145} - heartLevel: {fileID: 0} - maxObject: {fileID: 864496477} - duration: 0.5 - bulkOrderAchievedEffect: {fileID: 0} --- !u!1001 &1630079009 PrefabInstance: m_ObjectHideFlags: 0 @@ -3628,6 +3610,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1661433358} + - component: {fileID: 1661433359} m_Layer: 5 m_Name: Window m_TagString: Untagged @@ -3657,6 +3640,29 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 145} m_SizeDelta: {x: 764, y: 830} m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1661433359 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1661433357} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f735bc27fb104a4388410ef3c483c3e8, type: 3} + m_Name: + m_EditorClassIdentifier: + backgroundAnimator: {fileID: 1127567744} + closeButton: {fileID: 1676914700} + cityIconTarget: {fileID: 222764992} + cityNameText: {fileID: 813962580} + levelText: {fileID: 1463615769} + heartSlider: {fileID: 41192145} + heartMaxObject: {fileID: 864496477} + amountText: {fileID: 1367941909} + tipsText: {fileID: 907682419} + levelUpButton: {fileID: 45079309} + disableButton: {fileID: 1961680769} --- !u!1 &1676914697 GameObject: m_ObjectHideFlags: 0 diff --git a/popcorn/Assets/MyGame/Scenes/Main/Main.unity b/popcorn/Assets/MyGame/Scenes/Main/Main.unity index f2511d23..a616cf34 100644 --- a/popcorn/Assets/MyGame/Scenes/Main/Main.unity +++ b/popcorn/Assets/MyGame/Scenes/Main/Main.unity @@ -1437,7 +1437,7 @@ RectTransform: - {fileID: 445566314} - {fileID: 1967400435} m_Father: {fileID: 3664916832445709978} - m_RootOrder: 9 + m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -6784,6 +6784,7 @@ MonoBehaviour: kitchenView: {fileID: 1870432536} orderIndicatorView: {fileID: 2021031102} autoCookView: {fileID: 2088316432} + partTimerButtonView: {fileID: 3664916832445709979} --- !u!4 &1870432534 Transform: m_ObjectHideFlags: 0 @@ -8129,7 +8130,7 @@ PrefabInstance: - target: {fileID: 1408184404978035950, guid: caaa748dbeed576499e8cae74d33f689, type: 3} propertyPath: m_RootOrder - value: 8 + value: 9 objectReference: {fileID: 0} - target: {fileID: 1750965193008879782, guid: caaa748dbeed576499e8cae74d33f689, type: 3} @@ -8487,6 +8488,11 @@ PrefabInstance: propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} + - target: {fileID: 4137423837908745802, guid: caaa748dbeed576499e8cae74d33f689, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} - target: {fileID: 4348639590627783772, guid: caaa748dbeed576499e8cae74d33f689, type: 3} propertyPath: m_IsActive @@ -8498,10 +8504,15 @@ PrefabInstance: value: objectReference: {fileID: 21300000, guid: 6b12d4304d8cc814988c6828d9b478e9, type: 3} + - target: {fileID: 6089058964045819772, guid: caaa748dbeed576499e8cae74d33f689, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} - target: {fileID: 6205448659049427752, guid: caaa748dbeed576499e8cae74d33f689, type: 3} propertyPath: m_RootOrder - value: 6 + value: 10 objectReference: {fileID: 0} - target: {fileID: 6396292362141172708, guid: caaa748dbeed576499e8cae74d33f689, type: 3} @@ -8513,6 +8524,11 @@ PrefabInstance: propertyPath: m_RootOrder value: 1 objectReference: {fileID: 0} + - target: {fileID: 6510712418412486576, guid: caaa748dbeed576499e8cae74d33f689, + type: 3} + propertyPath: m_RootOrder + value: 8 + objectReference: {fileID: 0} - target: {fileID: 6969874152703327186, guid: caaa748dbeed576499e8cae74d33f689, type: 3} propertyPath: m_AnchoredPosition.y @@ -8533,6 +8549,11 @@ PrefabInstance: propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} + - target: {fileID: 7803003898279553472, guid: caaa748dbeed576499e8cae74d33f689, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} - target: {fileID: 8103176713869808018, guid: caaa748dbeed576499e8cae74d33f689, type: 3} propertyPath: m_RootOrder @@ -8607,6 +8628,18 @@ RectTransform: type: 3} m_PrefabInstance: {fileID: 3664916832445709976} m_PrefabAsset: {fileID: 0} +--- !u!114 &3664916832445709979 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 4773758037198869108, guid: caaa748dbeed576499e8cae74d33f689, + type: 3} + m_PrefabInstance: {fileID: 3664916832445709976} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7402670efed5410e894680a6e865ce23, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1001 &3915769149207111994 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/popcorn/Assets/MyGame/Scenes/Main/Prefabs/Canvas.prefab b/popcorn/Assets/MyGame/Scenes/Main/Prefabs/Canvas.prefab index d25b3bd7..f43c66a2 100644 --- a/popcorn/Assets/MyGame/Scenes/Main/Prefabs/Canvas.prefab +++ b/popcorn/Assets/MyGame/Scenes/Main/Prefabs/Canvas.prefab @@ -2439,7 +2439,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 6510712418412486576} - - component: {fileID: 703220439106299733} + - component: {fileID: 4773758037198869108} m_Layer: 5 m_Name: EmploymentList m_TagString: Untagged @@ -2469,7 +2469,7 @@ RectTransform: m_AnchoredPosition: {x: -84, y: -340} m_SizeDelta: {x: 260, y: 320} m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &703220439106299733 +--- !u!114 &4773758037198869108 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2478,7 +2478,7 @@ MonoBehaviour: m_GameObject: {fileID: 6089058964045819772} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2bee5c60f0f643d4a47973529de9226c, type: 3} + m_Script: {fileID: 11500000, guid: 7402670efed5410e894680a6e865ce23, type: 3} m_Name: m_EditorClassIdentifier: button: {fileID: 7557289802969012155} diff --git a/popcorn/Assets/MyGame/Scenes/Main/Scripts/PartTimerButtonView.cs b/popcorn/Assets/MyGame/Scenes/Main/Scripts/PartTimerButtonView.cs new file mode 100644 index 00000000..befb8b46 --- /dev/null +++ b/popcorn/Assets/MyGame/Scenes/Main/Scripts/PartTimerButtonView.cs @@ -0,0 +1,19 @@ +using System; +using UniRx; +using UnityEngine; +using UnityEngine.UI; + +namespace MyGame.Scenes.Main.Scripts +{ + public class PartTimerButtonView : MonoBehaviour + { + [SerializeField] private Button button; + [SerializeField] private GameObject completedBadgeObject; + public IObservable OnClick => button.OnClickAsObservable().TakeUntilDestroy(this); + + public void SetBadgeActive(bool active) + { + completedBadgeObject.SetActive(active); + } + } +} \ No newline at end of file diff --git a/popcorn/Assets/MyGame/Scenes/Main/Scripts/PartTimerButtonView.cs.meta b/popcorn/Assets/MyGame/Scenes/Main/Scripts/PartTimerButtonView.cs.meta new file mode 100644 index 00000000..9b928226 --- /dev/null +++ b/popcorn/Assets/MyGame/Scenes/Main/Scripts/PartTimerButtonView.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7402670efed5410e894680a6e865ce23 +timeCreated: 1663908744 \ No newline at end of file diff --git a/popcorn/Assets/MyGame/Scenes/Main/Scripts/PartTimerDialog.cs b/popcorn/Assets/MyGame/Scenes/Main/Scripts/PartTimerDialog.cs new file mode 100644 index 00000000..f61e77d0 --- /dev/null +++ b/popcorn/Assets/MyGame/Scenes/Main/Scripts/PartTimerDialog.cs @@ -0,0 +1,110 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using I2.Loc; +using MyGame.Scripts; +using UniRx; +using UnityEngine; +using UnityEngine.UI; + +namespace MyGame.Scenes.Main.Scripts +{ + public class PartTimerDialog : MonoBehaviour + { + private static readonly string CallbackTag = "UpdateDialogCallback"; + private static readonly int OpenTrigger = Animator.StringToHash("OpenTrigger"); + private static readonly int CloseTrigger = Animator.StringToHash("CloseTrigger"); + private static readonly GameScenes SceneName = GameScenes.EmploymentList; + + [SerializeField] private Animator backgroundAnimator; + [SerializeField] private Button closeButton; + [SerializeField] private Transform cityIconTarget; + [SerializeField] private Text cityNameText; + [SerializeField] private Text levelText; + [SerializeField] private Slider heartSlider; + [SerializeField] private GameObject heartMaxObject; + [SerializeField] private Text amountText; + [SerializeField] private Text tipsText; + [SerializeField] private Button levelUpButton; + [SerializeField] private GameObject disableButton; + + private bool buttonActive; + + private void Start() + { + var (cityData, partTimerDataList, onClose) = LocalCacheManager.Load<(CityData, List, Action)>(CallbackTag); + var cityGameData = GameDataManager.GetCurrentCityGameData(); + LocalCacheManager.Remove(CallbackTag); + closeButton.OnClickAsObservable().Take(1).Subscribe(_ => + { + onClose?.Invoke(); + transform.parent.SetLocalScale(0); + backgroundAnimator.SetTrigger(CloseTrigger); + this.CallWaitForSeconds(.25f, () => + { + TransitionManager.Instance.UnloadScene(SceneName); + }); + }).AddTo(this); + + cityIconTarget.DestroyAllChildrens(); + Instantiate(cityData.GetIconPrefab(), cityIconTarget); + cityNameText.text = cityData.Name; + levelText.text = $"Lv.{cityGameData.PartTimerLevel}"; + var nextData = partTimerDataList.FirstOrDefault(data => data.level > cityGameData.PartTimerLevel); + if (nextData is null) + { + // レベルアップ上限 + SetMaxLevel(); + return; + } + SetPartTimerData(cityData, nextData); + SetButtonActive(buttonActive && cityGameData.Coin >= nextData.needAmount); + + levelUpButton.OnClickAsObservable().ThrottleFirst(TimeSpan.FromSeconds(.3f)).Subscribe(_ => + { + // レベルアップを挟むと報酬がプレイヤーに有利になる件 + GameDataManager.GetCurrentCityGameData().PartTimerLevel = nextData.level; + GameDataManager.SaveGameData(); + levelText.text = $"Lv.{cityGameData.PartTimerLevel}"; + nextData = partTimerDataList.FirstOrDefault(data => data.level > cityGameData.PartTimerLevel); + if (nextData is null) + { + // レベルアップ上限 + SetMaxLevel(); + return; + } + SetPartTimerData(cityData, nextData); + SetButtonActive(buttonActive && cityGameData.Coin >= nextData.needAmount); + + }).AddTo(this); + } + + private void SetMaxLevel() + { + SetButtonActive(false); + } + + private void SetPartTimerData(CityData cityData, PartTimerData nextPartTimerData) + { + var progress = (float)GameDataUtils.GetPartTimerHeart(cityData.id) / nextPartTimerData.needHeart; + var isHeartMax = progress >= 1f; + heartSlider.value = progress; + tipsText.text = isHeartMax ? "レベルアップすることができます" : "新店舗でハートを集めよう"; + heartMaxObject.SetActive(isHeartMax); + SetButtonActive(isHeartMax); + amountText.text = nextPartTimerData.needAmount.ToString(); + } + + private void SetButtonActive(bool active) + { + buttonActive = active; + levelUpButton.gameObject.SetActive(active); + disableButton.SetActive(!active); + } + + public static void ShowDialog(CityData cityData, List dataList, Action onClose = null){ + LocalCacheManager.Save(CallbackTag, (cityData, dataList, onClose)); + TransitionManager.Instance.LoadSceneAdditive(SceneName); + } + } +} \ No newline at end of file diff --git a/popcorn/Assets/MyGame/Scenes/Main/Scripts/PartTimerDialog.cs.meta b/popcorn/Assets/MyGame/Scenes/Main/Scripts/PartTimerDialog.cs.meta new file mode 100644 index 00000000..f374c7e7 --- /dev/null +++ b/popcorn/Assets/MyGame/Scenes/Main/Scripts/PartTimerDialog.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f735bc27fb104a4388410ef3c483c3e8 +timeCreated: 1663839080 \ No newline at end of file