Compare commits

...

16 Commits

Author SHA1 Message Date
Michal Pikulski
6f515e954d Fix hud issues and have rainbow play correctly 2025-11-09 22:40:58 +01:00
Michal Pikulski
e9855faede Move app switcher to hud 2025-11-09 21:52:47 +01:00
Michal Pikulski
0c9a388433 Move buttons to HUD Manager 2025-11-09 13:23:03 +01:00
MacBuilder
a80aed8eb7 Make app switcher disappear when opening album 2025-11-09 00:20:48 +01:00
journaliciouz
5d0a9f999a Aligned card slots better in book 2025-11-08 22:46:16 +01:00
journaliciouz
eda7361702 Fixed most horrifying scaling issues with the book 2025-11-08 22:16:43 +01:00
journaliciouz
2ec53629c6 Added contextual UI switching depending on level type 2025-11-08 21:08:01 +01:00
journaliciouz
0e55248698 Fixed weird background breaks in outrocinematic 2025-11-08 19:56:59 +01:00
Michal Pikulski
4d7c48a681 Update Cinematic Manager, Hud Manager, fix log verbosity issue, update PauseMenu 2025-11-08 12:07:45 +01:00
Michal Pikulski
6e466cd7aa Add dev options ot the minigame menu 2025-11-07 17:50:46 +01:00
29d01df3ce Merge branch 'main' of https://homelab.tailf7f81b.ts.net/tschesky/AppleHillsProduction 2025-11-07 17:37:17 +01:00
de0a243b1e Added eagle eye button 2025-11-07 17:37:12 +01:00
fdfa4e0e09 Fixed a problem with buttons not rezising in the End game UI for the Minigame 2025-11-07 17:31:46 +01:00
Michal Pikulski
2127bf37b2 Add boosters to minigame again 2025-11-07 17:26:29 +01:00
ea12766cf7 Fixed button issue 2025-11-07 17:21:38 +01:00
41c71f07fd Fixed compile error 2025-11-07 17:08:02 +01:00
34 changed files with 5063 additions and 4049 deletions

View File

@@ -15,7 +15,7 @@ MonoBehaviour:
m_DefaultGroup: 6f3207429a65b3e4b83935ac19791077
m_currentHash:
serializedVersion: 2
Hash: f08b6489862aaf7bfceb29f571e2ef6c
Hash: 589e22fe6cd2fe0e25d89bd44a35bcbc
m_OptimizeCatalogSize: 0
m_BuildRemoteCatalog: 0
m_CatalogRequestsTimeout: 0

View File

@@ -18,13 +18,10 @@ MonoBehaviour:
- {fileID: 458265635552197097, guid: a77d1e8b2fa8aa945a6f39b312536e0d, type: 3}
- {fileID: 552225285624929822, guid: e39992796d5459442be9967c77e27066, type: 3}
- {fileID: 7644433920135100480, guid: 12d242e44fe80ab44af852254b7cab0f, type: 3}
- {fileID: 1794231825201849485, guid: 6fb0d7fc6faad154b8c3e3cb7abb7c15, type: 3}
- {fileID: 6399527186463168339, guid: ac41583865245bc4bb3de6c15929b9fc, type: 3}
- {fileID: 2755712733105741372, guid: 70e6fca1164d9a140b271f4261f1f023, type: 3}
- {fileID: 5034240524438268576, guid: adbb9bfd5489f3f4995966535ca5f24b, type: 3}
- {fileID: 2326026072467672024, guid: c8d9eb8c3ca524b4eb67f6364b455b87, type: 3}
- {fileID: 3528960956969533010, guid: 53eea3840d3cde34a9768b8773a3a7e8, type: 3}
- {fileID: 9076822654798104907, guid: 4684df63af6398f4f9f624a35023f8d2, type: 3}
- {fileID: 3863019143023165617, guid: 774e30e3f0b1d0d49bad0c2abf11038a, type: 3}
- {fileID: 5034240524438268576, guid: b15ba9d3d508ef244b0eeb76404dc9de, type: 3}
- {fileID: 7207007194116694737, guid: 7180ae585f0db8044ba048426f72d995, type: 3}

View File

@@ -11,7 +11,6 @@ GameObject:
- component: {fileID: 1965178107275650778}
- component: {fileID: 2828019556092814789}
- component: {fileID: 3751190220360366860}
- component: {fileID: 803378854493527400}
m_Layer: 0
m_Name: SpilSlut
m_TagString: Untagged
@@ -93,7 +92,7 @@ MonoBehaviour:
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 136.55
m_fontSize: 136.85
m_fontSizeBase: 72
m_fontWeight: 400
m_enableAutoSizing: 1
@@ -409,9 +408,9 @@ RectTransform:
m_Children: []
m_Father: {fileID: 754661265897109340}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 683.9956, y: -157.62965}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 640.62054, y: 0}
m_SizeDelta: {x: 268, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1768576830901014477
@@ -974,15 +973,15 @@ RectTransform:
m_GameObject: {fileID: 3935369085067290987}
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_LocalScale: {x: 3, y: 3, z: 3}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 754661265897109340}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 174.99854, y: -157.62965}
m_SizeDelta: {x: 150, y: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 270.45056, y: 0}
m_SizeDelta: {x: 42, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2782310018074465201
CanvasRenderer:
@@ -1121,15 +1120,15 @@ RectTransform:
m_GameObject: {fileID: 4068599104538777648}
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_LocalScale: {x: 3, y: 3, z: 3}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 754661265897109340}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 1192.9927, y: -157.62965}
m_SizeDelta: {x: 150, y: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 1010.7905, y: 0}
m_SizeDelta: {x: 42, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8344156654954553365
CanvasRenderer:
@@ -1249,7 +1248,6 @@ GameObject:
m_Component:
- component: {fileID: 754661265897109340}
- component: {fileID: 7750609879083104855}
- component: {fileID: 5441545775684538830}
m_Layer: 0
m_Name: Buttons
m_TagString: Untagged
@@ -1276,8 +1274,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.10938991, y: 0.11800001}
m_AnchorMax: {x: 0.94400007, y: 0.41016972}
m_AnchoredPosition: {x: 0, y: 4}
m_SizeDelta: {x: 0, y: -4}
m_AnchoredPosition: {x: -0.00024414062, y: 0}
m_SizeDelta: {x: -86.75, y: -20.246}
m_Pivot: {x: 0.5, y: 0}
--- !u!114 &7750609879083104855
MonoBehaviour:
@@ -1297,11 +1295,11 @@ MonoBehaviour:
m_Top: 0
m_Bottom: 0
m_ChildAlignment: 4
m_Spacing: 100
m_ChildForceExpandWidth: 1
m_ChildForceExpandHeight: 1
m_ChildControlWidth: 0
m_ChildControlHeight: 0
m_Spacing: 215.17
m_ChildForceExpandWidth: 0
m_ChildForceExpandHeight: 0
m_ChildControlWidth: 1
m_ChildControlHeight: 1
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0

File diff suppressed because it is too large Load Diff

View File

@@ -135,13 +135,13 @@ AnimatorStateMachine:
m_ChildStates:
- serializedVersion: 1
m_State: {fileID: -7925442279578022247}
m_Position: {x: 400, y: 370, z: 0}
m_Position: {x: 410, y: 370, z: 0}
- serializedVersion: 1
m_State: {fileID: -892202757677891130}
m_Position: {x: -20, y: 260, z: 0}
- serializedVersion: 1
m_State: {fileID: 1937208649765278840}
m_Position: {x: 489.1548, y: 156.18289, z: 0}
m_Position: {x: 490, y: 150, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions: []
m_EntryTransitions: []

View File

@@ -120,6 +120,44 @@ MonoBehaviour:
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!1 &879012544333199198
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8293076336493130222}
m_Layer: 5
m_Name: Rainbows
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8293076336493130222
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 879012544333199198}
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: 6108475066390421500}
- {fileID: 6717870941799174515}
- {fileID: 4136733570236406132}
m_Father: {fileID: 1315170081792486277}
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!1 &904161782565348054
GameObject:
m_ObjectHideFlags: 0
@@ -166,7 +204,7 @@ RectTransform:
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 200}
m_SizeDelta: {x: 1550, y: 700}
m_SizeDelta: {x: 1550, y: 750}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!223 &4291423916360628965
Canvas:
@@ -252,7 +290,7 @@ MonoBehaviour:
m_StartCorner: 0
m_StartAxis: 0
m_CellSize: {x: 350, y: 350}
m_Spacing: {x: 50, y: 0}
m_Spacing: {x: 50, y: 50}
m_Constraint: 2
m_ConstraintCount: 2
--- !u!114 &7425566603516801919
@@ -281,7 +319,6 @@ GameObject:
- component: {fileID: 6669614972729775195}
- component: {fileID: 2981106092574900430}
- component: {fileID: 8074691980395114238}
- component: {fileID: 1630362919770549177}
m_Layer: 5
m_Name: AppSwitcher
m_TagString: Untagged
@@ -301,8 +338,7 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 6108475066390421500}
- {fileID: 1495118611075801417}
- {fileID: 8293076336493130222}
- {fileID: 808554455652734252}
- {fileID: 2831878373711017175}
m_Father: {fileID: 0}
@@ -364,36 +400,14 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: bac6124b3ada8a048a0b87a729a22312, type: 3}
m_Name:
m_EditorClassIdentifier: '::'
iconIdle: {fileID: 4900000, guid: 50e22b5bb8a496840952f2563758c13c, type: 3}
iconEstablish: {fileID: 4900000, guid: 975218623da47f8428c484d886554a6c, type: 3}
rainbowEstablish: {fileID: 4900000, guid: 622be2ef9d5e27d45a9deaf7ed805f5f, type: 3}
rainbowRemove: {fileID: 4900000, guid: 589505308c5daf449800f30dd4b92ce7, type: 3}
rainbow: {fileID: 5382650426034128680}
icon: {fileID: 6784053660381911346}
PageName:
transitionDuration: 0.3
rainbowIn: {fileID: 5382650426034128680}
rainbowOut: {fileID: 3983328028282460839}
gameLayoutContainer: {fileID: 904161782565348054}
exitButton: {fileID: 8427602740714176801}
--- !u!95 &1630362919770549177
Animator:
serializedVersion: 7
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1498581815400593087}
m_Enabled: 1
m_Avatar: {fileID: 0}
m_Controller: {fileID: 9100000, guid: fc380d833ededb441a23b106de60bedd, type: 2}
m_CullingMode: 0
m_UpdateMode: 2
m_ApplyRootMotion: 0
m_LinearVelocityBlending: 0
m_StabilizeFeet: 0
m_AnimatePhysics: 0
m_WarningMessage:
m_HasTransformHierarchy: 1
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorStateOnDisable: 0
m_WriteDefaultValuesOnDisable: 0
rectMask: {fileID: 7425566603516801919}
slideDuration: 0.6
--- !u!1 &2426870979657684456
GameObject:
m_ObjectHideFlags: 0
@@ -514,6 +528,99 @@ MonoBehaviour:
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!1 &3983328028282460839
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6717870941799174515}
- component: {fileID: 6334910097310371923}
- component: {fileID: 8821021733826365168}
- component: {fileID: 9163925342151684341}
m_Layer: 5
m_Name: RainbowOut
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6717870941799174515
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3983328028282460839}
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: 8293076336493130222}
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!222 &6334910097310371923
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3983328028282460839}
m_CullTransparentMesh: 1
--- !u!114 &8821021733826365168
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3983328028282460839}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.RawImage
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_Texture: {fileID: 0}
m_UVRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: -1
--- !u!114 &9163925342151684341
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3983328028282460839}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2fd09147b9e9d42a48d6ddc915ddc3d2, type: 3}
m_Name:
m_EditorClassIdentifier: SkiaSharp.Unity::SkiaSharp.Unity.SkottiePlayerV2
lottieFile: {fileID: 4900000, guid: 589505308c5daf449800f30dd4b92ce7, type: 3}
customResolution: 0
resWidth: 250
resHeight: 250
stateName:
resetAfterFinished: 0
autoPlay: 0
loop: 0
--- !u!1 &4270065472017787841
GameObject:
m_ObjectHideFlags: 0
@@ -634,6 +741,81 @@ MonoBehaviour:
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!1 &4404111907760364827
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4136733570236406132}
- component: {fileID: 102352512179716898}
- component: {fileID: 3911817807614671446}
m_Layer: 5
m_Name: BackgroundOverlay
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4136733570236406132
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4404111907760364827}
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: 8293076336493130222}
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!222 &102352512179716898
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4404111907760364827}
m_CullTransparentMesh: 1
--- !u!114 &3911817807614671446
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4404111907760364827}
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: 0, g: 0, b: 0, a: 0.5019608}
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!1 &5189738780074141096
GameObject:
m_ObjectHideFlags: 0
@@ -767,7 +949,7 @@ GameObject:
- component: {fileID: 7920249735731934357}
- component: {fileID: 3566391948883171773}
m_Layer: 5
m_Name: Rainbow
m_Name: RainbowIn
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@@ -780,12 +962,12 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5382650426034128680}
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: []
m_Father: {fileID: 1315170081792486277}
m_Father: {fileID: 8293076336493130222}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
@@ -967,156 +1149,6 @@ MonoBehaviour:
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!1 &6784053660381911346
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1495118611075801417}
- component: {fileID: 9118909078554628244}
- component: {fileID: 8490254979303535795}
- component: {fileID: 4316986085632541161}
- component: {fileID: 6597789131808754055}
m_Layer: 5
m_Name: Icon
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1495118611075801417
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6784053660381911346}
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: 1315170081792486277}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -50, y: -50}
m_SizeDelta: {x: 200, y: 200}
m_Pivot: {x: 1, y: 1}
--- !u!222 &9118909078554628244
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6784053660381911346}
m_CullTransparentMesh: 1
--- !u!114 &8490254979303535795
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6784053660381911346}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.RawImage
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_Texture: {fileID: 0}
m_UVRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: -1
--- !u!114 &4316986085632541161
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6784053660381911346}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2fd09147b9e9d42a48d6ddc915ddc3d2, type: 3}
m_Name:
m_EditorClassIdentifier: SkiaSharp.Unity::SkiaSharp.Unity.SkottiePlayerV2
lottieFile: {fileID: 4900000, guid: 50e22b5bb8a496840952f2563758c13c, type: 3}
customResolution: 0
resWidth: 250
resHeight: 250
stateName: Idle
resetAfterFinished: 0
autoPlay: 1
loop: 1
--- !u!114 &6597789131808754055
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6784053660381911346}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Button
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 8490254979303535795}
m_OnClick:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 8074691980395114238}
m_TargetAssemblyTypeName: AppSwitcher, AppleHillsScripts
m_MethodName: OpenAppSwitcher
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!1 &7713997083397969887
GameObject:
m_ObjectHideFlags: 0
@@ -1489,6 +1521,7 @@ GameObject:
- component: {fileID: 5972191288640444065}
- component: {fileID: 236099612463072939}
- component: {fileID: 447310668687539451}
- component: {fileID: 6704345904811573523}
m_Layer: 5
m_Name: CloseUIButton
m_TagString: Untagged
@@ -1599,7 +1632,7 @@ MonoBehaviour:
m_Calls:
- m_Target: {fileID: 8074691980395114238}
m_TargetAssemblyTypeName: AppSwitcher, AppleHillsScripts
m_MethodName: CloseAppSwitcher
m_MethodName: OnBackPressed
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
@@ -1609,3 +1642,15 @@ MonoBehaviour:
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!114 &6704345904811573523
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8427602740714176801}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 494d0aedce9744308499355006071138, type: 3}
m_Name:
m_EditorClassIdentifier: AppleHillsScripts::UI.DummyInput

View File

@@ -1180,6 +1180,10 @@ PrefabInstance:
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1349376136600192763, guid: 0809b88801c54604aac49ad1d382a0e5, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1355374512808105630, guid: 0809b88801c54604aac49ad1d382a0e5, type: 3}
propertyPath: m_SizeDelta.y
value: 0
@@ -1380,6 +1384,10 @@ PrefabInstance:
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2885251706062949998, guid: 0809b88801c54604aac49ad1d382a0e5, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2898357846280299605, guid: 0809b88801c54604aac49ad1d382a0e5, type: 3}
propertyPath: m_SizeDelta.x
value: 0
@@ -1624,6 +1632,10 @@ PrefabInstance:
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4595147288479534988, guid: 0809b88801c54604aac49ad1d382a0e5, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4611364690555967749, guid: 0809b88801c54604aac49ad1d382a0e5, type: 3}
propertyPath: m_AnchorMax.x
value: 0
@@ -2060,6 +2072,10 @@ PrefabInstance:
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7517486580377140092, guid: 0809b88801c54604aac49ad1d382a0e5, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7520427665364819965, guid: 0809b88801c54604aac49ad1d382a0e5, type: 3}
propertyPath: m_SizeDelta.x
value: 0
@@ -2316,6 +2332,10 @@ PrefabInstance:
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8914746431081002364, guid: 0809b88801c54604aac49ad1d382a0e5, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8922411832989560754, guid: 0809b88801c54604aac49ad1d382a0e5, type: 3}
propertyPath: m_SizeDelta.x
value: 0

View File

@@ -34,7 +34,9 @@ RectTransform:
- {fileID: 5027301639700053608}
- {fileID: 2081116343754364062}
- {fileID: 4830022034953347571}
- {fileID: 4247146273316450423}
- {fileID: 7968396929263690413}
- {fileID: 1477338421424306197}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
@@ -79,7 +81,7 @@ MonoBehaviour:
boosterDisappearDuration: 0.5
impulseSource: {fileID: 4448843358972162772}
openingParticleSystem: {fileID: 0}
albumIcon: {fileID: 0}
albumIcon: {fileID: 2290549912955623947}
--- !u!114 &4448843358972162772
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -214,6 +216,170 @@ MonoBehaviour:
m_PostInfinity: 2
m_RotationOrder: 4
curveHeight: 50
--- !u!1 &2290549912955623947
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4247146273316450423}
- component: {fileID: 5793188825053435727}
- component: {fileID: 5726314423424208945}
- component: {fileID: 299670167085314888}
- component: {fileID: 6513785969721658917}
m_Layer: 5
m_Name: ScrapbookButton
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4247146273316450423
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2290549912955623947}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1.06667, y: 1.06667, z: 1.06667}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 5228380266581535650}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 80.000015, y: 79.999985}
m_SizeDelta: {x: 241, y: 239}
m_Pivot: {x: 0, y: 0}
--- !u!222 &5793188825053435727
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2290549912955623947}
m_CullTransparentMesh: 1
--- !u!114 &5726314423424208945
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2290549912955623947}
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: -4354454609415314374, guid: 1ba1f8cf73f79214190f1432fe1e3bc6, 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!114 &299670167085314888
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2290549912955623947}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Button
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 5726314423424208945}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!114 &6513785969721658917
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2290549912955623947}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 494d0aedce9744308499355006071138, type: 3}
m_Name:
m_EditorClassIdentifier: AppleHillsScripts::UI.DummyInput
--- !u!1 &2898816812112041854
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1477338421424306197}
m_Layer: 0
m_Name: GameObject (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1477338421424306197
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2898816812112041854}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -297.3595, y: -196.74738, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 5228380266581535650}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &4303341275909682426
GameObject:
m_ObjectHideFlags: 0

View File

@@ -61,6 +61,43 @@ MonoBehaviour:
targetBottomLeftOffset: {x: 100, y: 100}
disappearDuration: 0.8
disappearScale: 0.2
--- !u!1 &2923535299741790846
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5109945643968698326}
m_Layer: 0
m_Name: BoosterContainer
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5109945643968698326
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2923535299741790846}
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: 4006246129058447062}
- {fileID: 3680365639323743419}
m_Father: {fileID: 2499229096808986326}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 1}
m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: 0, y: -300}
m_SizeDelta: {x: 750, y: 760}
m_Pivot: {x: 0.5, y: 1}
--- !u!1 &4323719263405703996
GameObject:
m_ObjectHideFlags: 0
@@ -211,13 +248,13 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2499229096808986326}
m_Father: {fileID: 5109945643968698326}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 1}
m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: 0, y: -250}
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: 800, y: 800}
m_Pivot: {x: 0.5, y: 1}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5796229481733252802
CanvasRenderer:
m_ObjectHideFlags: 0
@@ -285,9 +322,8 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1338508664922812659}
- {fileID: 4006246129058447062}
- {fileID: 3680365639323743419}
- {fileID: 6841858894429745291}
- {fileID: 5109945643968698326}
m_Father: {fileID: 1966378914653314124}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
@@ -400,13 +436,13 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2499229096808986326}
m_Father: {fileID: 5109945643968698326}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 1}
m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: 0, y: -250}
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: 411, y: 729}
m_Pivot: {x: 0.5, y: 1}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8906420622179058179
CanvasRenderer:
m_ObjectHideFlags: 0

View File

@@ -160,9 +160,8 @@ RectTransform:
- {fileID: 8738498528538518214}
- {fileID: 5608536918715673995}
- {fileID: 4540680730086645190}
- {fileID: 3104894377099463254}
- {fileID: 6887684199047822036}
- {fileID: 7201557514015239806}
- {fileID: 3104894377099463254}
- {fileID: 933791406979012170}
- {fileID: 3480404968808584556}
- {fileID: 2762656953123736875}
@@ -171,6 +170,7 @@ RectTransform:
- {fileID: 8076611052546744446}
- {fileID: 5806046929178438317}
- {fileID: 2847302862365774990}
- {fileID: 6887684199047822036}
- {fileID: 1712632483313425995}
- {fileID: 1712632479955404759}
- {fileID: 1712632483092814581}
@@ -248,7 +248,7 @@ MonoBehaviour:
interactable: 0
enableShadowEffect: 0
hasTransparentPages: 0
currentPaper: 0
currentPaper: 5
papers:
- Front: {fileID: 7113261502207715443}
Back: {fileID: 6797866010987677939}
@@ -1231,7 +1231,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0.00003512056, y: 0}
m_AnchoredPosition: {x: -0.000043282475, y: 0}
m_SizeDelta: {x: -0.00000011920929, y: -0.000023126602}
m_Pivot: {x: 0.00000008009374, y: -0.00000007264316}
--- !u!222 &508081904394904736
@@ -1333,7 +1333,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_AnchoredPosition: {x: -0.000061035156, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.00000008009374, y: -0.00000007264316}
--- !u!222 &2296939288493081011
@@ -1435,7 +1435,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_AnchoredPosition: {x: -0.000061035156, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.00000008009374, y: -0.00000007264316}
--- !u!222 &8211049298767349921
@@ -1537,7 +1537,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0.00003512056, y: 0}
m_AnchoredPosition: {x: -0.000043282475, y: 0}
m_SizeDelta: {x: -0.00000011920929, y: -0.000023126602}
m_Pivot: {x: 0.00000008009374, y: -0.00000007264316}
--- !u!222 &7462669267008339969
@@ -1843,7 +1843,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0.00003512056, y: 0}
m_AnchoredPosition: {x: -0.000043282475, y: 0}
m_SizeDelta: {x: -0.00000011920929, y: -0.000023126602}
m_Pivot: {x: 0.00000008009374, y: -0.00000007264316}
--- !u!222 &3398264804711496438
@@ -1945,7 +1945,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_AnchoredPosition: {x: -0.000061035156, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.00000008009374, y: -0.00000007264316}
--- !u!222 &6504874021037615344
@@ -2007,9 +2007,9 @@ CanvasGroup:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4997443806488891708}
m_Enabled: 1
m_Alpha: 0
m_Alpha: 1
m_Interactable: 1
m_BlocksRaycasts: 0
m_BlocksRaycasts: 1
m_IgnoreParentGroups: 0
--- !u!1 &5403100520341228566
GameObject:
@@ -2047,7 +2047,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0.00003512056, y: 0}
m_AnchoredPosition: {x: -0.000043282475, y: 0}
m_SizeDelta: {x: -0.00000011920929, y: -0.000023126602}
m_Pivot: {x: 0.00000008009374, y: -0.00000007264316}
--- !u!222 &6568871061924215906
@@ -2109,9 +2109,9 @@ CanvasGroup:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5403100520341228566}
m_Enabled: 1
m_Alpha: 0
m_Alpha: 1
m_Interactable: 1
m_BlocksRaycasts: 0
m_BlocksRaycasts: 1
m_IgnoreParentGroups: 0
--- !u!1 &6797866010987677939
GameObject:
@@ -2149,7 +2149,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_AnchoredPosition: {x: -0.000061035156, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.00000008009374, y: -0.00000007264316}
--- !u!222 &8612384795192217732
@@ -2313,9 +2313,9 @@ CanvasGroup:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7113261502207715443}
m_Enabled: 1
m_Alpha: 1
m_Alpha: 0
m_Interactable: 1
m_BlocksRaycasts: 1
m_BlocksRaycasts: 0
m_IgnoreParentGroups: 0
--- !u!1 &7771389999338048105
GameObject:
@@ -2455,7 +2455,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0.00003512056, y: 0}
m_AnchoredPosition: {x: -0.000043282475, y: 0}
m_SizeDelta: {x: -0.00000011920929, y: -0.000023126602}
m_Pivot: {x: 0.00000008009374, y: -0.00000007264316}
--- !u!222 &3704846763203543944
@@ -2557,7 +2557,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_AnchoredPosition: {x: -0.000061035156, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.00000008009374, y: -0.00000007264316}
--- !u!222 &546922297833014509

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 6fb0d7fc6faad154b8c3e3cb7abb7c15
guid: fe049e0d73eadd7479140c8e7bd10efe
PrefabImporter:
externalObjects: {}
userData:

View File

@@ -1,50 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &3863019143023165617
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 272997100784137721}
- component: {fileID: 497632815361153787}
m_Layer: 5
m_Name: UIPageController
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &272997100784137721
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3863019143023165617}
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: 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: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &497632815361153787
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3863019143023165617}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b1ae6c1745e44e22a0fa9209ebe45ee3, type: 3}
m_Name:
m_EditorClassIdentifier: AppleHillsScripts::UI.Core.UIPageController

View File

@@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 774e30e3f0b1d0d49bad0c2abf11038a
PrefabImporter:
externalObjects: {}
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

View File

@@ -305,6 +305,7 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1224833349}
- {fileID: 471921060}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
@@ -418,16 +419,16 @@ LineRenderer:
m_SortingOrder: 0
m_Positions:
- {x: -0.15602553, y: 4.074945, z: 0}
- {x: -0.1566351, y: 3.9736383, z: 0}
- {x: -0.1572447, y: 3.8729858, z: 0}
- {x: -0.1566351, y: 3.973638, z: 0}
- {x: -0.1572447, y: 3.8729856, z: 0}
- {x: -0.15785426, y: 3.7729874, z: 0}
- {x: -0.15846384, y: 3.673644, z: 0}
- {x: -0.15907341, y: 3.5749543, z: 0}
- {x: -0.15968299, y: 3.4769197, z: 0}
- {x: -0.15846384, y: 3.6736436, z: 0}
- {x: -0.15907341, y: 3.574954, z: 0}
- {x: -0.15968299, y: 3.4769192, z: 0}
- {x: -0.16029257, y: 3.3795385, z: 0}
- {x: -0.16090216, y: 3.2828126, z: 0}
- {x: -0.16151173, y: 3.1867406, z: 0}
- {x: -0.16212131, y: 3.0913231, z: 0}
- {x: -0.16151173, y: 3.1867409, z: 0}
- {x: -0.16212131, y: 3.0913236, z: 0}
m_Parameters:
serializedVersion: 3
widthMultiplier: 1
@@ -1098,6 +1099,112 @@ Animator:
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorStateOnDisable: 0
m_WriteDefaultValuesOnDisable: 0
--- !u!1001 &471921059
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 116234201}
m_Modifications:
- target: {fileID: 1439929750438628637, guid: a855ba60e86bf1e449197f1f5f9b9b73, type: 3}
propertyPath: m_Name
value: MiniGameBoosterGiver
objectReference: {fileID: 0}
- target: {fileID: 1966378914653314124, guid: a855ba60e86bf1e449197f1f5f9b9b73, type: 3}
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 1966378914653314124, guid: a855ba60e86bf1e449197f1f5f9b9b73, type: 3}
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 1966378914653314124, guid: a855ba60e86bf1e449197f1f5f9b9b73, type: 3}
propertyPath: m_AnchorMax.x
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1966378914653314124, guid: a855ba60e86bf1e449197f1f5f9b9b73, type: 3}
propertyPath: m_AnchorMax.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1966378914653314124, guid: a855ba60e86bf1e449197f1f5f9b9b73, type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1966378914653314124, guid: a855ba60e86bf1e449197f1f5f9b9b73, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1966378914653314124, guid: a855ba60e86bf1e449197f1f5f9b9b73, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1966378914653314124, guid: a855ba60e86bf1e449197f1f5f9b9b73, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1966378914653314124, guid: a855ba60e86bf1e449197f1f5f9b9b73, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1966378914653314124, guid: a855ba60e86bf1e449197f1f5f9b9b73, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1966378914653314124, guid: a855ba60e86bf1e449197f1f5f9b9b73, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1966378914653314124, guid: a855ba60e86bf1e449197f1f5f9b9b73, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1966378914653314124, guid: a855ba60e86bf1e449197f1f5f9b9b73, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1966378914653314124, guid: a855ba60e86bf1e449197f1f5f9b9b73, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1966378914653314124, guid: a855ba60e86bf1e449197f1f5f9b9b73, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1966378914653314124, guid: a855ba60e86bf1e449197f1f5f9b9b73, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1966378914653314124, guid: a855ba60e86bf1e449197f1f5f9b9b73, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1966378914653314124, guid: a855ba60e86bf1e449197f1f5f9b9b73, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1966378914653314124, guid: a855ba60e86bf1e449197f1f5f9b9b73, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1966378914653314124, guid: a855ba60e86bf1e449197f1f5f9b9b73, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8617171489468030463, guid: a855ba60e86bf1e449197f1f5f9b9b73, type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: a855ba60e86bf1e449197f1f5f9b9b73, type: 3}
--- !u!224 &471921060 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 1966378914653314124, guid: a855ba60e86bf1e449197f1f5f9b9b73, type: 3}
m_PrefabInstance: {fileID: 471921059}
m_PrefabAsset: {fileID: 0}
--- !u!1 &730962732
GameObject:
m_ObjectHideFlags: 0
@@ -1783,14 +1890,14 @@ LineRenderer:
- {x: -0.15602553, y: 4.0749445, z: 0}
- {x: -0.11662118, y: 3.879622, z: 0}
- {x: -0.07721684, y: 3.7057445, z: 0}
- {x: -0.03781248, y: 3.5533104, z: 0}
- {x: 0.0015918687, y: 3.4223213, z: 0}
- {x: 0.040996216, y: 3.312776, z: 0}
- {x: 0.08040057, y: 3.2246757, z: 0}
- {x: 0.11980491, y: 3.1580195, z: 0}
- {x: 0.15920927, y: 3.1128078, z: 0}
- {x: 0.1986136, y: 3.0890403, z: 0}
- {x: 0.23801796, y: 3.0867171, z: 0}
- {x: -0.03781248, y: 3.5533106, z: 0}
- {x: 0.0015918687, y: 3.4223216, z: 0}
- {x: 0.040996216, y: 3.3127766, z: 0}
- {x: 0.08040057, y: 3.2246761, z: 0}
- {x: 0.11980491, y: 3.15802, z: 0}
- {x: 0.15920927, y: 3.1128082, z: 0}
- {x: 0.1986136, y: 3.0890405, z: 0}
- {x: 0.23801796, y: 3.0867176, z: 0}
m_Parameters:
serializedVersion: 3
widthMultiplier: 1
@@ -2503,14 +2610,14 @@ LineRenderer:
- {x: -0.15602553, y: 4.0749445, z: 0}
- {x: -0.18956745, y: 3.8764973, z: 0}
- {x: -0.22310936, y: 3.7000232, z: 0}
- {x: -0.25665125, y: 3.54552, z: 0}
- {x: -0.29019317, y: 3.4129906, z: 0}
- {x: -0.32373506, y: 3.302433, z: 0}
- {x: -0.35727698, y: 3.213848, z: 0}
- {x: -0.39081886, y: 3.1472354, z: 0}
- {x: -0.4243608, y: 3.1025953, z: 0}
- {x: -0.45790267, y: 3.0799277, z: 0}
- {x: -0.4914446, y: 3.0792325, z: 0}
- {x: -0.25665125, y: 3.5455203, z: 0}
- {x: -0.29019317, y: 3.412991, z: 0}
- {x: -0.32373506, y: 3.3024335, z: 0}
- {x: -0.35727698, y: 3.2138484, z: 0}
- {x: -0.39081886, y: 3.1472359, z: 0}
- {x: -0.4243608, y: 3.1025958, z: 0}
- {x: -0.45790267, y: 3.0799282, z: 0}
- {x: -0.4914446, y: 3.079233, z: 0}
m_Parameters:
serializedVersion: 3
widthMultiplier: 1
@@ -3358,7 +3465,7 @@ Transform:
m_GameObject: {fileID: 2106431001}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.165, y: 2.697517, z: 0}
m_LocalPosition: {x: -0.165, y: 2.6975174, z: 0}
m_LocalScale: {x: 0.57574, y: 0.57574, z: 0.57574}
m_ConstrainProportionsScale: 0
m_Children:

View File

@@ -56,7 +56,13 @@ namespace Bootstrap
// Subscribe to boot progress for real-time updates during bootstrap
CustomBoot.OnBootProgressChanged += OnBootProgressChanged;
#if UNITY_EDITOR
_logVerbosity = DeveloperSettingsProvider.Instance.GetSettings<DebugSettings>().bootstrapLogVerbosity;
#elif DEVELOPMENT_BUILD
_logVerbosity = LogVerbosity.Debug;
#elif RELEASE_BUILD
_logVerbosity = LogVerbosity.Warning;
#endif
// In debug mode, log additional information
if (debugMode)

View File

@@ -147,6 +147,8 @@ namespace Cinematics
/// </summary>
public PlayableDirector LoadAndPlayCinematic(string key, bool playPortraitMode)
{
InitializeComponents();
// Load the asset via addressables
var handle = Addressables.LoadAssetAsync<PlayableAsset>(key);
var result = handle.WaitForCompletion();
@@ -207,6 +209,9 @@ namespace Cinematics
public void ShowGameOverScreen()
{
// Diagnostic: log time and call stack to track when/why game over is triggered
Logging.Debug($"[CinematicsManager] ShowGameOverScreen called at time={Time.time:F2}");
if (divingGameOverScreen != null && UIPageController.Instance != null)
{
UIPageController.Instance.PushPage(divingGameOverScreen);

View File

@@ -1,10 +1,9 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using AppleHills.Data.CardSystem;
using Core;
using Core.Lifecycle;
using Core.SaveLoad;
using UnityEngine;
namespace Data.CardSystem
@@ -703,6 +702,22 @@ namespace Data.CardSystem
}
}
/// <summary>
/// Clears all card collection data - inventory, pending cards, boosters, and placement tracking
/// Used for dev reset functionality
/// </summary>
public void ClearAllCollectionData()
{
playerInventory.ClearAllCards();
playerInventory.BoosterPackCount = 0;
_pendingRevealCards.Clear();
_placedInAlbumCardIds.Clear();
OnBoosterCountChanged?.Invoke(0);
Logging.Debug("[CardSystemManager] Cleared all collection data (inventory, boosters, pending, placement tracking)");
}
#region Save/Load Lifecycle Hooks
protected override string OnGlobalSaveRequested()

View File

@@ -668,16 +668,20 @@ namespace Minigames.DivingForPictures
if (giver != null)
{
UIPageController.Instance.ShowAllUI();
giver.GiveBooster(() => { completed = true; });
// 2) Wait for it to finish (with a safety timeout in case it's not wired)
float timeout = 10f; // fallback to avoid blocking forever
float elapsed = 0f;
while (!completed && elapsed < timeout)
Logging.Debug("[DivingGameManager] Starting booster giver sequence");
giver.GiveBooster(() =>
{
completed = true;
Logging.Debug("[DivingGameManager] Booster giver completed callback received");
});
// 2) Wait for it to finish (NO timeout - wait indefinitely for user interaction)
while (!completed)
{
elapsed += Time.unscaledDeltaTime;
yield return null;
}
Logging.Debug("[DivingGameManager] Booster giver sequence finished, proceeding to game over");
}
else
{

View File

@@ -25,7 +25,6 @@ public class AppleAudioSource : MonoBehaviour
_audioMixer = AudioManager.Instance.audioMixer;
InitializeAudioSource();
audioSource.playOnAwake = false;
}

View File

@@ -53,18 +53,34 @@ public class AudioManager : ManagedBehaviour, IPausable
protected override void OnManagedAwake()
{
// Auto-registration with GameManager handled by ManagedBehaviour
}
// Initialize lists if they were not set in inspector
criticalVOSources = criticalVOSources ?? new List<AppleAudioSource>();
VOSources = VOSources ?? new List<AppleAudioSource>();
musicSources = musicSources ?? new List<AppleAudioSource>();
ambienceSources = ambienceSources ?? new List<AppleAudioSource>();
SFXSources = SFXSources ?? new List<AppleAudioSource>();
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
// Perform singleton-dependent initialization here
if (QuickAccess.Instance != null)
{
_player = QuickAccess.Instance.PlayerGameObject;
if (QuickAccess.Instance.MainCamera != null)
{
_audioListener = QuickAccess.Instance.MainCamera.GetComponent<AudioListener>();
}
}
else
{
Debug.LogWarning("[AudioManager] QuickAccess.Instance is null during OnManagedAwake. Some audio references may remain unset.");
}
// Diagnostic
foreach (AppleAudioSource _audioSource in criticalVOSources)
{
Debug.Log("Found source: " + _audioSource.name);
}
Debug.Log("[AudioManager] OnManagedAwake completed");
}
public void SetAudioPauseBehavior(PauseBehavior newPauseBehavior)

View File

@@ -1,82 +1,122 @@
using System;
using UnityEngine;
using UnityEngine.UI;
using SkiaSharp.Unity;
using Input;
using AppleHills.Core;
using UnityEngine.Events;
using UI.Core;
using Pixelplacement;
using Pixelplacement.TweenSystem;
using UI;
public class AppSwitcher : MonoBehaviour
public class AppSwitcher : UIPage
{
public TextAsset iconIdle;
public TextAsset iconEstablish;
public TextAsset rainbowEstablish;
public TextAsset rainbowRemove;
public GameObject rainbow;
public GameObject icon;
public GameObject rainbowIn;
public GameObject rainbowOut;
public GameObject gameLayoutContainer;
public GameObject exitButton;
public RectMask2D rectMask;
private SkottiePlayerV2 iconPlayer;
private SkottiePlayerV2 rainbowPlayer;
private Animator animator;
[Header("Slide Animation Settings")]
public float slideDuration = 0.5f;
private SkottiePlayerV2 rainbowInPlayer;
private SkottiePlayerV2 rainbowOutPlayer;
private TweenBase slideInTween;
private TweenBase slideOutTween;
private void OnEnable()
protected override void OnManagedAwake()
{
iconPlayer = icon.GetComponentInChildren<SkottiePlayerV2>();
rainbowPlayer = rainbow.GetComponentInChildren<SkottiePlayerV2>();
animator = GetComponent<Animator>();
base.OnManagedAwake();
PageName = "AppSwitcher";
rainbowInPlayer = rainbowIn.GetComponent<SkottiePlayerV2>();
rainbowOutPlayer = rainbowOut.GetComponent<SkottiePlayerV2>();
if (rectMask == null)
{
rectMask = GetComponent<RectMask2D>();
}
public void OpenAppSwitcher()
{
//Activate players
rainbow.SetActive(true);
gameLayoutContainer.SetActive(true);
// Play establishing animations
rainbowPlayer.LoadAnimation(rainbowEstablish.text);
rainbowPlayer.PlayAnimation(false);
rainbowPlayer.loop = false;
gameLayoutContainer.SetActive(true);
animator.Play("GamesReveal");
// Show the exit button
exitButton.SetActive(true);
// Set input mode to UI
QuickAccess.Instance.PlayerController.InterruptMoveTo();
InputManager.Instance.SetInputMode(InputMode.UI);
rainbowPlayer.OnAnimationFinished += AnimFinished;
}
public void CloseAppSwitcher()
{
rainbowPlayer.resetAfterFinished = true;
rainbowPlayer.LoadAnimation(rainbowRemove.text);
rainbowPlayer.PlayAnimation(false);
rainbowPlayer.loop = false;
animator.Play("GamesHide");
// Set input mode to game and ui
InputManager.Instance.SetInputMode(InputMode.GameAndUI);
// Hide the exit button
// Initially hide both
rainbowIn.SetActive(true);
exitButton.SetActive(false);
}
public void GamesHiddenAnimationEvent()
protected override void DoTransitionIn(Action onComplete)
{
rainbow.SetActive(false);
InputManager.Instance.SetInputMode(InputMode.UI);
gameLayoutContainer.SetActive(true);
// Hide rainbow out, show rainbow in
rainbowOut.SetActive(false);
// Play animation on rainbow in without resetting state
rainbowInPlayer.PlayAnimation(true);
// Slide in animation - tween padding.left from 1700 to 0
slideInTween = TweenPaddingLeft(1700f, 0f, Tween.EaseOut, () =>
{
onComplete?.Invoke();
rainbowOut.SetActive(true);
exitButton.SetActive(true);
});
}
protected override void DoTransitionOut(Action onComplete)
{
rainbowIn.SetActive(false);
// Play animation on rainbow out with resetting state
rainbowOutPlayer.PlayAnimation(true);
// Hide the exit button
exitButton.SetActive(false);
// Slide out animation - tween padding.left from 0 to 1700
slideOutTween = TweenPaddingLeft(0f, 1700f, Tween.EaseIn, () => {
gameLayoutContainer.SetActive(false);
rainbowIn.SetActive(true);
onComplete?.Invoke();
InputManager.Instance.SetInputMode(InputMode.GameAndUI);
});
}
private void AnimFinished(string str)
/// <summary>
/// Tweens the left padding of the rectMask from startValue to endValue.
/// </summary>
private TweenBase TweenPaddingLeft(float startValue, float endValue, AnimationCurve easeCurve, Action onComplete)
{
// Set starting position
Vector4 startPadding = rectMask.padding;
startPadding.x = startValue;
rectMask.padding = startPadding;
return Tween.Value(
startValue,
endValue,
(value) => {
Vector4 padding = rectMask.padding;
padding.x = value;
rectMask.padding = padding;
},
slideDuration,
0f, // no delay
easeCurve,
Tween.LoopType.None,
null, // onStart
onComplete
);
}
protected override void OnDestroy()
{
base.OnDestroy();
// Clean up tweens
slideInTween?.Stop();
slideOutTween?.Stop();
}
}

View File

@@ -1,11 +1,13 @@
using System.Collections.Generic;
using System.Linq;
using AppleHills.Data.CardSystem;
using Core;
using Data.CardSystem;
using Pixelplacement;
using UI.Core;
using UI.DragAndDrop.Core;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
namespace UI.CardSystem

View File

@@ -37,8 +37,9 @@ namespace UI.CardSystem
[SerializeField] private float boosterDisappearDuration = 0.5f;
[SerializeField] private CinemachineImpulseSource impulseSource;
[SerializeField] private ParticleSystem openingParticleSystem;
[SerializeField] private Transform albumIcon; // Target for card fly-away animation
[SerializeField] private GameObject albumIcon; // Target for card fly-away animation and dismiss button
private Button _dismissButton; // Button to close/dismiss the booster opening page
private int _availableBoosterCount;
private BoosterPackDraggable _currentBoosterInCenter;
private List<BoosterPackDraggable> _activeBoostersInSlots = new List<BoosterPackDraggable>();
@@ -57,12 +58,32 @@ namespace UI.CardSystem
if (canvasGroup == null)
canvasGroup = gameObject.AddComponent<CanvasGroup>();
// Get dismiss button from albumIcon GameObject
if (albumIcon != null)
{
_dismissButton = albumIcon.GetComponent<Button>();
if (_dismissButton != null)
{
_dismissButton.onClick.AddListener(OnDismissButtonClicked);
}
else
{
Debug.LogWarning("[BoosterOpeningPage] albumIcon does not have a Button component!");
}
}
// UI pages should start disabled
gameObject.SetActive(false);
}
private void OnDestroy()
{
// Unsubscribe from dismiss button
if (_dismissButton != null)
{
_dismissButton.onClick.RemoveListener(OnDismissButtonClicked);
}
// Unsubscribe from slot events
if (centerOpeningSlot != null)
{
@@ -82,6 +103,18 @@ namespace UI.CardSystem
_availableBoosterCount = count;
}
/// <summary>
/// Called when the dismiss button (albumIcon) is clicked
/// </summary>
private void OnDismissButtonClicked()
{
if (UIPageController.Instance != null)
{
UIPageController.Instance.PopPage();
Debug.Log("[BoosterOpeningPage] Dismiss button clicked, popping page from stack");
}
}
public override void TransitionIn()
{
base.TransitionIn();
@@ -768,7 +801,7 @@ namespace UI.CardSystem
yield return new WaitForSeconds(0.5f);
// Animate cards to album icon (or center if no icon assigned) with staggered delays
Vector3 targetPosition = albumIcon != null ? albumIcon.position : Vector3.zero;
Vector3 targetPosition = albumIcon != null ? albumIcon.transform.position : Vector3.zero;
int cardIndex = 0;
foreach (GameObject cardObj in _currentRevealedCards)

View File

@@ -45,6 +45,8 @@ namespace UI.CardSystem
{
openAlbumButton.onClick.RemoveListener(OnOpenAlbumClicked);
}
Debug.Log("ALBUM: CardAlbumDestroyed");
}
private void OnOpenAlbumClicked()
@@ -70,7 +72,6 @@ namespace UI.CardSystem
UIPageController.Instance.PushPage(albumViewPage);
}
}
// If we're already on the album main page, do nothing
}
private void OnPageChanged(UIPage currentPage)

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic;
using Core;
using Core.Lifecycle;
using UnityEngine;
using UnityEngine.InputSystem;
namespace UI.Core
@@ -9,12 +10,19 @@ namespace UI.Core
/// <summary>
/// Manages UI page transitions and maintains a stack of active pages.
/// Pages are pushed onto a stack for navigation and popped when going back.
/// Supports both scene-based pages and prefab-based instantiation.
/// </summary>
public class UIPageController : ManagedBehaviour
{
private static UIPageController _instance;
public static UIPageController Instance => _instance;
[Header("Canvas Management")]
[SerializeField] private Transform mainCanvas;
// Cache instantiated pages to avoid re-creating them
private Dictionary<GameObject, UIPage> _prefabInstanceCache = new Dictionary<GameObject, UIPage>();
private Stack<UIPage> _pageStack = new Stack<UIPage>();
public UIPage CurrentPage => _pageStack.Count > 0 ? _pageStack.Peek() : null;
public IEnumerable<UIPage> PageStack => _pageStack;
@@ -48,7 +56,17 @@ namespace UI.Core
{
base.OnDestroy();
// Clean up event subscription when the controller is destroyed
// Clean up cached instances
foreach (var cachedPage in _prefabInstanceCache.Values)
{
if (cachedPage != null)
{
Destroy(cachedPage.gameObject);
}
}
_prefabInstanceCache.Clear();
// Clean up event subscription
if (_cancelAction != null)
{
_cancelAction.performed -= OnCancelActionPerformed;
@@ -85,6 +103,86 @@ namespace UI.Core
Logging.Debug($"[UIPageController] Pushed page: {page.PageName}");
}
/// <summary>
/// Pushes a page from a prefab. Instantiates on first use, reuses on subsequent calls.
/// </summary>
/// <param name="pagePrefab">The prefab containing a UIPage component</param>
public void PushPageFromPrefab(GameObject pagePrefab)
{
if (pagePrefab == null)
{
Debug.LogError("[UIPageController] Cannot push null prefab");
return;
}
UIPage pageInstance = GetOrInstantiatePage(pagePrefab);
if (pageInstance != null)
{
PushPage(pageInstance); // Use existing push logic
}
}
/// <summary>
/// Gets cached page instance or instantiates a new one from prefab.
/// Searches for UIPage component on root GameObject first, then in first-order children.
/// </summary>
private UIPage GetOrInstantiatePage(GameObject pagePrefab)
{
// Check cache first
if (_prefabInstanceCache.TryGetValue(pagePrefab, out UIPage cachedPage))
{
if (cachedPage != null) // Null check in case it was destroyed
{
return cachedPage;
}
else
{
_prefabInstanceCache.Remove(pagePrefab);
}
}
// Validate mainCanvas
if (mainCanvas == null)
{
Debug.LogError("[UIPageController] mainCanvas is not assigned! Cannot instantiate page prefab.");
return null;
}
// Instantiate new page
GameObject pageObject = Instantiate(pagePrefab, mainCanvas);
// Try to find UIPage component on root first
UIPage pageComponent = pageObject.GetComponent<UIPage>();
// If not found on root, search first-order children (in hierarchy order)
if (pageComponent == null)
{
Transform pageTransform = pageObject.transform;
for (int i = 0; i < pageTransform.childCount; i++)
{
pageComponent = pageTransform.GetChild(i).GetComponent<UIPage>();
if (pageComponent != null)
{
Logging.Debug($"[UIPageController] Found UIPage component on child: {pageComponent.gameObject.name}");
break;
}
}
}
if (pageComponent == null)
{
Debug.LogError($"[UIPageController] Prefab {pagePrefab.name} does not have a UIPage component on root or first-order children!");
Destroy(pageObject);
return null;
}
// Cache it
_prefabInstanceCache[pagePrefab] = pageComponent;
Logging.Debug($"[UIPageController] Instantiated and cached page: {pageComponent.PageName}");
return pageComponent;
}
/// <summary>
/// Pops the current page from the stack and shows the previous page.
/// </summary>
@@ -92,11 +190,17 @@ namespace UI.Core
{
if (_pageStack.Count <= 0) return;
// Hide and pop current page
// Pop current page from stack
UIPage currentPage = _pageStack.Pop();
currentPage.TransitionOut();
// Show previous page if there is one
// Subscribe to transition out completion event
Action onTransitionComplete = null;
onTransitionComplete = () =>
{
// Unsubscribe to prevent memory leaks
currentPage.OnTransitionOutCompleted -= onTransitionComplete;
// Fire OnPageChanged AFTER transition completes
if (_pageStack.Count > 0)
{
UIPage previousPage = _pageStack.Peek();
@@ -109,23 +213,49 @@ namespace UI.Core
OnPageChanged?.Invoke(null);
Logging.Debug("[UIPageController] Popped last page, no pages left in stack");
}
};
currentPage.OnTransitionOutCompleted += onTransitionComplete;
// Start the transition out animation
currentPage.TransitionOut();
}
/// <summary>
/// Clears all pages from the stack.
/// Clears all pages from the stack and optionally destroys cached instances.
/// </summary>
public void ClearStack()
/// <param name="destroyCachedInstances">If true, destroys all cached prefab instances</param>
public void ClearStack(bool destroyCachedInstances = false)
{
if (_pageStack.Count > 0)
{
if (_pageStack.Count <= 0) return;
// Hide current page
UIPage currentPage = _pageStack.Peek();
currentPage.TransitionOut();
}
// Clear stack
_pageStack.Clear();
// Optionally destroy cached instances
if (destroyCachedInstances)
{
foreach (var cachedPage in _prefabInstanceCache.Values)
{
if (cachedPage != null)
{
Destroy(cachedPage.gameObject);
}
}
_prefabInstanceCache.Clear();
Logging.Debug("[UIPageController] Cleared page stack and destroyed cached instances");
}
else
{
Logging.Debug("[UIPageController] Cleared page stack (cached instances retained)");
}
OnPageChanged?.Invoke(null);
Logging.Debug("[UIPageController] Cleared page stack");
}
/// <summary>

View File

@@ -0,0 +1,69 @@
using UI.Core;
using UnityEngine;
using UnityEngine.UI;
namespace UI
{
/// <summary>
/// HUD button that opens a UI page from a prefab when clicked.
/// Implements ITouchInputConsumer as a dummy (no touch handling).
/// </summary>
[RequireComponent(typeof(Button))]
public class HudMenuButton : MonoBehaviour, ITouchInputConsumer
{
[Header("Page Configuration")]
[SerializeField] private GameObject pagePrefab;
[Tooltip("Optional: Custom name for debug logging")]
[SerializeField] private string buttonName = "HudButton";
private Button _button;
private void Awake()
{
_button = GetComponent<Button>();
if (_button != null)
{
_button.onClick.AddListener(OnButtonClicked);
}
else
{
Debug.LogError($"[HudMenuButton] {buttonName} missing Button component!");
}
}
private void OnDestroy()
{
if (_button != null)
{
_button.onClick.RemoveListener(OnButtonClicked);
}
}
private void OnButtonClicked()
{
if (pagePrefab == null)
{
Debug.LogError($"[HudMenuButton] {buttonName} has no page prefab assigned!");
return;
}
if (PlayerHudManager.Instance == null)
{
Debug.LogError($"[HudMenuButton] {buttonName} cannot find PlayerHudManager instance!");
return;
}
Debug.Log($"[HudMenuButton] {buttonName} opening page from prefab: {pagePrefab.name}");
UIPageController.Instance.PushPageFromPrefab(pagePrefab);
}
#region ITouchInputConsumer - Dummy Implementation
// Required by interface but not used
public void OnTap(Vector2 position) { }
public void OnHoldStart(Vector2 position) { }
public void OnHoldMove(Vector2 position) { }
public void OnHoldEnd(Vector2 position) { }
#endregion
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: e29407f14afc4428a48d3d1b4245b210
timeCreated: 1762686499

View File

@@ -1,6 +1,7 @@
using System;
using Core;
using Core.SaveLoad;
using Data.CardSystem;
using UnityEngine;
using UnityEngine.SceneManagement;
using UI.Core;
@@ -22,6 +23,11 @@ namespace UI
[SerializeField] private GameObject pauseButton;
[SerializeField] private CanvasGroup canvasGroup;
[Header("Dev Options")]
[SerializeField] private UnityEngine.UI.Button devOptionsButton;
[SerializeField] private GameObject mainOptionsContainer;
[SerializeField] private GameObject devOptionsContainer;
// After UIPageController (50)
public override int ManagedAwakePriority => 55;
@@ -373,5 +379,91 @@ namespace UI
// Just ensure the parent is active. Do not force pause or transitions here.
parent.SetActive(true);
}
#region Dev Options
/// <summary>
/// Shows dev options panel and hides main options
/// </summary>
public void ShowDevOptions()
{
if (mainOptionsContainer != null) mainOptionsContainer.SetActive(false);
if (devOptionsContainer != null) devOptionsContainer.SetActive(true);
Logging.Debug("[PauseMenu] Showing dev options");
}
/// <summary>
/// Hides dev options panel and shows main options
/// </summary>
public void HideDevOptions()
{
if (devOptionsContainer != null) devOptionsContainer.SetActive(false);
if (mainOptionsContainer != null) mainOptionsContainer.SetActive(true);
Logging.Debug("[PauseMenu] Hiding dev options");
}
/// <summary>
/// Dev option: Completely wipes all save data and reloads the current level
/// </summary>
public async void DevResetAndReload()
{
Logging.Debug("[PauseMenu] Dev Reset: Clearing all save data and reloading level");
// Clear the card collection
if (CardSystemManager.Instance != null)
{
CardSystemManager.Instance.ClearAllCollectionData();
Logging.Debug("[PauseMenu] Cleared card collection");
}
// Clear all save data from memory
if (SaveLoadManager.Instance != null && SaveLoadManager.Instance.currentSaveData != null)
{
SaveLoadManager.Instance.currentSaveData.participantStates.Clear();
SaveLoadManager.Instance.currentSaveData.unlockedMinigames.Clear();
Logging.Debug("[PauseMenu] Cleared all save data from memory");
}
// Delete the save file
string saveFolder = System.IO.Path.Combine(Application.persistentDataPath, "GameSaves");
if (System.IO.Directory.Exists(saveFolder))
{
try
{
string[] files = System.IO.Directory.GetFiles(saveFolder);
foreach (string file in files)
{
System.IO.File.Delete(file);
Logging.Debug($"[PauseMenu] Deleted save file: {file}");
}
}
catch (Exception ex)
{
Logging.Warning($"[PauseMenu] Failed to delete some save files: {ex.Message}");
}
}
// Now reload the current scene - skipSave=true prevents re-saving the cleared data
var progress = new Progress<float>(p => Logging.Debug($"Loading progress: {p * 100:F0}%"));
await SceneManagerService.Instance.ReloadCurrentScene(progress, autoHideLoadingScreen: true, skipSave: true);
}
/// <summary>
/// Dev option: Gives the player 3 booster packs
/// </summary>
public void DevGiveBoosters()
{
if (CardSystemManager.Instance != null)
{
CardSystemManager.Instance.AddBoosterPack(3);
Logging.Debug("[PauseMenu] Dev: Granted 3 booster packs");
}
else
{
Logging.Warning("[PauseMenu] Dev: CardSystemManager not available");
}
}
#endregion
}
}

View File

@@ -1,84 +1,323 @@
using Bootstrap;
using Core;
using Core.Lifecycle;
using UI.Core;
using Cinematics;
using UnityEngine;
using Core;
using System;
using UnityEngine.UI;
using UnityEngine.Playables;
using UnityEngine.UI;
using System.Linq;
using System.Collections.Generic;
public class PlayerHudManager : MonoBehaviour
namespace UI
{
private AppSwitcher _appSwitcher;
/// <summary>
/// Manages player HUD elements and their visibility.
/// Works alongside UIPageController (must be on same GameObject).
/// Automatically hides HUD when pages open, shows when all pages close.
/// </summary>
public class PlayerHudManager : ManagedBehaviour
{
public enum UIMode { Overworld, Puzzle, Minigame, HideAll };
public UIMode currentUIMode;
[Header("HUD Management")]
[SerializeField] private Transform hudButtonsContainer; // Parent object containing all HUD buttons
[Header("Cinematic References")]
public GameObject landscapeObject;
public GameObject portraitObject;
public GameObject cinematicsParentObject;
public GameObject CinematicBackground;
[Header("HUD Elements")]
public GameObject eagleEye;
public GameObject ramaSjangButton;
[HideInInspector] public Image cinematicSprites;
[HideInInspector] public Image cinematicBackgroundSprites;
[HideInInspector] public GameObject currentCinematicPlayer;
[HideInInspector] public PlayableDirector playableDirector;
private static PlayerHudManager _instance;
public static PlayerHudManager Instance => _instance;
private void Awake()
private UIPageController _uiPageController;
private AppSwitcher _appSwitcherComponent;
private new void Awake()
{
base.Awake();
if (Instance != null)
{
Destroy(this);
return;
}
_instance = this;
// Register for post-boot initialization
BootCompletionService.RegisterInitAction(InitializePostBoot);
// Get UIPageController on same GameObject
_uiPageController = GetComponent<UIPageController>();
if (_uiPageController == null)
{
UnityEngine.Debug.LogError("[PlayerHudManager] UIPageController not found on same GameObject!");
}
InitializeReferences();
}
protected override void OnManagedAwake()
{
// Subscribe to UIPageController page changes for auto HUD management
if (_uiPageController != null)
{
_uiPageController.OnPageChanged += HandlePageStackChanged;
}
// Subscribe to CinematicsManager events for HUD management during cinematics
if (CinematicsManager.Instance != null)
{
CinematicsManager.Instance.OnCinematicStarted += HandleCinematicStarted;
CinematicsManager.Instance.OnCinematicStopped += HandleCinematicStopped;
// Check if a cinematic is already playing
if (CinematicsManager.Instance.IsCinematicPlaying)
{
HideAllHud();
Logging.Debug("[PlayerHudManager] Cinematic already playing on init, hiding HUD");
}
}
if (SceneManagerService.Instance != null)
{
SceneManagerService.Instance.SceneLoadCompleted += NewSceneLoaded;
}
if (SceneManagerService.Instance.CurrentGameplayScene == "AppleHillsOverworld")
{
NewSceneLoaded("AppleHillsOverworld");
}
if (SceneManagerService.Instance.CurrentGameplayScene == "StartingScene")
{
// TODO: Hide all UI until cinematics have played
NewSceneLoaded("AppleHillsOverworld");
}
}
protected override void OnDestroy()
{
base.OnDestroy();
// Unsubscribe from events
if (_uiPageController != null)
{
_uiPageController.OnPageChanged -= HandlePageStackChanged;
}
if (CinematicsManager.Instance != null)
{
CinematicsManager.Instance.OnCinematicStarted -= HandleCinematicStarted;
CinematicsManager.Instance.OnCinematicStopped -= HandleCinematicStopped;
}
if (SceneManagerService.Instance != null)
{
SceneManagerService.Instance.SceneLoadCompleted -= NewSceneLoaded;
}
}
private void InitializeReferences()
{
currentCinematicPlayer = landscapeObject;
playableDirector = cinematicsParentObject.GetComponent<PlayableDirector>();
cinematicSprites = currentCinematicPlayer.GetComponent<Image>();
cinematicBackgroundSprites = CinematicBackground.GetComponent<Image>();
playableDirector = cinematicsParentObject.GetComponent<PlayableDirector>();
}
private void InitializePostBoot()
{
// Initialize any dependencies that require other services to be ready
// For example, subscribe to SceneManagerService events if needed
Logging.Debug("[PlayerHudManager] Post-boot initialization complete");
}
private void OnEnable()
{
// Subscribe to application quit event to ensure cleanup
Application.quitting += OnApplicationQuit;
}
private void OnApplicationQuit()
private void UpateCinematicReferences(GameObject newCinematicPlayer)
{
currentCinematicPlayer = newCinematicPlayer;
cinematicSprites = currentCinematicPlayer.GetComponent<Image>();
}
public void SetPortraitMode(bool portraitModeEnable)
{
if (portraitModeEnable)
{
currentCinematicPlayer = portraitObject;
InitializeReferences();
UpateCinematicReferences(portraitObject);
}
else
{
currentCinematicPlayer = landscapeObject;
InitializeReferences();
UpateCinematicReferences(landscapeObject);
}
}
public void NewSceneLoaded(string sceneName)
{
switch (sceneName)
{
case "AppleHillsOverworld":
currentUIMode = UIMode.Overworld;
break;
case "Quarry":
currentUIMode = UIMode.Puzzle;
break;
case "DivingForPictures":
currentUIMode = UIMode.Minigame;
break;
}
ShowAllHud();
}
/// <summary>
/// Hides all HUD button elements
/// </summary>
public void HideAllHud()
{
SetHudVisibility(false);
}
/// <summary>
/// Shows all HUD button elements
/// </summary>
public void ShowAllHud()
{
SetHudVisibility(true);
}
/// <summary>
/// Hides all HUD elements except the specified exceptions
/// </summary>
/// <param name="exceptions">GameObjects to keep visible</param>
public void HideAllHudExcept(params GameObject[] exceptions)
{
if (hudButtonsContainer == null)
{
Logging.Warning("[PlayerHudManager] HUD buttons container not assigned");
return;
}
HashSet<GameObject> exceptionSet = new HashSet<GameObject>(exceptions);
foreach (Transform child in hudButtonsContainer)
{
bool shouldShow = exceptionSet.Contains(child.gameObject);
child.gameObject.SetActive(shouldShow);
}
Logging.Debug($"[PlayerHudManager] Hidden HUD except {exceptions.Length} exceptions");
}
/// <summary>
/// Common method to set visibility of all HUD elements
/// </summary>
private void SetHudVisibility(bool visible)
{
if (hudButtonsContainer == null)
{
Logging.Warning("[PlayerHudManager] HUD buttons container not assigned");
return;
}
// Set visibility for all HUD children
foreach (Transform child in hudButtonsContainer)
{
child.gameObject.SetActive(visible);
}
ApplyUIModeOverrides(visible);
Logging.Debug($"[PlayerHudManager] {(visible ? "Shown" : "Hidden")} all HUD elements");
}
/// <summary>
/// Applies UI mode-specific visibility rules (e.g., hiding eagleEye in certain modes)
/// </summary>
private void ApplyUIModeOverrides(bool visible)
{
switch (currentUIMode)
{
case UIMode.Overworld:
if (visible)
{
eagleEye.SetActive(false);
}
break;
case UIMode.Puzzle:
if (visible)
{
ramaSjangButton.SetActive(false);
}
break;
case UIMode.Minigame:
if (visible)
{
eagleEye.SetActive(false);
}
break;
case UIMode.HideAll:
break;
}
}
/// <summary>
/// Automatically manages HUD visibility based on page stack state
/// </summary>
private void HandlePageStackChanged(UIPage currentPage)
{
if (_uiPageController == null) return;
// Use LINQ Count() on IEnumerable<UIPage> PageStack property
int stackCount = _uiPageController.PageStack.Count();
if (stackCount == 1 && currentPage != null)
{
// First page just opened - hide HUD
HideAllHud();
Logging.Debug("[PlayerHudManager] Page opened, hiding HUD");
}
else if (stackCount == 0)
{
// Last page closed - show HUD
ShowAllHud();
Logging.Debug("[PlayerHudManager] All pages closed, showing HUD");
}
// If stackCount > 1, we're navigating between pages, keep HUD hidden
}
/// <summary>
/// Called when a cinematic starts playing
/// </summary>
private void HandleCinematicStarted()
{
HideAllHud();
Logging.Debug("[PlayerHudManager] Cinematic started, hiding HUD");
}
/// <summary>
/// Called when a cinematic stops playing
/// </summary>
private void HandleCinematicStopped()
{
ShowAllHud();
Logging.Debug("[PlayerHudManager] Cinematic stopped, showing HUD");
}
/// <summary>
/// Convenience method to push a page from prefab using the UIPageController
/// </summary>
public void PushPageFromPrefab(GameObject pagePrefab)
{
if (_uiPageController != null)
{
_uiPageController.PushPageFromPrefab(pagePrefab);
}
else
{
UnityEngine.Debug.LogError("[PlayerHudManager] Cannot push page - UIPageController not found!");
}
}
}
}