Refine UI stack and add Ashwick keypad puzzle

This commit is contained in:
2026-05-15 13:02:12 +01:00
parent 806cf80110
commit 58050abded
69 changed files with 17470 additions and 2752 deletions

Submodule .claude/worktrees/heuristic-wright-1487d8 added at c203f836b1

View File

@@ -26,11 +26,6 @@ MonoBehaviour:
m_ReadOnly: 0
m_SerializedLabels: []
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 9ad5adbf83cf74c26873156b9a975cb4
m_Address: Assets/Data/Prefabs/Levels/Chapter One/Ashwick Hallow/C1_RAshwick_Ridgeway.prefab
m_ReadOnly: 0
m_SerializedLabels: []
FlaggedDuringContentUpdateRestriction: 0
m_ReadOnly: 0
m_Settings: {fileID: 11400000, guid: b88fd73a09926470bad6fbcc5e204467, type: 2}
m_SchemaSet:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 MiB

After

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 937 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 104572cca65364c53be1097bb5c3dbd4
guid: b575910de5ea144bfb271fa080e99df7
TextureImporter:
internalIDToNameTable: []
externalObjects: {}

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 66b1cc83801c94a85b950fb768f1a159
guid: 584849d627012449fac35dbd2981ff99
TextureImporter:
internalIDToNameTable: []
externalObjects: {}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

View File

@@ -0,0 +1,143 @@
fileFormatVersion: 2
guid: 800f7614145444ed4b622c80a6316d58
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 9ad5adbf83cf74c26873156b9a975cb4
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -111,7 +111,7 @@ Material:
- _OcclusionStrength: 1
- _Parallax: 0.005
- _QueueOffset: 0
- _Radius: 0
- _Radius: 0.144
- _ReceiveShadows: 1
- _Smoothness: 0.5
- _SmoothnessTextureChannel: 0

View File

@@ -816,7 +816,6 @@ RectTransform:
m_Children:
- {fileID: 416449373}
- {fileID: 1425763776}
- {fileID: 1518385058}
m_Father: {fileID: 1216136270}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
@@ -1187,20 +1186,20 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 534739474}
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_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1292853201}
- {fileID: 1677150152}
m_Father: {fileID: 1425763776}
m_Father: {fileID: 1287558152}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
m_Pivot: {x: 0, y: 0.5}
--- !u!114 &534739476
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -2698,7 +2697,7 @@ MonoBehaviour:
_pressStartText: {fileID: 676780942}
_introGroupDissolveGroup: {fileID: 1251031440}
_mainMenuGroup: {fileID: 365451919}
_buttonsGroup: {fileID: 1425763779}
_displayGroup: {fileID: 1425763779}
_mainMenuSelectionGroup: {fileID: 1425763778}
_startGameSelectionButton: {fileID: 2092529973}
_settingsSelectionButton: {fileID: 534739476}
@@ -2742,6 +2741,22 @@ MonoBehaviour:
useUnscaledTime: 1
_useFixedUpdate: 0
_updateType: 0
_settingsOverlayTweenSettings:
duration: 0.25
ease: 6
customEase:
serializedVersion: 2
m_Curve: []
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
cycles: 0
cycleMode: 0
startDelay: 0
endDelay: 0
useUnscaledTime: 1
_useFixedUpdate: 0
_updateType: 0
_pressStartPulseTweenSettings:
duration: 0.85
ease: 4
@@ -2986,6 +3001,71 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1275027011}
m_CullTransparentMesh: 1
--- !u!1 &1287558151
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1287558152}
- component: {fileID: 1287558153}
m_Layer: 5
m_Name: Buttons
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1287558152
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1287558151}
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_ConstrainProportionsScale: 0
m_Children:
- {fileID: 2092529972}
- {fileID: 534739475}
- {fileID: 1477093090}
m_Father: {fileID: 1425763776}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 112, y: 335}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0, y: 0}
--- !u!114 &1287558153
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1287558151}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.VerticalLayoutGroup
m_Padding:
m_Left: 0
m_Right: 0
m_Top: 0
m_Bottom: 0
m_ChildAlignment: 0
m_Spacing: 100
m_ChildForceExpandWidth: 1
m_ChildForceExpandHeight: 1
m_ChildControlWidth: 0
m_ChildControlHeight: 0
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0
--- !u!1 &1292853200
GameObject:
m_ObjectHideFlags: 0
@@ -3269,11 +3349,10 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 1425763776}
- component: {fileID: 1425763777}
- component: {fileID: 1425763778}
- component: {fileID: 1425763779}
m_Layer: 5
m_Name: Buttons
m_Name: Display
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@@ -3291,42 +3370,15 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 2092529972}
- {fileID: 534739475}
- {fileID: 1477093090}
- {fileID: 1518385058}
- {fileID: 1287558152}
m_Father: {fileID: 365451918}
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: -711, y: -246}
m_SizeDelta: {x: 100, y: 100}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1425763777
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1425763775}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.VerticalLayoutGroup
m_Padding:
m_Left: 0
m_Right: 0
m_Top: 0
m_Bottom: 0
m_ChildAlignment: 0
m_Spacing: 100
m_ChildForceExpandWidth: 1
m_ChildForceExpandHeight: 1
m_ChildControlWidth: 0
m_ChildControlHeight: 0
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0
--- !u!114 &1425763778
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -3383,20 +3435,20 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1477093089}
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_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1882478302}
- {fileID: 377952812}
m_Father: {fileID: 1425763776}
m_Father: {fileID: 1287558152}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
m_Pivot: {x: 0, y: 0.5}
--- !u!114 &1477093091
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -3620,11 +3672,11 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1719828717}
m_Father: {fileID: 365451918}
m_Father: {fileID: 1425763776}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 124, y: -68}
m_AnchoredPosition: {x: 64, y: -115}
m_SizeDelta: {x: 893.3687, y: 115.333496}
m_Pivot: {x: 0, y: 1}
--- !u!225 &1518385059
@@ -4804,20 +4856,20 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2092529971}
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_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1275027012}
- {fileID: 317717159}
m_Father: {fileID: 1425763776}
m_Father: {fileID: 1287558152}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
m_Pivot: {x: 0, y: 0.5}
--- !u!114 &2092529973
MonoBehaviour:
m_ObjectHideFlags: 0

View File

@@ -174,7 +174,7 @@ Light:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 203844586}
m_Enabled: 1
serializedVersion: 12
serializedVersion: 13
m_Type: 1
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
m_Intensity: 1
@@ -226,7 +226,7 @@ Light:
m_UseBoundingSphereOverride: 0
m_UseViewFrustumForShadowCasterCull: 1
m_ForceVisible: 0
m_ShadowRadius: 0
m_ShapeRadius: 0
m_ShadowAngle: 0
m_LightUnit: 1
m_LuxAtDistance: 1
@@ -246,6 +246,44 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!1 &285394230
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 285394231}
m_Layer: 5
m_Name: Gate
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &285394231
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 285394230}
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_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1155499929}
- {fileID: 1565395032}
- {fileID: 652020456}
m_Father: {fileID: 1253864016}
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: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &290940345
GameObject:
m_ObjectHideFlags: 0
@@ -383,6 +421,412 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &652020455
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 652020456}
- component: {fileID: 652020460}
- component: {fileID: 652020459}
- component: {fileID: 652020457}
- component: {fileID: 652020461}
m_Layer: 5
m_Name: Keypad Zone
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &652020456
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 652020455}
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_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 285394231}
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: -6.3408, y: -135.728}
m_SizeDelta: {x: 135.7673, y: 196.0822}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!225 &652020457
CanvasGroup:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 652020455}
m_Enabled: 1
m_Alpha: 1
m_Interactable: 1
m_BlocksRaycasts: 1
m_IgnoreParentGroups: 0
--- !u!114 &652020459
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 652020455}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 0}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Type: 0
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 &652020460
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 652020455}
m_CullTransparentMesh: 1
--- !u!114 &652020461
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 652020455}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9528c00201e44fc2baf036655881cf0d, type: 3}
m_Name:
m_EditorClassIdentifier: BriarQueen.Game::BriarQueen.Game.Items.HoverZones.TransitionZone
_levelToLoad: 4
_levelName:
_lockedTooltipText:
_lockedInteractText:
_locked: 0
_cursorStyle: 6
_soundEffectOnClick: 0
CanvasGroup: {fileID: 0}
--- !u!1 &778009335
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 778009340}
- component: {fileID: 778009339}
- component: {fileID: 778009338}
- component: {fileID: 778009337}
- component: {fileID: 778009336}
m_Layer: 5
m_Name: C1 - Ashwick Hallow - Outskirts
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &778009336
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 778009335}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b17e98637f5042b4b70962875c373f5f, type: 3}
m_Name:
m_EditorClassIdentifier: BriarQueen.Game::BriarQueen.Game.Levels.ChapterOne.Ashwick.AshwickOutskirts
_levelKey: 0
_levelName:
Pickups: []
CodexTriggers: []
Puzzles: []
_raycaster: {fileID: 778009337}
_background: {fileID: 0}
_backgroundOpenSprite: {fileID: 0}
--- !u!114 &778009337
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 778009335}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.GraphicRaycaster
m_IgnoreReversedGraphics: 1
m_BlockingObjects: 0
m_BlockingMask:
serializedVersion: 2
m_Bits: 4294967295
--- !u!114 &778009338
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 778009335}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.CanvasScaler
m_UiScaleMode: 1
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 1920, y: 1200}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0.5
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
--- !u!223 &778009339
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 778009335}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 0
m_Camera: {fileID: 0}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_VertexColorAlwaysGammaSpace: 0
m_UseReflectionProbes: 0
m_AdditionalShaderChannelsFlag: 0
m_UpdateRectTransformForStandalone: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!224 &778009340
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 778009335}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1253864016}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!1 &1155499928
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1155499929}
- component: {fileID: 1155499932}
- component: {fileID: 1155499931}
- component: {fileID: 1155499930}
m_Layer: 5
m_Name: Next Level Zone
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1155499929
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1155499928}
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_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 285394231}
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.7054, y: -128.2476}
m_SizeDelta: {x: 1033.4109, y: 522.4951}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1155499930
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1155499928}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9528c00201e44fc2baf036655881cf0d, type: 3}
m_Name:
m_EditorClassIdentifier: BriarQueen.Game::BriarQueen.Game.Items.HoverZones.TransitionZone
_levelToLoad: 0
_levelName:
_lockedTooltipText:
_lockedInteractText:
_locked: 0
_cursorStyle: 6
_soundEffectOnClick: 0
CanvasGroup: {fileID: 0}
--- !u!114 &1155499931
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1155499928}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 0}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Type: 0
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 &1155499932
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1155499928}
m_CullTransparentMesh: 1
--- !u!1 &1253864015
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1253864016}
- component: {fileID: 1253864018}
- component: {fileID: 1253864017}
m_Layer: 5
m_Name: Background
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1253864016
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1253864015}
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_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1927796941}
- {fileID: 285394231}
m_Father: {fileID: 778009340}
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: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1253864017
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1253864015}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: d9a30acbf766745e48561f564db262ee, type: 3}
m_Type: 0
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 &1253864018
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1253864015}
m_CullTransparentMesh: 1
--- !u!1 &1399123064
GameObject:
m_ObjectHideFlags: 0
@@ -462,6 +906,216 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1565395031
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1565395032}
- component: {fileID: 1565395036}
- component: {fileID: 1565395035}
- component: {fileID: 1565395034}
- component: {fileID: 1565395033}
m_Layer: 5
m_Name: Ashwick Gate
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1565395032
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1565395031}
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_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 285394231}
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.7054, y: -128.2476}
m_SizeDelta: {x: 1033.4109, y: 522.4951}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!225 &1565395033
CanvasGroup:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1565395031}
m_Enabled: 1
m_Alpha: 1
m_Interactable: 1
m_BlocksRaycasts: 1
m_IgnoreParentGroups: 0
--- !u!114 &1565395034
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1565395031}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1bc3c6697e5b4c029e807116f930e9a3, type: 3}
m_Name:
m_EditorClassIdentifier: BriarQueen.Game::BriarQueen.Game.Puzzles.ChapterOne.AshwickHallow.GatePuzzle.AshwickGate
_itemData: {fileID: 0}
_interactableTooltip:
_pickupText:
_canvasGroup: {fileID: 1565395033}
--- !u!114 &1565395035
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1565395031}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 0}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Type: 0
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 &1565395036
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1565395031}
m_CullTransparentMesh: 1
--- !u!1 &1598455747
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1598455748}
- component: {fileID: 1598455752}
- component: {fileID: 1598455751}
- component: {fileID: 1598455750}
- component: {fileID: 1598455749}
m_Layer: 5
m_Name: Teddy Bear
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1598455748
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1598455747}
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_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1927796941}
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: 582, y: -395}
m_SizeDelta: {x: 117, y: 130}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!225 &1598455749
CanvasGroup:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1598455747}
m_Enabled: 1
m_Alpha: 1
m_Interactable: 1
m_BlocksRaycasts: 1
m_IgnoreParentGroups: 0
--- !u!114 &1598455750
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1598455747}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 529a2a922f6f48a982159e2dbc41c542, type: 3}
m_Name:
m_EditorClassIdentifier: BriarQueen.Framework::BriarQueen.Framework.Managers.Levels.Data.BaseItem
_itemData: {fileID: 11400000, guid: a39f2408f72ff4d01a10e37e76dcd84b, type: 2}
_interactableTooltip:
_pickupText: Dirty Teddy Bear
_canvasGroup: {fileID: 1598455749}
--- !u!114 &1598455751
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1598455747}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 357e8b2f7ab3044ba8098c50e16a169b, type: 3}
m_Type: 0
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 &1598455752
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1598455747}
m_CullTransparentMesh: 1
--- !u!1 &1684932629
GameObject:
m_ObjectHideFlags: 0
@@ -506,107 +1160,42 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &484196172824267200
PrefabInstance:
--- !u!1 &1927796940
GameObject:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 3834506191261054081, guid: 22000bda479564d5b95d3cdc42a29f33, type: 3}
propertyPath: m_Name
value: C1 - Ashwick Hallow - Marketplace
objectReference: {fileID: 0}
- target: {fileID: 3834506191261054081, guid: 22000bda479564d5b95d3cdc42a29f33, type: 3}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6698916268511761357, guid: 22000bda479564d5b95d3cdc42a29f33, type: 3}
propertyPath: m_Pivot.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6698916268511761357, guid: 22000bda479564d5b95d3cdc42a29f33, type: 3}
propertyPath: m_Pivot.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6698916268511761357, guid: 22000bda479564d5b95d3cdc42a29f33, type: 3}
propertyPath: m_AnchorMax.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6698916268511761357, guid: 22000bda479564d5b95d3cdc42a29f33, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6698916268511761357, guid: 22000bda479564d5b95d3cdc42a29f33, type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6698916268511761357, guid: 22000bda479564d5b95d3cdc42a29f33, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6698916268511761357, guid: 22000bda479564d5b95d3cdc42a29f33, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6698916268511761357, guid: 22000bda479564d5b95d3cdc42a29f33, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6698916268511761357, guid: 22000bda479564d5b95d3cdc42a29f33, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6698916268511761357, guid: 22000bda479564d5b95d3cdc42a29f33, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6698916268511761357, guid: 22000bda479564d5b95d3cdc42a29f33, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6698916268511761357, guid: 22000bda479564d5b95d3cdc42a29f33, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6698916268511761357, guid: 22000bda479564d5b95d3cdc42a29f33, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6698916268511761357, guid: 22000bda479564d5b95d3cdc42a29f33, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6698916268511761357, guid: 22000bda479564d5b95d3cdc42a29f33, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6698916268511761357, guid: 22000bda479564d5b95d3cdc42a29f33, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6698916268511761357, guid: 22000bda479564d5b95d3cdc42a29f33, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6698916268511761357, guid: 22000bda479564d5b95d3cdc42a29f33, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6698916268511761357, guid: 22000bda479564d5b95d3cdc42a29f33, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6698916268511761357, guid: 22000bda479564d5b95d3cdc42a29f33, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 22000bda479564d5b95d3cdc42a29f33, type: 3}
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1927796941}
m_Layer: 5
m_Name: Items
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1927796941
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1927796940}
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_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1598455748}
m_Father: {fileID: 1253864016}
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: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
@@ -614,5 +1203,5 @@ SceneRoots:
- {fileID: 203844589}
- {fileID: 1684932631}
- {fileID: 290940349}
- {fileID: 484196172824267200}
- {fileID: 1399123067}
- {fileID: 778009340}

View File

@@ -98,7 +98,7 @@ namespace BriarQueen.Data.IO.Saves
public enum LevelFlag
{
None = 0,
MarketGateOpen,
AshwickGateOpen,
MarketplaceFirstEntry,
}

View File

@@ -25,13 +25,9 @@ namespace BriarQueen.Data.Identifiers
{
None = 0,
ChapterOneArrivalRoad,
ChapterOneAshwickRidgeway,
ChapterOneAshwickOutskirts,
ChapterOneInsideBrokenDownCar,
ChapterOneAshwickMarketplace,
ChapterOneAshwickMournfall,
ChapterOneAshwickRavensQuill,
ChapterOneGloomedVeil,
ChapterOneAshwickWaxworks
ChapterOneAshwickOutskirtsKeypad,
}
public enum AssetItemKey

View File

@@ -0,0 +1,7 @@
using BriarQueen.Framework.Events.System;
using BriarQueen.Framework.Managers.UI.Base;
namespace BriarQueen.Framework.Events.UI
{
public record UIWindowStateChangedEvent(WindowType WindowType, bool IsOpen) : IEvent;
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 1d8f895856a064fb09a7f2ec4393f686

View File

@@ -5,6 +5,7 @@ using BriarQueen.Framework.Events.Gameplay;
using BriarQueen.Framework.Events.Input;
using BriarQueen.Framework.Events.UI;
using BriarQueen.Framework.Managers.UI;
using BriarQueen.Framework.Managers.UI.Base;
using BriarQueen.Framework.Services.Game;
using UnityEngine;
using UnityEngine.InputSystem;
@@ -109,7 +110,7 @@ namespace BriarQueen.Framework.Managers.Input
if (_eventCoordinator != null)
{
_eventCoordinator.Unsubscribe<UIToggleHudEvent>(OnHudStateChanged);
_eventCoordinator.Unsubscribe<ToggleCodexEvent>(OnCodexStateChanged);
_eventCoordinator.Unsubscribe<UIWindowStateChangedEvent>(OnWindowStateChanged);
_eventCoordinator.Unsubscribe<ToggleToolScreenEvent>(OnToolScreenStateChanged);
_eventCoordinator.Unsubscribe<UIStackChangedEvent>(OnUIStackChanged);
}
@@ -158,7 +159,7 @@ namespace BriarQueen.Framework.Managers.Input
ApplyCursorModeForCurrentScheme();
_eventCoordinator.Subscribe<UIToggleHudEvent>(OnHudStateChanged);
_eventCoordinator.Subscribe<ToggleCodexEvent>(OnCodexStateChanged);
_eventCoordinator.Subscribe<UIWindowStateChangedEvent>(OnWindowStateChanged);
_eventCoordinator.Subscribe<ToggleToolScreenEvent>(OnToolScreenStateChanged);
_eventCoordinator.Subscribe<UIStackChangedEvent>(OnUIStackChanged);
@@ -422,9 +423,10 @@ namespace BriarQueen.Framework.Managers.Input
_hudHidden = !evt.Show;
}
private void OnCodexStateChanged(ToggleCodexEvent evt)
private void OnWindowStateChanged(UIWindowStateChangedEvent evt)
{
_codexShown = evt.Shown;
if (evt.WindowType == WindowType.CodexWindow)
_codexShown = evt.IsOpen;
}
private void OnToolScreenStateChanged(ToggleToolScreenEvent evt)
@@ -461,8 +463,8 @@ namespace BriarQueen.Framework.Managers.Input
{
if(_gameService.IsMainMenuSceneLoaded)
return;
_codexShown = !_codexShown;
_eventCoordinator?.Publish(new ToggleCodexEvent(_codexShown));
_eventCoordinator?.Publish(new ToggleCodexEvent(!_codexShown));
}
private void OnClick(InputAction.CallbackContext ctx)

View File

@@ -0,0 +1,10 @@
using Cysharp.Threading.Tasks;
namespace BriarQueen.Framework.Managers.UI.Base
{
public interface IUIOverlayHost
{
UniTask SuspendForOverlay();
UniTask ResumeFromOverlay();
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 4424bf26f2b764c1ca63bc73d75470d6

View File

@@ -0,0 +1,9 @@
namespace BriarQueen.Framework.Managers.UI.Events
{
public enum SettingsOpenSource
{
Unknown,
PauseMenu,
MainMenu
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: ed020edca638d4f1cbdf9b3468316efa

View File

@@ -2,5 +2,5 @@ using BriarQueen.Framework.Events.System;
namespace BriarQueen.Framework.Managers.UI.Events
{
public record UIToggleSettingsWindow(bool Show) : IEvent;
public record UIToggleSettingsWindow(bool Show, SettingsOpenSource Source = SettingsOpenSource.Unknown) : IEvent;
}

View File

@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Threading;
using BriarQueen.Data.Identifiers;
using BriarQueen.Framework.Coordinators.Events;
using BriarQueen.Framework.Events.UI;
@@ -34,6 +35,7 @@ namespace BriarQueen.Framework.Managers.UI
private readonly Dictionary<WindowType, IUIWindow> _windows = new();
private readonly Stack<IUIWindow> _windowStack = new();
private readonly SemaphoreSlim _windowTransitionGate = new(1, 1);
private bool _disposed;
@@ -43,6 +45,8 @@ namespace BriarQueen.Framework.Managers.UI
private IPopup _infoPopup;
private IPopup _tutorialPopup;
private IScreenFader _screenFader;
private IUIOverlayHost _mainMenuOverlayHost;
private IUIOverlayHost _activeSettingsOverlayHost;
[Inject]
public UIManager(
@@ -155,11 +159,33 @@ namespace BriarQueen.Framework.Managers.UI
_screenFader = screenFader;
}
public void RegisterMainMenuOverlayHost(IUIOverlayHost host)
{
_mainMenuOverlayHost = host;
}
public void UnregisterMainMenuOverlayHost(IUIOverlayHost host)
{
if (!ReferenceEquals(_mainMenuOverlayHost, host))
return;
if (ReferenceEquals(_activeSettingsOverlayHost, host))
_activeSettingsOverlayHost = null;
_mainMenuOverlayHost = null;
}
private IUIWindow GetWindow(WindowType windowType)
{
return _windows.TryGetValue(windowType, out var window) ? window : null;
}
public bool IsWindowOpen(WindowType windowType)
{
var target = GetWindow(windowType);
return target != null && _windowStack.Contains(target);
}
private async UniTask ApplyHudVisibility(bool visible)
{
if (_disposed || _hudContainer == null)
@@ -197,7 +223,7 @@ namespace BriarQueen.Framework.Managers.UI
private void ToggleSettingsWindow(UIToggleSettingsWindow eventData)
{
if (eventData.Show)
OpenWindow(WindowType.SettingsWindow);
OpenSettingsWindow(eventData.Source).Forget();
else
CloseWindow(WindowType.SettingsWindow);
}
@@ -208,9 +234,15 @@ namespace BriarQueen.Framework.Managers.UI
return;
if (eventData.Shown)
OpenWindow(WindowType.CodexWindow);
{
if (!IsWindowOpen(WindowType.CodexWindow))
OpenWindow(WindowType.CodexWindow);
}
else
CloseWindow(WindowType.CodexWindow);
{
if (IsWindowOpen(WindowType.CodexWindow))
CloseWindow(WindowType.CodexWindow);
}
}
private void OnCodexChangedEvent(CodexChangedEvent eventData)
@@ -300,32 +332,94 @@ namespace BriarQueen.Framework.Managers.UI
OpenWindowInternal(windowType).Forget();
}
private async UniTask OpenSettingsWindow(SettingsOpenSource source)
{
await _windowTransitionGate.WaitAsync();
try
{
if (_disposed)
return;
var window = GetWindow(WindowType.SettingsWindow);
if (window == null)
{
Debug.LogError("[UIManager] Window of type SettingsWindow not registered.");
return;
}
if (_windowStack.Contains(window))
return;
_activeSettingsOverlayHost = null;
var openingSettingsOverPause =
source == SettingsOpenSource.PauseMenu &&
ActiveWindow?.WindowType == WindowType.PauseMenuWindow &&
ActiveWindow is IUIOverlayHost;
var openingSettingsOverMainMenu =
source == SettingsOpenSource.MainMenu &&
_mainMenuOverlayHost != null;
if (openingSettingsOverPause)
{
_activeSettingsOverlayHost = (IUIOverlayHost)ActiveWindow;
await _activeSettingsOverlayHost.SuspendForOverlay();
}
else if (openingSettingsOverMainMenu)
{
_activeSettingsOverlayHost = _mainMenuOverlayHost;
await _activeSettingsOverlayHost.SuspendForOverlay();
}
else if (ActiveWindow != null)
{
await ActiveWindow.Hide();
}
_windowStack.Push(window);
await window.Show();
NotifyWindowStateChanged(window.WindowType, true);
NotifyUIStackChanged();
}
finally
{
_windowTransitionGate.Release();
}
}
private async UniTask OpenWindowInternal(WindowType windowType)
{
if (_disposed)
return;
var window = GetWindow(windowType);
if (window == null)
await _windowTransitionGate.WaitAsync();
try
{
Debug.LogError($"[UIManager] Window of type {windowType} not registered.");
return;
if (_disposed)
return;
var window = GetWindow(windowType);
if (window == null)
{
Debug.LogError($"[UIManager] Window of type {windowType} not registered.");
return;
}
if (_windowStack.Contains(window))
return;
if (ActiveWindow != null)
await ActiveWindow.Hide();
_windowStack.Push(window);
await window.Show();
NotifyWindowStateChanged(window.WindowType, true);
NotifyUIStackChanged();
}
if (ActiveWindow == window)
return;
if (ActiveWindow != null)
finally
{
await ActiveWindow.Hide();
_windowTransitionGate.Release();
}
_windowStack.Push(window);
await window.Show();
NotifyUIStackChanged();
}
public void CloseWindow(WindowType windowType)
@@ -335,27 +429,45 @@ namespace BriarQueen.Framework.Managers.UI
private async UniTask CloseWindowInternal(WindowType windowType)
{
if (_disposed || _windowStack.Count == 0)
return;
var target = GetWindow(windowType);
if (target == null)
return;
while (_windowStack.Count > 0)
await _windowTransitionGate.WaitAsync();
try
{
var current = _windowStack.Pop();
if (current != null)
await current.Hide();
if (_disposed || _windowStack.Count == 0)
return;
if (current == target)
break;
var target = GetWindow(windowType);
if (target == null || !_windowStack.Contains(target))
return;
while (_windowStack.Count > 0)
{
var current = _windowStack.Pop();
if (current != null)
{
await current.Hide();
NotifyWindowStateChanged(current.WindowType, false);
}
if (current == target)
break;
}
if (target.WindowType == WindowType.SettingsWindow && _activeSettingsOverlayHost != null)
{
await _activeSettingsOverlayHost.ResumeFromOverlay();
_activeSettingsOverlayHost = null;
}
else if (ActiveWindow != null)
{
await ActiveWindow.Show();
}
NotifyUIStackChanged();
}
finally
{
_windowTransitionGate.Release();
}
if (ActiveWindow != null)
await ActiveWindow.Show();
NotifyUIStackChanged();
}
public void CloseTopWindow()
@@ -380,18 +492,38 @@ namespace BriarQueen.Framework.Managers.UI
private async UniTask CloseTopWindowInternal()
{
if (_disposed || _windowStack.Count == 0)
return;
await _windowTransitionGate.WaitAsync();
try
{
if (_disposed || _windowStack.Count == 0)
return;
var top = _windowStack.Pop();
var top = _windowStack.Pop();
if (top != null)
await top.Hide();
if (top != null)
{
await top.Hide();
NotifyWindowStateChanged(top.WindowType, false);
}
if (ActiveWindow != null)
await ActiveWindow.Show();
if (top != null &&
top.WindowType == WindowType.SettingsWindow &&
_activeSettingsOverlayHost != null)
{
await _activeSettingsOverlayHost.ResumeFromOverlay();
_activeSettingsOverlayHost = null;
}
else if (ActiveWindow != null)
{
await ActiveWindow.Show();
}
NotifyUIStackChanged();
NotifyUIStackChanged();
}
finally
{
_windowTransitionGate.Release();
}
}
public void ResetUIState()
@@ -401,44 +533,71 @@ namespace BriarQueen.Framework.Managers.UI
public async UniTask ResetUIStateAsync()
{
while (_windowStack.Count > 0)
await _windowTransitionGate.WaitAsync();
try
{
var window = _windowStack.Pop();
if (window != null)
var shouldResumeSettingsHost = false;
while (_windowStack.Count > 0)
{
var window = _windowStack.Pop();
if (window == null)
continue;
if (window.WindowType == WindowType.SettingsWindow && _activeSettingsOverlayHost != null)
shouldResumeSettingsHost = true;
try
{
await window.Hide();
NotifyWindowStateChanged(window.WindowType, false);
}
catch
{
}
}
}
if (_tutorialPopup != null)
if (shouldResumeSettingsHost)
{
try
{
await _activeSettingsOverlayHost.ResumeFromOverlay();
}
catch
{
}
}
_activeSettingsOverlayHost = null;
if (_tutorialPopup != null)
{
try
{
await _tutorialPopup.Hide();
}
catch
{
}
}
if (_infoPopup != null)
{
try
{
await _infoPopup.Hide();
}
catch
{
}
}
NotifyUIStackChanged();
}
finally
{
try
{
await _tutorialPopup.Hide();
}
catch
{
}
_windowTransitionGate.Release();
}
if (_infoPopup != null)
{
try
{
await _infoPopup.Hide();
}
catch
{
}
}
NotifyUIStackChanged();
}
private void ResetUIStateHard()
@@ -462,11 +621,18 @@ namespace BriarQueen.Framework.Managers.UI
faderComponent.gameObject.SetActive(false);
_windowStack.Clear();
_activeSettingsOverlayHost = null;
_mainMenuOverlayHost = null;
}
private void NotifyUIStackChanged()
{
_eventCoordinator.Publish(new UIStackChangedEvent(_windowStack.Count > 0));
}
private void NotifyWindowStateChanged(WindowType windowType, bool isOpen)
{
_eventCoordinator.Publish(new UIWindowStateChangedEvent(windowType, isOpen));
}
}
}

View File

@@ -14,7 +14,7 @@ using VContainer;
namespace BriarQueen.Game.Items.HoverZones
{
public class InteractZone : MonoBehaviour, IInteractable
public class TransitionZone : MonoBehaviour, IInteractable
{
[Header("Level Setup")]
[SerializeField]

View File

@@ -0,0 +1,57 @@
using BriarQueen.Data.IO.Saves;
using BriarQueen.Framework.Events.UI;
using BriarQueen.Framework.Managers.Levels.Data;
using BriarQueen.Game.Items.HoverZones;
using BriarQueen.Game.Puzzles.ChapterOne.AshwickHallow;
using Cysharp.Threading.Tasks;
using UnityEngine;
using UnityEngine.UI;
namespace BriarQueen.Game.Levels.ChapterOne.Ashwick
{
public class AshwickOutskirts : BaseLevel
{
[Header("Background")]
[SerializeField]
private Image _background;
[SerializeField]
private Sprite _backgroundOpenSprite;
[Header("Keypad Puzzle")]
[SerializeField]
private AshwickGate _ashwickGate;
[SerializeField]
private TransitionZone _keypadZone;
[SerializeField]
private TransitionZone _nextLevelZone;
private Sprite _defaultSprite;
protected async override UniTask PostLoadInternal()
{
if (SaveManager.GetLevelFlag(LevelFlag.AshwickGateOpen))
{
_background.sprite = _backgroundOpenSprite;
_nextLevelZone.Unlock();
await DestructionService.Destroy(_ashwickGate.gameObject);
await DestructionService.Destroy(_keypadZone.gameObject);
}
}
public async UniTask OpenGate()
{
EventCoordinator.PublishImmediate(new FadeEvent(false));
_background.sprite = _backgroundOpenSprite;
_nextLevelZone.Unlock();
await DestructionService.Destroy(_ashwickGate.gameObject);
await DestructionService.Destroy(_keypadZone.gameObject);
SaveManager.SetLevelFlag(LevelFlag.AshwickGateOpen, true);
EventCoordinator.PublishImmediate(new FadeEvent(true));
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: b17e98637f5042b4b70962875c373f5f
timeCreated: 1778704389

View File

@@ -0,0 +1,24 @@
using BriarQueen.Framework.Managers.Levels.Data;
using BriarQueen.Framework.Managers.Player.Data;
using Cysharp.Threading.Tasks;
using UnityEngine;
namespace BriarQueen.Game.Puzzles.ChapterOne.AshwickHallow
{
public class AshwickGate : BaseItem
{
[SerializeField] private AshwickGateKeypadPuzzle _keypadPuzzle;
public override string InteractableName => "Iron Gate";
public override UniTask OnInteract(ItemDataSo item = null)
{
if (!CheckEmptyHands())
return UniTask.CompletedTask;
_keypadPuzzle?.Open();
return UniTask.CompletedTask;
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: b7b31f5b3d0844359def22f68ccea856
timeCreated: 1778781649

View File

@@ -0,0 +1,393 @@
using System;
using System.Threading;
using BriarQueen.Data.Identifiers;
using BriarQueen.Data.IO.Saves;
using BriarQueen.Framework.Effects;
using BriarQueen.Framework.Events.Save;
using BriarQueen.Framework.Managers.Interaction;
using BriarQueen.Framework.Services.Puzzles.Base;
using BriarQueen.Game.Levels.ChapterOne.Ashwick;
using Cysharp.Threading.Tasks;
using MemoryPack;
using PrimeTween;
using TMPro;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;
using VContainer;
namespace BriarQueen.Game.Puzzles.ChapterOne.AshwickHallow
{
[MemoryPackable]
public partial class AshwickGateKeypadPuzzleState
{
public string Digits;
}
public class AshwickGateKeypadPuzzle : BasePuzzle, IPuzzleStateful
{
private const string CorrectCode = "312";
private const int RequiredDigits = 3;
[Header("Scene References")]
[SerializeField] private AshwickOutskirts _outskirts;
[SerializeField] private CanvasGroup _panelGroup;
[SerializeField] private TMP_InputField _displayField;
[SerializeField] private UILightGlow _statusGlow;
[SerializeField] private GraphicRaycaster _graphicRaycaster;
[SerializeField] private Button _closeButton;
[SerializeField] private Button[] _digitButtons = new Button[9];
[Header("Light Colors")]
[SerializeField] private Color _incorrectGlowColor = new(0.85f, 0.2f, 0.2f, 1f);
[SerializeField] private Color _correctGlowColor = new(0.2f, 0.85f, 0.35f, 1f);
[Header("Timing")]
[SerializeField] private float _feedbackDuration = 0.35f;
[SerializeField] private TweenSettings _panelFadeTweenSettings = new()
{
duration = 1.5f,
ease = Ease.OutQuad,
useUnscaledTime = true
};
private readonly UnityAction[] _digitCallbacks = new UnityAction[9];
private InteractManager _interactManager;
private CancellationTokenSource _panelCts;
private Sequence _panelSequence;
private string _currentDigits = string.Empty;
private bool _isCompleted;
private bool _isEvaluating;
private bool _isOpen;
private bool _raycasterRegistered;
public override string PuzzleID => PuzzleIdentifiers.AllPuzzles[PuzzleKey.AshwickMarketGate];
public bool IsCompleted => _isCompleted || SaveManager.GetLevelFlag(LevelFlag.AshwickGateOpen);
[Inject]
public void ConstructKeypad(InteractManager interactManager)
{
_interactManager = interactManager;
}
private void Awake()
{
if (_displayField != null)
{
_displayField.readOnly = true;
_displayField.text = string.Empty;
}
BindButtons();
SetPanelState(0f, false, false);
SyncDisplay();
}
private void OnDestroy()
{
UnbindButtons();
TryUnregisterRaycaster();
CancelPanelTween();
}
public override UniTask PostLoad()
{
_isCompleted = SaveManager.GetLevelFlag(LevelFlag.AshwickGateOpen);
_isOpen = false;
_isEvaluating = false;
SetPanelState(0f, false, false);
SyncDisplay();
_statusGlow?.TurnOff().Forget();
return UniTask.CompletedTask;
}
public override UniTask CompletePuzzle()
{
return CompletePuzzleInternal();
}
public void Open()
{
OpenInternal().Forget();
}
public void Close()
{
CloseInternal(requestSave: true).Forget();
}
public UniTask<byte[]> CaptureState()
{
var state = new AshwickGateKeypadPuzzleState
{
Digits = IsCompleted ? string.Empty : _currentDigits
};
return UniTask.FromResult(MemoryPackSerializer.Serialize(state));
}
public UniTask RestoreState(byte[] state)
{
_isCompleted = SaveManager.GetLevelFlag(LevelFlag.AshwickGateOpen);
_currentDigits = string.Empty;
if (!_isCompleted && state is { Length: > 0 })
{
var restored = MemoryPackSerializer.Deserialize<AshwickGateKeypadPuzzleState>(state);
_currentDigits = restored?.Digits ?? string.Empty;
if (_currentDigits.Length > RequiredDigits)
_currentDigits = _currentDigits[..RequiredDigits];
}
SyncDisplay();
return UniTask.CompletedTask;
}
private async UniTask CompletePuzzleInternal()
{
if (IsCompleted || _outskirts == null)
return;
_isCompleted = true;
_currentDigits = string.Empty;
SyncDisplay();
SaveManager.SetPuzzleCompleted(PuzzleKey.AshwickMarketGate, true, requestSave: false);
await CloseInternal(requestSave: false);
await _outskirts.OpenGate();
}
private async UniTaskVoid OpenInternal()
{
if (IsCompleted || _isEvaluating || _isOpen)
return;
_isOpen = true;
ResetPanelTween();
SetPanelState(0f, false, true);
SyncDisplay();
TryRegisterRaycaster();
_statusGlow?.TurnOff().Forget();
try
{
_panelSequence = Sequence.Create(useUnscaledTime: true)
.Group(Tween.Alpha(_panelGroup, new TweenSettings<float>
{
startValue = 0f,
endValue = 1f,
settings = _panelFadeTweenSettings
}));
await _panelSequence.ToUniTask(cancellationToken: _panelCts.Token);
}
catch (OperationCanceledException)
{
return;
}
finally
{
_panelSequence = default;
}
SetPanelState(1f, true, true);
}
private async UniTask CloseInternal(bool requestSave)
{
if (!_isOpen)
return;
_isOpen = false;
ResetPanelTween();
if (_panelGroup != null)
{
_panelGroup.interactable = false;
_panelGroup.blocksRaycasts = true;
}
try
{
_panelSequence = Sequence.Create(useUnscaledTime: true)
.Group(Tween.Alpha(_panelGroup, new TweenSettings<float>
{
startValue = _panelGroup != null ? _panelGroup.alpha : 0f,
endValue = 0f,
settings = _panelFadeTweenSettings
}));
await _panelSequence.ToUniTask(cancellationToken: _panelCts.Token);
}
catch (OperationCanceledException)
{
return;
}
finally
{
_panelSequence = default;
}
SetPanelState(0f, false, false);
TryUnregisterRaycaster();
if (requestSave)
EventCoordinator.PublishImmediate(new RequestGameSaveEvent());
}
private void OnDigitPressed(int digit)
{
if (_isEvaluating || IsCompleted || !_isOpen || _currentDigits.Length >= RequiredDigits)
return;
_currentDigits += digit.ToString();
SyncDisplay();
if (_currentDigits.Length == RequiredDigits)
EvaluateCode().Forget();
}
private async UniTaskVoid EvaluateCode()
{
_isEvaluating = true;
if (_panelGroup != null)
_panelGroup.interactable = false;
if (_currentDigits == CorrectCode)
{
if (_statusGlow != null)
{
_statusGlow.SetLightColor(_correctGlowColor);
await _statusGlow.TurnOn();
}
await CompletePuzzleInternal();
}
else
{
if (_statusGlow != null)
{
_statusGlow.SetLightColor(_incorrectGlowColor);
await _statusGlow.TurnOn();
}
_currentDigits = string.Empty;
SyncDisplay();
if (_statusGlow != null)
await _statusGlow.TurnOff();
if (_isOpen && _panelGroup != null)
_panelGroup.interactable = true;
}
_isEvaluating = false;
}
private void BindButtons()
{
for (var i = 0; i < _digitButtons.Length; i++)
{
var button = _digitButtons[i];
if (button == null)
continue;
var digit = i + 1;
_digitCallbacks[i] = () => OnDigitPressed(digit);
button.onClick.AddListener(_digitCallbacks[i]);
}
if (_closeButton != null)
_closeButton.onClick.AddListener(Close);
}
private void UnbindButtons()
{
for (var i = 0; i < _digitButtons.Length; i++)
{
var button = _digitButtons[i];
if (button == null || _digitCallbacks[i] == null)
continue;
button.onClick.RemoveListener(_digitCallbacks[i]);
_digitCallbacks[i] = null;
}
if (_closeButton != null)
_closeButton.onClick.RemoveListener(Close);
}
private void SyncDisplay()
{
if (_displayField == null)
return;
_displayField.text = _currentDigits;
}
private void SetPanelState(float alpha, bool interactable, bool blocksRaycasts)
{
if (_panelGroup == null)
return;
_panelGroup.alpha = alpha;
_panelGroup.interactable = interactable;
_panelGroup.blocksRaycasts = blocksRaycasts;
}
private void ResetPanelTween()
{
CancelPanelTween();
_panelCts = new CancellationTokenSource();
}
private void CancelPanelTween()
{
if (_panelSequence.isAlive)
_panelSequence.Stop();
if (_panelCts != null)
{
try
{
_panelCts.Cancel();
}
catch
{
}
_panelCts.Dispose();
_panelCts = null;
}
}
private void TryRegisterRaycaster()
{
if (_raycasterRegistered || _interactManager == null || _graphicRaycaster == null)
return;
_interactManager.AddUIRaycaster(_graphicRaycaster);
_interactManager.SetExclusiveRaycaster(_graphicRaycaster);
_raycasterRegistered = true;
}
private void TryUnregisterRaycaster()
{
if (!_raycasterRegistered || _interactManager == null || _graphicRaycaster == null)
return;
_interactManager.RemoveUIRaycaster(_graphicRaycaster);
_interactManager.ClearExclusiveRaycaster();
_raycasterRegistered = false;
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 229b8c87b487340b8b0a02349675f70c

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 9afe762158da4f8c8bb8a1bcb98d62b1
timeCreated: 1778242706

View File

@@ -1,26 +0,0 @@
using System.Linq;
using BriarQueen.Data.Identifiers;
using BriarQueen.Framework.Events.UI;
using BriarQueen.Framework.Managers.Levels.Data;
using BriarQueen.Framework.Managers.Player.Data;
using Cysharp.Threading.Tasks;
namespace BriarQueen.Game.Puzzles.ChapterOne.AshwickHallow.GatePuzzle
{
public class AshwickGate : BaseItem
{
public override UniTask OnInteract(ItemDataSo item = null)
{
var codex = PlayerManager.GetDiscoveredCodexEntriesByType(CodexType.PuzzleClue);
if (codex.Any(x => x.UniqueID == CodexEntryIDs.Get(ClueEntryID.AshwickMarketGate)))
{
EventCoordinator.Publish(new DisplayInteractEvent($"The note said to use the lights."));
return UniTask.CompletedTask;
}
EventCoordinator.Publish(new DisplayInteractEvent($"It's locked."));
return UniTask.CompletedTask;
}
}
}

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 1bc3c6697e5b4c029e807116f930e9a3
timeCreated: 1778247353

View File

@@ -1,167 +0,0 @@
using BriarQueen.Data.Identifiers;
using BriarQueen.Data.IO.Saves;
using BriarQueen.Framework.Effects;
using BriarQueen.Framework.Events.Save;
using BriarQueen.Framework.Services.Puzzles.Base;
using BriarQueen.Game.Items.HoverZones;
using Cysharp.Threading.Tasks;
using MemoryPack;
using UnityEngine;
namespace BriarQueen.Game.Puzzles.ChapterOne.AshwickHallow.GatePuzzle
{
public class AshwickMarketGatePuzzle : BasePuzzle, IPuzzleStateful
{
[Header("Lights")]
[SerializeField]
private StreetlightGlow _leftLight;
[SerializeField]
private StreetlightGlow _rightLight;
[Header("Solution")]
[SerializeField]
private StreetlightGlowState _leftLightRequiredState = StreetlightGlowState.Blue;
[SerializeField]
private StreetlightGlowState _rightLightRequiredState = StreetlightGlowState.Blue;
[Header("Gate")]
[SerializeField]
private UIDissolveImage _gateImage;
[Header("Transition")]
[SerializeField]
private InteractZone _marketplaceZone;
private bool _isCompleted;
private bool _isCompleting;
public override string PuzzleID => PuzzleIdentifiers.AllPuzzles[PuzzleKey.AshwickMarketGate];
public bool IsCompleted => _isCompleted;
public override UniTask PostLoad()
{
_leftLight?.Initialize(this);
_rightLight?.Initialize(this);
return UniTask.CompletedTask;
}
public async UniTask EvaluateCompletion()
{
if (_isCompleted || _isCompleting)
{
return;
}
if (!CheckComplete())
{
return;
}
await CompletePuzzle();
}
public override async UniTask CompletePuzzle()
{
if (_isCompleted || _isCompleting)
{
return;
}
_isCompleting = true;
try
{
_isCompleted = true;
_leftLight?.Lock();
_rightLight?.Lock();
_marketplaceZone.gameObject.SetActive(true);
SaveManager.SetPuzzleCompleted(PuzzleKey.AshwickMarketGate, true, false);
SaveManager.SetLevelFlag(LevelFlag.MarketGateOpen, true, false);
EventCoordinator.PublishImmediate(new RequestGameSaveEvent());
if (_gateImage != null)
{
await _gateImage.DissolveOutAndDestroy();
}
}
finally
{
_isCompleting = false;
}
}
public bool CheckComplete()
{
if (_leftLight == null || _rightLight == null)
{
return false;
}
return _leftLight.CurrentState == _leftLightRequiredState &&
_rightLight.CurrentState == _rightLightRequiredState;
}
public UniTask<byte[]> CaptureState()
{
var payload = new AshwickMarketGatePuzzleStatePayload
{
LeftLightState = _leftLight != null ? _leftLight.CurrentState : StreetlightGlowState.Off,
RightLightState = _rightLight != null ? _rightLight.CurrentState : StreetlightGlowState.Off,
IsCompleted = _isCompleted
};
return UniTask.FromResult(MemoryPackSerializer.Serialize(payload));
}
public async UniTask RestoreState(byte[] state)
{
var isMarkedComplete = SaveManager.CurrentSave?.PersistentVariables?.Game
?.IsPuzzleCompleted(PuzzleKey.AshwickMarketGate) == true;
var payload = new AshwickMarketGatePuzzleStatePayload
{
LeftLightState = StreetlightGlowState.Off,
RightLightState = StreetlightGlowState.Off,
IsCompleted = isMarkedComplete
};
if (state is { Length: > 0 })
{
payload = MemoryPackSerializer.Deserialize<AshwickMarketGatePuzzleStatePayload>(state);
payload.IsCompleted |= isMarkedComplete;
}
if (_leftLight != null)
{
await _leftLight.SetState(payload.LeftLightState, false);
}
if (_rightLight != null)
{
await _rightLight.SetState(payload.RightLightState, false);
}
if (!payload.IsCompleted)
{
_isCompleted = false;
_leftLight?.Unlock();
_rightLight?.Unlock();
return;
}
_isCompleted = true;
_leftLight?.Lock();
_rightLight?.Lock();
if (_gateImage != null && DestructionService != null)
{
await DestructionService.Destroy(_gateImage.gameObject);
}
}
}
}

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 701653a82bc1487d8aff6ea83a9abaeb
timeCreated: 1778243473

View File

@@ -1,12 +0,0 @@
using MemoryPack;
namespace BriarQueen.Game.Puzzles.ChapterOne.AshwickHallow.GatePuzzle
{
[MemoryPackable]
public partial struct AshwickMarketGatePuzzleStatePayload
{
public StreetlightGlowState LeftLightState;
public StreetlightGlowState RightLightState;
public bool IsCompleted;
}
}

View File

@@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: de15a1ddef77473cb145cd59500cde71

View File

@@ -1,181 +0,0 @@
using BriarQueen.Data.Identifiers;
using BriarQueen.Framework.Effects;
using BriarQueen.Framework.Events.UI;
using BriarQueen.Framework.Managers.Levels.Data;
using BriarQueen.Framework.Managers.Player.Data;
using BriarQueen.Framework.Managers.UI;
using Cysharp.Threading.Tasks;
using UnityEngine;
namespace BriarQueen.Game.Puzzles.ChapterOne.AshwickHallow.GatePuzzle
{
public enum StreetlightGlowState
{
Off = 0,
Red = 1,
Orange = 2,
Green = 3,
Blue = 4
}
public class StreetlightGlow : BaseItem
{
[Header("Puzzle")]
[SerializeField]
private AshwickMarketGatePuzzle _puzzle;
[Header("Light")]
[SerializeField]
private UILightGlow _light;
[SerializeField]
private float _changeDuration = 0.25f;
[SerializeField]
private float _activeIntensity = 1.5f;
[Header("Colours")]
[SerializeField]
private Color _red = new(0.872f, 0.08f, 0.1704798f, 1f);
[SerializeField]
private Color _orange = new(0.8666667f, 0.5109999f, 0f, 1f);
[SerializeField]
private Color _green = new(0.12f, 0.865f, 0.1f, 1f);
[SerializeField]
private Color _blue = new(0.1490196f, 0.6001954f, 1f, 1f);
private bool _isChanging;
private StreetlightGlowState _currentState = StreetlightGlowState.Off;
public StreetlightGlowState CurrentState => _currentState;
public override string InteractableName
{
get
{
if (_isLocked)
{
return string.Empty;
}
return _currentState == StreetlightGlowState.Off
? "Turn On"
: "Switch Colour";
}
}
public override UICursorService.CursorStyle ApplicableCursorStyle => UICursorService.CursorStyle.Interact;
public void Initialize(AshwickMarketGatePuzzle puzzle)
{
if (_puzzle == null)
{
_puzzle = puzzle;
}
SetState(_currentState, false).Forget();
}
public override async UniTask OnInteract(ItemDataSo item = null)
{
if (item != null)
{
EventCoordinator.Publish(new DisplayInteractEvent(InteractEventIDs.Get(ItemInteractKey.CantUseItem)));
return;
}
if (_isLocked || _isChanging)
{
return;
}
if (!CheckEmptyHands())
{
return;
}
await CycleNext();
if (_puzzle != null)
{
await _puzzle.EvaluateCompletion();
}
}
public async UniTask SetState(StreetlightGlowState state, bool animate)
{
_currentState = state;
if (_light == null)
{
return;
}
var targetColor = GetColorForState(state);
var targetIntensity = state == StreetlightGlowState.Off ? 0f : _activeIntensity;
if (!animate)
{
_light.SetLightColor(targetColor);
_light.SetIntensity(targetIntensity);
return;
}
_isChanging = true;
try
{
await _light.TweenTo(targetColor, targetIntensity, _changeDuration);
}
finally
{
_isChanging = false;
}
}
public void Lock()
{
_isLocked = true;
}
public void Unlock()
{
_isLocked = false;
}
public Color GetCurrentColor()
{
return GetColorForState(_currentState);
}
private UniTask CycleNext()
{
var nextState = _currentState switch
{
StreetlightGlowState.Off => StreetlightGlowState.Red,
StreetlightGlowState.Red => StreetlightGlowState.Green,
StreetlightGlowState.Green => StreetlightGlowState.Orange,
StreetlightGlowState.Orange => StreetlightGlowState.Blue,
StreetlightGlowState.Blue => StreetlightGlowState.Off,
_ => StreetlightGlowState.Off
};
return SetState(nextState, true);
}
private Color GetColorForState(StreetlightGlowState state)
{
return state switch
{
StreetlightGlowState.Red => _red,
StreetlightGlowState.Orange => _orange,
StreetlightGlowState.Green => _green,
StreetlightGlowState.Blue => _blue,
_ => Color.black
};
}
}
}

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 74c68ae5d328428f87e9fb87424df340
timeCreated: 1778242706

View File

@@ -341,12 +341,10 @@ namespace BriarQueen.UI.Codex
if (_canvasGroup != null)
{
_canvasGroup.blocksRaycasts = false;
_canvasGroup.blocksRaycasts = true;
_canvasGroup.interactable = false;
}
TryUnregisterRaycaster();
_windowSequence = Sequence.Create(useUnscaledTime: true)
.Group(Tween.Alpha(_backgroundGroup, new TweenSettings<float>
{
@@ -375,6 +373,7 @@ namespace BriarQueen.UI.Codex
_canvasGroup.interactable = false;
}
TryUnregisterRaycaster();
gameObject.SetActive(false);
Debug.Log($"[CodexWindow] Codex Window Hide Complete.");
}

View File

@@ -4,6 +4,8 @@ using BriarQueen.Framework.Coordinators.Events;
using BriarQueen.Framework.Effects;
using BriarQueen.Framework.Events.UI;
using BriarQueen.Framework.Managers.Input;
using BriarQueen.Framework.Managers.UI;
using BriarQueen.Framework.Managers.UI.Base;
using BriarQueen.Framework.Managers.UI.Events;
using BriarQueen.Framework.Services.Game;
using BriarQueen.Game.Effects;
@@ -19,7 +21,7 @@ using VContainer;
namespace BriarQueen.UI.Menus
{
public class MainMenuWindow : MonoBehaviour
public class MainMenuWindow : MonoBehaviour, IUIOverlayHost
{
[Header("Intro Screen")]
[SerializeField]
@@ -38,9 +40,9 @@ namespace BriarQueen.UI.Menus
[FormerlySerializedAs("_mainMenuWindowCanvasGroup")]
private CanvasGroup _mainMenuGroup;
[Header("Buttons")]
[Header("Display")]
[SerializeField]
private CanvasGroup _buttonsGroup;
private CanvasGroup _displayGroup;
[SerializeField]
private AnimatedSelectionButtonGroup _mainMenuSelectionGroup;
@@ -93,6 +95,14 @@ namespace BriarQueen.UI.Menus
useUnscaledTime = true
};
[SerializeField]
private TweenSettings _settingsOverlayTweenSettings = new()
{
duration = 0.25f,
ease = Ease.OutQuad,
useUnscaledTime = true
};
[SerializeField]
private TweenSettings _pressStartPulseTweenSettings = new()
{
@@ -106,23 +116,31 @@ namespace BriarQueen.UI.Menus
private float _pressStartPulseMinimumAlpha = 0.25f;
private CancellationTokenSource _introCts;
private CancellationTokenSource _settingsOverlayCts;
private CancellationTokenSource _selectSaveCts;
private EventCoordinator _eventCoordinator;
private GameService _gameService;
private InputManager _inputManager;
private UIManager _uiManager;
private Sequence _pressStartFadeSequence;
private Sequence _pressStartPulseSequence;
private Sequence _settingsOverlaySequence;
private Sequence _selectSaveSequence;
private bool _introFinished;
private bool _introTransitioning;
[Inject]
public void Construct(GameService gameService, EventCoordinator eventCoordinator, InputManager inputManager)
public void Construct(
GameService gameService,
EventCoordinator eventCoordinator,
InputManager inputManager,
UIManager uiManager)
{
_gameService = gameService;
_eventCoordinator = eventCoordinator;
_inputManager = inputManager;
_uiManager = uiManager;
}
private void Awake()
@@ -139,6 +157,7 @@ namespace BriarQueen.UI.Menus
private void OnEnable()
{
BindButtons();
_uiManager?.RegisterMainMenuOverlayHost(this);
_eventCoordinator?.PublishImmediate(new UIToggleHudEvent(false));
_inputManager?.BindSubmitForStart(OnIntroSubmit);
@@ -164,22 +183,27 @@ namespace BriarQueen.UI.Menus
private void OnDisable()
{
UnbindButtons();
_uiManager?.UnregisterMainMenuOverlayHost(this);
_inputManager?.ResetSubmitBind(OnIntroSubmit);
_eventCoordinator?.Unsubscribe<UIBackRequestedEvent>(OnBackRequested);
StopIntroTweens();
StopSettingsOverlayTween();
StopSelectSaveTween();
}
private void OnDestroy()
{
_uiManager?.UnregisterMainMenuOverlayHost(this);
if (_selectSaveWindow != null)
{
_selectSaveWindow.OnCloseWindow -= CloseSelectSaveWindow;
}
StopIntroTweens();
StopSettingsOverlayTween();
StopSelectSaveTween();
}
@@ -386,7 +410,7 @@ namespace BriarQueen.UI.Menus
private void OnSettingsClicked()
{
_eventCoordinator?.PublishImmediate(new UIToggleSettingsWindow(true));
_eventCoordinator?.PublishImmediate(new UIToggleSettingsWindow(true, SettingsOpenSource.MainMenu));
}
private void OnQuitClicked()
@@ -432,9 +456,9 @@ namespace BriarQueen.UI.Menus
endValue = 1f,
settings = _selectSaveTweenSettings
}))
.Group(Tween.Alpha(_buttonsGroup, new TweenSettings<float>
.Group(Tween.Alpha(_displayGroup, new TweenSettings<float>
{
startValue = _buttonsGroup.alpha,
startValue = _displayGroup.alpha,
endValue = 0f,
settings = _selectSaveTweenSettings
}));
@@ -483,9 +507,9 @@ namespace BriarQueen.UI.Menus
endValue = 0f,
settings = _selectSaveTweenSettings
}))
.Group(Tween.Alpha(_buttonsGroup, new TweenSettings<float>
.Group(Tween.Alpha(_displayGroup, new TweenSettings<float>
{
startValue = _buttonsGroup.alpha,
startValue = _displayGroup.alpha,
endValue = 1f,
settings = _selectSaveTweenSettings
}));
@@ -544,6 +568,19 @@ namespace BriarQueen.UI.Menus
CancelAndDispose(ref _selectSaveCts);
}
private void ResetSettingsOverlayCtsAndCancelRunning()
{
StopSequence(ref _settingsOverlaySequence);
CancelAndDispose(ref _settingsOverlayCts);
_settingsOverlayCts = new CancellationTokenSource();
}
private void StopSettingsOverlayTween()
{
StopSequence(ref _settingsOverlaySequence);
CancelAndDispose(ref _settingsOverlayCts);
}
private static void StopSequence(ref Sequence sequence)
{
if (sequence.isAlive)
@@ -597,5 +634,67 @@ namespace BriarQueen.UI.Menus
group.interactable = inputEnabled;
group.blocksRaycasts = inputEnabled;
}
public async UniTask SuspendForOverlay()
{
if (_mainMenuGroup == null)
return;
ResetSettingsOverlayCtsAndCancelRunning();
SetCanvasGroupInteractivity(_mainMenuGroup, false);
try
{
_settingsOverlaySequence = Sequence.Create(useUnscaledTime: true)
.Group(Tween.Alpha(_displayGroup, new TweenSettings<float>
{
startValue = _displayGroup.alpha,
endValue = 0f,
settings = _settingsOverlayTweenSettings
}));
await _settingsOverlaySequence.ToUniTask(cancellationToken: _settingsOverlayCts.Token);
}
catch (OperationCanceledException)
{
return;
}
finally
{
_settingsOverlaySequence = default;
}
}
public async UniTask ResumeFromOverlay()
{
if (_mainMenuGroup == null)
return;
ResetSettingsOverlayCtsAndCancelRunning();
try
{
_settingsOverlaySequence = Sequence.Create(useUnscaledTime: true)
.Group(Tween.Alpha(_displayGroup, new TweenSettings<float>
{
startValue = _displayGroup.alpha,
endValue = 1f,
settings = _settingsOverlayTweenSettings
}));
await _settingsOverlaySequence.ToUniTask(cancellationToken: _settingsOverlayCts.Token);
}
catch (OperationCanceledException)
{
return;
}
finally
{
_settingsOverlaySequence = default;
}
SetCanvasGroupInteractivity(_mainMenuGroup, true);
_mainMenuSelectionGroup?.SelectIndex(1, true);
}
}
}

View File

@@ -20,7 +20,7 @@ using VContainer;
namespace BriarQueen.UI.Menus
{
public class PauseMenuWindow : MonoBehaviour, IUIWindow
public class PauseMenuWindow : MonoBehaviour, IUIWindow, IUIOverlayHost
{
[Header("Root UI")]
[SerializeField] private CanvasGroup _canvasGroup;
@@ -186,12 +186,9 @@ namespace BriarQueen.UI.Menus
{
StopAndResetCancellation();
_canvasGroup.blocksRaycasts = false;
_canvasGroup.blocksRaycasts = true;
_canvasGroup.interactable = false;
TryUnregisterRaycaster();
try
{
await FadeGroup(_buttonsGroup, 0f, _buttonFadeSettings, _cts.Token);
@@ -212,9 +209,46 @@ namespace BriarQueen.UI.Menus
_canvasGroup.blocksRaycasts = false;
_canvasGroup.interactable = false;
TryUnregisterRaycaster();
gameObject.SetActive(false);
}
public async UniTask SuspendForOverlay()
{
StopAndResetCancellation();
_buttonsGroup.blocksRaycasts = false;
_buttonsGroup.interactable = false;
try
{
await FadeGroup(_buttonsGroup, 0f, _buttonFadeSettings, _cts.Token);
}
catch (OperationCanceledException)
{
return;
}
}
public async UniTask ResumeFromOverlay()
{
StopAndResetCancellation();
_buttonsGroup.blocksRaycasts = true;
_buttonsGroup.interactable = true;
try
{
await FadeGroup(_buttonsGroup, 1f, _buttonFadeSettings, _cts.Token);
}
catch (OperationCanceledException)
{
return;
}
SelectDefault();
}
// ── DI ────────────────────────────────────────────────────────
[Inject]
@@ -299,7 +333,7 @@ namespace BriarQueen.UI.Menus
private void OnSettingsClicked(UnderlineButton _)
{
_eventCoordinator?.Publish(new UIToggleSettingsWindow(true));
_eventCoordinator?.Publish(new UIToggleSettingsWindow(true, SettingsOpenSource.PauseMenu));
}
private void OnExitClicked(UnderlineButton _)

View File

@@ -306,11 +306,9 @@ namespace BriarQueen.UI.Menus
StopAndResetCancellation();
_confirmUnappliedChangesWindow?.CloseImmediate();
_canvasGroup.blocksRaycasts = false;
_canvasGroup.blocksRaycasts = true;
_canvasGroup.interactable = false;
TryUnregisterRaycaster();
try
{
// Step 1: fade out active panel
@@ -345,6 +343,10 @@ namespace BriarQueen.UI.Menus
_panelSequence = default;
}
_canvasGroup.blocksRaycasts = false;
_canvasGroup.interactable = false;
TryUnregisterRaycaster();
gameObject.SetActive(false);
}
@@ -916,6 +918,7 @@ namespace BriarQueen.UI.Menus
return;
_interactManager.AddUIRaycaster(_graphicRaycaster);
_interactManager.SetExclusiveRaycaster(_graphicRaycaster);
_raycasterRegistered = true;
}
@@ -928,6 +931,7 @@ namespace BriarQueen.UI.Menus
return;
_interactManager.RemoveUIRaycaster(_graphicRaycaster);
_interactManager.ClearExclusiveRaycaster();
_raycasterRegistered = false;
}
}

View File

@@ -29,7 +29,6 @@ MonoBehaviour:
m_StripUnusedVariants: 1
m_StripScreenCoordOverrideVariants: 1
supportRuntimeDebugDisplay: 0
m_EnableRenderGraph: 0
m_Settings:
m_SettingsList:
m_List:
@@ -67,6 +66,7 @@ MonoBehaviour:
- rid: 4221397444798185483
- rid: 263345485245579335
- rid: 263345485245579336
- rid: 4945117630457970688
m_RuntimeSettings:
m_List: []
m_AssetVersion: 10
@@ -267,6 +267,17 @@ MonoBehaviour:
data:
m_Version: 1
m_UseBicubicLightmapSampling: 0
- rid: 4945117630457970688
type: {class: WorldRenderPipelineResources, ns: UnityEngine.PathTracing.Core, asm: Unity.PathTracing.Runtime}
data:
_version: 3
_blitCubemap: {fileID: 7200000, guid: 5a992812cb320d146a66cc600200cce7, type: 3}
_blitGrayScaleCookie: {fileID: 7200000, guid: 557fa399e33bf7647bda5697c5c158df, type: 3}
_setAlphaChannelShader: {fileID: 7200000, guid: 5efaea0e81c66334aa9d062d6573e6fd, type: 3}
_environmentImportanceSamplingBuild: {fileID: 7200000, guid: 5bb2534d2411d344cbc54f880232640f, type: 3}
_skyBoxMesh: {fileID: 4300000, guid: 0529e6c5f6dea8c4a8c2835ed7de57cb, type: 2}
_sixFaceSkyBoxMesh: {fileID: 4300000, guid: a80925ceebd011741b42509226cefc74, type: 2}
_buildLightGridShader: {fileID: 7200000, guid: 16e47c1641bd0104e92b624601457bb0, type: 3}
- rid: 6852985685364965376
type: {class: URPShaderStrippingSetting, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
data:
@@ -351,7 +362,6 @@ MonoBehaviour:
type: {class: RenderGraphSettings, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
data:
m_Version: 0
m_EnableRenderCompatibilityMode: 0
- rid: 6852985685364965386
type: {class: GPUResidentDrawerResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.GPUDriven.Runtime}
data:

View File

@@ -7,7 +7,7 @@
"com.unity.addressables": "2.9.1",
"com.unity.ide.rider": "3.0.39",
"com.unity.inputsystem": "1.19.0",
"com.unity.render-pipelines.universal": "17.3.0",
"com.unity.render-pipelines.universal": "17.4.0",
"com.unity.ugui": "2.0.0",
"jp.hadashikick.vcontainer": "https://github.com/hadashiA/VContainer.git?path=VContainer/Assets/VContainer",
"com.unity.modules.accessibility": "1.0.0",

View File

@@ -44,7 +44,7 @@
"url": "https://packages.unity.com"
},
"com.unity.burst": {
"version": "1.8.28",
"version": "1.8.29",
"depth": 2,
"source": "registry",
"dependencies": {
@@ -54,14 +54,14 @@
"url": "https://packages.unity.com"
},
"com.unity.collections": {
"version": "2.6.2",
"version": "2.6.5",
"depth": 2,
"source": "registry",
"dependencies": {
"com.unity.burst": "1.8.23",
"com.unity.burst": "1.8.27",
"com.unity.mathematics": "1.3.2",
"com.unity.test-framework": "1.4.6",
"com.unity.nuget.mono-cecil": "1.11.5",
"com.unity.nuget.mono-cecil": "1.11.6",
"com.unity.test-framework.performance": "3.0.3"
},
"url": "https://packages.unity.com"
@@ -180,7 +180,7 @@
}
},
"com.unity.test-framework.performance": {
"version": "3.2.0",
"version": "3.4.0",
"depth": 3,
"source": "registry",
"dependencies": {

View File

@@ -1,2 +1,2 @@
m_EditorVersion: 6000.3.11f1
m_EditorVersionWithRevision: 6000.3.11f1 (3000ef702840)
m_EditorVersion: 6000.3.15f1
m_EditorVersionWithRevision: 6000.3.15f1 (c1aa84e375f6)