資金投入ダイアログ追加

This commit is contained in:
kimura 2022-09-15 17:34:32 +09:00
parent 616567bd2c
commit 554f36fee5
5 changed files with 133 additions and 68 deletions

View File

@ -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<int>, 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<CityData>(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<int> onComplete = null, Action onClose = null){
LocalCacheManager.Save(CallbackTag, (fundingData, onComplete, onClose));
TransitionManager.Instance.LoadSceneAdditive(GameScenes.WorldMapInvestment);
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: c7542f5f447e4325a4f523509d34fe9f
timeCreated: 1663218994

View File

@ -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

View File

@ -52,7 +52,8 @@ public enum GameScenes
MiniGame,
WatchMovieMiniGame,
MiniGameNotReleased,
WorldMap
WorldMap,
WorldMapInvestment,
}
public enum SceneType

View File

@ -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: {}