From 5ec071fdf7cfe30ceff513a93032c8fabf8556bf Mon Sep 17 00:00:00 2001 From: kimura Date: Tue, 10 May 2022 17:13:26 +0900 Subject: [PATCH] add customize frame logic --- .../marketing/Prefabs/Customize_Frame.prefab | 96 ++++++++++++++++++- .../marketing/Scripts/ShopCustomizeItem.cs | 85 ++++++++++++++++ .../Scripts/ShopCustomizeItem.cs.meta | 3 + 3 files changed, 182 insertions(+), 2 deletions(-) create mode 100644 popcorn/Assets/MyGame/Scenes/marketing/Scripts/ShopCustomizeItem.cs create mode 100644 popcorn/Assets/MyGame/Scenes/marketing/Scripts/ShopCustomizeItem.cs.meta diff --git a/popcorn/Assets/MyGame/Scenes/marketing/Prefabs/Customize_Frame.prefab b/popcorn/Assets/MyGame/Scenes/marketing/Prefabs/Customize_Frame.prefab index 07d7b0f9..01ff190f 100644 --- a/popcorn/Assets/MyGame/Scenes/marketing/Prefabs/Customize_Frame.prefab +++ b/popcorn/Assets/MyGame/Scenes/marketing/Prefabs/Customize_Frame.prefab @@ -394,6 +394,9 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 7097874909301393275} + - component: {fileID: 3725718940147004211} + - component: {fileID: 686629440844100179} + - component: {fileID: 1336297028302711179} m_Layer: 5 m_Name: Frame_summary m_TagString: Untagged @@ -408,7 +411,7 @@ RectTransform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7197059603880083336} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: @@ -421,8 +424,74 @@ RectTransform: m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} + m_SizeDelta: {x: 276, y: 336} m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3725718940147004211 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7197059603880083336} + m_CullTransparentMesh: 0 +--- !u!114 &686629440844100179 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7197059603880083336} + 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 +--- !u!114 &1336297028302711179 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7197059603880083336} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + 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} + 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: 686629440844100179} + m_OnClick: + m_PersistentCalls: + m_Calls: [] --- !u!1 &7345703844887354918 GameObject: m_ObjectHideFlags: 0 @@ -1034,6 +1103,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 9136989296408743451} + - component: {fileID: 9016739176424896693} m_Layer: 5 m_Name: Customize_Frame m_TagString: Untagged @@ -1063,6 +1133,28 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &9016739176424896693 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9136989296408743460} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b5434b76402401d827edbe3bb915bdf, type: 3} + m_Name: + m_EditorClassIdentifier: + button: {fileID: 1336297028302711179} + lockObject: {fileID: 9136989295277789513} + unlockObject: {fileID: 9136989295645579405} + purchasedObject: {fileID: 9136989296137671042} + selectedObject: {fileID: 7345703844887354918} + selectedFrameObject: {fileID: 1107814534788598305} + unselectedObject: {fileID: 1101663351218072558} + unlockLevelText: {fileID: 2013268342774345650} + priceText: {fileID: 9136989294777611129} + iconTarget: {fileID: 1400898384260248944} --- !u!1001 &5025614481332414584 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/ShopCustomizeItem.cs b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/ShopCustomizeItem.cs new file mode 100644 index 00000000..309d35ef --- /dev/null +++ b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/ShopCustomizeItem.cs @@ -0,0 +1,85 @@ +using System; +using UniRx; +using UnityEngine; +using UnityEngine.UI; + +namespace MyGame.Scenes.marketing.Scripts +{ + public enum ShopCustomizeItemState + { + Lock, + Unlock, + Purchased, + Selected, + } + public class ShopCustomizeItem : MonoBehaviour + { + [SerializeField] private Button button; + [SerializeField] private GameObject lockObject; + [SerializeField] private GameObject unlockObject; + [SerializeField] private GameObject purchasedObject; + [SerializeField] private GameObject selectedObject; + [SerializeField] private GameObject selectedFrameObject; + [SerializeField] private GameObject unselectedObject; + [SerializeField] private Text unlockLevelText; + [SerializeField] private Text priceText; + [SerializeField] private Transform iconTarget; + + private IObservable ClickObservable => button.OnClickAsObservable().TakeUntilDestroy(this); + public IObservable PurchaseObservable => purchaseSubject; + private readonly Subject purchaseSubject = new Subject(); + public IObservable SelectObservable => selectSubject; + private readonly Subject selectSubject = new Subject(); + public IObservable DetailObservable => detailSubject; + private readonly Subject detailSubject = new Subject(); + private readonly ReactiveProperty itemState = new ReactiveProperty(); + private void Start() + { + itemState.AddTo(this); + purchaseSubject.AddTo(this); + selectSubject.AddTo(this); + detailSubject.AddTo(this); + itemState.Subscribe(state => + { + lockObject.SetActive(state == ShopCustomizeItemState.Lock); + unlockObject.SetActive(state == ShopCustomizeItemState.Unlock); + purchasedObject.SetActive(state == ShopCustomizeItemState.Purchased || state == ShopCustomizeItemState.Selected); + selectedObject.SetActive(state == ShopCustomizeItemState.Selected); + selectedFrameObject.SetActive(state == ShopCustomizeItemState.Selected); + unselectedObject.SetActive(state == ShopCustomizeItemState.Purchased); + }).AddTo(this); + ClickObservable.ThrottleFirst(TimeSpan.FromSeconds(.2f)).Subscribe(_ => + { + switch (itemState.Value) + { + case ShopCustomizeItemState.Lock: + break; + case ShopCustomizeItemState.Unlock: + purchaseSubject.OnNext(Unit.Default); + break; + case ShopCustomizeItemState.Purchased: + selectSubject.OnNext(Unit.Default); + break; + case ShopCustomizeItemState.Selected: + detailSubject.OnNext(Unit.Default); + break; + default: + throw new ArgumentOutOfRangeException(); + } + }).AddTo(this); + } + + public void SetState(ShopCustomizeItemState state) + { + itemState.Value = state; + } + + public void SetData(ShopCustomizeData customizeData) + { + unlockLevelText.text = customizeData.level.ToString(); + priceText.text = customizeData.price.ToString(); + iconTarget.DestroyAllChildrens(); + // Instantiate(iconTarget); + } + } +} \ No newline at end of file diff --git a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/ShopCustomizeItem.cs.meta b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/ShopCustomizeItem.cs.meta new file mode 100644 index 00000000..e0f394a8 --- /dev/null +++ b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/ShopCustomizeItem.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 8b5434b76402401d827edbe3bb915bdf +timeCreated: 1652155635 \ No newline at end of file