diff --git a/popcorn/Assets/MyGame/Scenes/WorldMap/Scripts/FundingDialog.cs b/popcorn/Assets/MyGame/Scenes/WorldMap/Scripts/FundingDialog.cs new file mode 100644 index 00000000..d533f687 --- /dev/null +++ b/popcorn/Assets/MyGame/Scenes/WorldMap/Scripts/FundingDialog.cs @@ -0,0 +1,92 @@ +using System; +using I2.Loc; +using TMPro; +using UniRx; +using UnityEngine; +using UnityEngine.UI; + +namespace MyGame.Scenes.WorldMap.Scripts +{ + public class FundingDialog : MonoBehaviour + { + private static readonly string CallbackTag = "FundingDialogCallback"; + private static readonly int OpenTrigger = Animator.StringToHash("OpenTrigger"); + private static readonly int CloseTrigger = Animator.StringToHash("CloseTrigger"); + + [SerializeField] private Animator backgroundAnimator; + [SerializeField] private Button closeButton; + [SerializeField] private Button fundingButton; + [SerializeField] private Button upButton; + [SerializeField] private Button downButton; + [SerializeField] private Transform iconTarget; + [SerializeField] private Text titleText; + [SerializeField] private Text myCoinText; + [SerializeField] private TextMeshProUGUI progressCoinText; + [SerializeField] private Slider progressBeforeSlider; + [SerializeField] private Slider progressAfterSlider; + [SerializeField] private Text fundingCoinText; + [SerializeField] private GameObject warnObject; // 所持金1000無いと投資できない + [SerializeField] private GameObject fundingButtonOff; + [Min(0)] [SerializeField] private int fundingUnit = 1000; + + private void Start() + { + var (fundingData, onComplete, onClose) = LocalCacheManager.Load<(FundingData, Action, Action)>(CallbackTag, (null, null, null)); + LocalCacheManager.Remove(CallbackTag); + closeButton.OnClickAsObservable().Take(1).Subscribe(_ => + { + onClose?.Invoke(); + transform.parent.SetLocalScale(0); + backgroundAnimator.SetTrigger(CloseTrigger); + this.CallWaitForSeconds(.25f, () => + { + TransitionManager.Instance.UnloadScene(GameScenes.Update); + }); + }).AddTo(this); + + var fundingAmount = 0; + fundingButton.OnClickAsObservable().Take(1).Subscribe(_ => + { + onComplete?.Invoke(fundingAmount); + }).AddTo(this); + + var cityDataList = SpreadsheetDataManager.Instance.GetBaseDataList(Const.CityDataSheet); + var cityGameData = GameDataManager.GetCityGameData(fundingData.cityId); + var fundingCityGameData = GameDataManager.GetCityGameData(fundingData.fundingCityId); + var funded = cityGameData.FundingDict[fundingData.fundingCityId]; + + if (fundingCityGameData.Coin < fundingUnit) + { + warnObject.SetActive(true); + fundingButtonOff.SetActive(true); + fundingButton.gameObject.SetActive(false); + return; + } + warnObject.SetActive(false); + fundingButtonOff.SetActive(false); + fundingButton.gameObject.SetActive(true); + // titleText.text + myCoinText.text = fundingCityGameData.Coin.ToString(); + progressBeforeSlider.value = (float)funded / fundingData.needAmount; + + var left = fundingData.needAmount - funded; + var max = Mathf.Min(fundingCityGameData.Coin, left) / fundingUnit; + upButton.OnClickAsObservable().Select(_ => 1).Merge(downButton.OnClickAsObservable().Select(_ => -1)) + .Scan(0, (acc, curr) => Mathf.Clamp(acc + curr, 0, max)) + .StartWith(0) + .Subscribe(x => + { + fundingAmount = x * fundingUnit; + fundingButton.interactable = x > 0; + progressCoinText.text = $"{funded + fundingAmount}/{fundingData.needAmount}"; + fundingCoinText.text = (fundingAmount).ToString(); + progressAfterSlider.value = (float)(funded + fundingAmount) / fundingData.needAmount; + }).AddTo(this); + } + + public static void ShowDialog(FundingData fundingData, Action onComplete = null, Action onClose = null){ + LocalCacheManager.Save(CallbackTag, (fundingData, onComplete, onClose)); + TransitionManager.Instance.LoadSceneAdditive(GameScenes.WorldMapInvestment); + } + } +} \ No newline at end of file diff --git a/popcorn/Assets/MyGame/Scenes/WorldMap/Scripts/FundingDialog.cs.meta b/popcorn/Assets/MyGame/Scenes/WorldMap/Scripts/FundingDialog.cs.meta new file mode 100644 index 00000000..e31bc4bd --- /dev/null +++ b/popcorn/Assets/MyGame/Scenes/WorldMap/Scripts/FundingDialog.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c7542f5f447e4325a4f523509d34fe9f +timeCreated: 1663218994 \ No newline at end of file diff --git a/popcorn/Assets/MyGame/Scenes/WorldMap/WorldMapInvestment.unity b/popcorn/Assets/MyGame/Scenes/WorldMap/WorldMapInvestment.unity index 5954bc77..68ef56cc 100644 --- a/popcorn/Assets/MyGame/Scenes/WorldMap/WorldMapInvestment.unity +++ b/popcorn/Assets/MyGame/Scenes/WorldMap/WorldMapInvestment.unity @@ -292,8 +292,6 @@ GameObject: - component: {fileID: 152021007} - component: {fileID: 152021011} - component: {fileID: 152021010} - - component: {fileID: 152021009} - - component: {fileID: 152021008} m_Layer: 5 m_Name: Button_investment_off m_TagString: Untagged @@ -322,66 +320,6 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 2} m_SizeDelta: {x: 250, y: 130} m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &152021008 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 152021006} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5e732834936f04d48be0ff3fa358563d, type: 3} - m_Name: - m_EditorClassIdentifier: - onClickPlaySEFilename: se_ButtonTap - randomPlaySEFilenames: [] - randomPlayVoiceFilenames: [] - vibrationType: 0 ---- !u!114 &152021009 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 152021006} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 152021010} - m_OnClick: - m_PersistentCalls: - m_Calls: [] --- !u!114 &152021010 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1307,7 +1245,7 @@ MonoBehaviour: m_SelectOnDown: {fileID: 0} m_SelectOnLeft: {fileID: 0} m_SelectOnRight: {fileID: 0} - m_Transition: 1 + m_Transition: 0 m_Colors: m_NormalColor: {r: 1, g: 1, b: 1, a: 1} m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} @@ -1327,7 +1265,7 @@ MonoBehaviour: m_PressedTrigger: Pressed m_SelectedTrigger: Selected m_DisabledTrigger: Disabled - m_Interactable: 1 + m_Interactable: 0 m_TargetGraphic: {fileID: 0} m_FillRect: {fileID: 1526359068} m_HandleRect: {fileID: 0} @@ -1396,7 +1334,7 @@ MonoBehaviour: m_SelectOnDown: {fileID: 0} m_SelectOnLeft: {fileID: 0} m_SelectOnRight: {fileID: 0} - m_Transition: 1 + m_Transition: 0 m_Colors: m_NormalColor: {r: 1, g: 1, b: 1, a: 1} m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} @@ -1416,7 +1354,7 @@ MonoBehaviour: m_PressedTrigger: Pressed m_SelectedTrigger: Selected m_DisabledTrigger: Disabled - m_Interactable: 1 + m_Interactable: 0 m_TargetGraphic: {fileID: 0} m_FillRect: {fileID: 265370315} m_HandleRect: {fileID: 0} @@ -1424,7 +1362,7 @@ MonoBehaviour: m_MinValue: 0 m_MaxValue: 1 m_WholeNumbers: 0 - m_Value: 0.542 + m_Value: 0.525 m_OnValueChanged: m_PersistentCalls: m_Calls: [] @@ -3348,6 +3286,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1951009976} + - component: {fileID: 1951009977} m_Layer: 5 m_Name: Window m_TagString: Untagged @@ -3377,6 +3316,33 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 72} m_SizeDelta: {x: 705, y: 900} m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1951009977 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1951009975} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c7542f5f447e4325a4f523509d34fe9f, type: 3} + m_Name: + m_EditorClassIdentifier: + backgroundAnimator: {fileID: 718939943} + closeButton: {fileID: 1372709862} + fundingButton: {fileID: 205016327} + upButton: {fileID: 3235806894079851394} + downButton: {fileID: 3235806894231659198} + iconTarget: {fileID: 338244695} + titleText: {fileID: 20687212} + myCoinText: {fileID: 979956445} + progressCoinText: {fileID: 1405152730} + progressBeforeSlider: {fileID: 475956153} + progressAfterSlider: {fileID: 484488682} + fundingCoinText: {fileID: 1532540344} + warnObject: {fileID: 1744491968} + fundingButtonOff: {fileID: 152021006} + fundingUnit: 1000 --- !u!114 &481714593923255930 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/popcorn/Assets/MyGame/Scripts/TransitionManager.cs b/popcorn/Assets/MyGame/Scripts/TransitionManager.cs index 7dec6076..f4f5c8cd 100644 --- a/popcorn/Assets/MyGame/Scripts/TransitionManager.cs +++ b/popcorn/Assets/MyGame/Scripts/TransitionManager.cs @@ -52,7 +52,8 @@ public enum GameScenes MiniGame, WatchMovieMiniGame, MiniGameNotReleased, - WorldMap + WorldMap, + WorldMapInvestment, } public enum SceneType diff --git a/popcorn/ProjectSettings/EditorBuildSettings.asset b/popcorn/ProjectSettings/EditorBuildSettings.asset index 3b6a8cf1..de707aa0 100644 --- a/popcorn/ProjectSettings/EditorBuildSettings.asset +++ b/popcorn/ProjectSettings/EditorBuildSettings.asset @@ -149,4 +149,7 @@ EditorBuildSettings: - enabled: 1 path: Assets/MyGame/Scenes/WorldMap/WorldMap.unity guid: 18c713da1bb264873bb774b3dfa16785 + - enabled: 1 + path: Assets/MyGame/Scenes/WorldMap/WorldMapInvestment.unity + guid: 8b693b6e06372ed42a3b756805881e05 m_configObjects: {}