From eb113dfc736c8d532079558ff0e61af320935bd7 Mon Sep 17 00:00:00 2001 From: kimura Date: Thu, 15 Sep 2022 12:42:23 +0900 Subject: [PATCH] =?UTF-8?q?script=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MyGame/Scenes/WorldMap/Scripts.meta | 3 + .../Scenes/WorldMap/Scripts/CityIcon.cs | 20 +++++ .../Scenes/WorldMap/Scripts/CityIcon.cs.meta | 3 + .../Scenes/WorldMap/Scripts/WorldMap.cs | 84 +++++++++++++++++++ .../Scenes/WorldMap/Scripts/WorldMap.cs.meta | 3 + 5 files changed, 113 insertions(+) create mode 100644 popcorn/Assets/MyGame/Scenes/WorldMap/Scripts.meta create mode 100644 popcorn/Assets/MyGame/Scenes/WorldMap/Scripts/CityIcon.cs create mode 100644 popcorn/Assets/MyGame/Scenes/WorldMap/Scripts/CityIcon.cs.meta create mode 100644 popcorn/Assets/MyGame/Scenes/WorldMap/Scripts/WorldMap.cs create mode 100644 popcorn/Assets/MyGame/Scenes/WorldMap/Scripts/WorldMap.cs.meta diff --git a/popcorn/Assets/MyGame/Scenes/WorldMap/Scripts.meta b/popcorn/Assets/MyGame/Scenes/WorldMap/Scripts.meta new file mode 100644 index 00000000..2f32c208 --- /dev/null +++ b/popcorn/Assets/MyGame/Scenes/WorldMap/Scripts.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3b97fdce2b414051ab1dfb02023f448a +timeCreated: 1663136175 \ No newline at end of file diff --git a/popcorn/Assets/MyGame/Scenes/WorldMap/Scripts/CityIcon.cs b/popcorn/Assets/MyGame/Scenes/WorldMap/Scripts/CityIcon.cs new file mode 100644 index 00000000..cb338e53 --- /dev/null +++ b/popcorn/Assets/MyGame/Scenes/WorldMap/Scripts/CityIcon.cs @@ -0,0 +1,20 @@ +using System; +using UniRx; +using UniRx.Triggers; +using UnityEngine; + +namespace MyGame.Scenes.WorldMap.Scripts +{ + public class CityIcon : MonoBehaviour + { + [SerializeField] private Transform icon; + public IObservable OnClick => + (icon.GetComponent() ?? icon.gameObject.AddComponent()) + .OnPointerClickAsObservable() + .AsUnitObservable(); + + private void Start() + { + } + } +} \ No newline at end of file diff --git a/popcorn/Assets/MyGame/Scenes/WorldMap/Scripts/CityIcon.cs.meta b/popcorn/Assets/MyGame/Scenes/WorldMap/Scripts/CityIcon.cs.meta new file mode 100644 index 00000000..45e0088a --- /dev/null +++ b/popcorn/Assets/MyGame/Scenes/WorldMap/Scripts/CityIcon.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 94d22fb4b30547a7a7d613555c1fd8da +timeCreated: 1663139984 \ No newline at end of file diff --git a/popcorn/Assets/MyGame/Scenes/WorldMap/Scripts/WorldMap.cs b/popcorn/Assets/MyGame/Scenes/WorldMap/Scripts/WorldMap.cs new file mode 100644 index 00000000..548e4f07 --- /dev/null +++ b/popcorn/Assets/MyGame/Scenes/WorldMap/Scripts/WorldMap.cs @@ -0,0 +1,84 @@ +using System; +using UniRx; +using UniRx.Triggers; +using UnityEngine; +using UnityEngine.UI; + +namespace MyGame.Scenes.WorldMap.Scripts +{ + public class WorldMap : MonoBehaviour + { + [SerializeField] private Transform selectedCityTarget; + [SerializeField] private CityIcon[] cityIcons; + [SerializeField] private ScrollRect scrollRect; + [SerializeField] private GameObject cancelWall; + [SerializeField] private GameObject investmentPopup; + [SerializeField] private GameObject earningPopup; + [SerializeField] private float selectDuration = 1f; + [SerializeField] private float zoomScale = 1f; + + private void Start() + { +#if UNITY_EDITOR + this.UpdateAsObservable() + .Where(_ => Input.GetKeyDown(KeyCode.R)) + .Subscribe(_ => TransitionManager.Instance.LoadScene(GameScenes.WorldMap)); +#endif + var content = scrollRect.content; + var contentOffset = content.localPosition; + var selectedPos = selectedCityTarget.localPosition; + var shareGate = true; + cancelWall.AddComponent().OnPointerClickAsObservable() + .Where(_ => shareGate) + .ThrottleFirst(TimeSpan.FromSeconds(1f)) + .Subscribe(_ => + { + shareGate = false; + investmentPopup.SetActive(false); + var beginPos = content.localPosition; + var endPos = new Vector3(contentOffset.y, contentOffset.x + (beginPos - contentOffset).x / zoomScale); + this.CallLerp(selectDuration, f => + { + var scale = Mathf.Lerp(zoomScale, 1f, f); + content.localPosition = Vector3.Lerp(beginPos, endPos, f); + content.SetLocalScale(scale); + }, () => + { + content.localPosition = endPos; + cancelWall.SetActive(false); + shareGate = true; + }); + }).AddTo(this); + foreach (var cityIcon in cityIcons) + { + cityIcon.OnClick + .Where(_ => shareGate) + .ThrottleFirst(TimeSpan.FromSeconds(1f)) + .Subscribe(_ => + { + shareGate = false; + var beginPos = content.localPosition; + var endPos = contentOffset + (selectedPos - cityIcon.transform.localPosition) * zoomScale; + this.CallLerp(selectDuration, f => + { + var scale = Mathf.Lerp(1f, zoomScale, f); + content.localPosition = Vector3.Lerp(beginPos, endPos, f); + content.SetLocalScale(scale); + }, () => + { + // popup表示 + investmentPopup.SetActive(true); + cancelWall.SetActive(true); + shareGate = true; + }); + }).AddTo(cityIcon); + } + + investmentPopup.SetActive(false); + cancelWall.SetActive(false); + + // 選択中の店舗を中央に持ってくる + content.localPosition = contentOffset.AddX(-cityIcons[0].transform.localPosition.x); + } + } +} \ No newline at end of file diff --git a/popcorn/Assets/MyGame/Scenes/WorldMap/Scripts/WorldMap.cs.meta b/popcorn/Assets/MyGame/Scenes/WorldMap/Scripts/WorldMap.cs.meta new file mode 100644 index 00000000..d773a725 --- /dev/null +++ b/popcorn/Assets/MyGame/Scenes/WorldMap/Scripts/WorldMap.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4319073427524c249da746ff7c2fca42 +timeCreated: 1663136189 \ No newline at end of file