diff --git a/.vsconfig b/.vsconfig new file mode 100644 index 000000000..1586a4833 --- /dev/null +++ b/.vsconfig @@ -0,0 +1,6 @@ +{ + "version": "1.0", + "components": [ + "Microsoft.VisualStudio.Workload.ManagedGame" + ] +} diff --git a/Assets/Fungus/Resources/Prefabs/SaveSlot.prefab b/Assets/Fungus/Resources/Prefabs/SaveSlot.prefab index 3c80b6f24..2efab0145 100644 --- a/Assets/Fungus/Resources/Prefabs/SaveSlot.prefab +++ b/Assets/Fungus/Resources/Prefabs/SaveSlot.prefab @@ -128,7 +128,7 @@ GameObject: - component: {fileID: 8335079148700219652} - component: {fileID: 4849907420850878217} m_Layer: 5 - m_Name: Name + m_Name: Number m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -271,7 +271,7 @@ RectTransform: m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 100} + m_SizeDelta: {x: 500, y: 100} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &8335079149223333646 CanvasRenderer: diff --git a/Assets/Fungus/Resources/Prefabs/Stage.prefab b/Assets/Fungus/Resources/Prefabs/Stage.prefab index 9b66d2156..427dc8746 100644 --- a/Assets/Fungus/Resources/Prefabs/Stage.prefab +++ b/Assets/Fungus/Resources/Prefabs/Stage.prefab @@ -1,158 +1,69 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!1 &110270 -GameObject: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 - m_Component: - - 224: {fileID: 22410270} - - 222: {fileID: 22210270} - - 114: {fileID: 11410270} - m_Layer: 0 - m_Name: Right - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &110272 -GameObject: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 - m_Component: - - 224: {fileID: 22410272} - - 222: {fileID: 22210272} - - 114: {fileID: 11410272} - m_Layer: 0 - m_Name: Offscreen Left - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &110274 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - - 4: {fileID: 410270} - - 114: {fileID: 11410274} + - component: {fileID: 22410270} + - component: {fileID: 22210270} + - component: {fileID: 11410270} m_Layer: 0 - m_Name: Stage + m_Name: Right m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!1 &110276 -GameObject: +--- !u!224 &22410270 +RectTransform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 - m_Component: - - 224: {fileID: 22410274} - - 223: {fileID: 22310270} - - 114: {fileID: 11410278} - - 114: {fileID: 11410276} - - 225: {fileID: 22510270} - m_Layer: 5 - m_Name: Canvas - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &110278 -GameObject: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 - m_Component: - - 224: {fileID: 22410276} - - 222: {fileID: 22210274} - - 114: {fileID: 11410280} - m_Layer: 0 - m_Name: Middle - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &110280 -GameObject: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 - m_Component: - - 224: {fileID: 22410278} - - 222: {fileID: 22210276} - - 114: {fileID: 11410282} - m_Layer: 0 - m_Name: Offscreen Right - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &110282 -GameObject: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 - m_Component: - - 224: {fileID: 22410280} - - 222: {fileID: 22210278} - - 114: {fileID: 11410284} - m_Layer: 0 - m_Name: Left - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &410270 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 110274} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 110270} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22410274} + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_Children: - - {fileID: 22410274} - m_Father: {fileID: 0} - m_RootOrder: 0 + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 460.43, y: -1000} + m_SizeDelta: {x: 1000, y: 1000} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &22210270 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 110270} + m_CullTransparentMesh: 0 --- !u!114 &11410270 MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 110270} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 0} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null m_Sprite: {fileID: 21300000, guid: ea8f56c43254d41728f5ac4e8299b6c9, type: 3} m_Type: 0 m_PreserveAspect: 1 @@ -161,25 +72,72 @@ MonoBehaviour: m_FillAmount: 1 m_FillClockwise: 1 m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &110272 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22410272} + - component: {fileID: 22210272} + - component: {fileID: 11410272} + m_Layer: 0 + m_Name: Offscreen Left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22410272 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 110272} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22410274} + m_RootOrder: 3 + 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: -1300, y: -1000} + m_SizeDelta: {x: 1000, y: 1000} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &22210272 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 110272} + m_CullTransparentMesh: 0 --- !u!114 &11410272 MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 110272} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 0} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null m_Sprite: {fileID: 21300000, guid: ea8f56c43254d41728f5ac4e8299b6c9, type: 3} m_Type: 0 m_PreserveAspect: 1 @@ -188,11 +146,46 @@ MonoBehaviour: m_FillAmount: 1 m_FillClockwise: 1 m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &110274 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 410270} + - component: {fileID: 11410274} + m_Layer: 0 + m_Name: Stage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &410270 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 110274} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22410274} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &11410274 MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 110274} m_Enabled: 1 m_EditorHideFlags: 0 @@ -201,6 +194,7 @@ MonoBehaviour: m_EditorClassIdentifier: portraitCanvas: {fileID: 22310270} dimPortraits: 1 + dimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} fadeDuration: 0.75 moveDuration: 1 fadeEaseType: 4 @@ -212,15 +206,98 @@ MonoBehaviour: - {fileID: 22410270} - {fileID: 22410272} - {fileID: 22410278} +--- !u!1 &110276 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22410274} + - component: {fileID: 22310270} + - component: {fileID: 11410278} + - component: {fileID: 11410276} + - component: {fileID: 22510270} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22410274 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 110276} + 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_Children: + - {fileID: 22410276} + - {fileID: 22410280} + - {fileID: 22410270} + - {fileID: 22410272} + - {fileID: 22410278} + m_Father: {fileID: 410270} + m_RootOrder: 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!223 &22310270 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 110276} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &11410278 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 110276} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 --- !u!114 &11410276 MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 110276} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} m_Name: m_EditorClassIdentifier: m_UiScaleMode: 1 @@ -233,41 +310,82 @@ MonoBehaviour: m_FallbackScreenDPI: 96 m_DefaultSpriteDPI: 96 m_DynamicPixelsPerUnit: 1 ---- !u!114 &11410278 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} +--- !u!225 &22510270 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 110276} m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 1 - m_BlockingObjects: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 0 + m_IgnoreParentGroups: 0 +--- !u!1 &110278 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22410276} + - component: {fileID: 22210274} + - component: {fileID: 11410280} + m_Layer: 0 + m_Name: Middle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22410276 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 110278} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22410274} + m_RootOrder: 0 + 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: -1000} + m_SizeDelta: {x: 1000, y: 1000} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &22210274 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 110278} + m_CullTransparentMesh: 0 --- !u!114 &11410280 MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 110278} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 0} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null m_Sprite: {fileID: 21300000, guid: ea8f56c43254d41728f5ac4e8299b6c9, type: 3} m_Type: 0 m_PreserveAspect: 1 @@ -276,25 +394,72 @@ MonoBehaviour: m_FillAmount: 1 m_FillClockwise: 1 m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &110280 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22410278} + - component: {fileID: 22210276} + - component: {fileID: 11410282} + m_Layer: 0 + m_Name: Offscreen Right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22410278 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 110280} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22410274} + m_RootOrder: 4 + 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: 1300, y: -1000} + m_SizeDelta: {x: 1000, y: 1000} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &22210276 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 110280} + m_CullTransparentMesh: 0 --- !u!114 &11410282 MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 110280} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 0} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null m_Sprite: {fileID: 21300000, guid: ea8f56c43254d41728f5ac4e8299b6c9, type: 3} m_Type: 0 m_PreserveAspect: 1 @@ -303,25 +468,72 @@ MonoBehaviour: m_FillAmount: 1 m_FillClockwise: 1 m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &110282 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22410280} + - component: {fileID: 22210278} + - component: {fileID: 11410284} + m_Layer: 0 + m_Name: Left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22410280 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 110282} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22410274} + m_RootOrder: 1 + 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: -460.43, y: -1000} + m_SizeDelta: {x: 1000, y: 1000} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &22210278 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 110282} + m_CullTransparentMesh: 0 --- !u!114 &11410284 MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 110282} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 0} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null m_Sprite: {fileID: 21300000, guid: ea8f56c43254d41728f5ac4e8299b6c9, type: 3} m_Type: 0 m_PreserveAspect: 1 @@ -330,187 +542,5 @@ MonoBehaviour: m_FillAmount: 1 m_FillClockwise: 1 m_FillOrigin: 0 ---- !u!222 &22210270 -CanvasRenderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 110270} ---- !u!222 &22210272 -CanvasRenderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 110272} ---- !u!222 &22210274 -CanvasRenderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 110278} ---- !u!222 &22210276 -CanvasRenderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 110280} ---- !u!222 &22210278 -CanvasRenderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 110282} ---- !u!223 &22310270 -Canvas: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 110276} - m_Enabled: 1 - serializedVersion: 2 - m_RenderMode: 0 - m_Camera: {fileID: 0} - m_PlaneDistance: 100 - m_PixelPerfect: 1 - m_ReceivesEvents: 1 - m_OverrideSorting: 0 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_SortingLayerID: 0 - m_SortingOrder: 0 - m_TargetDisplay: 0 ---- !u!224 &22410270 -RectTransform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 110270} - 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_Children: [] - m_Father: {fileID: 22410274} - m_RootOrder: 2 - m_AnchorMin: {x: 0.5, y: 1} - m_AnchorMax: {x: 0.5, y: 1} - m_AnchoredPosition: {x: 460.43, y: -1000} - m_SizeDelta: {x: 1000, y: 1000} - m_Pivot: {x: 0.5, y: 0} ---- !u!224 &22410272 -RectTransform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 110272} - 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_Children: [] - m_Father: {fileID: 22410274} - m_RootOrder: 3 - m_AnchorMin: {x: 0.5, y: 1} - m_AnchorMax: {x: 0.5, y: 1} - m_AnchoredPosition: {x: -1300, y: -1000} - m_SizeDelta: {x: 1000, y: 1000} - m_Pivot: {x: 0.5, y: 0} ---- !u!224 &22410274 -RectTransform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 110276} - 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_Children: - - {fileID: 22410276} - - {fileID: 22410280} - - {fileID: 22410270} - - {fileID: 22410272} - - {fileID: 22410278} - m_Father: {fileID: 410270} - m_RootOrder: 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!224 &22410276 -RectTransform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 110278} - 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_Children: [] - m_Father: {fileID: 22410274} - m_RootOrder: 0 - m_AnchorMin: {x: 0.5, y: 1} - m_AnchorMax: {x: 0.5, y: 1} - m_AnchoredPosition: {x: 0, y: -1000} - m_SizeDelta: {x: 1000, y: 1000} - m_Pivot: {x: 0.5, y: 0} ---- !u!224 &22410278 -RectTransform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 110280} - 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_Children: [] - m_Father: {fileID: 22410274} - m_RootOrder: 4 - m_AnchorMin: {x: 0.5, y: 1} - m_AnchorMax: {x: 0.5, y: 1} - m_AnchoredPosition: {x: 1300, y: -1000} - m_SizeDelta: {x: 1000, y: 1000} - m_Pivot: {x: 0.5, y: 0} ---- !u!224 &22410280 -RectTransform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 110282} - 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_Children: [] - m_Father: {fileID: 22410274} - m_RootOrder: 1 - m_AnchorMin: {x: 0.5, y: 1} - m_AnchorMax: {x: 0.5, y: 1} - m_AnchoredPosition: {x: -460.43, y: -1000} - m_SizeDelta: {x: 1000, y: 1000} - m_Pivot: {x: 0.5, y: 0} ---- !u!225 &22510270 -CanvasGroup: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 110276} - m_Enabled: 1 - m_Alpha: 1 - m_Interactable: 1 - m_BlocksRaycasts: 0 - m_IgnoreParentGroups: 0 ---- !u!1001 &100100000 -Prefab: - m_ObjectHideFlags: 1 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: [] - m_RemovedComponents: [] - m_ParentPrefab: {fileID: 0} - m_RootGameObject: {fileID: 110274} - m_IsPrefabParent: 1 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 diff --git a/Assets/Fungus/Scripts/Commands/Say.cs b/Assets/Fungus/Scripts/Commands/Say.cs index 451a002fa..d6abaec66 100644 --- a/Assets/Fungus/Scripts/Commands/Say.cs +++ b/Assets/Fungus/Scripts/Commands/Say.cs @@ -56,7 +56,7 @@ public class Say : Command, ILocalizable [Tooltip("Sets the active Say dialog with a reference to a Say Dialog object in the scene. All story text will now display using this Say Dialog.")] [SerializeField] protected SayDialog setSayDialog; - protected int executionCount; + public int ExecutionCount { get; set; } #region Public members @@ -77,13 +77,13 @@ public class Say : Command, ILocalizable public override void OnEnter() { - if (!showAlways && executionCount >= showCount) + if (!showAlways && ExecutionCount >= showCount) { Continue(); return; } - executionCount++; + ExecutionCount++; // Override the active say dialog if needed if (character != null && character.SetSayDialog != null) @@ -151,7 +151,7 @@ public override Color GetButtonColor() public override void OnReset() { - executionCount = 0; + ExecutionCount = 0; } public override void OnStopExecuting() diff --git a/Assets/Fungus/Scripts/Components/Block.cs b/Assets/Fungus/Scripts/Components/Block.cs index 08c6d5bf8..9d3cb7b76 100644 --- a/Assets/Fungus/Scripts/Components/Block.cs +++ b/Assets/Fungus/Scripts/Components/Block.cs @@ -542,6 +542,20 @@ public virtual int GetLabelIndex(string labelKey) return -1; } + public virtual IList GetCommandsOfType() where TCommand: Fungus.Command + { + IList commandsFound = new List(); + + for (int i = 0; i < this.commandList.Count; i++) + { + var currentCommand = this.commandList[i]; + if (currentCommand is TCommand) + commandsFound.Add(currentCommand as TCommand); + } + + return commandsFound; + } + #endregion } } diff --git a/Assets/Fungus/Scripts/Components/SaveManager.cs b/Assets/Fungus/Scripts/Components/SaveManager.cs index 0721d3572..e4354dfd9 100644 --- a/Assets/Fungus/Scripts/Components/SaveManager.cs +++ b/Assets/Fungus/Scripts/Components/SaveManager.cs @@ -89,7 +89,7 @@ public void Awake() /// public List CollectAutoSaves() { - return SaveFileManager.SaveMetas.Where(x => x.saveName.StartsWith(FungusConstants.AutoSavePrefix)) + return SaveFileManager.SaveMetas.Where(x => x.saveName.StartsWith(SaveSysConstants.AutoSavePrefix)) .OrderBy(x => x.lastWritten.Ticks).ToList(); } @@ -99,8 +99,8 @@ public List CollectAutoSaves() /// public List CollectUserSaves() { - return SaveFileManager.SaveMetas.Where(x => x.saveName.StartsWith(FungusConstants.SlotSavePrefix)) - .OrderBy(x => System.Convert.ToInt32(x.saveName.Substring(FungusConstants.SlotSavePrefix.Length))).ToList(); + return SaveFileManager.SaveMetas.Where(x => x.saveName.StartsWith(SaveSysConstants.SlotSavePrefix)) + .OrderBy(x => System.Convert.ToInt32(x.saveName.Substring(SaveSysConstants.SlotSavePrefix.Length))).ToList(); } /// @@ -121,7 +121,7 @@ public void DeleteSave(SaveGameMetaData meta, bool replaceIfSlot = true) { SaveFileManager.DeleteSave(SaveFileManager.SaveMetas.IndexOf(meta)); - if (replaceIfSlot && meta.saveName.StartsWith(FungusConstants.SlotSavePrefix)) + if (replaceIfSlot && meta.saveName.StartsWith(SaveSysConstants.SlotSavePrefix)) { SaveFileManager.SaveMetas.Add(new SaveGameMetaData() { saveName = meta.saveName }); @@ -157,7 +157,7 @@ public bool Load(SaveGameMetaData meta) public bool LoadSlot(int index) { - var saveIndex = SaveFileManager.SaveNameToIndex(FungusConstants.SlotSavePrefix + index.ToString()); + var saveIndex = SaveFileManager.SaveNameToIndex(SaveSysConstants.SlotSavePrefix + index.ToString()); if (saveIndex < 0) return false; @@ -175,7 +175,7 @@ public void RefreshMetas() { if (userSaves.Find(x => x.saveName.EndsWith(i.ToString())) == null) //even with leading zeros ends with should match { - SaveFileManager.SaveMetas.Add(new SaveGameMetaData() { saveName = FungusConstants.SlotSavePrefix + i.ToString() }); + SaveFileManager.SaveMetas.Add(new SaveGameMetaData() { saveName = SaveSysConstants.SlotSavePrefix + i.ToString() }); } } @@ -184,7 +184,7 @@ public void RefreshMetas() public void ReplaceSave(SaveGameMetaData meta, string newSavePointDescription) { - if (!IsSavingAllowed || meta.saveName.StartsWith(FungusConstants.AutoSavePrefix)) + if (!IsSavingAllowed || meta.saveName.StartsWith(SaveSysConstants.AutoSavePrefix)) return; DeleteSave(meta); @@ -192,7 +192,7 @@ public void ReplaceSave(SaveGameMetaData meta, string newSavePointDescription) SaveFileManager.Save( meta.saveName, newSavePointDescription, - meta.saveName.StartsWith(FungusConstants.SlotSavePrefix) ? FungusConstants.SlotSavePrefix : string.Empty); + meta.saveName.StartsWith(SaveSysConstants.SlotSavePrefix) ? SaveSysConstants.SlotSavePrefix : string.Empty); } /// @@ -226,7 +226,7 @@ public void SaveAuto(string saveName, string savePointDescription) if (!IsSavingAllowed) return; - SaveFileManager.Save(FungusConstants.AutoSavePrefix + saveName, savePointDescription, FungusConstants.AutoSavePrefix); + SaveFileManager.Save(SaveSysConstants.AutoSavePrefix + saveName, savePointDescription, SaveSysConstants.AutoSavePrefix); //if we limit autos and it is an auto, are there now to many, delete oldest until not over limit if (NumberOfAutoSaves >= 0) @@ -258,7 +258,7 @@ public bool SaveSlot(int index, string savePointDescription) string formatString = "D" + NumberOfSlotSaves.ToString().Length.ToString(); - SaveFileManager.Save(FungusConstants.SlotSavePrefix + index.ToString(formatString), savePointDescription, FungusConstants.SlotSavePrefix); + SaveFileManager.Save(SaveSysConstants.SlotSavePrefix + index.ToString(formatString), savePointDescription, SaveSysConstants.SlotSavePrefix); return true; } diff --git a/Assets/Fungus/Scripts/Editor/FungusEditorPreferences.cs b/Assets/Fungus/Scripts/Editor/FungusEditorPreferences.cs index 91b8f2b51..77600a3d7 100644 --- a/Assets/Fungus/Scripts/Editor/FungusEditorPreferences.cs +++ b/Assets/Fungus/Scripts/Editor/FungusEditorPreferences.cs @@ -125,7 +125,7 @@ private static void PreferencesGUI() if(GUILayout.Button("Open save file directory")) { - Application.OpenURL(FungusConstants.StorageDirectory); + Application.OpenURL(SaveSysConstants.StorageDirectory); } // Save the preferences diff --git a/Assets/Fungus/Scripts/Save/DefaultSaveGameSaveHandler.cs b/Assets/Fungus/Scripts/Save/DefaultSaveGameSaveHandler.cs index 4cae37192..e2c1e6c55 100644 --- a/Assets/Fungus/Scripts/Save/DefaultSaveGameSaveHandler.cs +++ b/Assets/Fungus/Scripts/Save/DefaultSaveGameSaveHandler.cs @@ -13,7 +13,7 @@ public static ISaveHandler CreateDefaultWithSerializers() new MenuSaveDataItemSerializer()); } - public override int CurrentExpectedVersion => FungusConstants.CurrentSaveGameDataVersion; + public override int CurrentExpectedVersion => SaveSysConstants.CurrentSaveGameDataVersion; public DefaultSaveGameSaveHandler() { diff --git a/Assets/Fungus/Scripts/Save/DefaultUserProfileSaveHandler.cs b/Assets/Fungus/Scripts/Save/DefaultUserProfileSaveHandler.cs index 0dc445847..8c71178bc 100644 --- a/Assets/Fungus/Scripts/Save/DefaultUserProfileSaveHandler.cs +++ b/Assets/Fungus/Scripts/Save/DefaultUserProfileSaveHandler.cs @@ -11,7 +11,7 @@ public static ISaveHandler CreateDefaultWithSerializers() new FungusPerProfileSaveDataItemSerializer()); } - public override int CurrentExpectedVersion => FungusConstants.CurrentProfileDataVersion; + public override int CurrentExpectedVersion => SaveSysConstants.CurrentProfileDataVersion; public DefaultUserProfileSaveHandler() { diff --git a/Assets/Fungus/Scripts/Save/LionMane.meta b/Assets/Fungus/Scripts/Save/LionMane.meta new file mode 100644 index 000000000..8aad27977 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 95964f159928aad4bbc1cbbbc45a8d1d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/SaveUnits.meta b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits.meta new file mode 100644 index 000000000..8de013ac1 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: be7a0c4bc28a35a489a2f7db19ad1109 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/BlockSaveUnit.cs b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/BlockSaveUnit.cs new file mode 100644 index 000000000..6c5f036e2 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/BlockSaveUnit.cs @@ -0,0 +1,113 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace Fungus.LionManeSaveSys +{ + /// + /// Stores the states of Flowchart Blocks + /// + public class BlockSaveUnit : SaveUnit + { + /// + /// Unique identifier for the Block this stores the state of. + /// + public int ItemId + { + get { return itemId; } + set { itemId = value; } + } + + [SerializeField] + int itemId; + + /// + /// Name of the Block this unit was storing the state of. + /// + public string BlockName + { + get { return blockName; } + set { blockName = value; } + } + + [SerializeField] + string blockName; + + /// + /// For the commands that have state to restore on load. + /// Keys are the exact types of the commands' states, values are the json representations of + /// said states. + /// + public IList Commands + { + get { return commands; } + set + { + commands.Clear(); + commands.AddRange(value); + } + } + + List commands; + + public IList SerializedCommands + { + get { return serializedCommands; } + set + { + serializedCommands.Clear(); + serializedCommands.AddRange(value); + } + } + + [SerializeField] + List serializedCommands; + + public int ExecutionCount + { + get { return executionCount; } + set { executionCount = value; } + } + + public override string TypeName { get; set; } = "Block"; + + [SerializeField] + int executionCount; + + public static IList From(IList blocks) + { + BlockSaveUnit[] results = new BlockSaveUnit[blocks.Count]; + + for (int i = 0; i < blocks.Count; i++) + { + Block currentBlock = blocks[i]; + BlockSaveUnit newUnit = From(currentBlock); + results[i] = newUnit; + } + + return results; + } + + /// + /// Note that this does not create a BlockSaveUnit with the executingCommands populated, given + /// how command save states will have to be made on a case-by-case basis. + /// + public static BlockSaveUnit From(Block block) + { + BlockSaveUnit newUnit = new BlockSaveUnit(); + newUnit.ItemId = block.ItemId; + newUnit.executionCount = block.GetExecutionCount(); + newUnit.BlockName = block.BlockName; + newUnit.commands = new List(); + newUnit.serializedCommands = new List(); + + return newUnit; + } + + public void RegisterCommandStates(IList commands) + { + this.commands.AddRange(commands); + } + + + } +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/BlockSaveUnit.cs.meta b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/BlockSaveUnit.cs.meta new file mode 100644 index 000000000..00d1ba219 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/BlockSaveUnit.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4ebfe5458001d4346b0a3a290460b2b1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/CommandSaveUnit.cs b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/CommandSaveUnit.cs new file mode 100644 index 000000000..3320412c3 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/CommandSaveUnit.cs @@ -0,0 +1,28 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Fungus.LionManeSaveSys +{ + [System.Serializable] + public class CommandSaveUnit : SaveUnit + { + public override string TypeName { get; set; } = "Command"; + + [SerializeField] + int indexInBlock; // Index 0 = first block, index 3 = fourth block, etc + + [SerializeField] + string commandType; + // ^You never know if the dev changes the orders of Commands between game versions, so knowing the + // type can help ensure that the right state is restored to the right Commands. + // This may be used as a sort of fallback for when indexInBlock risks executing the wrong Command + // on load. + + [SerializeField] + List fieldStates; + // ^Like the Menu Command's Hide If Visited field. These pairs will need the name as the key, + // the value as the... well, value + + } +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/CommandSaveUnit.cs.meta b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/CommandSaveUnit.cs.meta new file mode 100644 index 000000000..28f00633d --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/CommandSaveUnit.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3379ca9698641ff4ab37fd9a7979185b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/ISaveUnit.cs b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/ISaveUnit.cs new file mode 100644 index 000000000..b37ef1b65 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/ISaveUnit.cs @@ -0,0 +1,28 @@ +using Object = System.Object; +using System.Collections.Generic; + +namespace Fungus.LionManeSaveSys +{ + /// + /// Interface for classes that represent units of save data, be they for a specific system, gameplay mechanic, etc. + /// + public interface ISaveUnit + { + string TypeName { get; } + IList Subunits { get; } + } + + + public interface ICommandSaveUnit : ISaveUnit + { + int Index { get; } + + /// + /// Specifically at the time that this save unit was made + /// + bool WasExecuting { get; } + } + + public interface ICommandSaveUnit : ICommandSaveUnit + { } +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/ISaveUnit.cs.meta b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/ISaveUnit.cs.meta new file mode 100644 index 000000000..00e6c6944 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/ISaveUnit.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a16c13aaa0ff2394d816164458e06908 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/PortraitSaveUnit.cs b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/PortraitSaveUnit.cs new file mode 100644 index 000000000..514f4cf9f --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/PortraitSaveUnit.cs @@ -0,0 +1,188 @@ +using UnityEngine; +using UnityEngine.UI; + +namespace Fungus.LionManeSaveSys +{ + /// + /// Groups together the parts of the PortraitStates that the save system needs to use + /// to be able to restore portraits to what they should be upon load. + /// + [System.Serializable] + public class PortraitSaveUnit : SaveUnit, System.IEquatable + { + public string CharacterName + { + get { return characterName; } + set { characterName = value; } + } + + [SerializeField] + private string characterName; + + public string StageName + { + get { return stageName; } + set { stageName = value; } + } + + [SerializeField] + private string stageName; + + /// + /// Whether or not the portrait should be hidden + /// + public bool OnScreen + { + get { return onScreen; } + set { onScreen = value; } + } + + [SerializeField] + bool onScreen; + + public bool Dimmed + { + get { return dimmed; } + set { dimmed = value; } + } + + [SerializeField] + bool dimmed; + + public string PositionName + { + get { return positionName; } + set { positionName = value; } + } + + [SerializeField] + private string positionName; + + public FacingDirection FacingDirection + { + get { return facingDirection; } + set { facingDirection = value; } + } + + [SerializeField] + FacingDirection facingDirection; + + public int PortraitIndex + { + get { return portraitIndex; } + set { portraitIndex = value; } + } + + [SerializeField] + private int portraitIndex; + + public string PortraitName + { + get { return portraitName; } + set { portraitName = value; } + } + + public override string TypeName { get; set; } = "Portrait"; + + [SerializeField] + private string portraitName; + + public static PortraitSaveUnit From(Character character) + { + PortraitSaveUnit newState = new PortraitSaveUnit(); + newState.SetFrom(character); + + return newState; + } + + public PortraitSaveUnit(Character character) + { + PortraitState charState = character.State; + + this.characterName = character.name; + this.dimmed = charState.dimmed; + this.facingDirection = charState.facing; + this.onScreen = charState.onScreen; + + Image currentPortrait = charState.portraitImage; + + this.portraitIndex = charState.allPortraits.IndexOf(currentPortrait); + if (charState.onScreen) + { + this.positionName = charState.position.name; + this.portraitName = charState.portrait.name; + } + else + { + this.positionName = "Null"; + this.portraitName = "Null"; + } + + this.stageName = FindStageNameFor(charState); + } + + public PortraitSaveUnit() + { + } + + public void SetFrom(Character character) + { + PortraitState charState = character.State; + + this.CharacterName = character.name; + this.Dimmed = charState.dimmed; + this.FacingDirection = charState.facing; + this.OnScreen = charState.onScreen; + + Image currentPortrait = charState.portraitImage; + + this.PortraitIndex = charState.allPortraits.IndexOf(currentPortrait); + if (charState.onScreen) + { + this.positionName = charState.position.name; + this.portraitName = charState.portrait.name; + } + else + { + this.PositionName = "Null"; + this.PortraitName = "Null"; + } + + this.StageName = FindStageNameFor(charState); + } + + private static string FindStageNameFor(PortraitState state) + { + // The Stage is the portrait holder's grandparent, so we need to hop up two spots + // in the Hierarchy + Transform portraitHolder = state.holder; + bool thereIsNoHolder = portraitHolder == null; + if (thereIsNoHolder) + return ""; + + Transform canvasHoldingTheHolder = portraitHolder.parent.transform; + Stage stage = canvasHoldingTheHolder.parent.GetComponent(); + bool thereIsNoStage = stage == null; + if (thereIsNoStage) + return ""; + else + return stage.name; + + } + + public bool Equals(PortraitSaveUnit other) + { + return this.CharacterName == other.CharacterName && + this.Dimmed == other.Dimmed && + this.FacingDirection == other.FacingDirection && + this.OnScreen == other.OnScreen && + this.PortraitIndex == other.PortraitIndex && + this.PositionName == other.PositionName && + this.portraitName == other.PortraitName && + this.StageName == other.StageName; + } + + public static PortraitSaveUnit Null = new PortraitSaveUnit(); + + } +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/PortraitSaveUnit.cs.meta b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/PortraitSaveUnit.cs.meta new file mode 100644 index 000000000..371c9186d --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/PortraitSaveUnit.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d1493865027bf5b4cbc2f6edfd4075ba +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/SaveUnit.cs b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/SaveUnit.cs new file mode 100644 index 000000000..678b0a8b2 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/SaveUnit.cs @@ -0,0 +1,60 @@ +using UnityEngine; +using System.Collections.Generic; +using Object = System.Object; +using DateTime = System.DateTime; + +namespace Fungus.LionManeSaveSys +{ + [System.Serializable] + public abstract class SaveUnit: ISaveUnit, System.IEquatable + { + /// + /// For more specific parts of the state this unit holds. + /// + public IList Subunits { get { return subunits as IList; } } + protected List subunits = new List(); + + public abstract string TypeName { get; set; } + + public virtual DateTime LastWritten + { + get { return savedLastWritten.DateTime; } + set { savedLastWritten.DateTime = value; } + } + + [SerializeField] + protected SavedDateTime savedLastWritten = new SavedDateTime(); + + public virtual void OnDeserialize() + { + savedLastWritten.OnDeserialize(); + } + + public virtual bool Equals(SaveUnit other) + { + bool sameTypeName = this.TypeName.Equals(other.TypeName); + bool sameSubunits = SameSubunitsAs(other); + bool sameWriteTime = LastWritten.Equals(other.LastWritten); + bool whetherTheyreEqual = sameTypeName && sameSubunits && sameWriteTime; + return whetherTheyreEqual; + } + + protected virtual bool SameSubunitsAs(SaveUnit other) + { + if (this.subunits.Count != other.subunits.Count) + return false; + + for (int i = 0; i < this.subunits.Count; i++) + { + var unitOfThis = this.subunits[i]; + var unitOfOther = other.subunits[i]; + if (!unitOfThis.Equals(unitOfOther)) + return false; + } + + return true; + } + + } + +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/SaveUnit.cs.meta b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/SaveUnit.cs.meta new file mode 100644 index 000000000..c6f9963e1 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/SaveUnit.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 305f3ed00a89216418e0d19ca81bcb54 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/SaySaveUnit.cs b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/SaySaveUnit.cs new file mode 100644 index 000000000..8231b0329 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/SaySaveUnit.cs @@ -0,0 +1,68 @@ +using UnityEngine; +using System.Collections.Generic; + +namespace Fungus.LionManeSaveSys +{ + [System.Serializable] + public class SaySaveUnit : SaveUnit, ICommandSaveUnit, System.IEquatable + { + + public int ExecutionCount + { + get { return executionCount; } + set { executionCount = value; } + } + + public int Index + { + get { return index; } + set { index = value; } + } + + [SerializeField] + int index; + + public bool WasExecuting + { + get { return wasExecuting; } + set { wasExecuting = value; } + } + + public override string TypeName { get; set; } = "SayCommand"; + + [SerializeField] + bool wasExecuting; + + [SerializeField] + int executionCount; + + public bool Equals(SaySaveUnit other) + { + return this.ExecutionCount == other.ExecutionCount; + } + + public static SaySaveUnit From(Say command) + { + SaySaveUnit newUnit = new SaySaveUnit(); + newUnit.executionCount = command.ExecutionCount; + newUnit.index = command.CommandIndex; + newUnit.wasExecuting = command.IsExecuting; + + return newUnit; + } + + public static IList From(IList commands) + { + SaySaveUnit[] results = new SaySaveUnit[commands.Count]; + + for (int i = 0; i < commands.Count; i++) + { + Say currentSay = commands[i]; + SaySaveUnit newUnit = From(currentSay); + results[i] = newUnit; + } + + return results; + } + } +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/SaySaveUnit.cs.meta b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/SaySaveUnit.cs.meta new file mode 100644 index 000000000..cc1ae9fc9 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/SaySaveUnit.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2388fa8b20e0f3e4d933a731aa621045 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/TransformSaveUnit.cs b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/TransformSaveUnit.cs new file mode 100644 index 000000000..fc3e40457 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/TransformSaveUnit.cs @@ -0,0 +1,63 @@ +using UnityEngine; + +namespace Fungus.LionManeSaveSys +{ + [System.Serializable] + public class TransformSaveUnit : SaveUnit + { + public string Name + { + get { return name; } + set { name = value; } + } + + [SerializeField] + private string name; + + public Vector3 Position + { + get { return position; } + set { position = value; } + } + + [SerializeField] + private Vector3 position; + + public Vector3 LocalScale + { + get { return localScale; } + set { localScale = value; } + } + + [SerializeField] + private Vector3 localScale; + + public Quaternion Rotation + { + get { return rotation; } + set { rotation = value; } + } + + public override string TypeName { get; set; } = "Transform"; + + [SerializeField] + private Quaternion rotation; + + public TransformSaveUnit(Transform trans) + { + this.name = trans.name; + this.position = trans.position; + this.rotation = trans.rotation; + this.localScale = trans.localScale; + } + + public void SetFrom(Transform trans) + { + this.name = trans.name; + this.position = trans.position; + this.rotation = trans.rotation; + this.localScale = trans.localScale; + } + + } +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/TransformSaveUnit.cs.meta b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/TransformSaveUnit.cs.meta new file mode 100644 index 000000000..90626862c --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/TransformSaveUnit.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 82e70549c8b875b47964885c7faeee14 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/UISaveUnit.cs b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/UISaveUnit.cs new file mode 100644 index 000000000..d05847705 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/UISaveUnit.cs @@ -0,0 +1,38 @@ +using UnityEngine; +using TimeSpan = System.TimeSpan; + +namespace Fungus.LionManeSaveSys +{ + /** Contains the stuff meant to be shown in the Save UI. + * Implements the stuff most often seen in such user interfaces.**/ + [System.Serializable] + public class UISaveUnit : SaveUnit + { + public override string TypeName { get; set; } = "UI"; + + public virtual bool HasSlotNumberAssigned { get { return SlotNumber >= 0; } } + public virtual int SlotNumber + { + get { return slotNumber; } + set { slotNumber = value; } + } + + [SerializeField] + protected int slotNumber = -1; + + public TimeSpan Playtime + { + get { return savedPlaytime.TimeSpan; } + set { savedPlaytime.TimeSpan = value; } + } + + [SerializeField] + protected SavedTimeSpan savedPlaytime = new SavedTimeSpan(); + + public override void OnDeserialize() + { + base.OnDeserialize(); + savedPlaytime.OnDeserialize(); + } + } +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/UISaveUnit.cs.meta b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/UISaveUnit.cs.meta new file mode 100644 index 000000000..9f8be1df1 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/UISaveUnit.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 25b866e0bd8f6c5449bdd7d2be84118e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/VariableSaveUnit.cs b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/VariableSaveUnit.cs new file mode 100644 index 000000000..62639717b --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/VariableSaveUnit.cs @@ -0,0 +1,70 @@ +using UnityEngine; +using Type = System.Type; + +namespace Fungus.LionManeSaveSys +{ + public class VariableSaveUnit : SaveUnit + { + + /// + /// Name of the Flowchart variable + /// + public string Name + { + get { return name; } + set { name = value; } + } + + [SerializeField] + private string name; + + /// + /// Name of the Flowchart variable's type + /// + public override string TypeName + { + get { return typeName; } + set { typeName = value; } + } + + [SerializeField] + private string typeName; + // ^ We need this to restore the Type field upon deserialization + + public Type Type + { + get { return type; } + set + { + type = value; + TypeName = type.Name; + } + } + + private Type type; + + public string Value + { + get { return varValue; } + set { varValue = value; } + } + + private string varValue; + + public VariableSaveUnit(Variable varInput) + { + this.name = varInput.Key; + this.varValue = varInput.GetValue().ToString(); + this.type = varInput.GetType(); + this.typeName = this.type.Name; + } + + public override void OnDeserialize() + { + base.OnDeserialize(); + this.Type = Type.GetType(typeName); + } + + } + +} diff --git a/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/VariableSaveUnit.cs.meta b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/VariableSaveUnit.cs.meta new file mode 100644 index 000000000..562fafc69 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/SaveUnits/VariableSaveUnit.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b1665cda767c087429c43f4509149e7f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers.meta b/Assets/Fungus/Scripts/Save/LionMane/Savers.meta new file mode 100644 index 000000000..f54de00eb --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 10ead098654cc4a46828a8bf38042d97 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/DataSaver.cs b/Assets/Fungus/Scripts/Save/LionMane/Savers/DataSaver.cs new file mode 100644 index 000000000..4bdad4826 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/DataSaver.cs @@ -0,0 +1,97 @@ +using UnityEngine; +using System.Collections.Generic; +using Object = System.Object; +using Type = System.Type; + +namespace Fungus.LionManeSaveSys +{ + /// + /// For classes that handle making some particular type of save unit to be stored in RAM as opposed + /// to saves stored on disk. + /// + public abstract class DataSaver: MonoBehaviour, ISaveCreator + { + /// + /// The types of objects this can accept as input + /// + public virtual IList ValidInputTypes + { + get { return validInputTypes; } + } + + protected Type[] validInputTypes = new Type[] + { + typeof(Object) + }; + + public virtual IList CreateSavesFrom(IList inputs) + { + IList result = new ISaveUnit[inputs.Count]; + + for (int i = 0; i < inputs.Count; i++) + { + Object currentInput = inputs[i]; + ISaveUnit saveCreated = CreateSaveFrom(currentInput); + result[i] = saveCreated; + } + + return result; + } + + public abstract ISaveUnit CreateSaveFrom(Object input); + + protected virtual void Validate(Object input) + { + if (!IsValid(input)) + { + AlertFor(input); + } + } + + protected virtual bool IsValid(Object input) + { + Type inputType = input.GetType(); + + foreach (Type validType in ValidInputTypes) + { + bool sameOrSubtype = inputType == validType || inputType.IsSubclassOf(validType); + + if (sameOrSubtype) + return true; + } + + return false; + } + + protected virtual void AlertFor(Object invalidInput) + { + string messageFormat = "{0} is invalid input for {1} on GameObject {2}."; + string errorMessage = string.Format(messageFormat, invalidInput, GetType().Name, this.gameObject.name); + throw new System.InvalidOperationException(errorMessage); + } + } + + public abstract class DataSaver : DataSaver, ISaveCreator + where TSaveUnit: ISaveUnit + { + + public virtual TSaveUnit CreateSaveFrom(TInput input) + { + return (TSaveUnit)CreateSaveFrom(input as Object); + } + + public virtual IList CreateSavesFrom(IList inputs) + { + IList saves = new TSaveUnit[inputs.Count]; + + for (int i = 0; i < inputs.Count; i++) + { + var currentInput = inputs[i]; + TSaveUnit newSave = (TSaveUnit) CreateSaveFrom(currentInput); + saves[i] = newSave; + } + + return saves; + } + } +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/DataSaver.cs.meta b/Assets/Fungus/Scripts/Save/LionMane/Savers/DataSaver.cs.meta new file mode 100644 index 000000000..ec2b0fd2a --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/DataSaver.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6241d59a968cce841b41380cb78d73fd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart.meta b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart.meta new file mode 100644 index 000000000..25804b921 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 93081ddf974e33c44b6575e9c5433c90 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/BlockSaver.cs b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/BlockSaver.cs new file mode 100644 index 000000000..be0902354 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/BlockSaver.cs @@ -0,0 +1,66 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Fungus.LionManeSaveSys +{ + public class BlockSaver : DataSaver + { + [SerializeField] + [Tooltip("Transforms that have the components saving specific types of Commands")] + public List hasCommandSavers; + + protected List commandSavers = new List(); + + public virtual void Awake() + { + RegisterCommandSavers(); + } + + protected virtual void RegisterCommandSavers() + { + hasCommandSavers.RemoveAll(obj => obj == null); + foreach (var commandSaverContainer in hasCommandSavers) + { + var saversFound = commandSaverContainer.GetComponents(); + commandSavers.AddRange(saversFound); + } + } + + public override ISaveUnit CreateSaveFrom(object input) + { + if (IsValid(input)) + return CreateSaveFrom(input as Block); + else + throw new System.ArgumentException("BlockSavers can only create saves from Blocks."); + } + + protected override bool IsValid(object input) + { + return input is Block; + } + + public override BlockSaveUnit CreateSaveFrom(Block block) + { + BlockSaveUnit blockSave = BlockSaveUnit.From(block); + SaveCommandStatesFor(ref blockSave, block); + + return blockSave; + } + + protected virtual void SaveCommandStatesFor(ref BlockSaveUnit saveUnit, Block block) + { + for (int i = 0; i < commandSavers.Count; i++) + { + // We have savers create command states as appropriate from the contents of the + // passed Block + var currentSaver = commandSavers[i]; + IList commandStates = currentSaver.CreateSavesFrom(block); + saveUnit.RegisterCommandStates(commandStates); + } + } + + + + } +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/BlockSaver.cs.meta b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/BlockSaver.cs.meta new file mode 100644 index 000000000..3ab715258 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/BlockSaver.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c05cc06408240e84f85fc8d1d3ef0de7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Commands.meta b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Commands.meta new file mode 100644 index 000000000..2ed45cf08 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Commands.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6daeae7cf5c5fa743a3cc60c7ddbc90b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Commands/CommandSaver.cs b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Commands/CommandSaver.cs new file mode 100644 index 000000000..476190abc --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Commands/CommandSaver.cs @@ -0,0 +1,17 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Fungus.LionManeSaveSys +{ + // Need this so that in the inspector we can be sure that the BlockSaver is only passed savers + // that make save units for specific commands + + public abstract class CommandSaver : DataSaver, ICommandSaver + { + /// + /// Returns a list of the appropriate command save units based on the contents of the passed block. + /// + public abstract IList CreateSavesFrom(Block block); + } +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Commands/CommandSaver.cs.meta b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Commands/CommandSaver.cs.meta new file mode 100644 index 000000000..29ae355c8 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Commands/CommandSaver.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1c54cf79344932447a0fd382c1364ac7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Commands/ICommandSaver.cs b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Commands/ICommandSaver.cs new file mode 100644 index 000000000..1b9457159 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Commands/ICommandSaver.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Fungus.LionManeSaveSys +{ + public interface ICommandSaver : ISaveCreator + { + IList CreateSavesFrom(Block block); + } + + public interface ICommandSaver : ICommandSaver, ISaveCreator + where TSaveUnit: ICommandSaveUnit + { + } + + +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Commands/ICommandSaver.cs.meta b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Commands/ICommandSaver.cs.meta new file mode 100644 index 000000000..4a6b7273d --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Commands/ICommandSaver.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0b12394c7374f6c44b6b99bcf38451b4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Commands/SayCommandSaver.cs b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Commands/SayCommandSaver.cs new file mode 100644 index 000000000..c673dfb73 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Commands/SayCommandSaver.cs @@ -0,0 +1,46 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Fungus.LionManeSaveSys +{ + public class SayCommandSaver : CommandSaver, ICommandSaver + { + public override ISaveUnit CreateSaveFrom(object input) + { + if (IsValid(input)) + return CreateSaveFrom(input as Say); + else + throw new System.ArgumentException(""); + } + + protected override bool IsValid(object input) + { + return input is Say; + } + public virtual SaySaveUnit CreateSaveFrom(Say command) + { + SaySaveUnit newUnit = SaySaveUnit.From(command); + return newUnit; + } + + public override IList CreateSavesFrom(Block block) + { + IList sayCommands = block.GetCommandsOfType(); + List commandsToPass = new List(); + commandsToPass.AddRange(sayCommands); + IList results = CreateSavesFrom(commandsToPass); + + // We can't simply cast the above list for ICommandSaveUnits, so we have to do it the long way + List resultsToReturn = new List(); + foreach (var resultEl in results) + { + if (resultEl is ICommandSaveUnit) + resultsToReturn.Add(resultEl as ICommandSaveUnit); + } + + return resultsToReturn; + } + + } +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Commands/SayCommandSaver.cs.meta b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Commands/SayCommandSaver.cs.meta new file mode 100644 index 000000000..a50d50c28 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Commands/SayCommandSaver.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5ade25b7e0797074fbf2ec4a0610d531 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables.meta b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables.meta new file mode 100644 index 000000000..10006fa15 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5f24b85e124418549a8325105aa93f19 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/ColorVarSaver.cs b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/ColorVarSaver.cs new file mode 100644 index 000000000..6f0ba698a --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/ColorVarSaver.cs @@ -0,0 +1,10 @@ +namespace Fungus.LionManeSaveSys +{ + /// + /// Creates Save Units for Fungus Color variables + /// + public class ColorVarSaver : VarSaver + { + protected override ContentType SetContentAs => ContentType.jsonString; + } +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/ColorVarSaver.cs.meta b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/ColorVarSaver.cs.meta new file mode 100644 index 000000000..496d31ef7 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/ColorVarSaver.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f6563d07648e4a9418a4baa394a5006b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/PrimitiveVarSaver.cs b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/PrimitiveVarSaver.cs new file mode 100644 index 000000000..97b2d496c --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/PrimitiveVarSaver.cs @@ -0,0 +1,10 @@ +namespace Fungus.LionManeSaveSys +{ + /// + /// Created Save Units for Fungus variables that hold primitive values (bools, numerics, strings) + /// + public class PrimitiveVarSaver : VarSaver + { + protected override ContentType SetContentAs => ContentType.regularString; + } +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/PrimitiveVarSaver.cs.meta b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/PrimitiveVarSaver.cs.meta new file mode 100644 index 000000000..4a12e7965 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/PrimitiveVarSaver.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8f35c6739066c3b4990a899b557661a0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/TransformVarSaver.cs b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/TransformVarSaver.cs new file mode 100644 index 000000000..7ef231dfc --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/TransformVarSaver.cs @@ -0,0 +1,20 @@ +using UnityEngine; + +namespace Fungus.LionManeSaveSys +{ + public class TransformVarSaver : VarSaver + { + protected override ContentType SetContentAs => ContentType.jsonString; + + protected override string GetJsonStringOfValueIn(Variable input) + { + // We can't simply json-stringify a Transform and expect to be able to use the result + // to properly load the transform var, so... + Transform trans = (Transform) input.GetValue(); + TransformSaveUnit state = new TransformSaveUnit(trans); + bool weWantPrettyPrint = true; + string stringified = JsonUtility.ToJson(state, weWantPrettyPrint); + return stringified; + } + } +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/TransformVarSaver.cs.meta b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/TransformVarSaver.cs.meta new file mode 100644 index 000000000..cc29b7215 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/TransformVarSaver.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 41252e6c33387e14495b26acc70fc998 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/VarSaver.cs b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/VarSaver.cs new file mode 100644 index 000000000..b46e527cb --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/VarSaver.cs @@ -0,0 +1,89 @@ +using System.Collections.Generic; +using Object = System.Object; +using JsonUtility = UnityEngine.JsonUtility; + +namespace Fungus.LionManeSaveSys +{ + /// + /// Base class for savers that make Save Units for Fungus variables + /// + public abstract class VarSaver : DataSaver + { + // For the format of the string value stored in the VariableInfos that the save units will contain + public enum ContentType + { + regularString, jsonString + } + + protected abstract ContentType SetContentAs { get; } + + public override ISaveUnit CreateSaveFrom(Object input) + { + EnsureCorrectInput(input); + return CreateSaveFrom(input as Variable); + } + + protected virtual void EnsureCorrectInput(Object maybeAVar) + { + if (!IsValid(maybeAVar)) + { + string messageFormat = "VarSaver cannot create save unit from {0}, for it isn't a Fungus Variable or subclass thereof."; + string errorMessage = string.Format(messageFormat, maybeAVar); + throw new System.InvalidOperationException(errorMessage); + } + } + + public virtual VariableSaveUnit CreateSaveFrom(Variable input) + { + var newSaveUnit = new VariableSaveUnit(input); + SetUpContentsFor(input, ref newSaveUnit); + return newSaveUnit; + } + + protected virtual void SetUpContentsFor(Variable varInput, ref VariableSaveUnit info) + { + info.Value = GetValueInRightFormatFrom(varInput); + } + + protected virtual string GetValueInRightFormatFrom(Variable input) + { + string varValue = ""; + + if (SetContentAs == ContentType.regularString) + { + varValue = input.GetValue().ToString(); + } + else if (SetContentAs == ContentType.jsonString) + { + varValue = GetJsonStringOfValueIn(input); + } + + return varValue; + } + + protected virtual string GetJsonStringOfValueIn(Variable input) + { + bool weWantItPrettyPrinted = true; + return JsonUtility.ToJson(input.GetValue(), weWantItPrettyPrinted); + } + + protected override bool IsValid(object input) + { + return input is Variable; + } + + public virtual IList CreateSavesFrom(IList inputs) + { + IList result = new VariableSaveUnit[inputs.Count]; + + for (int i = 0; i < inputs.Count; i++) + { + Variable currentVar = inputs[i]; + VariableSaveUnit newSaveUnit = CreateSaveFrom(currentVar); + result[i] = newSaveUnit; + } + + return result; + } + } +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/VarSaver.cs.meta b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/VarSaver.cs.meta new file mode 100644 index 000000000..e8cbec328 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/VarSaver.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 788abbbaa77620749bda221bcceb6d90 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/VectorVarSaver.cs b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/VectorVarSaver.cs new file mode 100644 index 000000000..873526732 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/VectorVarSaver.cs @@ -0,0 +1,10 @@ +namespace Fungus.LionManeSaveSys +{ + public class VectorVarSaver : VarSaver + { + protected override ContentType SetContentAs + { + get { return ContentType.jsonString; } + } + } +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/VectorVarSaver.cs.meta b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/VectorVarSaver.cs.meta new file mode 100644 index 000000000..1774563c7 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/Flowchart/Variables/VectorVarSaver.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aa7017da99ca3c845b797079547e2cf0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/ISaveCreator.cs b/Assets/Fungus/Scripts/Save/LionMane/Savers/ISaveCreator.cs new file mode 100644 index 000000000..6f62ed08c --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/ISaveCreator.cs @@ -0,0 +1,26 @@ +using System.Collections.Generic; +using Object = System.Object; + +namespace Fungus.LionManeSaveSys +{ + /// + /// For classes that create save data to be stored in RAM as opposed to saves stored on disk. + /// + public interface ISaveCreator + { + ISaveUnit CreateSaveFrom(Object input); + IList CreateSavesFrom(IList inputs); + + } + + /// + /// + /// + /// Specific type of save unit + /// Input used to make unit + public interface ISaveCreator: ISaveCreator where TSaveUnit: ISaveUnit + { + TSaveUnit CreateSaveFrom(TInput input); + IList CreateSavesFrom(IList inputs); + } +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/ISaveCreator.cs.meta b/Assets/Fungus/Scripts/Save/LionMane/Savers/ISaveCreator.cs.meta new file mode 100644 index 000000000..8901e7b1a --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/ISaveCreator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0132ed0737452e6488ed2be966c61140 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/PortraitSaver.cs b/Assets/Fungus/Scripts/Save/LionMane/Savers/PortraitSaver.cs new file mode 100644 index 000000000..4d46fe0b3 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/PortraitSaver.cs @@ -0,0 +1,20 @@ +namespace Fungus.LionManeSaveSys +{ + public class PortraitSaver : DataSaver + { + public override ISaveUnit CreateSaveFrom(object input) + { + if (IsValid(input)) + return PortraitSaveUnit.From(input as Character); + else + return PortraitSaveUnit.Null; + } + + protected override bool IsValid(object input) + { + return input is Character; + } + + } + +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/Save/LionMane/Savers/PortraitSaver.cs.meta b/Assets/Fungus/Scripts/Save/LionMane/Savers/PortraitSaver.cs.meta new file mode 100644 index 000000000..8cdc500ea --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Savers/PortraitSaver.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a547ffa320bd6234cb10ecf300c21433 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/Utils.meta b/Assets/Fungus/Scripts/Save/LionMane/Utils.meta new file mode 100644 index 000000000..106ea3f8b --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Utils.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1f510f3474fb4b943838bd74f4097883 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/Utils/SavedDateTime.cs b/Assets/Fungus/Scripts/Save/LionMane/Utils/SavedDateTime.cs new file mode 100644 index 000000000..3babf2725 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Utils/SavedDateTime.cs @@ -0,0 +1,51 @@ +using UnityEngine; +using DateTime = System.DateTime; +using System.Globalization; + +namespace Fungus.LionManeSaveSys +{ + /** Provides a more convenient way to save date times in SaveUnits **/ + [System.Serializable] + public class SavedDateTime: System.IEquatable + { + public virtual DateTime DateTime + { + get { return dateTime; } + set + { + dateTime = value; + UpdateLastWrittenString(); + } + } + + protected DateTime dateTime; + + protected virtual void UpdateLastWrittenString() + { + lastWrittenString = dateTime.ToString(roundTripFormat, Culture); + } + + [SerializeField] + protected string lastWrittenString; + // ^Since we can't serialize DateTimes, we'll need this when the time comes to deserialize + + protected static string roundTripFormat = "O"; + + protected static CultureInfo Culture = CultureInfo.CurrentUICulture; + + public virtual void OnDeserialize() + { + if (string.IsNullOrEmpty(lastWrittenString)) + // Since the client may not want all save units to have any registered lastWritten dates + return; + + dateTime = DateTime.Parse(lastWrittenString, Culture); + } + + public virtual bool Equals(SavedDateTime other) + { + return this.lastWrittenString == other.lastWrittenString; + } + + } +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/Save/LionMane/Utils/SavedDateTime.cs.meta b/Assets/Fungus/Scripts/Save/LionMane/Utils/SavedDateTime.cs.meta new file mode 100644 index 000000000..c7b7aa81c --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Utils/SavedDateTime.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 19ed32366222e7444a7a6e707115b7cc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/LionMane/Utils/SavedTimeSpan.cs b/Assets/Fungus/Scripts/Save/LionMane/Utils/SavedTimeSpan.cs new file mode 100644 index 000000000..c656f8d2c --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Utils/SavedTimeSpan.cs @@ -0,0 +1,35 @@ +using UnityEngine; +using TimeSpan = System.TimeSpan; + +namespace Fungus.LionManeSaveSys +{ + [System.Serializable] + public class SavedTimeSpan + { + public virtual TimeSpan TimeSpan + { + get { return timeSpan; } + set + { + timeSpan = value; + UpdateTimeSpanString(); + } + } + protected TimeSpan timeSpan; + + protected virtual void UpdateTimeSpanString() + { + timeSpanString = timeSpan.ToString(invariant); + } + + [SerializeField] + protected string timeSpanString; + + protected static string invariant = "c"; + + public virtual void OnDeserialize() + { + timeSpan = TimeSpan.Parse(timeSpanString); + } + } +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/Save/LionMane/Utils/SavedTimeSpan.cs.meta b/Assets/Fungus/Scripts/Save/LionMane/Utils/SavedTimeSpan.cs.meta new file mode 100644 index 000000000..60c4f2610 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/LionMane/Utils/SavedTimeSpan.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 884efee5599859b4499fc29cfef20a79 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/SaveController.cs b/Assets/Fungus/Scripts/Save/SaveController.cs index 8e9a23268..9a4307caf 100644 --- a/Assets/Fungus/Scripts/Save/SaveController.cs +++ b/Assets/Fungus/Scripts/Save/SaveController.cs @@ -190,7 +190,7 @@ public void SetSelectedSlot(SaveSlotController saveSlotController) if (saveButton != null) { saveButton.interactable = saveMenuActive && selectedSaveSlot != null && selectedSaveSlot.LinkedMeta != null && - selectedSaveSlot.LinkedMeta.saveName.StartsWith(FungusConstants.SlotSavePrefix) && saveManager.IsSavingAllowed; + selectedSaveSlot.LinkedMeta.saveName.StartsWith(SaveSysConstants.SlotSavePrefix) && saveManager.IsSavingAllowed; } } @@ -275,7 +275,7 @@ public virtual void SaveOver() if (selectedSaveSlot != null) { if (selectedSaveSlot.LinkedMeta != null && - selectedSaveSlot.LinkedMeta.saveName.StartsWith(FungusConstants.SlotSavePrefix)) + selectedSaveSlot.LinkedMeta.saveName.StartsWith(SaveSysConstants.SlotSavePrefix)) { saveManager.ReplaceSave(selectedSaveSlot.LinkedMeta, AutoSave.TimeStampDesc); PlayClickSound(); diff --git a/Assets/Fungus/Scripts/Save/SaveData.cs b/Assets/Fungus/Scripts/Save/SaveData.cs index f5bea7834..3359af75f 100644 --- a/Assets/Fungus/Scripts/Save/SaveData.cs +++ b/Assets/Fungus/Scripts/Save/SaveData.cs @@ -10,7 +10,7 @@ namespace Fungus [System.Serializable] public class SaveData { - public int version = FungusConstants.CurrentSaveGameDataVersion; + public int version = SaveSysConstants.CurrentSaveGameDataVersion; public string saveName; public StringPairList saveDataItems; public StringPairList stringPairs; diff --git a/Assets/Fungus/Scripts/Save/SaveDataTypes.meta b/Assets/Fungus/Scripts/Save/SaveDataTypes.meta new file mode 100644 index 000000000..cec28d743 --- /dev/null +++ b/Assets/Fungus/Scripts/Save/SaveDataTypes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: aa973e987dc281e4b9b670e021fadfec +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/SaveFileManager.cs b/Assets/Fungus/Scripts/Save/SaveFileManager.cs index 5a7faa982..7ad8e9e75 100644 --- a/Assets/Fungus/Scripts/Save/SaveFileManager.cs +++ b/Assets/Fungus/Scripts/Save/SaveFileManager.cs @@ -97,7 +97,7 @@ public bool LoadSavePoint(SaveData savePointData) if (savePointData == null) return false; - var sceneName = savePointData.stringPairs.GetOrDefault(FungusConstants.SceneNameKey); + var sceneName = savePointData.stringPairs.GetOrDefault(SaveSysConstants.SceneNameKey); if (string.IsNullOrEmpty(sceneName)) return false; @@ -167,7 +167,7 @@ public void Save(string saveName, string savePointDescription, string prefix) var saveData = CurrentSaveHandler.CreateSaveData(saveName, savePointDescription); - saveData.stringPairs.Add(FungusConstants.SceneNameKey, SceneManager.GetActiveScene().name); + saveData.stringPairs.Add(SaveSysConstants.SceneNameKey, SceneManager.GetActiveScene().name); var savePointDataJSON = CurrentSaveHandler.EncodeToJSON(saveData); @@ -203,7 +203,7 @@ private void GenerateMetaFromSave(string fileLoc, SaveData save) { fileLocation = fileLoc, saveName = save.saveName, - description = save.stringPairs.GetOrDefault(FungusConstants.SaveDescKey), + description = save.stringPairs.GetOrDefault(SaveSysConstants.SaveDescKey), lastWritten = save.LastWritten, }); } diff --git a/Assets/Fungus/Scripts/Save/SaveHandlerUtils.cs b/Assets/Fungus/Scripts/Save/SaveHandlerUtils.cs index cc70e4fb7..dfcb1f97e 100644 --- a/Assets/Fungus/Scripts/Save/SaveHandlerUtils.cs +++ b/Assets/Fungus/Scripts/Save/SaveHandlerUtils.cs @@ -6,13 +6,13 @@ namespace Fungus { - //Our current version of c# in unity doesn't yet support default methods in interfaces so we use helpers + // Our current version of c# in unity doesn't yet support default methods in interfaces so we use helpers public static class SaveHandlerUtils { public static SaveData CreateSaveData(ISaveHandler saveHandler, string saveName, string saveDesc, int version) { var sd = new SaveData(saveName, - new StringPair() { key = FungusConstants.SaveDescKey, val = saveDesc }) + new StringPair() { key = SaveSysConstants.SaveDescKey, val = saveDesc }) { version = version }; diff --git a/Assets/Fungus/Scripts/Save/SaveSlotController.cs b/Assets/Fungus/Scripts/Save/SaveSlotController.cs index d054c2412..843ecec09 100644 --- a/Assets/Fungus/Scripts/Save/SaveSlotController.cs +++ b/Assets/Fungus/Scripts/Save/SaveSlotController.cs @@ -13,14 +13,6 @@ namespace Fungus [RequireComponent(typeof(RectTransform))] public class SaveSlotController : MonoBehaviour, ISelectHandler { - [Tooltip("Displays the number for this slot.")] - [SerializeField] protected Text nameText = null; - - [Tooltip("Displays the description for this slot.")] - [SerializeField] protected Text descText = null; - - [Tooltip("To display time save was created at.")] - [SerializeField] protected Text timeStampText = null; [SerializeField] protected Button ourButton; public virtual Button OurButton { get { return ourButton; } } @@ -44,7 +36,8 @@ private void Start() if (saveCont == null) { - Debug.LogError("SaveSlot clicked without a SaveController, not allowed"); + // The line below is a bit misleading; it doesn't execute based on clicking + //Debug.LogError("SaveSlot clicked without a SaveController, not allowed"); } } @@ -67,12 +60,13 @@ public void OnSelect(BaseEventData eventData) saveCont.SetSelectedSlot(this); } - protected virtual void UpdateViews() + public virtual void RefreshDisplay() { - //nameText.text = ourMeta.saveName; - //descText.text = ourMeta.description; - //timeStampText.text = ourMeta.GetReadableTime(); + UpdateViews(); + } + protected virtual void UpdateViews() + { // Pass the metadata to the views, so they can do their thing with it. slotViews = GetComponentsInChildren(); for (int i = 0; i < slotViews.Length; i++) @@ -82,9 +76,20 @@ protected virtual void UpdateViews() } } - public virtual void RefreshDisplay() + /// + /// Returns a view object of the specified type registered under this controller. Returns null + /// if no such object exists. + /// + /// + public virtual T GetView() where T: class, ISaveSlotView { - UpdateViews(); + foreach (var view in slotViews) + { + if (view is T) + return view as T; + } + + return null; } } } diff --git a/Assets/Fungus/Scripts/Save/SaveSysConstants.cs b/Assets/Fungus/Scripts/Save/SaveSysConstants.cs new file mode 100644 index 000000000..be08c0fba --- /dev/null +++ b/Assets/Fungus/Scripts/Save/SaveSysConstants.cs @@ -0,0 +1,16 @@ +using UnityEngine; + +namespace Fungus +{ + public static class SaveSysConstants + { + public static string SceneNameKey { get { return "SceneName"; } } + public static string SaveDescKey { get { return "SaveDesc"; } } + public static string SlotSavePrefix { get { return "Save"; } } + public static string AutoSavePrefix { get { return "AutoSave"; } } + + public static int CurrentSaveGameDataVersion { get { return 1; } } + public static int CurrentProfileDataVersion { get { return 1; } } + public static string StorageDirectory { get { return Application.dataPath; } } + } +} \ No newline at end of file diff --git a/Assets/Fungus/Scripts/Save/SaveSysConstants.cs.meta b/Assets/Fungus/Scripts/Save/SaveSysConstants.cs.meta new file mode 100644 index 000000000..606b42ecd --- /dev/null +++ b/Assets/Fungus/Scripts/Save/SaveSysConstants.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4da3ad17ad38e2c428249affcdd4d69e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fungus/Scripts/Save/Serializers/FungusMusicSaveDataItemSerializer.cs b/Assets/Fungus/Scripts/Save/Serializers/FungusMusicSaveDataItemSerializer.cs index 41ad1317c..1434eee20 100644 --- a/Assets/Fungus/Scripts/Save/Serializers/FungusMusicSaveDataItemSerializer.cs +++ b/Assets/Fungus/Scripts/Save/Serializers/FungusMusicSaveDataItemSerializer.cs @@ -78,6 +78,7 @@ public bool Decode(StringPair sdi) possibleAmbientAudioClips.FirstOrDefault(x => x.name == data.amb.clipName), data.amb.loop, data.amb.vol); + return true; } diff --git a/Assets/Fungus/Scripts/Save/StringPairList.cs b/Assets/Fungus/Scripts/Save/StringPairList.cs index e666b4f5d..0adf25646 100644 --- a/Assets/Fungus/Scripts/Save/StringPairList.cs +++ b/Assets/Fungus/Scripts/Save/StringPairList.cs @@ -65,6 +65,9 @@ public void Add(StringPair sp) stringPairs.Add(sp); } + /// + /// Removes duplicates from this list. + /// public void MakeUnique() { stringPairs = stringPairs.Distinct().ToList(); diff --git a/Assets/Fungus/Scripts/Save/UserProfileManager.cs b/Assets/Fungus/Scripts/Save/UserProfileManager.cs index f0c3ebe93..616cda3b6 100644 --- a/Assets/Fungus/Scripts/Save/UserProfileManager.cs +++ b/Assets/Fungus/Scripts/Save/UserProfileManager.cs @@ -60,7 +60,7 @@ public void ChangeProfile(string saveProfileKey) public string GetCurrentUserProfileDirectory() { - return Path.GetFullPath(FungusConstants.StorageDirectory + CurrentUserProfileName + "/"); + return Path.GetFullPath(SaveSysConstants.StorageDirectory + CurrentUserProfileName + "/"); } public string GetCurrentUserProfileFileName() @@ -115,7 +115,7 @@ public void SaveProfileData() private string GetLastUserFile() { - return Path.GetFullPath(FungusConstants.StorageDirectory + LastUserDataFileName); + return Path.GetFullPath(SaveSysConstants.StorageDirectory + LastUserDataFileName); } [System.Serializable] diff --git a/Assets/Fungus/Scripts/Save/Views/SaveDateView.cs b/Assets/Fungus/Scripts/Save/Views/SaveDateView.cs index 8745e3247..a47c08a0b 100644 --- a/Assets/Fungus/Scripts/Save/Views/SaveDateView.cs +++ b/Assets/Fungus/Scripts/Save/Views/SaveDateView.cs @@ -13,21 +13,25 @@ namespace Fungus /// public class SaveDateView : SlotTextView { - public virtual string StandardFormat + /// + /// The format this view is supposed to display the date in. The valid ones are those + /// officially recognized and documented by Microsoft. + /// + public virtual string Format { - get { return standardFormat; } + get { return format; } set { if (string.IsNullOrEmpty(value)) NullOrEmptyFormatAlert(); else - standardFormat = value; + format = value; } } [SerializeField] - [Tooltip("The standard format this will display the date in. The default is G.")] - private string standardFormat = "G"; + [Tooltip("The format this will display the date in. The default is G.")] + private string format = "G"; // See here for examples: https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings @@ -49,7 +53,7 @@ protected virtual void UpdateReadableDate() if (this.HasValidDate) { date = SaveData.lastWritten; - readableDate = date.ToString(StandardFormat, localCulture); + readableDate = date.ToString(Format, localCulture); } else { @@ -62,6 +66,7 @@ protected virtual bool HasValidDate get { return this.HasSaveData && SaveData.lastWritten != default(DateTime); } } + public virtual DateTime Date { get { return date; } protected set { date = value; } } protected DateTime date; protected string readableDate = ""; protected CultureInfo localCulture = CultureInfo.CurrentUICulture; diff --git a/Assets/Fungus/Scripts/Save/Views/SaveSlotNumberView.cs b/Assets/Fungus/Scripts/Save/Views/SaveSlotNumberView.cs index 898b984cd..3ec8f535f 100644 --- a/Assets/Fungus/Scripts/Save/Views/SaveSlotNumberView.cs +++ b/Assets/Fungus/Scripts/Save/Views/SaveSlotNumberView.cs @@ -10,9 +10,13 @@ namespace Fungus /// public class SaveSlotNumberView : SlotTextView { + public virtual string Prefix { get { return prefix; } } + [Tooltip("This is shown right before the slot number.")] [SerializeField] protected string prefix = "Save #"; + public virtual string Postfix { get { return postfix; } } + [Tooltip("This is shown right after the slot number.")] [SerializeField] protected string postfix = ""; @@ -30,10 +34,11 @@ protected virtual void SetStringToDisplay() { // This doesn't really need to know anything about the save data tied to the slot; // it gets the number based on where it is in the holder. - int slotNumber = controller.transform.GetSiblingIndex(); - toDisplay = string.Concat("", prefix, slotNumber, postfix); + toDisplay = string.Concat("", prefix, SlotNumber, postfix); } + public virtual int SlotNumber { get { return controller.transform.GetSiblingIndex(); } } + protected string toDisplay = ""; } } diff --git a/Assets/Fungus/Scripts/Save/Views/SlotTextView.cs b/Assets/Fungus/Scripts/Save/Views/SlotTextView.cs index ed519f91a..5a465c584 100644 --- a/Assets/Fungus/Scripts/Save/Views/SlotTextView.cs +++ b/Assets/Fungus/Scripts/Save/Views/SlotTextView.cs @@ -13,6 +13,12 @@ public abstract class SlotTextView : SaveSlotView { [SerializeField] protected Text textField = null; + public virtual string Text + { + get { return textField.text; } + set { textField.text = value; } + } + public override void Refresh() { UpdateText(); diff --git a/Assets/Fungus/Scripts/Utils/FungusConstants.cs b/Assets/Fungus/Scripts/Utils/FungusConstants.cs index 980b3b18f..22c51db00 100644 --- a/Assets/Fungus/Scripts/Utils/FungusConstants.cs +++ b/Assets/Fungus/Scripts/Utils/FungusConstants.cs @@ -59,31 +59,5 @@ public static class FungusConstants #else "Prefabs/EventSystem"; #endif - - /// - /// The prefix for auto saves - /// - public const string AutoSavePrefix = "autosave_"; - - /// - /// The prefix for auto saves - /// - public const string SlotSavePrefix = "slot_"; - - /// - /// Current version of the save system - /// - public const int CurrentSaveGameDataVersion = 2; - - /// - /// Current version of the save system - /// - public const int CurrentProfileDataVersion = 1; - - public const string SaveDescKey = "SaveDesc"; - - public const string SceneNameKey = "SceneName"; - - public static string StorageDirectory { get; private set; } = Application.persistentDataPath + "/Fungus/"; } } diff --git a/Assets/Tests/PlayMode/SaveSlotControllerTests.cs b/Assets/Tests/PlayMode/SaveSlotControllerTests.cs new file mode 100644 index 000000000..3b5800736 --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSlotControllerTests.cs @@ -0,0 +1,175 @@ +using System.Collections; +using System.Collections.Generic; +using NUnit.Framework; +using UnityEngine; +using UnityEngine.TestTools; +using Fungus; +using DateTime = System.DateTime; +using CultureInfo = System.Globalization.CultureInfo; + +namespace Tests +{ + public class SaveSlotControllerTests + { + protected string pathToScene = "Prefabs/SaveSlotControllerTests"; + protected GameObject scenePrefab; + protected GameObject sceneObj; + + [SetUp] + public void Setup() + { + scenePrefab = Resources.Load(pathToScene); + sceneObj = Object.Instantiate(scenePrefab); + slots = new List(GameObject.FindObjectsOfType()); + slots.Sort(SortSlotsAscending); + AssignMetasToSlots(); + } + + protected List slots; + + protected int SortSlotsAscending(SaveSlotController firstSlot, SaveSlotController secondSlot) + { + var firstSlotNum = firstSlot.transform.GetSiblingIndex(); + var secondSlotNum = secondSlot.transform.GetSiblingIndex(); + + if (firstSlotNum > secondSlotNum) + return 1; + else if (firstSlotNum < secondSlotNum) + return -1; + else + return 0; + } + + protected void AssignMetasToSlots() + { + for (int i = 0; i < slots.Count; i++) + { + var currentSlot = slots[i]; + var currentMeta = metasToAssign[i]; + currentSlot.LinkedMeta = currentMeta; + } + } + + protected SaveGameMetaData[] metasToAssign = new SaveGameMetaData[] + { + new SaveGameMetaData + { + description = "First desc", + lastWritten = DateTime.Parse("1/2/2010 4:36:12 PM"), + }, + + new SaveGameMetaData + { + description = "Second desc", + lastWritten = DateTime.Parse("2/4/2015 12:34:45 PM"), + }, + + new SaveGameMetaData + { + description = "Third desc's the charm", + lastWritten = DateTime.Parse("5/12/2018 7:30:21 AM"), + }, + }; + + [TearDown] + public void TearDown() + { + Object.DestroyImmediate(sceneObj.gameObject); + } + + [Test] + public void NumberViewsRegistered() + { + // We want to be sure that the slots have views for the slot number, description and date + foreach (var slotEl in slots) + { + var numberView = slotEl.GetView(); + Assert.NotNull(numberView); + } + + } + + [Test] + public void DescViewsRegistered() + { + // We want to be sure that the slots have views for the slot number, description and date + foreach (var slotEl in slots) + { + var descView = slotEl.GetView(); + Assert.NotNull(descView); + } + + } + + [Test] + public void DateViewsRegistered() + { + // We want to be sure that the slots have views for the slot number, description and date + foreach (var slotEl in slots) + { + var dateView = slotEl.GetView(); + Assert.NotNull(dateView); + } + + } + + [Test] + public void CorrectNumbersDisplayed() + { + for (int i = 0; i < slots.Count; i++) + { + var currentSlot = slots[i]; + + var displayerComponent = currentSlot.GetComponentInChildren(); + var slotNumber = displayerComponent.SlotNumber; + + var expected = displayerComponent.Prefix + slotNumber + displayerComponent.Postfix; + var textDisplayed = displayerComponent.Text; + var displaysCorrectNumber = textDisplayed == expected; + + Assert.IsTrue(displaysCorrectNumber); + } + } + + [Test] + public void CorrectDescsDisplayed() + { + for (int i = 0; i < slots.Count; i++) + { + var currentSlot = slots[i]; + var currentMeta = metasToAssign[i]; + + var displayerComponent = currentSlot.GetComponentInChildren(); + + var expected = currentMeta.description; + var textDisplayed = displayerComponent.Text; + var displaysCorrectNumber = textDisplayed == expected; + + Assert.IsTrue(displaysCorrectNumber); + } + } + + [Test] + public void CorrectDatesDisplayed() + { + for (int i = 0; i < slots.Count; i++) + { + var currentSlot = slots[i]; + var currentMeta = metasToAssign[i]; + + var displayerComponent = currentSlot.GetComponentInChildren(); + + // We want to be sure that the text is being displayed in the format specified by the view + var dateFormat = displayerComponent.Format; + + var expected = currentMeta.lastWritten.ToString(dateFormat, localCulture); + var textDisplayed = displayerComponent.Text; + var displaysCorrectDate = textDisplayed == expected; + + Assert.IsTrue(displaysCorrectDate); + } + } + + protected CultureInfo localCulture = CultureInfo.CurrentUICulture; + } +} diff --git a/Assets/Tests/PlayMode/SaveSlotControllerTests.cs.meta b/Assets/Tests/PlayMode/SaveSlotControllerTests.cs.meta new file mode 100644 index 000000000..bd9b4cc52 --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSlotControllerTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 968027380317e5347afc6ac6c2e3633e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/PlayMode/SaveSystem.meta b/Assets/Tests/PlayMode/SaveSystem.meta new file mode 100644 index 000000000..769e0dac0 --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1e7a6a84e6eb0cc4a9a5a5a65d72869a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/PlayMode/SaveSystem/Flowchart.meta b/Assets/Tests/PlayMode/SaveSystem/Flowchart.meta new file mode 100644 index 000000000..fd28fda02 --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/Flowchart.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4fb771978218b124d9cf249f146d196b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/PlayMode/SaveSystem/Flowchart/FlowchartBlockSavingTests.cs b/Assets/Tests/PlayMode/SaveSystem/Flowchart/FlowchartBlockSavingTests.cs new file mode 100644 index 000000000..d7ce96644 --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/Flowchart/FlowchartBlockSavingTests.cs @@ -0,0 +1,203 @@ +using System.Collections; +using System.Collections.Generic; +using NUnit.Framework; +using UnityEngine; +using UnityEngine.TestTools; +using Fungus.LionManeSaveSys; +using Fungus; + +namespace SaveSystemTests +{ + public class FlowchartBlockSavingTests : SaveSysPlayModeTest + { + protected override string PathToScene => "Prefabs/FlowchartSavingTests"; + + public override void SetUp() + { + base.SetUp(); + blockSaver = GameObject.FindObjectOfType(); + FindBlockToSave(); + SetUpExpectedFields(); + } + + protected virtual void FindBlockToSave() + { + var allBlocks = GameObject.FindObjectsOfType(); + foreach (var blockFound in allBlocks) + { + if (blockFound.BlockName == nameOfBlockToSave) + { + blockToSave = blockFound; + break; + } + } + } + + protected BlockSaver blockSaver; + protected string nameOfBlockToSave = "Dialogue"; + protected Block blockToSave; + + protected virtual void SetUpExpectedFields() + { + expectedBlockItemId = blockToSave.ItemId; + } + + protected int dialogueBlockIndex = 3, menuBlockIndex = 2, expectedBlockItemId; + protected int[] expectedSayIndexes = new int[] // within the Dialogue block + { + 3, 4 + }; + + [UnityTest] + public virtual IEnumerator CommandIndexesSaved() + { + yield return PostSetUp(); + + List sayCommands = new List(blockToSave.GetComponents()); + sayCommands.Sort(SortByIndex); + + IList commandIndexesFound = GetSayCommandIndexesOf(blockState); + + bool savedCorrectly = SameIntsInSameOrder(commandIndexesFound, expectedSayIndexes); + Assert.IsTrue(savedCorrectly); + } + + protected virtual IList GetSayCommandIndexesOf(BlockSaveUnit blockState) + { + List indexes = new List(); + + foreach (var commandState in blockState.Commands) + { + if (commandState.TypeName == "SayCommand") + indexes.Add(commandState.Index); + } + + return indexes; + } + + protected virtual int SortByIndex(Say firstSay, Say secondSay) + { + if (firstSay.CommandIndex > secondSay.CommandIndex) + return 1; + else + return -1; + } + + protected virtual IList CommandIndexesOf(IList sayCommands) + { + int[] indexes = new int[sayCommands.Count]; + + for (int i = 0; i < sayCommands.Count; i++) + { + Say currentCommand = sayCommands[i]; + indexes[i] = currentCommand.CommandIndex; + } + + return indexes; + } + + protected virtual bool SameIntsInSameOrder(IList firstArr, IList secondArr) + { + if (firstArr.Count != secondArr.Count) + return false; + + for (int i = 0; i < firstArr.Count; i++) + { + int firstNum = firstArr[i]; + int secondNum = secondArr[i]; + if (firstNum != secondNum) + return false; + } + + return true; + } + + protected virtual IEnumerator PostSetUp() + { + yield return new WaitForSeconds(1f); + blockToSave.SetExecutionCount(expectedExecutionCount); + SaveTheTestBlock(); + + } + + int expectedExecutionCount = 8192; + + protected virtual void SaveTheTestBlock() + { + blockState = blockSaver.CreateSaveFrom(blockToSave); + } + + protected BlockSaveUnit blockState; + + [UnityTest] + public virtual IEnumerator ExecutionCountSaved() + { + yield return PostSetUp(); + + bool savedCorrectly = blockState.ExecutionCount == expectedExecutionCount; + Assert.IsTrue(savedCorrectly); + } + + [UnityTest] + public virtual IEnumerator ItemIDsSaved() + { + yield return PostSetUp(); + + bool savedCorrectly = blockState.ItemId == expectedBlockItemId; + Assert.IsTrue(savedCorrectly); + } + + [UnityTest] + public virtual IEnumerator BlockExecutionCountsSaved() + { + yield return PostSetUp(); + + var allBlocks = GameObject.FindObjectsOfType(); + + foreach (var block in allBlocks) + { + block.SetExecutionCount(2); + } + + List blocks = new List(GameObject.FindObjectsOfType()); + blocks.Sort((firstBlock, secondBlock) => firstBlock.BlockName.CompareTo(secondBlock.BlockName)); + IList blockStates = BlockSaveUnit.From(blocks); + + int[] expectedBlockExecutionCounts = new int[blockStates.Count]; + for (int i = 0; i < expectedBlockExecutionCounts.Length; i++) + { + expectedBlockExecutionCounts[i] = 2; + } + + int[] executionCounts = new int[blockStates.Count]; + + for (int i = 0; i < blockStates.Count; i++) + { + var currentState = blockStates[i]; + executionCounts[i] = currentState.ExecutionCount; + } + + bool savedCorrectly = ExactSameNums(executionCounts, expectedBlockExecutionCounts); + Assert.IsTrue(savedCorrectly); + } + + protected virtual bool ExactSameNums(IList firstList, IList secondList) + { + bool differentSizes = firstList.Count != secondList.Count; + if (differentSizes) + return false; + + for (int i = 0; i < firstList.Count; i++) + { + var firstElem = firstList[i]; + var secondElem = secondList[i]; + + if (firstElem != secondElem) + return false; + } + + return true; + } + + } +} diff --git a/Assets/Tests/PlayMode/SaveSystem/Flowchart/FlowchartBlockSavingTests.cs.meta b/Assets/Tests/PlayMode/SaveSystem/Flowchart/FlowchartBlockSavingTests.cs.meta new file mode 100644 index 000000000..a3dd5b558 --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/Flowchart/FlowchartBlockSavingTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ad76f08f00a276d43be2700c7e85b4c8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/PlayMode/SaveSystem/Flowchart/FlowchartCommandSavingTests.cs b/Assets/Tests/PlayMode/SaveSystem/Flowchart/FlowchartCommandSavingTests.cs new file mode 100644 index 000000000..2b12121bc --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/Flowchart/FlowchartCommandSavingTests.cs @@ -0,0 +1,117 @@ +using System.Collections; +using System.Collections.Generic; +using NUnit.Framework; +using UnityEngine; +using UnityEngine.TestTools; +using Fungus.LionManeSaveSys; +using Fungus; + +namespace SaveSystemTests +{ + public class FlowchartCommandSavingTests : SaveSysPlayModeTest + { + protected override string PathToScene => "Prefabs/FlowchartSavingTests"; + + public override void SetUp() + { + base.SetUp(); + } + + [UnityTest] + public virtual IEnumerator SayExecutionCountSaved() + { + yield return SetUpForEachTest(); + + // For some reason, Say Commands don't execute properly in unit-testing environments, so we + // have to update the execution counts manually here instead of executing the Blocks + // said Say Commands are in... + var allSayCommands = GameObject.FindObjectsOfType(); + + foreach (var sayCommand in allSayCommands) + { + sayCommand.ExecutionCount = 1; + } + + PrepareSayStates(); // Since we need said states updated + + // See if the execution count is as expected + int[] executionCounts = new int[sayStates.Count]; + + for (int i = 0; i < sayStates.Count; i++) + { + var currentState = sayStates[i]; + executionCounts[i] = currentState.ExecutionCount; + } + + bool savedCorrectly = ExactSameNums(executionCounts, expectedSayExecutionCount); + Assert.IsTrue(savedCorrectly); + } + + protected virtual IEnumerator SetUpForEachTest() + { + // Try saving the states of the commands involved in this suite; they will have + // their fields checked to see if they were saved correctly or not + yield return new WaitForSeconds(0.1f); + PrepareSayStates(); + PrepareBlockStates(); + + SetUpExpectedFields(); + } + + protected virtual void PrepareSayStates() + { + List sayCommands = new List(GameObject.FindObjectsOfType()); + sayCommands.Sort((firstSay, secondSay) => firstSay.CommandIndex.CompareTo(secondSay.CommandIndex)); + sayStates = SaySaveUnit.From(sayCommands); + } + + protected IList sayStates; + + protected virtual void PrepareBlockStates() + { + List blocks = new List(GameObject.FindObjectsOfType()); + blocks.Sort((firstBlock, secondBlock) => firstBlock.BlockName.CompareTo(secondBlock.BlockName)); + blockStates = BlockSaveUnit.From(blocks); + } + + protected IList blockStates; + + protected virtual void SetUpExpectedFields() + { + expectedSayExecutionCount = new int[sayStates.Count]; + + for (int i = 0; i < sayStates.Count; i++) + { + expectedSayExecutionCount[i] = 1; // Each Say should be executed just once + } + + expectedBlockExecutionCount = new int[blockStates.Count]; + + for (int i = 0; i < blockStates.Count; i++) + { + expectedBlockExecutionCount[i] = 2; + } + } + + protected int[] expectedSayExecutionCount, expectedBlockExecutionCount; + + protected virtual bool ExactSameNums(IList firstList, IList secondList) + { + bool differentSizes = firstList.Count != secondList.Count; + if (differentSizes) + return false; + + for (int i = 0; i < firstList.Count; i++) + { + var firstElem = firstList[i]; + var secondElem = secondList[i]; + + if (firstElem != secondElem) + return false; + } + + return true; + } + + } +} diff --git a/Assets/Tests/PlayMode/SaveSystem/Flowchart/FlowchartCommandSavingTests.cs.meta b/Assets/Tests/PlayMode/SaveSystem/Flowchart/FlowchartCommandSavingTests.cs.meta new file mode 100644 index 000000000..6a9f998ac --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/Flowchart/FlowchartCommandSavingTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 22ded0e9f4dc7b04fa8b0e092113db9a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars.meta b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars.meta new file mode 100644 index 000000000..e79a505a0 --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d365d77cdbe252440ae4fe271206adb8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartColorVarSavingTests.cs b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartColorVarSavingTests.cs new file mode 100644 index 000000000..4d552c362 --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartColorVarSavingTests.cs @@ -0,0 +1,10 @@ +using Fungus.LionManeSaveSys; + +namespace SaveSystemTests +{ + public class FlowchartColorVarSavingTests : FlowchartVarSavingTests + { + protected override string VariableHolderName => "ColorFlowchart"; + protected override VarSaver.ContentType SaveContentAs => VarSaver.ContentType.jsonString; + } +} diff --git a/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartColorVarSavingTests.cs.meta b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartColorVarSavingTests.cs.meta new file mode 100644 index 000000000..426c473d8 --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartColorVarSavingTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: de93d4282af862c419a7a6cf08d4b578 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartNumVarSavingTests.cs b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartNumVarSavingTests.cs new file mode 100644 index 000000000..186ee0216 --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartNumVarSavingTests.cs @@ -0,0 +1,12 @@ +using Fungus.LionManeSaveSys; + +namespace SaveSystemTests +{ + public class FlowchartNumVarSavingTests : FlowchartVarSavingTests + { + protected override string VariableHolderName => "NumericFlowchart"; + protected override VarSaver.ContentType SaveContentAs => VarSaver.ContentType.regularString; + + } + +} diff --git a/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartNumVarSavingTests.cs.meta b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartNumVarSavingTests.cs.meta new file mode 100644 index 000000000..b7e688082 --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartNumVarSavingTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d630f6ea68be60c46a43644ea622d57c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartStringVarSavingTests.cs b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartStringVarSavingTests.cs new file mode 100644 index 000000000..386506f80 --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartStringVarSavingTests.cs @@ -0,0 +1,11 @@ +using Fungus.LionManeSaveSys; + +namespace SaveSystemTests +{ + public class FlowchartStringVarSavingTests : FlowchartVarSavingTests + { + protected override string VariableHolderName => "StringFlowchart"; + protected override VarSaver.ContentType SaveContentAs => VarSaver.ContentType.regularString; + + } +} diff --git a/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartStringVarSavingTests.cs.meta b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartStringVarSavingTests.cs.meta new file mode 100644 index 000000000..0e032fbd1 --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartStringVarSavingTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 547c78e94c215484e822e2950c86cb94 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartTransformVarSavingTests.cs b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartTransformVarSavingTests.cs new file mode 100644 index 000000000..9472e55c6 --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartTransformVarSavingTests.cs @@ -0,0 +1,33 @@ +using UnityEngine; +using Fungus.LionManeSaveSys; + +namespace SaveSystemTests +{ + public class FlowchartTransformVarSavingTests : FlowchartVarSavingTests + { + protected override string VariableHolderName => "TransformFlowchart"; + protected override VarSaver.ContentType SaveContentAs + { + get { return VarSaver.ContentType.jsonString; } + } + + protected override void PrepareExpectedResults() + { + // Need to save the results as a special type, since simply json-stringifying a Transform won't quite work + ExpectedResults.Clear(); + + for (int i = 0; i < variablesToEncode.Count; i++) + { + var toEncode = variablesToEncode[i]; + Transform transformVal = (Transform) toEncode.GetValue(); + TransformSaveUnit state = new TransformSaveUnit(transformVal); + var weWantPrettyPrint = true; + var result = JsonUtility.ToJson(state, weWantPrettyPrint); + + ExpectedResults.Add(result); + } + } + + } +} + diff --git a/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartTransformVarSavingTests.cs.meta b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartTransformVarSavingTests.cs.meta new file mode 100644 index 000000000..669908184 --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartTransformVarSavingTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 12400a2255080e8408c1f36c2883d1de +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartVarSavingTests.cs b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartVarSavingTests.cs new file mode 100644 index 000000000..19ccf05cf --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartVarSavingTests.cs @@ -0,0 +1,140 @@ +using System.Collections.Generic; +using NUnit.Framework; +using UnityEngine; +using Fungus; +using Fungus.LionManeSaveSys; + +namespace SaveSystemTests +{ + public abstract class FlowchartVarSavingTests: SaveSysPlayModeTest where TSaver: VarSaver + { + protected abstract VarSaver.ContentType SaveContentAs { get; } + protected override string PathToScene => "Prefabs/FlowchartSavingTests"; + + #region Prep work + + public override void SetUp() + { + base.SetUp(); + allFlowcharts = GameObject.FindObjectsOfType(); + variablesToEncode = GetVarsOfFlowchartNamed(VariableHolderName); + GetSaverNeeded(); + PrepareExpectedResults(); + } + + protected Flowchart[] allFlowcharts; + protected IList variablesToEncode; + + protected virtual IList GetVarsOfFlowchartNamed(string name) + { + GameObject flowchartGO = GameObject.Find(name); + Flowchart flowchart = flowchartGO.GetComponent(); + return flowchart.Variables; + } + + protected abstract string VariableHolderName { get; } + + protected virtual void GetSaverNeeded() + { + GetEncoderHolder(); + varSaver = hasEncoders.GetComponent(); + } + + protected virtual void GetEncoderHolder() + { + hasEncoders = GameObject.Find(encoderContainerGOName); + } + + protected GameObject hasEncoders; + protected string encoderContainerGOName = "FlowchartEncoders"; + protected TSaver varSaver; + + protected virtual void PrepareExpectedResults() + { + ExpectedResults.Clear(); + + foreach (var varEl in variablesToEncode) + { + var varAsString = ""; + object varValue = varEl.GetValue(); + bool weWantPrettyPrint = true; // For debugging + + if (SaveContentAs == VarSaver.ContentType.regularString) + varAsString = varValue.ToString(); + else if (SaveContentAs == VarSaver.ContentType.jsonString) + varAsString = JsonUtility.ToJson(varValue, weWantPrettyPrint); + + ExpectedResults.Add(varAsString); + } + } + + protected IList ExpectedResults { get; } = new List(); + + + #endregion + + #region Tests + + [Test] + public virtual void EncodeVars_PassingSingles() + { + encodingResults = VarsEncodedWithMultipleEncodeCalls(); + + AssertEncodingSuccess(); + } + + protected IList encodingResults; + + protected virtual IList VarsEncodedWithMultipleEncodeCalls() + { + IList savedVars = new List(); + + foreach (var varEl in variablesToEncode) + { + var result = varSaver.CreateSaveFrom(varEl); + savedVars.Add(result); + } + + return savedVars; + } + + protected virtual void AssertEncodingSuccess() + { + IList whatWeGot = GetValuesIn(encodingResults); + bool success = ExpectedResults.HasSameContentsInOrderAs(whatWeGot); + Assert.IsTrue(success); + } + + protected virtual IList GetValuesIn(IList saveUnits) + { + IList results = new string[saveUnits.Count]; + + for (int i = 0; i < saveUnits.Count; i++) + { + VariableSaveUnit currentUnit = saveUnits[i]; + var unitValue = currentUnit.Value; + results[i] = unitValue; + } + + return results; + } + + + [Test] + public virtual void EncodeVars_PassingIList() + { + encodingResults = VarsEncodedWithOneEncodeCall(); + + AssertEncodingSuccess(); + } + + protected virtual IList VarsEncodedWithOneEncodeCall() + { + // One that involves passing multiple vars at once to the encoder + return varSaver.CreateSavesFrom(variablesToEncode); + } + + #endregion + + } +} diff --git a/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartVarSavingTests.cs.meta b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartVarSavingTests.cs.meta new file mode 100644 index 000000000..3c544c5fb --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartVarSavingTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0ace178f89d6003429ea5b0776aa0c8d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartVec2VarSavingTests.cs b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartVec2VarSavingTests.cs new file mode 100644 index 000000000..09b310fc0 --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartVec2VarSavingTests.cs @@ -0,0 +1,14 @@ +using Fungus.LionManeSaveSys; + +namespace SaveSystemTests +{ + public class FlowchartVec2VarSavingTests : FlowchartVarSavingTests + { + protected override string VariableHolderName => "Vec_2_Flowchart"; + protected override VarSaver.ContentType SaveContentAs + { + get { return VarSaver.ContentType.jsonString; } + } + + } +} diff --git a/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartVec2VarSavingTests.cs.meta b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartVec2VarSavingTests.cs.meta new file mode 100644 index 000000000..bb696b478 --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartVec2VarSavingTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 39fadd9c27ac709469620c5a45e23843 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartVec3VarSavingTests.cs b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartVec3VarSavingTests.cs new file mode 100644 index 000000000..9bdb64898 --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartVec3VarSavingTests.cs @@ -0,0 +1,11 @@ +using Fungus.LionManeSaveSys; + +namespace SaveSystemTests +{ + public class FlowchartVec3VarSavingTests : FlowchartVarSavingTests + { + protected override string VariableHolderName => "Vec_3_Flowchart"; + protected override VarSaver.ContentType SaveContentAs => VarSaver.ContentType.jsonString; + + } +} diff --git a/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartVec3VarSavingTests.cs.meta b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartVec3VarSavingTests.cs.meta new file mode 100644 index 000000000..2367bdd0d --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartVec3VarSavingTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 56e959130e9d3e14c80edca592727600 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartVec4VarSavingTests.cs b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartVec4VarSavingTests.cs new file mode 100644 index 000000000..38bb09070 --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartVec4VarSavingTests.cs @@ -0,0 +1,14 @@ +using Fungus.LionManeSaveSys; + +namespace SaveSystemTests +{ + public class FlowchartVec4VarSavingTests : FlowchartVarSavingTests + { + protected override string VariableHolderName => "Vec_4_Flowchart"; + protected override VarSaver.ContentType SaveContentAs + { + get { return VarSaver.ContentType.jsonString; } + } + + } +} diff --git a/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartVec4VarSavingTests.cs.meta b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartVec4VarSavingTests.cs.meta new file mode 100644 index 000000000..64fa7a160 --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/Flowchart/Vars/FlowchartVec4VarSavingTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 787efbf8dad41b742bd25783791b259a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/PlayMode/SaveSystem/SaveSysPlayModeTest.cs b/Assets/Tests/PlayMode/SaveSystem/SaveSysPlayModeTest.cs new file mode 100644 index 000000000..e31337e68 --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/SaveSysPlayModeTest.cs @@ -0,0 +1,34 @@ +using NUnit.Framework; +using UnityEngine; + +namespace SaveSystemTests +{ + /// + /// Base class for all play mode unit tests we're setting up for the save system. + /// + public abstract class SaveSysPlayModeTest + { + /// + /// Relative to a Resources folder + /// + protected virtual string PathToScene { get { return ""; } } + protected GameObject scenePrefab, sceneObj; + + [SetUp] + public virtual void SetUp() + { + if (string.IsNullOrEmpty(PathToScene)) + return; + scenePrefab = Resources.Load(PathToScene); + sceneObj = Object.Instantiate(scenePrefab); + } + + [TearDown] + public virtual void Teardown() + { + if (string.IsNullOrEmpty(PathToScene)) + return; + Object.Destroy(sceneObj.gameObject); + } + } +} diff --git a/Assets/Tests/PlayMode/SaveSystem/SaveSysPlayModeTest.cs.meta b/Assets/Tests/PlayMode/SaveSystem/SaveSysPlayModeTest.cs.meta new file mode 100644 index 000000000..31c14be6c --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/SaveSysPlayModeTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1ef77426c662fd7489ef590fb649feca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/PlayMode/SaveSystem/StageSavingTests.cs b/Assets/Tests/PlayMode/SaveSystem/StageSavingTests.cs new file mode 100644 index 000000000..c26ddde9f --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/StageSavingTests.cs @@ -0,0 +1,259 @@ +using System.Collections; +using System.Collections.Generic; +using NUnit.Framework; +using UnityEngine; +using UnityEngine.TestTools; +using Fungus; +using UnityEngine.UI; +using Fungus.LionManeSaveSys; + +namespace SaveSystemTests +{ + public class StageSavingTests : SaveSysPlayModeTest + { + protected override string PathToScene => "Prefabs/StageSavingTests"; + + protected PortraitSaver portraitSaver; + + [SetUp] + public override void SetUp() + { + base.SetUp(); + GetPortraitsPrepped(); + RegisterStageAndPositions(); + RegisterCharacters(); + portraitSaver = GameObject.FindObjectOfType(); + } + + protected virtual void GetPortraitsPrepped() + { + Flowchart prep = GameObject.Find("PrepPortraits").GetComponent(); + prep.ExecuteBlock("Execute"); + } + + protected virtual void RegisterStageAndPositions() + { + stageForPortraits = GameObject.Find("TestStage").GetComponent(); + onTheRight = GameObject.Find("TestRight").transform.name; + onTheLeft = GameObject.Find("TestLeft").transform.name; + } + + protected Stage stageForPortraits; + protected string onTheRight, onTheLeft; + + protected virtual void RegisterCharacters() + { + sherlock = GameObject.Find("Sherlock Holmes").GetComponent(); + watson = GameObject.Find("John Watson").GetComponent(); + } + + protected Character sherlock, watson; + + [UnityTest] + public virtual IEnumerator PortraitPositionsSaved() + { + yield return PostSetUp(); + + bool yesTheyWereSaved = SherlockSavedAsOnTheRight() && WatsonSavedAsOnTheLeft(); + Assert.IsTrue(yesTheyWereSaved); + } + + /// + /// Every test will need this so they can be sure that the portraits are truly ready + /// + /// + protected IEnumerator PostSetUp() + { + yield return WaitForPortraitPrep(); + DimAsNeeded(); + savedPortraitStates = GetStatesOfAllPortraits(); + sherlockSaveState = GetStateFor(sherlockName); + watsonSaveState = GetStateFor(watsonName); + dudeSaveState = GetStateFor(dudeName); + yield return new WaitForSeconds(1f); // Need to wait a little more for the dim effect + } + + protected virtual IEnumerator WaitForPortraitPrep() + { + yield return new WaitForSeconds(portraitPrepTime); + } + + protected float portraitPrepTime = 1.5f; + + protected virtual void DimAsNeeded() + { + stageForPortraits.SetDimmed(watson, true); + } + + protected virtual IList GetStatesOfAllPortraits() + { + IList allChars = GameObject.FindObjectsOfType(); + + IList states = portraitSaver.CreateSavesFrom(allChars); + return states; + } + + protected IList savedPortraitStates = new List(); + + protected PortraitSaveUnit sherlockSaveState, watsonSaveState, dudeSaveState; + + protected virtual bool SherlockSavedAsOnTheRight() + { + return sherlockSaveState.PositionName == onTheRight; + } + + protected string sherlockName = "Sherlock Holmes"; + + protected virtual PortraitSaveUnit GetStateFor(string charName) + { + foreach (var savedState in savedPortraitStates) + if (savedState.CharacterName == charName) + return savedState; + + return PortraitSaveUnit.Null; + } + + protected virtual bool WatsonSavedAsOnTheLeft() + { + return watsonSaveState.PositionName == onTheLeft; + } + + protected string watsonName = "John Watson"; + protected string dudeName = "Dude"; + + protected virtual bool StateListsAreTheSame(IList firstStates, IList secondStates) + { + bool differentContentAmounts = firstStates.Count != secondStates.Count; + if (differentContentAmounts) + return false; + + int statesToCheck = firstStates.Count; + for (int i = 0; i < statesToCheck; i++) + { + var firstStateEl = firstStates[i]; + var secondStateEl = secondStates[i]; + + bool theyAreTheSame = firstStateEl.Equals(secondStateEl); + if (!theyAreTheSame) + return false; + } + + return true; + } + + [UnityTest] + public virtual IEnumerator PortraitsStageNamesSaved() + { + yield return PostSetUp(); + + bool foundStateWithWrongStageName = false; + + IList onScreenPortraitStates = new List() + { + sherlockSaveState, + watsonSaveState + }; + // Char states with onScreen set to false don't even have their portraits existing in the + // inspector, hence why we need to check only sherlock's and dude's here + + foreach (var savedState in onScreenPortraitStates) + if (savedState.StageName != testStageName) + { + foundStateWithWrongStageName = true; + break; + } + + bool thingsWereSavedProperly = !foundStateWithWrongStageName; + Assert.IsTrue(thingsWereSavedProperly); + + } + + protected string testStageName = "TestStage"; + + [UnityTest] + public virtual IEnumerator PortraitsHaveCorrectCharacters() + { + yield return PostSetUp(); + + bool onlyThreeStates = savedPortraitStates.Count == 3; + bool oneForSherlock = !GetStateFor(sherlockName).Equals(PortraitSaveUnit.Null); + bool oneForWatson = !GetStateFor(watsonName).Equals(PortraitSaveUnit.Null); + + bool thingsWentWell = onlyThreeStates && oneForSherlock && oneForWatson; + Assert.IsTrue(thingsWentWell); + } + + [UnityTest] + public virtual IEnumerator PortraitDimStatesSaved() + { + yield return PostSetUp(); + + bool sherlockNotDimmed = sherlockSaveState.Dimmed == false; + bool watsonDimmed = watsonSaveState.Dimmed == true; + + bool savedCorrectly = sherlockNotDimmed && watsonDimmed; + + Assert.IsTrue(savedCorrectly); + } + + [UnityTest] + public virtual IEnumerator FacingDirectionsSaved() + { + yield return PostSetUp(); + + bool sherlockFacingLeft = sherlockSaveState.FacingDirection == FacingDirection.Left; + bool watsonFacingRight = watsonSaveState.FacingDirection == FacingDirection.Right; + bool dudeNotFacingAtAll = dudeSaveState.FacingDirection == FacingDirection.None; + + bool thingsAreAsIntended = sherlockFacingLeft && watsonFacingRight; + Assert.IsTrue(thingsAreAsIntended); + } + + [UnityTest] + public virtual IEnumerator PortraitIndexesSaved() + { + yield return PostSetUp(); + + Image sherlockPortrait = sherlock.State.portraitImage; + int sherlockPortraitIndex = sherlock.State.allPortraits.IndexOf(sherlockPortrait); + bool sherlockCorrectIndex = sherlockSaveState.PortraitIndex == sherlockPortraitIndex; + + Image watsonPortrait = watson.State.portraitImage; + int watsonPortraitIndex = watson.State.allPortraits.IndexOf(watsonPortrait); + bool watsonCorrectIndex = watsonSaveState.PortraitIndex == watsonPortraitIndex; + + bool correctlySaved = sherlockCorrectIndex && watsonCorrectIndex; + Assert.IsTrue(correctlySaved); + + } + + [UnityTest] + public virtual IEnumerator OnScreenStatesSaved() + { + yield return PostSetUp(); + + bool sherlockOnScreen = sherlockSaveState.OnScreen == true; + bool watsonOnScreen = watsonSaveState.OnScreen == true; + bool dudeNotOnScreen = dudeSaveState.OnScreen == false; + + bool savedProperly = sherlockOnScreen && watsonOnScreen && dudeNotOnScreen; + Assert.IsTrue(savedProperly); + } + + [UnityTest] + public virtual IEnumerator PortraitNamesSaved() + { + yield return PostSetUp(); + bool sherlockCorrectPortraitName = sherlockSaveState.PortraitName == sherlockPleased; + bool watsonCorrectPortraitName = watsonSaveState.PortraitName == watsonSuspicious; + bool dudeCorrectPortraitName = dudeSaveState.PortraitName == dudeNull; + + bool savedCorrectly = sherlockCorrectPortraitName && watsonCorrectPortraitName && dudeCorrectPortraitName; + Assert.IsTrue(savedCorrectly); + + } + + protected string sherlockPleased = "pleased", watsonSuspicious = "suspicious", dudeNull = "Null"; + + } +} diff --git a/Assets/Tests/PlayMode/SaveSystem/StageSavingTests.cs.meta b/Assets/Tests/PlayMode/SaveSystem/StageSavingTests.cs.meta new file mode 100644 index 000000000..3828dd1ee --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/StageSavingTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f8680a740c2ee304fbb4df934e4548e4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/PlayMode/SaveSystem/TestingExtensions.cs b/Assets/Tests/PlayMode/SaveSystem/TestingExtensions.cs new file mode 100644 index 000000000..9a598a42c --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/TestingExtensions.cs @@ -0,0 +1,45 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Fungus; + +namespace SaveSystemTests +{ + public static class TestingExtensions + { + public static IList GetValues(this IList pairs) + { + IList result = new string[pairs.Count]; + + for (int i = 0; i < pairs.Count; i++) + { + var currentPair = pairs[i]; + var currentVal = currentPair.val; + result[i] = currentVal; + } + + return result; + } + + + public static bool HasSameContentsInOrderAs(this IList firstList, IList secondList) + { + bool differentSizes = firstList.Count != secondList.Count; + + if (differentSizes) + return false; + + for (int i = 0; i < firstList.Count; i++) + { + var firstItem = firstList[i]; + var secondItem = secondList[i]; + + if (!firstItem.Equals(secondItem)) + return false; + } + + return true; + } + + } +} \ No newline at end of file diff --git a/Assets/Tests/PlayMode/SaveSystem/TestingExtensions.cs.meta b/Assets/Tests/PlayMode/SaveSystem/TestingExtensions.cs.meta new file mode 100644 index 000000000..9af5d2357 --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/TestingExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ed3c617e09ce2f14f9d12e71087b38b5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/PlayMode/SaveSystem/UISaveUnitTests.cs b/Assets/Tests/PlayMode/SaveSystem/UISaveUnitTests.cs new file mode 100644 index 000000000..f68f4c9d3 --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/UISaveUnitTests.cs @@ -0,0 +1,76 @@ +using System.Collections; +using System.Collections.Generic; +using NUnit.Framework; +using UnityEngine; +using UnityEngine.TestTools; +using Fungus.LionManeSaveSys; +using DateTime = System.DateTime; +using System.IO; +using Encoding = System.Text.Encoding; + +namespace SaveSystemTests +{ + public class UISaveUnitTests : SaveSysPlayModeTest + { + public override void SetUp() + { + base.SetUp(); + PrepareTestSaveUnit(); + } + + protected virtual void PrepareTestSaveUnit() + { + testSaveUnit.LastWritten = DateTime.Now; + testSaveUnit.Playtime = new System.TimeSpan(12, 58, 29); + + testUnitAsJson = JsonUtility.ToJson(testSaveUnit); + testUnitAsByteArray = Encoding.UTF8.GetBytes(testUnitAsJson); + + testUnitDeserializedFromBaseJson = JsonUtility.FromJson(testUnitAsJson); + testUnitDeserializedFromBaseJson.OnDeserialize(); + } + + protected UISaveUnit testSaveUnit = new UISaveUnit(); + protected string testUnitAsJson; + protected byte[] testUnitAsByteArray; + protected UISaveUnit testUnitDeserializedFromBaseJson; + + // A Test behaves as an ordinary method + [Test] + public void SerializedLastWrittenDateCorrectly_BaseJSON() + { + bool correct = testSaveUnit.LastWritten.Equals(testUnitDeserializedFromBaseJson.LastWritten); + Assert.IsTrue(correct); + } + + [Test] + public void SerializedPlaytimeCorrectly_BaseJSON() + { + bool correct = testSaveUnit.Playtime.Equals(testUnitDeserializedFromBaseJson.Playtime); + Assert.IsTrue(correct); + } + + [Test] + public virtual void SavedToFileCorrectly_NoEncap_ByteArr() + { + string byteArrAsString = Encoding.UTF8.GetString(testUnitAsByteArray); + string path = Path.Combine(savePath, uiSaveUnitOnlyFile); + File.WriteAllText(path, byteArrAsString); + + string readFromFile = File.ReadAllText(path); + + UISaveUnit deserializedFromReadJSON = JsonUtility.FromJson(readFromFile); + deserializedFromReadJSON.OnDeserialize(); + + bool correct = deserializedFromReadJSON.Equals(testSaveUnit); + Assert.IsTrue(correct); + + } + + protected string savePath = Path.Combine(Application.dataPath, "Tests", + "Resources", "SaveFiles"); + + protected string uiSaveUnitOnlyFile = "UIUnitOnly.sav"; + + } +} diff --git a/Assets/Tests/PlayMode/SaveSystem/UISaveUnitTests.cs.meta b/Assets/Tests/PlayMode/SaveSystem/UISaveUnitTests.cs.meta new file mode 100644 index 000000000..097242d21 --- /dev/null +++ b/Assets/Tests/PlayMode/SaveSystem/UISaveUnitTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 151d31605915e6f448273a3560129966 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/Resources.meta b/Assets/Tests/Resources.meta new file mode 100644 index 000000000..84d8a7ff8 --- /dev/null +++ b/Assets/Tests/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c4a7657ba46d67342beb21b5db0536c9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/Resources/Prefabs.meta b/Assets/Tests/Resources/Prefabs.meta new file mode 100644 index 000000000..c2d16fd4e --- /dev/null +++ b/Assets/Tests/Resources/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f63bb7fa29f2fe346920641a3babec0a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/Resources/Prefabs/FlowchartSavingTests.prefab b/Assets/Tests/Resources/Prefabs/FlowchartSavingTests.prefab new file mode 100644 index 000000000..6af5180b1 --- /dev/null +++ b/Assets/Tests/Resources/Prefabs/FlowchartSavingTests.prefab @@ -0,0 +1,1745 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &133602175022905419 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2950243309250108225} + - component: {fileID: 1143381624194641291} + - component: {fileID: 3110925046069623007} + - component: {fileID: 1980440368633184289} + - component: {fileID: 5847521951621920036} + - component: {fileID: 5985495986145721081} + - component: {fileID: 2797045913184118035} + - component: {fileID: 944179079410736495} + m_Layer: 0 + m_Name: ColorFlowchart + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2950243309250108225 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 133602175022905419} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 3798324142078318485} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1143381624194641291 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 133602175022905419} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7a334fe2ffb574b3583ff3b18b4792d3, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 + scrollPos: {x: 0, y: 0} + variablesScrollPos: {x: 0, y: 0} + variablesExpanded: 1 + blockViewHeight: 400 + zoom: 1 + scrollViewRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + selectedBlocks: [] + selectedCommands: [] + variables: + - {fileID: 3110925046069623007} + - {fileID: 1980440368633184289} + - {fileID: 5847521951621920036} + - {fileID: 5985495986145721081} + - {fileID: 2797045913184118035} + - {fileID: 944179079410736495} + description: + stepPause: 0 + colorCommands: 1 + hideComponents: 1 + saveSelection: 1 + localizationId: + showLineNumbers: 0 + hideCommands: [] + luaEnvironment: {fileID: 0} + luaBindingName: flowchart +--- !u!114 &3110925046069623007 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 133602175022905419} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ea5b85dd356214c4c92b08ec04d89927, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: red + value: {r: 0.78431374, g: 0, b: 0, a: 0} +--- !u!114 &1980440368633184289 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 133602175022905419} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ea5b85dd356214c4c92b08ec04d89927, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: green + value: {r: 0, g: 0.78431374, b: 0, a: 0} +--- !u!114 &5847521951621920036 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 133602175022905419} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ea5b85dd356214c4c92b08ec04d89927, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: blue + value: {r: 0, g: 0, b: 0.78431374, a: 0} +--- !u!114 &5985495986145721081 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 133602175022905419} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ea5b85dd356214c4c92b08ec04d89927, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: bubblegumPink + value: {r: 1, g: 0.827451, b: 0.972549, a: 0} +--- !u!114 &2797045913184118035 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 133602175022905419} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ea5b85dd356214c4c92b08ec04d89927, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: paleGreen + value: {r: 0.59607846, g: 0.9843137, b: 0.59607846, a: 0} +--- !u!114 &944179079410736495 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 133602175022905419} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ea5b85dd356214c4c92b08ec04d89927, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: skyBlue + value: {r: 0.5294118, g: 0.76862746, b: 0.98039216, a: 0} +--- !u!1 &292660707000861443 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8414115126794113702} + m_Layer: 0 + m_Name: ThirdTrans + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8414115126794113702 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 292660707000861443} + m_LocalRotation: {x: 0.67056614, y: -0.22436821, z: 0.6328141, w: 0.31550956} + m_LocalPosition: {x: 111, y: 222, z: 45643} + m_LocalScale: {x: 12, y: 4, z: 7} + m_Children: [] + m_Father: {fileID: 3540228766475969667} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 45, y: 90, z: 172} +--- !u!1 &320444604709246989 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2013677418784462363} + m_Layer: 0 + m_Name: FirstTrans + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2013677418784462363 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 320444604709246989} + m_LocalRotation: {x: 0.10243002, y: 0.19827573, z: -0.020839617, w: 0.9745566} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 3540228766475969667} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 12, y: 23, z: 0} +--- !u!1 &346806429753597001 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6741104168964149155} + m_Layer: 0 + m_Name: SecondTrans + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6741104168964149155 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 346806429753597001} + m_LocalRotation: {x: 0.011739633, y: 0.042903338, z: 0.0693077, w: 0.9966032} + m_LocalPosition: {x: 12, y: 34, z: 555} + m_LocalScale: {x: 0.4, y: 3, z: 7} + m_Children: [] + m_Father: {fileID: 3540228766475969667} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 1, y: 5, z: 8} +--- !u!1 &520444980547362252 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1667534646787843277} + - component: {fileID: 352941509170960967} + - component: {fileID: 4265726587599475885} + - component: {fileID: 8661982960647655390} + - component: {fileID: 4390138875466382230} + - component: {fileID: 6936702119865413454} + - component: {fileID: 4329482522987080809} + - component: {fileID: 2649833804618268072} + m_Layer: 0 + m_Name: ExecutingFlowchart_Dialogue + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1667534646787843277 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 520444980547362252} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 134484536365499727} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &352941509170960967 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 520444980547362252} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7a334fe2ffb574b3583ff3b18b4792d3, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 + scrollPos: {x: 0, y: 0} + variablesScrollPos: {x: 0, y: 0} + variablesExpanded: 1 + blockViewHeight: 400 + zoom: 1 + scrollViewRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + selectedBlocks: + - {fileID: 4265726587599475885} + selectedCommands: [] + variables: [] + description: + stepPause: 0 + colorCommands: 1 + hideComponents: 1 + saveSelection: 1 + localizationId: + showLineNumbers: 0 + hideCommands: [] + luaEnvironment: {fileID: 0} + luaBindingName: flowchart +--- !u!114 &4265726587599475885 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 520444980547362252} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d3d73aef2cfc4f51abf34ac00241f60, type: 3} + m_Name: + m_EditorClassIdentifier: + nodeRect: + serializedVersion: 2 + x: 131 + y: 114 + width: 100 + height: 40 + tint: {r: 1, g: 1, b: 1, a: 1} + useCustomTint: 0 + itemId: 0 + blockName: Dialogue + description: + eventHandler: {fileID: 0} + commandList: + - {fileID: 8661982960647655390} + - {fileID: 4390138875466382230} + - {fileID: 6936702119865413454} + - {fileID: 4329482522987080809} + - {fileID: 2649833804618268072} + suppressAllAutoSelections: 0 + isSavingAllowed: 1 +--- !u!114 &8661982960647655390 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 520444980547362252} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3315ad2ebb85443909a1203d56d9344e, type: 3} + m_Name: + m_EditorClassIdentifier: + itemId: 3 + indentLevel: 0 + _duration: + floatRef: {fileID: 0} + floatVal: 0.001 + durationOLD: 0 +--- !u!114 &4390138875466382230 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 520444980547362252} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3315ad2ebb85443909a1203d56d9344e, type: 3} + m_Name: + m_EditorClassIdentifier: + itemId: 4 + indentLevel: 0 + _duration: + floatRef: {fileID: 0} + floatVal: 0.001 + durationOLD: 0 +--- !u!114 &6936702119865413454 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 520444980547362252} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3315ad2ebb85443909a1203d56d9344e, type: 3} + m_Name: + m_EditorClassIdentifier: + itemId: 5 + indentLevel: 0 + _duration: + floatRef: {fileID: 0} + floatVal: 0.001 + durationOLD: 0 +--- !u!114 &4329482522987080809 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 520444980547362252} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ec422cd568a9c4a31ad7c36d0572b9da, type: 3} + m_Name: + m_EditorClassIdentifier: + itemId: 6 + indentLevel: 0 + storyText: abc + description: + character: {fileID: 0} + portrait: {fileID: 0} + voiceOverClip: {fileID: 0} + showAlways: 1 + showCount: 1 + extendPrevious: 0 + fadeWhenDone: 1 + waitForClick: 0 + stopVoiceover: 1 + waitForVO: 0 + setSayDialog: {fileID: 0} +--- !u!114 &2649833804618268072 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 520444980547362252} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ec422cd568a9c4a31ad7c36d0572b9da, type: 3} + m_Name: + m_EditorClassIdentifier: + itemId: 7 + indentLevel: 0 + storyText: a + description: + character: {fileID: 0} + portrait: {fileID: 0} + voiceOverClip: {fileID: 0} + showAlways: 1 + showCount: 1 + extendPrevious: 0 + fadeWhenDone: 1 + waitForClick: 0 + stopVoiceover: 1 + waitForVO: 0 + setSayDialog: {fileID: 0} +--- !u!1 &1307436227174522092 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6215057026087201733} + - component: {fileID: 1133474042856244229} + - component: {fileID: 2453749939668879382} + - component: {fileID: 4774418589923186498} + - component: {fileID: 732630802913890085} + - component: {fileID: 684889158149717209} + - component: {fileID: 2717297811215570348} + - component: {fileID: 7890562642339335185} + - component: {fileID: 6197233988739161536} + m_Layer: 0 + m_Name: ExecutingFlowchart_Menu + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6215057026087201733 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1307436227174522092} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 134484536365499727} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1133474042856244229 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1307436227174522092} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7a334fe2ffb574b3583ff3b18b4792d3, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 + scrollPos: {x: 0, y: 0} + variablesScrollPos: {x: 0, y: 0} + variablesExpanded: 1 + blockViewHeight: 400 + zoom: 1 + scrollViewRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + selectedBlocks: + - {fileID: 2453749939668879382} + selectedCommands: [] + variables: [] + description: + stepPause: 0 + colorCommands: 1 + hideComponents: 1 + saveSelection: 1 + localizationId: + showLineNumbers: 0 + hideCommands: [] + luaEnvironment: {fileID: 0} + luaBindingName: flowchart +--- !u!114 &2453749939668879382 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1307436227174522092} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d3d73aef2cfc4f51abf34ac00241f60, type: 3} + m_Name: + m_EditorClassIdentifier: + nodeRect: + serializedVersion: 2 + x: 131 + y: 115 + width: 111 + height: 40 + tint: {r: 1, g: 1, b: 1, a: 1} + useCustomTint: 0 + itemId: 0 + blockName: New Block + description: + eventHandler: {fileID: 0} + commandList: + - {fileID: 4774418589923186498} + - {fileID: 732630802913890085} + - {fileID: 7890562642339335185} + - {fileID: 6197233988739161536} + suppressAllAutoSelections: 0 + isSavingAllowed: 1 +--- !u!114 &4774418589923186498 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1307436227174522092} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3315ad2ebb85443909a1203d56d9344e, type: 3} + m_Name: + m_EditorClassIdentifier: + itemId: 3 + indentLevel: 0 + _duration: + floatRef: {fileID: 0} + floatVal: 0.01 + durationOLD: 0 +--- !u!114 &732630802913890085 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1307436227174522092} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3315ad2ebb85443909a1203d56d9344e, type: 3} + m_Name: + m_EditorClassIdentifier: + itemId: 4 + indentLevel: 0 + _duration: + floatRef: {fileID: 0} + floatVal: 0.01 + durationOLD: 0 +--- !u!114 &684889158149717209 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1307436227174522092} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d3d73aef2cfc4f51abf34ac00241f60, type: 3} + m_Name: + m_EditorClassIdentifier: + nodeRect: + serializedVersion: 2 + x: 438 + y: 66 + width: 114 + height: 40 + tint: {r: 1, g: 1, b: 1, a: 1} + useCustomTint: 0 + itemId: 5 + blockName: FirstChoice + description: + eventHandler: {fileID: 0} + commandList: [] + suppressAllAutoSelections: 0 + isSavingAllowed: 1 +--- !u!114 &2717297811215570348 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1307436227174522092} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d3d73aef2cfc4f51abf34ac00241f60, type: 3} + m_Name: + m_EditorClassIdentifier: + nodeRect: + serializedVersion: 2 + x: 512 + y: 167 + width: 133 + height: 40 + tint: {r: 1, g: 1, b: 1, a: 1} + useCustomTint: 0 + itemId: 6 + blockName: SecondChoice + description: + eventHandler: {fileID: 0} + commandList: [] + suppressAllAutoSelections: 0 + isSavingAllowed: 1 +--- !u!114 &7890562642339335185 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1307436227174522092} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 841589fc622bc494aa5405f416fa1301, type: 3} + m_Name: + m_EditorClassIdentifier: + itemId: 7 + indentLevel: 0 + text: First choice + description: + targetBlock: {fileID: 684889158149717209} + hideIfVisited: 0 + interactable: + booleanRef: {fileID: 0} + booleanVal: 1 + setMenuDialog: {fileID: 0} + hideThisOption: + booleanRef: {fileID: 0} + booleanVal: 0 +--- !u!114 &6197233988739161536 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1307436227174522092} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 841589fc622bc494aa5405f416fa1301, type: 3} + m_Name: + m_EditorClassIdentifier: + itemId: 8 + indentLevel: 0 + text: Second choice + description: + targetBlock: {fileID: 2717297811215570348} + hideIfVisited: 0 + interactable: + booleanRef: {fileID: 0} + booleanVal: 1 + setMenuDialog: {fileID: 0} + hideThisOption: + booleanRef: {fileID: 0} + booleanVal: 0 +--- !u!1 &1986642865553812940 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3540228766475969667} + m_Layer: 0 + m_Name: DummyTransforms + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3540228766475969667 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1986642865553812940} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2013677418784462363} + - {fileID: 6741104168964149155} + - {fileID: 8414115126794113702} + m_Father: {fileID: 134484536365499727} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2431433564298013384 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3798324142078318485} + m_Layer: 0 + m_Name: VarFlowcharts + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3798324142078318485 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2431433564298013384} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 3532365471836062832} + - {fileID: 4791800464364344667} + - {fileID: 2950243309250108225} + - {fileID: 113591577111040844} + - {fileID: 5213212427107898793} + - {fileID: 3318395256831881831} + - {fileID: 6991995062985318628} + m_Father: {fileID: 134484536365499727} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2587164787110586945 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 113591577111040844} + - component: {fileID: 596583190032332688} + - component: {fileID: 6550165207167126102} + - component: {fileID: 1553235639207012223} + - component: {fileID: 8516382786267951497} + m_Layer: 0 + m_Name: Vec_2_Flowchart + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &113591577111040844 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2587164787110586945} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 3798324142078318485} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &596583190032332688 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2587164787110586945} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7a334fe2ffb574b3583ff3b18b4792d3, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 + scrollPos: {x: 0, y: 0} + variablesScrollPos: {x: 0, y: 0} + variablesExpanded: 1 + blockViewHeight: 400 + zoom: 1 + scrollViewRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + selectedBlocks: [] + selectedCommands: [] + variables: + - {fileID: 6550165207167126102} + - {fileID: 1553235639207012223} + - {fileID: 8516382786267951497} + description: + stepPause: 0 + colorCommands: 1 + hideComponents: 1 + saveSelection: 1 + localizationId: + showLineNumbers: 0 + hideCommands: [] + luaEnvironment: {fileID: 0} + luaBindingName: flowchart +--- !u!114 &6550165207167126102 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2587164787110586945} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ebe929c2f37ad4b19ad9d33a77c5064a, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: origin + value: {x: 0, y: 0} +--- !u!114 &1553235639207012223 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2587164787110586945} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ebe929c2f37ad4b19ad9d33a77c5064a, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: upperRight + value: {x: 1, y: 1} +--- !u!114 &8516382786267951497 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2587164787110586945} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ebe929c2f37ad4b19ad9d33a77c5064a, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: lowerRight + value: {x: 1, y: -10} +--- !u!1 &4079618830938933671 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5213212427107898793} + - component: {fileID: 4404009253273753632} + - component: {fileID: 5821715225578668293} + - component: {fileID: 10920905154676603} + - component: {fileID: 1243534484662787326} + m_Layer: 0 + m_Name: Vec_3_Flowchart + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5213212427107898793 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4079618830938933671} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 3798324142078318485} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &4404009253273753632 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4079618830938933671} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7a334fe2ffb574b3583ff3b18b4792d3, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 + scrollPos: {x: 0, y: 0} + variablesScrollPos: {x: 0, y: 0} + variablesExpanded: 1 + blockViewHeight: 400 + zoom: 1 + scrollViewRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + selectedBlocks: [] + selectedCommands: [] + variables: + - {fileID: 5821715225578668293} + - {fileID: 10920905154676603} + - {fileID: 1243534484662787326} + description: + stepPause: 0 + colorCommands: 1 + hideComponents: 1 + saveSelection: 1 + localizationId: + showLineNumbers: 0 + hideCommands: [] + luaEnvironment: {fileID: 0} + luaBindingName: flowchart +--- !u!114 &5821715225578668293 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4079618830938933671} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d769ea3513ad47aabf805db5252341d, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: origin + value: {x: 0, y: 0, z: 0} +--- !u!114 &10920905154676603 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4079618830938933671} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d769ea3513ad47aabf805db5252341d, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: toTheRight + value: {x: 1, y: 0, z: 0} +--- !u!114 &1243534484662787326 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4079618830938933671} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d769ea3513ad47aabf805db5252341d, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: lowerLeftForwards + value: {x: -1, y: -1, z: 123} +--- !u!1 &4972569955055091050 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4791800464364344667} + - component: {fileID: 3880639863672605529} + - component: {fileID: 2690687035996103399} + - component: {fileID: 7360104146332506633} + - component: {fileID: 7844112303411751695} + m_Layer: 0 + m_Name: StringFlowchart + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4791800464364344667 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4972569955055091050} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 3798324142078318485} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3880639863672605529 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4972569955055091050} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7a334fe2ffb574b3583ff3b18b4792d3, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 + scrollPos: {x: -10, y: 0} + variablesScrollPos: {x: 0, y: 0} + variablesExpanded: 1 + blockViewHeight: 400 + zoom: 1 + scrollViewRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + selectedBlocks: [] + selectedCommands: [] + variables: + - {fileID: 2690687035996103399} + - {fileID: 7360104146332506633} + - {fileID: 7844112303411751695} + description: + stepPause: 0 + colorCommands: 1 + hideComponents: 1 + saveSelection: 1 + localizationId: + showLineNumbers: 0 + hideCommands: [] + luaEnvironment: {fileID: 0} + luaBindingName: flowchart +--- !u!114 &2690687035996103399 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4972569955055091050} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4580f28dd8581476b810b38eea2f1316, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: firstString + value: Hi +--- !u!114 &7360104146332506633 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4972569955055091050} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4580f28dd8581476b810b38eea2f1316, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: secondString + value: I'm +--- !u!114 &7844112303411751695 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4972569955055091050} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4580f28dd8581476b810b38eea2f1316, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: thirdString + value: Paul +--- !u!1 &5386706654684967531 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3318395256831881831} + - component: {fileID: 5379459672397587591} + - component: {fileID: 9062519040952181384} + - component: {fileID: 5605586572786919600} + - component: {fileID: 2621550691895434357} + m_Layer: 0 + m_Name: Vec_4_Flowchart + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3318395256831881831 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5386706654684967531} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 3798324142078318485} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5379459672397587591 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5386706654684967531} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7a334fe2ffb574b3583ff3b18b4792d3, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 + scrollPos: {x: 0, y: 0} + variablesScrollPos: {x: 0, y: 0} + variablesExpanded: 1 + blockViewHeight: 400 + zoom: 1 + scrollViewRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + selectedBlocks: [] + selectedCommands: [] + variables: + - {fileID: 9062519040952181384} + - {fileID: 5605586572786919600} + - {fileID: 2621550691895434357} + description: + stepPause: 0 + colorCommands: 1 + hideComponents: 1 + saveSelection: 1 + localizationId: + showLineNumbers: 0 + hideCommands: [] + luaEnvironment: {fileID: 0} + luaBindingName: flowchart +--- !u!114 &9062519040952181384 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5386706654684967531} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 516fbed763cd80c44835637e64a1da18, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: firstV4 + value: {x: 0, y: 0, z: 0, w: 0} +--- !u!114 &5605586572786919600 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5386706654684967531} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 516fbed763cd80c44835637e64a1da18, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: secondV4 + value: {x: 1, y: 2, z: 0, w: 0} +--- !u!114 &2621550691895434357 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5386706654684967531} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 516fbed763cd80c44835637e64a1da18, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: thirdV4 + value: {x: 0, y: 2, z: 3, w: 4} +--- !u!1 &5504735901905553913 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5039624110213807318} + - component: {fileID: 1549818758880389849} + m_Layer: 0 + m_Name: CommandSavers + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5039624110213807318 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5504735901905553913} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 7207508386225608450} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1549818758880389849 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5504735901905553913} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5ade25b7e0797074fbf2ec4a0610d531, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &6609570569751383371 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3532365471836062832} + - component: {fileID: 406793031351251101} + - component: {fileID: 6164109955297145376} + - component: {fileID: 3910137243199340111} + - component: {fileID: 5682446728625150268} + - component: {fileID: 5014877000878034019} + - component: {fileID: 8825618054815694408} + - component: {fileID: 4156784119502227987} + m_Layer: 0 + m_Name: NumericFlowchart + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3532365471836062832 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6609570569751383371} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 3798324142078318485} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &406793031351251101 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6609570569751383371} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7a334fe2ffb574b3583ff3b18b4792d3, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 + scrollPos: {x: -10, y: 0} + variablesScrollPos: {x: 0, y: 0} + variablesExpanded: 1 + blockViewHeight: 400 + zoom: 1 + scrollViewRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + selectedBlocks: [] + selectedCommands: [] + variables: + - {fileID: 6164109955297145376} + - {fileID: 3910137243199340111} + - {fileID: 5682446728625150268} + - {fileID: 5014877000878034019} + - {fileID: 8825618054815694408} + - {fileID: 4156784119502227987} + description: + stepPause: 0 + colorCommands: 1 + hideComponents: 1 + saveSelection: 1 + localizationId: + showLineNumbers: 0 + hideCommands: [] + luaEnvironment: {fileID: 0} + luaBindingName: flowchart +--- !u!114 &6164109955297145376 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6609570569751383371} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: afb91b566ceda411bad1e9d3c3243ecc, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: firstInt + value: 10 +--- !u!114 &3910137243199340111 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6609570569751383371} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: afb91b566ceda411bad1e9d3c3243ecc, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: secondInt + value: 25 +--- !u!114 &5682446728625150268 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6609570569751383371} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: afb91b566ceda411bad1e9d3c3243ecc, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: thirdInt + value: 55 +--- !u!114 &5014877000878034019 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6609570569751383371} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 705fa1ac97df74e3a84ff952ffd923f1, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: firstFloat + value: 1.23 +--- !u!114 &8825618054815694408 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6609570569751383371} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 705fa1ac97df74e3a84ff952ffd923f1, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: secondFloat + value: 5.6789 +--- !u!114 &4156784119502227987 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6609570569751383371} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 705fa1ac97df74e3a84ff952ffd923f1, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: thirdFloat + value: 123.45679 +--- !u!1 &7063032562895598291 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6991995062985318628} + - component: {fileID: 3833241834915478396} + - component: {fileID: 8521194849635974864} + - component: {fileID: 5030144430484445680} + - component: {fileID: 4990347877827766424} + m_Layer: 0 + m_Name: TransformFlowchart + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6991995062985318628 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7063032562895598291} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 3798324142078318485} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3833241834915478396 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7063032562895598291} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7a334fe2ffb574b3583ff3b18b4792d3, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 + scrollPos: {x: 0, y: 0} + variablesScrollPos: {x: 0, y: 0} + variablesExpanded: 1 + blockViewHeight: 400 + zoom: 1 + scrollViewRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + selectedBlocks: [] + selectedCommands: [] + variables: + - {fileID: 8521194849635974864} + - {fileID: 5030144430484445680} + - {fileID: 4990347877827766424} + description: + stepPause: 0 + colorCommands: 1 + hideComponents: 1 + saveSelection: 1 + localizationId: + showLineNumbers: 0 + hideCommands: [] + luaEnvironment: {fileID: 0} + luaBindingName: flowchart +--- !u!114 &8521194849635974864 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7063032562895598291} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 633bea14077b44e19956e8113fbac7a4, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: firstTrans + value: {fileID: 2013677418784462363} +--- !u!114 &5030144430484445680 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7063032562895598291} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 633bea14077b44e19956e8113fbac7a4, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: secondTrans + value: {fileID: 6741104168964149155} +--- !u!114 &4990347877827766424 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7063032562895598291} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 633bea14077b44e19956e8113fbac7a4, type: 3} + m_Name: + m_EditorClassIdentifier: + scope: 0 + key: thirdTrans + value: {fileID: 8414115126794113702} +--- !u!1 &7495386991993072552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 134484536365499727} + m_Layer: 0 + m_Name: FlowchartSavingTests + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &134484536365499727 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7495386991993072552} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 7207508386225608450} + - {fileID: 3540228766475969667} + - {fileID: 3798324142078318485} + - {fileID: 1667534646787843277} + - {fileID: 6215057026087201733} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8355802931863322742 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7207508386225608450} + - component: {fileID: 320613220591883985} + - component: {fileID: 6571007931220161188} + - component: {fileID: 1745635959623093962} + - component: {fileID: 6993795887856362067} + - component: {fileID: 8284007555035288522} + m_Layer: 0 + m_Name: FlowchartEncoders + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7207508386225608450 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8355802931863322742} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 5039624110213807318} + m_Father: {fileID: 134484536365499727} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &320613220591883985 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8355802931863322742} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8f35c6739066c3b4990a899b557661a0, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &6571007931220161188 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8355802931863322742} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f6563d07648e4a9418a4baa394a5006b, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1745635959623093962 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8355802931863322742} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: aa7017da99ca3c845b797079547e2cf0, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &6993795887856362067 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8355802931863322742} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 41252e6c33387e14495b26acc70fc998, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &8284007555035288522 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8355802931863322742} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c05cc06408240e84f85fc8d1d3ef0de7, type: 3} + m_Name: + m_EditorClassIdentifier: + hasCommandSavers: + - {fileID: 5039624110213807318} diff --git a/Assets/Tests/Resources/Prefabs/FlowchartSavingTests.prefab.meta b/Assets/Tests/Resources/Prefabs/FlowchartSavingTests.prefab.meta new file mode 100644 index 000000000..f536127f8 --- /dev/null +++ b/Assets/Tests/Resources/Prefabs/FlowchartSavingTests.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d1ece959f5108bc4394e46f2de19fdea +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/Resources/Prefabs/SaveSlotControllerTests.prefab b/Assets/Tests/Resources/Prefabs/SaveSlotControllerTests.prefab new file mode 100644 index 000000000..a2bbf4a32 --- /dev/null +++ b/Assets/Tests/Resources/Prefabs/SaveSlotControllerTests.prefab @@ -0,0 +1,1037 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2200373591376173150 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2200373591376173154} + - component: {fileID: 2200373591376173155} + - component: {fileID: 2200373591376173152} + - component: {fileID: 2200373591376173153} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2200373591376173154 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2200373591376173150} + 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_Children: + - {fileID: 2200373593256029180} + m_Father: {fileID: 2200373591766172700} + m_RootOrder: 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!223 &2200373591376173155 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2200373591376173150} + 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_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &2200373591376173152 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2200373591376173150} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!114 &2200373591376173153 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2200373591376173150} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!1 &2200373591766172701 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2200373591766172700} + m_Layer: 0 + m_Name: SaveSlotControllerTests + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2200373591766172700 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2200373591766172701} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 225.365, y: 173.12427, z: -45.581562} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2200373591376173154} + - {fileID: 2200373592565041723} + - {fileID: 2200373592499282493} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2200373592499282488 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2200373592499282493} + - component: {fileID: 2200373592499282490} + - component: {fileID: 2200373592499282491} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2200373592499282493 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2200373592499282488} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -225.365, y: -173.12427, z: 35.581562} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2200373591766172700} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &2200373592499282490 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2200373592499282488} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!81 &2200373592499282491 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2200373592499282488} + m_Enabled: 1 +--- !u!1 &2200373592565041718 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2200373592565041723} + - component: {fileID: 2200373592565041720} + - component: {fileID: 2200373592565041721} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2200373592565041723 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2200373592565041718} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -225.365, y: -173.12427, z: 45.581562} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2200373591766172700} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2200373592565041720 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2200373592565041718} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!114 &2200373592565041721 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2200373592565041718} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!1 &2200373593256029181 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2200373593256029180} + - component: {fileID: 2200373593256029183} + m_Layer: 5 + m_Name: SlotHolder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2200373593256029180 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2200373593256029181} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 7864809201764215586} + - {fileID: 7864809202699971524} + - {fileID: 4783104487581879458} + m_Father: {fileID: 2200373591376173154} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -0.000030517578, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2200373593256029183 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2200373593256029181} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 1 + m_Spacing: -50 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!1001 &2200373591413482531 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2200373593256029180} + m_Modifications: + - target: {fileID: 796396842606464101, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 796396842606464101, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 796396842606464101, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 796396842606464101, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 796396842606464101, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 796396842606464101, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079148700219675, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079148700219675, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079148700219675, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079148700219675, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079148700219675, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079148700219675, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333632, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_Name + value: SaveSlot + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_SizeDelta.x + value: 500 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_SizeDelta.y + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149311711290, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149311711290, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149311711290, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149311711290, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149311711290, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149311711290, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 5cf387531a2720742970dcc072663abf, type: 3} +--- !u!224 &7864809201764215586 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + m_PrefabInstance: {fileID: 2200373591413482531} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &2200373592617608389 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2200373593256029180} + m_Modifications: + - target: {fileID: 796396842606464101, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 796396842606464101, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 796396842606464101, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 796396842606464101, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 796396842606464101, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 796396842606464101, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079148700219675, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079148700219675, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079148700219675, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079148700219675, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079148700219675, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079148700219675, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333632, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_Name + value: SaveSlot (1) + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_SizeDelta.x + value: 500 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_SizeDelta.y + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149311711290, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149311711290, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149311711290, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149311711290, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149311711290, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149311711290, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 5cf387531a2720742970dcc072663abf, type: 3} +--- !u!224 &7864809202699971524 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + m_PrefabInstance: {fileID: 2200373592617608389} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &3588566687846089635 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2200373593256029180} + m_Modifications: + - target: {fileID: 796396842606464101, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 796396842606464101, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 796396842606464101, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 796396842606464101, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 796396842606464101, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 796396842606464101, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079148700219675, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079148700219675, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079148700219675, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079148700219675, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079148700219675, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079148700219675, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333632, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_Name + value: SaveSlot (2) + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_SizeDelta.x + value: 500 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_SizeDelta.y + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149311711290, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149311711290, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149311711290, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149311711290, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149311711290, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8335079149311711290, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 5cf387531a2720742970dcc072663abf, type: 3} +--- !u!224 &4783104487581879458 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 8335079149223333633, guid: 5cf387531a2720742970dcc072663abf, + type: 3} + m_PrefabInstance: {fileID: 3588566687846089635} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Tests/Resources/Prefabs/SaveSlotControllerTests.prefab.meta b/Assets/Tests/Resources/Prefabs/SaveSlotControllerTests.prefab.meta new file mode 100644 index 000000000..c149c91e4 --- /dev/null +++ b/Assets/Tests/Resources/Prefabs/SaveSlotControllerTests.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a497225501696ac4db0ee52b91b9be5c +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/Resources/Prefabs/SoundEncodingTests.prefab b/Assets/Tests/Resources/Prefabs/SoundEncodingTests.prefab new file mode 100644 index 000000000..ffccf769c --- /dev/null +++ b/Assets/Tests/Resources/Prefabs/SoundEncodingTests.prefab @@ -0,0 +1,246 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &160647968348214268 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4001672719301615094} + - component: {fileID: 6681716250756567506} + m_Layer: 0 + m_Name: AudioListener + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4001672719301615094 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 160647968348214268} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 134484536365499727} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!81 &6681716250756567506 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 160647968348214268} + m_Enabled: 1 +--- !u!1 &6609570569751383371 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3532365471836062832} + - component: {fileID: 406793031351251101} + - component: {fileID: 8873670556780801823} + - component: {fileID: 7149625071579053846} + - component: {fileID: 977271474425733484} + - component: {fileID: 7461851927168098855} + - component: {fileID: 3763932506569137601} + m_Layer: 0 + m_Name: Flowchart + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3532365471836062832 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6609570569751383371} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 134484536365499727} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &406793031351251101 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6609570569751383371} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7a334fe2ffb574b3583ff3b18b4792d3, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 + scrollPos: {x: -10, y: 0} + variablesScrollPos: {x: 0, y: 0} + variablesExpanded: 1 + blockViewHeight: 400 + zoom: 1 + scrollViewRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + selectedBlocks: + - {fileID: 8873670556780801823} + selectedCommands: + - {fileID: 3763932506569137601} + variables: [] + description: + stepPause: 0 + colorCommands: 1 + hideComponents: 1 + saveSelection: 1 + localizationId: + showLineNumbers: 0 + hideCommands: [] + luaEnvironment: {fileID: 0} + luaBindingName: flowchart +--- !u!114 &8873670556780801823 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6609570569751383371} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d3d73aef2cfc4f51abf34ac00241f60, type: 3} + m_Name: + m_EditorClassIdentifier: + nodeRect: + serializedVersion: 2 + x: 338 + y: 135 + width: 67 + height: 40 + tint: {r: 1, g: 1, b: 1, a: 1} + useCustomTint: 0 + itemId: 0 + blockName: Init + description: + eventHandler: {fileID: 7149625071579053846} + commandList: + - {fileID: 977271474425733484} + - {fileID: 7461851927168098855} + - {fileID: 3763932506569137601} + suppressAllAutoSelections: 0 + isSavingAllowed: 1 +--- !u!114 &7149625071579053846 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6609570569751383371} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d2f6487d21a03404cb21b245f0242e79, type: 3} + m_Name: + m_EditorClassIdentifier: + parentBlock: {fileID: 8873670556780801823} + suppressBlockAutoSelect: 0 + waitForFrames: 1 + shouldExecuteDuringSaveLoad: 1 +--- !u!114 &977271474425733484 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6609570569751383371} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1902400ccc99b45d69ad01cb86b57d0f, type: 3} + m_Name: + m_EditorClassIdentifier: + itemId: 1 + indentLevel: 0 + musicClip: {fileID: 8300000, guid: 8f2a44f9988c2445aa82bed59f677134, type: 3} + atTime: 0 + loop: 1 + fadeDuration: 1 +--- !u!114 &7461851927168098855 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6609570569751383371} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 831c208af3cccf24b80cc6f3768919bc, type: 3} + m_Name: + m_EditorClassIdentifier: + itemId: 2 + indentLevel: 0 + soundClip: {fileID: 8300000, guid: 14a396b1562834718b2d52b9c4639264, type: 3} + volume: 1 + loop: 0 +--- !u!114 &3763932506569137601 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6609570569751383371} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d3c9751268124c9390e807040e57447, type: 3} + m_Name: + m_EditorClassIdentifier: + itemId: 3 + indentLevel: 0 + pitch: 0.238 + fadeDuration: 0 + waitUntilFinished: 0 +--- !u!1 &7495386991993072552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 134484536365499727} + m_Layer: 0 + m_Name: SoundEncodingTests + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &134484536365499727 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7495386991993072552} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 3532365471836062832} + - {fileID: 4001672719301615094} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Tests/Resources/Prefabs/SoundEncodingTests.prefab.meta b/Assets/Tests/Resources/Prefabs/SoundEncodingTests.prefab.meta new file mode 100644 index 000000000..9be4e0225 --- /dev/null +++ b/Assets/Tests/Resources/Prefabs/SoundEncodingTests.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 86154709ec570624d866cd82a1f86faf +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/Resources/Prefabs/StageSavingTests.prefab b/Assets/Tests/Resources/Prefabs/StageSavingTests.prefab new file mode 100644 index 000000000..4d3f40579 --- /dev/null +++ b/Assets/Tests/Resources/Prefabs/StageSavingTests.prefab @@ -0,0 +1,1225 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &361635167469922628 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8712332157827788595} + - component: {fileID: 3162663349441747710} + - component: {fileID: 8364045520953853584} + m_Layer: 0 + m_Name: TestLeft + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8712332157827788595 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 361635167469922628} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 489013176074204868} + m_RootOrder: 1 + 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: -460.43, y: -1000} + m_SizeDelta: {x: 1000, y: 1000} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &3162663349441747710 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 361635167469922628} + m_CullTransparentMesh: 0 +--- !u!114 &8364045520953853584 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 361635167469922628} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: ea8f56c43254d41728f5ac4e8299b6c9, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &687438897957721508 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 907771639161670076} + - component: {fileID: 5946577346873139222} + - component: {fileID: 8211224462442970255} + - component: {fileID: 2876254255034713210} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &907771639161670076 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 687438897957721508} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 7219169315093237358} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5946577346873139222 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 687438897957721508} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!114 &8211224462442970255 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 687438897957721508} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &2876254255034713210 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 687438897957721508} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!1 &1604955937228696471 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7520525245663935050} + - component: {fileID: 5257245211738792905} + m_Layer: 0 + m_Name: Camera + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7520525245663935050 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1604955937228696471} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 7219169315093237358} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &5257245211738792905 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1604955937228696471} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!1 &1738296947649734222 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7297114276210191881} + - component: {fileID: 6581090877751548667} + m_Layer: 0 + m_Name: TestStage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7297114276210191881 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1738296947649734222} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 489013176074204868} + m_Father: {fileID: 7219169315093237358} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6581090877751548667 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1738296947649734222} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6f6478b25a400c642b2dee75f022ab12, type: 3} + m_Name: + m_EditorClassIdentifier: + portraitCanvas: {fileID: 6613093157557773689} + dimPortraits: 1 + dimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + fadeDuration: 0.75 + moveDuration: 1 + fadeEaseType: 4 + shiftOffset: {x: 0, y: 0} + defaultPosition: {fileID: 3765125078648486404} + positions: + - {fileID: 8712332157827788595} + - {fileID: 7824338556896325388} + - {fileID: 7169511908732232097} + - {fileID: 3362935726831509427} + - {fileID: 6347048951836205081} +--- !u!1 &1921520653187201686 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7219169315093237358} + m_Layer: 0 + m_Name: StageSavingTests + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7219169315093237358 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1921520653187201686} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 7297114276210191881} + - {fileID: 7520525245663935050} + - {fileID: 907771639161670076} + - {fileID: 3050001972352803417} + - {fileID: 2340942998621312522} + - {fileID: 867376474431930501} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3050001972352609367 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3050001972352803417} + - component: {fileID: 3050001972363864689} + - component: {fileID: 3050001972363868043} + - component: {fileID: 7611773595384240147} + - component: {fileID: 5645077989861479068} + m_Layer: 0 + m_Name: PrepPortraits + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3050001972352803417 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3050001972352609367} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 7219169315093237358} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3050001972363864689 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3050001972352609367} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7a334fe2ffb574b3583ff3b18b4792d3, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 + scrollPos: {x: 0, y: 0} + variablesScrollPos: {x: 0, y: 0} + variablesExpanded: 1 + blockViewHeight: 400 + zoom: 1 + scrollViewRect: + serializedVersion: 2 + x: -343 + y: -340 + width: 1114 + height: 859 + selectedBlocks: + - {fileID: 3050001972363868043} + selectedCommands: + - {fileID: 7611773595384240147} + variables: [] + description: + stepPause: 0 + colorCommands: 1 + hideComponents: 1 + saveSelection: 1 + localizationId: + showLineNumbers: 0 + hideCommands: [] + luaEnvironment: {fileID: 0} + luaBindingName: flowchart +--- !u!114 &3050001972363868043 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3050001972352609367} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d3d73aef2cfc4f51abf34ac00241f60, type: 3} + m_Name: + m_EditorClassIdentifier: + nodeRect: + serializedVersion: 2 + x: 240 + y: 182 + width: 95 + height: 40 + tint: {r: 1, g: 1, b: 1, a: 1} + useCustomTint: 0 + itemId: 0 + blockName: Execute + description: + eventHandler: {fileID: 0} + commandList: + - {fileID: 7611773595384240147} + - {fileID: 5645077989861479068} + suppressAllAutoSelections: 0 + isSavingAllowed: 1 +--- !u!114 &7611773595384240147 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3050001972352609367} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3ac5ce55bc698fa4290939ef6e426501, type: 3} + m_Name: + m_EditorClassIdentifier: + itemId: 26 + indentLevel: 0 + display: 1 + stage: {fileID: 6581090877751548667} + character: {fileID: 3223981108841722869} + replacedCharacter: {fileID: 0} + portrait: {fileID: 21300000, guid: a3710c5af5b436a46b8d0ff4235d1dfe, type: 3} + offset: 0 + fromPosition: {fileID: 0} + toPosition: {fileID: 7169511908732232097} + facing: 1 + useDefaultSettings: 1 + fadeDuration: 0 + moveDuration: 1 + shiftOffset: {x: 0, y: 0} + move: 0 + shiftIntoPlace: 0 + waitUntilFinished: 0 +--- !u!114 &5645077989861479068 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3050001972352609367} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3ac5ce55bc698fa4290939ef6e426501, type: 3} + m_Name: + m_EditorClassIdentifier: + itemId: 60 + indentLevel: 0 + display: 1 + stage: {fileID: 6581090877751548667} + character: {fileID: 7066739996686119588} + replacedCharacter: {fileID: 0} + portrait: {fileID: 21300000, guid: 59d7c816c1cfb9944b5a28dfbbfe2109, type: 3} + offset: 0 + fromPosition: {fileID: 0} + toPosition: {fileID: 8712332157827788595} + facing: 2 + useDefaultSettings: 1 + fadeDuration: 0 + moveDuration: 1 + shiftOffset: {x: 0, y: 0} + move: 0 + shiftIntoPlace: 0 + waitUntilFinished: 0 +--- !u!1 &4180775705836584014 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7169511908732232097} + - component: {fileID: 8518536358093222827} + - component: {fileID: 2614403933432193095} + m_Layer: 0 + m_Name: TestRight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7169511908732232097 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4180775705836584014} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 489013176074204868} + m_RootOrder: 2 + 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: 460.43, y: -1000} + m_SizeDelta: {x: 1000, y: 1000} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &8518536358093222827 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4180775705836584014} + m_CullTransparentMesh: 0 +--- !u!114 &2614403933432193095 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4180775705836584014} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: ea8f56c43254d41728f5ac4e8299b6c9, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4416819602231626031 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1282366423557382584} + - component: {fileID: 3223981108841722869} + m_Layer: 0 + m_Name: Sherlock Holmes + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!4 &1282366423557382584 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4416819602231626031} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2340942998621312522} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3223981108841722869 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4416819602231626031} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 25fb867d2049d41f597aefdd6b19f598, type: 3} + m_Name: + m_EditorClassIdentifier: + nameText: Sherlock + nameColor: {r: 0.25882354, g: 0.25490198, b: 0.2627451, a: 1} + soundEffect: {fileID: 8300000, guid: 0eb825d5775aa234280e50db9a33cffe, type: 3} + portraits: + - {fileID: 21300000, guid: 8f5b5b110e73a414eb229eeead86200f, type: 3} + - {fileID: 21300000, guid: 65cda1e3dd1ec8c4bb828adc5bb06c7d, type: 3} + - {fileID: 21300000, guid: 84cdbfde1b7d4c24ab7071894480d5db, type: 3} + - {fileID: 21300000, guid: 0815f9b817b27b7499559c635a844bf0, type: 3} + - {fileID: 21300000, guid: bca405818493a4f4a8fb63a69294d19a, type: 3} + - {fileID: 21300000, guid: 75b6e7c8c9b6b4d40ae30dc671be34b7, type: 3} + - {fileID: 21300000, guid: 03f8d661d54a3a04797d21ab54424abb, type: 3} + - {fileID: 21300000, guid: 529a0cc84e8173a4d8f60e222d904cdb, type: 3} + - {fileID: 21300000, guid: ed3f5dd119e6015479f898ab63bab12b, type: 3} + - {fileID: 21300000, guid: 7497fd82318972540af8666a234a9685, type: 3} + - {fileID: 21300000, guid: 5ba6e5e5e65bc084ba912d2d2d8718df, type: 3} + - {fileID: 21300000, guid: b9482ea03e69b5a4aa5e7827da354549, type: 3} + - {fileID: 21300000, guid: 96ca91f43a9c1f74b970b59f46047e74, type: 3} + - {fileID: 21300000, guid: 779f8bb1130ec974aa263a5e91518085, type: 3} + - {fileID: 21300000, guid: 5426a8c5c16e04d439b48a522267b236, type: 3} + - {fileID: 21300000, guid: c27113fd8a09c7c45a856e5d3c843c11, type: 3} + - {fileID: 21300000, guid: 67bc1238f72c52b49bd0ad82c79756ac, type: 3} + - {fileID: 21300000, guid: a3710c5af5b436a46b8d0ff4235d1dfe, type: 3} + - {fileID: 21300000, guid: 36652428f3b9f6d41840d56c65aa0d64, type: 3} + - {fileID: 21300000, guid: 6384dc397ea803d4abf0d1de10afb1c1, type: 3} + - {fileID: 21300000, guid: ed8fca01dcf5bfc4f86bc063889a5013, type: 3} + - {fileID: 21300000, guid: 448053637e8df7a42824234afeafa291, type: 3} + - {fileID: 21300000, guid: 7add35a7d20a5ee41b0bfde9052ddfd6, type: 3} + - {fileID: 21300000, guid: cec88ab3171afc54b92db075974123ea, type: 3} + - {fileID: 21300000, guid: f233fc32ad198a44880e410c5577da9c, type: 3} + - {fileID: 21300000, guid: 58f5b79d262f6814bb4ebb44e29efe90, type: 3} + - {fileID: 21300000, guid: 97171eca7b577c5438e9516b956c042a, type: 3} + - {fileID: 21300000, guid: 4cfc408caecceeb45989d991a2dccb3c, type: 3} + - {fileID: 21300000, guid: 6d5c34a95aa09ce4a9be9f7258a02c0d, type: 3} + - {fileID: 21300000, guid: d2c8a5a70bd6f11468f4d8ea151dec90, type: 3} + - {fileID: 21300000, guid: e7a0368af3f28b1438c458df61e691c1, type: 3} + - {fileID: 21300000, guid: bd1b1199c415fc642ae13055981f42aa, type: 3} + - {fileID: 21300000, guid: 3fd077b79b3018945961e206b6435268, type: 3} + portraitsFace: 1 + setSayDialog: {fileID: 0} + description: + effectAudioSource: {fileID: 0} + voiceAudioSource: {fileID: 0} +--- !u!1 &4776776120855977465 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 867376474431930501} + - component: {fileID: 5593138931318064959} + m_Layer: 0 + m_Name: Encoders + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &867376474431930501 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4776776120855977465} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 7219169315093237358} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5593138931318064959 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4776776120855977465} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a547ffa320bd6234cb10ecf300c21433, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &4828508366977970249 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 489013176074204868} + - component: {fileID: 6613093157557773689} + - component: {fileID: 2800681201081943039} + - component: {fileID: 6871885902653802158} + - component: {fileID: 188187163395517933} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &489013176074204868 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4828508366977970249} + 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_Children: + - {fileID: 7824338556896325388} + - {fileID: 8712332157827788595} + - {fileID: 7169511908732232097} + - {fileID: 3362935726831509427} + - {fileID: 6347048951836205081} + m_Father: {fileID: 7297114276210191881} + m_RootOrder: 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!223 &6613093157557773689 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4828508366977970249} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &2800681201081943039 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4828508366977970249} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &6871885902653802158 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4828508366977970249} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1600, y: 1200} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 1 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!225 &188187163395517933 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4828508366977970249} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 0 + m_IgnoreParentGroups: 0 +--- !u!1 &5812138637784442177 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7824338556896325388} + - component: {fileID: 5216957531435819931} + - component: {fileID: 3765125078648486404} + m_Layer: 0 + m_Name: Middle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7824338556896325388 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5812138637784442177} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 489013176074204868} + m_RootOrder: 0 + 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: -1000} + m_SizeDelta: {x: 1000, y: 1000} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &5216957531435819931 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5812138637784442177} + m_CullTransparentMesh: 0 +--- !u!114 &3765125078648486404 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5812138637784442177} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: ea8f56c43254d41728f5ac4e8299b6c9, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &6065202278920145615 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 945468277329351483} + - component: {fileID: 1970286504407651892} + m_Layer: 0 + m_Name: Dude + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!4 &945468277329351483 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065202278920145615} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2340942998621312522} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1970286504407651892 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065202278920145615} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 25fb867d2049d41f597aefdd6b19f598, type: 3} + m_Name: + m_EditorClassIdentifier: + nameText: Dude + nameColor: {r: 0.25882354, g: 0.25490198, b: 0.2627451, a: 1} + soundEffect: {fileID: 8300000, guid: 0eb825d5775aa234280e50db9a33cffe, type: 3} + portraits: + - {fileID: 21300000, guid: 8f5b5b110e73a414eb229eeead86200f, type: 3} + - {fileID: 21300000, guid: 65cda1e3dd1ec8c4bb828adc5bb06c7d, type: 3} + - {fileID: 21300000, guid: 84cdbfde1b7d4c24ab7071894480d5db, type: 3} + - {fileID: 21300000, guid: 0815f9b817b27b7499559c635a844bf0, type: 3} + - {fileID: 21300000, guid: bca405818493a4f4a8fb63a69294d19a, type: 3} + - {fileID: 21300000, guid: 75b6e7c8c9b6b4d40ae30dc671be34b7, type: 3} + - {fileID: 21300000, guid: 03f8d661d54a3a04797d21ab54424abb, type: 3} + - {fileID: 21300000, guid: 529a0cc84e8173a4d8f60e222d904cdb, type: 3} + - {fileID: 21300000, guid: ed3f5dd119e6015479f898ab63bab12b, type: 3} + - {fileID: 21300000, guid: 7497fd82318972540af8666a234a9685, type: 3} + - {fileID: 21300000, guid: 5ba6e5e5e65bc084ba912d2d2d8718df, type: 3} + - {fileID: 21300000, guid: b9482ea03e69b5a4aa5e7827da354549, type: 3} + - {fileID: 21300000, guid: 96ca91f43a9c1f74b970b59f46047e74, type: 3} + - {fileID: 21300000, guid: 779f8bb1130ec974aa263a5e91518085, type: 3} + - {fileID: 21300000, guid: 5426a8c5c16e04d439b48a522267b236, type: 3} + - {fileID: 21300000, guid: c27113fd8a09c7c45a856e5d3c843c11, type: 3} + - {fileID: 21300000, guid: 67bc1238f72c52b49bd0ad82c79756ac, type: 3} + - {fileID: 21300000, guid: a3710c5af5b436a46b8d0ff4235d1dfe, type: 3} + - {fileID: 21300000, guid: 36652428f3b9f6d41840d56c65aa0d64, type: 3} + - {fileID: 21300000, guid: 6384dc397ea803d4abf0d1de10afb1c1, type: 3} + - {fileID: 21300000, guid: ed8fca01dcf5bfc4f86bc063889a5013, type: 3} + - {fileID: 21300000, guid: 448053637e8df7a42824234afeafa291, type: 3} + - {fileID: 21300000, guid: 7add35a7d20a5ee41b0bfde9052ddfd6, type: 3} + - {fileID: 21300000, guid: cec88ab3171afc54b92db075974123ea, type: 3} + - {fileID: 21300000, guid: f233fc32ad198a44880e410c5577da9c, type: 3} + - {fileID: 21300000, guid: 58f5b79d262f6814bb4ebb44e29efe90, type: 3} + - {fileID: 21300000, guid: 97171eca7b577c5438e9516b956c042a, type: 3} + - {fileID: 21300000, guid: 4cfc408caecceeb45989d991a2dccb3c, type: 3} + - {fileID: 21300000, guid: 6d5c34a95aa09ce4a9be9f7258a02c0d, type: 3} + - {fileID: 21300000, guid: d2c8a5a70bd6f11468f4d8ea151dec90, type: 3} + - {fileID: 21300000, guid: e7a0368af3f28b1438c458df61e691c1, type: 3} + - {fileID: 21300000, guid: bd1b1199c415fc642ae13055981f42aa, type: 3} + - {fileID: 21300000, guid: 3fd077b79b3018945961e206b6435268, type: 3} + portraitsFace: 1 + setSayDialog: {fileID: 0} + description: + effectAudioSource: {fileID: 0} + voiceAudioSource: {fileID: 0} +--- !u!1 &6090039181733664504 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2340942998621312522} + m_Layer: 0 + m_Name: Characters + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2340942998621312522 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6090039181733664504} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1123810462050084566} + - {fileID: 1282366423557382584} + - {fileID: 945468277329351483} + m_Father: {fileID: 7219169315093237358} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6188472031336187668 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1123810462050084566} + - component: {fileID: 7066739996686119588} + m_Layer: 0 + m_Name: John Watson + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1123810462050084566 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6188472031336187668} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2340942998621312522} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &7066739996686119588 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6188472031336187668} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 25fb867d2049d41f597aefdd6b19f598, type: 3} + m_Name: + m_EditorClassIdentifier: + nameText: John + nameColor: {r: 0.25882354, g: 0.25490198, b: 0.2627451, a: 1} + soundEffect: {fileID: 8300000, guid: 3f244b0ea8fc90446baebef62dfd285b, type: 3} + portraits: + - {fileID: 21300000, guid: 061fcd6caac25954287291fffde7cd2c, type: 3} + - {fileID: 21300000, guid: e8a9122c4dc10b14da3b625e1f2634c9, type: 3} + - {fileID: 21300000, guid: 016de568d0fe25e45bc32a6c01c0e456, type: 3} + - {fileID: 21300000, guid: 58bfb145092302e4083ef8a9e4eeb576, type: 3} + - {fileID: 21300000, guid: 38ccc1258813909498d806f622c3edb6, type: 3} + - {fileID: 21300000, guid: d8b4be5652abe8a438eb34290ae8c163, type: 3} + - {fileID: 21300000, guid: 03bc547cc0049594bae51f00903eedef, type: 3} + - {fileID: 21300000, guid: 059763178da334d408b6fa05fdea33c8, type: 3} + - {fileID: 21300000, guid: a6b4fd71ceffb6e4b9f3272ef8a5c2c3, type: 3} + - {fileID: 21300000, guid: b14a874c86c5f6345ae0f84ec697575f, type: 3} + - {fileID: 21300000, guid: d7af8fdea3ead3c4b8a4e54d014b255d, type: 3} + - {fileID: 21300000, guid: a79a4c2e96ba5fd418c637fe852e92d9, type: 3} + - {fileID: 21300000, guid: 7c9434f7e81b4264f9c56afc7180b8cf, type: 3} + - {fileID: 21300000, guid: 636094c1361ce1b44b4ace0fc587d758, type: 3} + - {fileID: 21300000, guid: ab808050bc535a643afaf4755050339e, type: 3} + - {fileID: 21300000, guid: 64376d4849cae324a80743317c8aa539, type: 3} + - {fileID: 21300000, guid: 96b0380b84e6f4546886b1d58ca0f280, type: 3} + - {fileID: 21300000, guid: cbc4101c77001344eb9d31ddf978001c, type: 3} + - {fileID: 21300000, guid: 59bb03809f57a71499d03ddac98c4203, type: 3} + - {fileID: 21300000, guid: 09b05a675bbbc4e4b8f3b031a1fb63f5, type: 3} + - {fileID: 21300000, guid: 6aedf8395780557418c4b84288657314, type: 3} + - {fileID: 21300000, guid: 3bcfc8e7b3c790e45b57cc6db1526225, type: 3} + - {fileID: 21300000, guid: bb66ae101c944a34e870fde3693b756d, type: 3} + - {fileID: 21300000, guid: d38d394fe4d92ae4da3d41e6ff3b0385, type: 3} + - {fileID: 21300000, guid: 267c50c3c26c7e24fa27aece06aad7cd, type: 3} + - {fileID: 21300000, guid: 59d7c816c1cfb9944b5a28dfbbfe2109, type: 3} + - {fileID: 21300000, guid: 3f74023835f9bd34d88b85ac04062465, type: 3} + - {fileID: 21300000, guid: 58ba1a99d9b61514984191565c416eca, type: 3} + - {fileID: 21300000, guid: 9ce6cf540ce2ece4dacce467ace3bca4, type: 3} + portraitsFace: 2 + setSayDialog: {fileID: 0} + description: + effectAudioSource: {fileID: 0} + voiceAudioSource: {fileID: 0} +--- !u!1 &6791370549346046927 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3362935726831509427} + - component: {fileID: 8683200359324697612} + - component: {fileID: 5849997879112985858} + m_Layer: 0 + m_Name: Offscreen Left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3362935726831509427 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6791370549346046927} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 489013176074204868} + m_RootOrder: 3 + 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: -1300, y: -1000} + m_SizeDelta: {x: 1000, y: 1000} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &8683200359324697612 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6791370549346046927} + m_CullTransparentMesh: 0 +--- !u!114 &5849997879112985858 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6791370549346046927} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: ea8f56c43254d41728f5ac4e8299b6c9, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &7983675687106066637 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6347048951836205081} + - component: {fileID: 8213247086094067991} + - component: {fileID: 8843320381864298734} + m_Layer: 0 + m_Name: Offscreen Right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6347048951836205081 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7983675687106066637} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 489013176074204868} + m_RootOrder: 4 + 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: 1300, y: -1000} + m_SizeDelta: {x: 1000, y: 1000} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &8213247086094067991 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7983675687106066637} + m_CullTransparentMesh: 0 +--- !u!114 &8843320381864298734 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7983675687106066637} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: ea8f56c43254d41728f5ac4e8299b6c9, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 diff --git a/Assets/Tests/Resources/Prefabs/StageSavingTests.prefab.meta b/Assets/Tests/Resources/Prefabs/StageSavingTests.prefab.meta new file mode 100644 index 000000000..fc16eeac2 --- /dev/null +++ b/Assets/Tests/Resources/Prefabs/StageSavingTests.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f987bec5af117cd4eb80db907b8b65a6 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/Resources/SaveFiles.meta b/Assets/Tests/Resources/SaveFiles.meta new file mode 100644 index 000000000..03b65568b --- /dev/null +++ b/Assets/Tests/Resources/SaveFiles.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a464511dd2e7e424dafb879eb8e2df1c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/Resources/SaveFiles/UIUnitOnly.sav b/Assets/Tests/Resources/SaveFiles/UIUnitOnly.sav new file mode 100644 index 000000000..c4321cabb --- /dev/null +++ b/Assets/Tests/Resources/SaveFiles/UIUnitOnly.sav @@ -0,0 +1 @@ +{"savedLastWritten":{"lastWrittenString":"2022-12-24T14:49:48.6102127-05:00"},"slotNumber":-1,"savedPlaytime":{"timeSpanString":"12:58:29"}} \ No newline at end of file diff --git a/Assets/Tests/Resources/SaveFiles/UIUnitOnly.sav.meta b/Assets/Tests/Resources/SaveFiles/UIUnitOnly.sav.meta new file mode 100644 index 000000000..577e23a74 --- /dev/null +++ b/Assets/Tests/Resources/SaveFiles/UIUnitOnly.sav.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: db9c3430f6b718449b9a23f4501dab99 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/SaveSlotControllerTests.unity b/Assets/Tests/SaveSlotControllerTests.unity new file mode 100644 index 000000000..cd8548829 --- /dev/null +++ b/Assets/Tests/SaveSlotControllerTests.unity @@ -0,0 +1,576 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &1431875185 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1431875187} + - component: {fileID: 1431875186} + m_Layer: 0 + m_Name: _FungusState + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1431875186 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431875185} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61dddfdc5e0e44ca298d8f46f7f5a915, type: 3} + m_Name: + m_EditorClassIdentifier: + selectedFlowchart: {fileID: 0} +--- !u!4 &1431875187 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431875185} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &2200373591350821697 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1550384696009058464, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1550384696009058464, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1550384696009058464, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1550384696009058464, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1550384696009058464, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1550384696009058464, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1550384696944552006, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1550384696944552006, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1550384696944552006, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1550384696944552006, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1550384696944552006, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1550384696944552006, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2200373591376173154, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2200373591766172700, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2200373591766172700, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_LocalPosition.x + value: 225.365 + objectReference: {fileID: 0} + - target: {fileID: 2200373591766172700, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_LocalPosition.y + value: 173.12427 + objectReference: {fileID: 0} + - target: {fileID: 2200373591766172700, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_LocalPosition.z + value: -45.581562 + objectReference: {fileID: 0} + - target: {fileID: 2200373591766172700, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2200373591766172700, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2200373591766172700, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2200373591766172700, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2200373591766172700, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2200373591766172700, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2200373591766172700, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2200373591766172701, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_Name + value: SaveSlotControllerTests + objectReference: {fileID: 0} + - target: {fileID: 2200373593256029180, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4233516513703808966, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4233516513703808966, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4233516513703808966, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4233516513703808966, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4233516513703808966, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4233516513703808966, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4783104487581879458, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4783104487581879458, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4783104487581879458, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4783104487581879458, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4783104487627725721, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4783104487627725721, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4783104487627725721, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4783104487627725721, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4783104487627725721, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4783104487627725721, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4783104488101083832, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4783104488101083832, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4783104488101083832, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4783104488101083832, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4783104488101083832, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4783104488101083832, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809201209662776, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809201209662776, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809201209662776, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809201209662776, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809201209662776, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809201209662776, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809201764215586, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809201764215586, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809201764215586, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809201764215586, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809201810586649, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809201810586649, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809201810586649, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809201810586649, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809201810586649, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809201810586649, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809202145156574, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809202145156574, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809202145156574, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809202145156574, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809202145156574, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809202145156574, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809202699971524, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809202699971524, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809202699971524, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809202699971524, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809202754141439, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809202754141439, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809202754141439, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809202754141439, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809202754141439, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7864809202754141439, guid: a497225501696ac4db0ee52b91b9be5c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a497225501696ac4db0ee52b91b9be5c, type: 3} diff --git a/Assets/Tests/SaveSlotControllerTests.unity.meta b/Assets/Tests/SaveSlotControllerTests.unity.meta new file mode 100644 index 000000000..fe512bd1f --- /dev/null +++ b/Assets/Tests/SaveSlotControllerTests.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a7214984901ec254c9d0d6ee85938740 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/manifest.json b/Packages/manifest.json index 520791833..1b83ff697 100755 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -2,7 +2,7 @@ "dependencies": { "com.unity.2d.sprite": "1.0.0", "com.unity.ext.nunit": "1.0.6", - "com.unity.ide.visualstudio": "2.0.11", + "com.unity.ide.visualstudio": "2.0.14", "com.unity.test-framework": "1.1.29", "com.unity.textmeshpro": "2.1.4", "com.unity.timeline": "1.2.18", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index a79064766..87afca577 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -14,7 +14,7 @@ "url": "https://packages.unity.com" }, "com.unity.ide.visualstudio": { - "version": "2.0.11", + "version": "2.0.14", "depth": 0, "source": "registry", "dependencies": { diff --git a/ProjectSettings/PackageManagerSettings.asset b/ProjectSettings/PackageManagerSettings.asset index 6920e3adb..9418901fc 100644 --- a/ProjectSettings/PackageManagerSettings.asset +++ b/ProjectSettings/PackageManagerSettings.asset @@ -9,9 +9,9 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} + m_Script: {fileID: 0} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: UnityEditor:UnityEditor.PackageManager.UI:PackageManagerProjectSettings m_ScopedRegistriesSettingsExpanded: 1 oneTimeWarningShown: 0 m_Registries: diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index ecaedcdb2..ae9c8eb06 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2019.4.29f1 -m_EditorVersionWithRevision: 2019.4.29f1 (0eeae20b1d82) +m_EditorVersion: 2019.4.12f1 +m_EditorVersionWithRevision: 2019.4.12f1 (225e826a680e)