diff --git a/popcorn/Assets/MyGame/Scenes/Main/Prefabs/Canvas.prefab b/popcorn/Assets/MyGame/Scenes/Main/Prefabs/Canvas.prefab index 754863be..8899bd16 100644 --- a/popcorn/Assets/MyGame/Scenes/Main/Prefabs/Canvas.prefab +++ b/popcorn/Assets/MyGame/Scenes/Main/Prefabs/Canvas.prefab @@ -2970,7 +2970,8 @@ PrefabInstance: propertyPath: rootTransform value: objectReference: {fileID: 3664916832844628215} - m_RemovedComponents: [] + m_RemovedComponents: + - {fileID: 3928365105026016678, guid: ac3be7383b736d941b251a588e626963, type: 3} m_SourcePrefab: {fileID: 100100000, guid: ac3be7383b736d941b251a588e626963, type: 3} --- !u!1 &3664916834242367712 stripped GameObject: diff --git a/popcorn/Assets/MyGame/Scenes/Settings/Scripts.meta b/popcorn/Assets/MyGame/Scenes/Settings/Scripts.meta new file mode 100644 index 00000000..772eec43 --- /dev/null +++ b/popcorn/Assets/MyGame/Scenes/Settings/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: aa0956c9fb186443883ff32bd6a0f09b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/popcorn/Assets/MyGame/Scenes/Settings/Scripts/SettingDialog.cs b/popcorn/Assets/MyGame/Scenes/Settings/Scripts/SettingDialog.cs new file mode 100644 index 00000000..ab3504a4 --- /dev/null +++ b/popcorn/Assets/MyGame/Scenes/Settings/Scripts/SettingDialog.cs @@ -0,0 +1,61 @@ +using System; +using UniRx; +using UnityEngine; +using UnityEngine.UI; + +namespace MyGame.Scenes.Settings.Scripts +{ + public class SettingDialog : MonoBehaviour + { + 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 Slider volumeSlider; + [SerializeField] private Toggle vibrationalToggle; + [SerializeField] private GameObject soundOnIcon; + [SerializeField] private GameObject vibeOnIcon; + + private void Start() + { + closeButton.OnClickAsObservable().Subscribe(_ => + { + SoundManager.Instance.SaveVolumeBGM(); + SoundManager.Instance.SaveVolumeSE(); + VibrationManager.Instance.SaveEnable(vibrationalToggle.isOn); + transform.parent.SetLocalScale(0); + backgroundAnimator.SetTrigger(CloseTrigger); + this.CallWaitForSeconds(.25f, () => + { + TransitionManager.Instance.UnloadScene(GameScenes.SettingsDialog); + }); + }).AddTo(this); + + volumeSlider.value = SoundManager.Instance.GetVolume(SoundType.BGM); + volumeSlider.OnValueChangedAsObservable().Subscribe(volume => + { + var currentEnabled = SoundManager.Instance.IsEnabled(SoundType.BGM); + var newEnabled = !Mathf.Approximately(volume, 0f); + if (currentEnabled != newEnabled) + { + SoundManager.Instance.EnabledSound(SoundType.BGM, newEnabled); + SoundManager.Instance.EnabledSound(SoundType.SE, newEnabled); + soundOnIcon.SetActive(newEnabled); + } + SoundManager.Instance.ChangeVolume(SoundType.BGM, volume); + SoundManager.Instance.ChangeVolume(SoundType.SE, volume); + }).AddTo(this); + + vibrationalToggle.OnValueChangedAsObservable().Subscribe(x => + { + if (x) + { + VibrationManager.Instance.PlayVibrationOnce(); + } + vibeOnIcon.SetActive(x); + }).AddTo(this); + vibrationalToggle.isOn = VibrationManager.Instance.IsEnable; + } + } +} \ No newline at end of file diff --git a/popcorn/Assets/MyGame/Scenes/Settings/Scripts/SettingDialog.cs.meta b/popcorn/Assets/MyGame/Scenes/Settings/Scripts/SettingDialog.cs.meta new file mode 100644 index 00000000..57db4188 --- /dev/null +++ b/popcorn/Assets/MyGame/Scenes/Settings/Scripts/SettingDialog.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 919bbc9e1446472f99acf0a6e98a74f2 +timeCreated: 1634886256 \ No newline at end of file diff --git a/popcorn/Assets/MyGame/Scenes/Settings/SettingsDialog.unity b/popcorn/Assets/MyGame/Scenes/Settings/SettingsDialog.unity index 3b0e0ed1..9bb9d07c 100644 --- a/popcorn/Assets/MyGame/Scenes/Settings/SettingsDialog.unity +++ b/popcorn/Assets/MyGame/Scenes/Settings/SettingsDialog.unity @@ -121,6 +121,84 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &329542630 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 329542631} + - component: {fileID: 329542633} + - component: {fileID: 329542632} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &329542631 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 329542630} + 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: [] + m_Father: {fileID: 939396328} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &329542632 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 329542630} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 25 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 44 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: DebugOption +--- !u!222 &329542633 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 329542630} + m_CullTransparentMesh: 0 --- !u!1 &356449887 GameObject: m_ObjectHideFlags: 0 @@ -824,6 +902,125 @@ RectTransform: m_AnchoredPosition: {x: -14, y: 0} m_SizeDelta: {x: -72, y: 0} m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &939396327 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 939396328} + - component: {fileID: 939396331} + - component: {fileID: 939396330} + - component: {fileID: 939396329} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &939396328 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 939396327} + 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: + - {fileID: 329542631} + m_Father: {fileID: 1934928496} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + 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: 182.53613, y: 72.31301} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &939396329 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 939396327} + 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: 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: 939396330} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &939396330 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 939396327} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &939396331 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 939396327} + m_CullTransparentMesh: 0 --- !u!1 &1036737257 GameObject: m_ObjectHideFlags: 0 @@ -923,6 +1120,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1158745010} + - component: {fileID: 1158745011} m_Layer: 5 m_Name: Window m_TagString: Untagged @@ -951,6 +1149,24 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 57} m_SizeDelta: {x: 705, y: 550} m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1158745011 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1158745009} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 919bbc9e1446472f99acf0a6e98a74f2, type: 3} + m_Name: + m_EditorClassIdentifier: + backgroundAnimator: {fileID: 1292446174} + closeButton: {fileID: 1680775602} + volumeSlider: {fileID: 1036737259} + vibrationalToggle: {fileID: 1491113402} + soundOnIcon: {fileID: 872879782} + vibeOnIcon: {fileID: 1814839065} --- !u!1 &1173859415 GameObject: m_ObjectHideFlags: 0 @@ -1271,7 +1487,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0.000045776367} + m_AnchoredPosition: {x: 118.417786, y: 256.28564} m_SizeDelta: {x: 2048, y: 2732} m_Pivot: {x: 0.5, y: 0.5} --- !u!95 &1292446174 @@ -1307,7 +1523,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 0.9372549, a: 0.19607843} - m_RaycastTarget: 0 + m_RaycastTarget: 1 m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -1361,6 +1577,7 @@ RectTransform: - {fileID: 1680775600} - {fileID: 1235925616} - {fileID: 827436435} + - {fileID: 1934928496} m_Father: {fileID: 1158745010} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -1972,3 +2189,53 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1929029088} m_CullTransparentMesh: 0 +--- !u!1 &1934928495 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1934928496} + - component: {fileID: 1934928497} + m_Layer: 5 + m_Name: DebugObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1934928496 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1934928495} + 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: + - {fileID: 939396328} + m_Father: {fileID: 1347571038} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -194, y: 277} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1934928497 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1934928495} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d98a3722b2a5d49c28715cd9366799c3, type: 3} + m_Name: + m_EditorClassIdentifier: + debugOptionButton: {fileID: 939396329} diff --git a/popcorn/Assets/MyGame/Scripts/DebugOptionButton.cs b/popcorn/Assets/MyGame/Scripts/DebugOptionButton.cs index db03782f..1e301738 100644 --- a/popcorn/Assets/MyGame/Scripts/DebugOptionButton.cs +++ b/popcorn/Assets/MyGame/Scripts/DebugOptionButton.cs @@ -12,11 +12,16 @@ public class DebugOptionButton : MonoBehaviour // Start is called before the first frame update void Start() { +#if UNITY_EDITOR || DEVELOPMENT_BUILD + debugOptionButton.OnClickAsObservable().Subscribe(_ => { var currentScene = (GameScenes)Enum.Parse(typeof(GameScenes), SceneManager.GetActiveScene().name, false); LocalCacheManager.Save(DebugOptionManager.DebugPrevSceneTag, currentScene); TransitionManager.Instance.LoadScene(GameScenes.DebugOption); }).AddTo(this); +#else + Destroy(gameObject); +#endif } } diff --git a/popcorn/Assets/MyGame/Scripts/HeaderManager.cs b/popcorn/Assets/MyGame/Scripts/HeaderManager.cs index b60948ee..a7be6a4f 100644 --- a/popcorn/Assets/MyGame/Scripts/HeaderManager.cs +++ b/popcorn/Assets/MyGame/Scripts/HeaderManager.cs @@ -13,6 +13,7 @@ public class HeaderManager : MonoBehaviour { settingButton.OnClickAsObservable().ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ => { + TransitionManager.Instance.LoadSceneAdditive(GameScenes.SettingsDialog); }); missionButton.OnClickAsObservable().ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ => { diff --git a/popcorn/ProjectSettings/EditorBuildSettings.asset b/popcorn/ProjectSettings/EditorBuildSettings.asset index 82435d70..ed76abae 100644 --- a/popcorn/ProjectSettings/EditorBuildSettings.asset +++ b/popcorn/ProjectSettings/EditorBuildSettings.asset @@ -89,4 +89,10 @@ EditorBuildSettings: - enabled: 1 path: Assets/MyGame/Scenes/Main/WatchMovieCoin.unity guid: 5f6b6a432bfecff4985db4b408a11eaa + - enabled: 1 + path: Assets/MyGame/Scenes/Settings/SettingsDialog.unity + guid: b7e7caeb1151a8942aba939165c55e73 + - enabled: 1 + path: Assets/MyGame/Scenes/ApplicationExitConfirmDialog/ApplicationExitConfirmDialog.unity + guid: c25d0bb8eeefa744eb98fc07808adad7 m_configObjects: {}