clean up and adjustments on journey manager
This commit is contained in:
parent
24f1549dbd
commit
720ec7def1
@ -202,7 +202,7 @@ MonoBehaviour:
|
|||||||
manifest: {fileID: 11400000, guid: d2ff85c9d4e364f50aa65158f0b6daa2, type: 2}
|
manifest: {fileID: 11400000, guid: d2ff85c9d4e364f50aa65158f0b6daa2, type: 2}
|
||||||
inputManager: {fileID: 2567165502544804230}
|
inputManager: {fileID: 2567165502544804230}
|
||||||
configurationPersistenceService: {fileID: 11400000, guid: fd9dae561c8d640df9c516df6a7d3b37, type: 2}
|
configurationPersistenceService: {fileID: 11400000, guid: fd9dae561c8d640df9c516df6a7d3b37, type: 2}
|
||||||
gameDataPersistenceService: {fileID: 11400000, guid: 4715554a8f2cb477bbf691096f0903f9, type: 2}
|
gameSlotPersistenceService: {fileID: 11400000, guid: 4715554a8f2cb477bbf691096f0903f9, type: 2}
|
||||||
gameStateMachine: {fileID: 0}
|
gameStateMachine: {fileID: 0}
|
||||||
--- !u!1 &6646150498879786644
|
--- !u!1 &6646150498879786644
|
||||||
GameObject:
|
GameObject:
|
||||||
|
|||||||
@ -10,7 +10,7 @@ MonoBehaviour:
|
|||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_EditorHideFlags: 0
|
m_EditorHideFlags: 0
|
||||||
m_Script: {fileID: 11500000, guid: eff9bdb8be304d16ba26f48e68574f6c, type: 3}
|
m_Script: {fileID: 11500000, guid: eff9bdb8be304d16ba26f48e68574f6c, type: 3}
|
||||||
m_Name: Desktop Json FileHandler
|
m_Name: '# Desktop Json FileHandler'
|
||||||
m_EditorClassIdentifier: Intrepid General Utilities::Intrepid.SaveSystem.FileHandlers.Desktop.Json.DesktopJsonFileHandler
|
m_EditorClassIdentifier: Intrepid General Utilities::Intrepid.SaveSystem.FileHandlers.Desktop.Json.DesktopJsonFileHandler
|
||||||
saveDirectory: saves
|
saveDirectory: saves
|
||||||
fileSaveExtension: save
|
fileSaveExtension: save
|
||||||
@ -10,7 +10,7 @@ MonoBehaviour:
|
|||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_EditorHideFlags: 0
|
m_EditorHideFlags: 0
|
||||||
m_Script: {fileID: 11500000, guid: 9b65021a3594452a938f100496823840, type: 3}
|
m_Script: {fileID: 11500000, guid: 9b65021a3594452a938f100496823840, type: 3}
|
||||||
m_Name: Persistence Configuration Service
|
m_Name: Configuration Persistence Service
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Intrepid.Integration.Persistence.ConfigurationPersistenceService
|
m_EditorClassIdentifier: Assembly-CSharp::Intrepid.Integration.Persistence.ConfigurationPersistenceService
|
||||||
extraWaiting: 3
|
extraWaiting: 3
|
||||||
fileHandler: {fileID: 11400000, guid: 1deed874fc4f94a079572799b9b16936, type: 2}
|
fileHandler: {fileID: 11400000, guid: 1deed874fc4f94a079572799b9b16936, type: 2}
|
||||||
@ -10,13 +10,23 @@ MonoBehaviour:
|
|||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_EditorHideFlags: 0
|
m_EditorHideFlags: 0
|
||||||
m_Script: {fileID: 11500000, guid: 6dffc02d596841ba8bb1b992c4899a5f, type: 3}
|
m_Script: {fileID: 11500000, guid: 6dffc02d596841ba8bb1b992c4899a5f, type: 3}
|
||||||
m_Name: Persistence Game Data
|
m_Name: Game Slot Persistence Service
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Intrepid.Integration.Persistence.GameDataPersistenceService
|
m_EditorClassIdentifier: Assembly-CSharp::Intrepid.Integration.Persistence.GameDataPersistenceService
|
||||||
extraWaiting: 1
|
extraWaiting: 0
|
||||||
fileHandler: {fileID: 11400000, guid: 1deed874fc4f94a079572799b9b16936, type: 2}
|
fileHandler: {fileID: 11400000, guid: 1deed874fc4f94a079572799b9b16936, type: 2}
|
||||||
configurationPersistenceService: {fileID: 11400000, guid: fd9dae561c8d640df9c516df6a7d3b37, type: 2}
|
configurationPersistenceService: {fileID: 11400000, guid: fd9dae561c8d640df9c516df6a7d3b37, type: 2}
|
||||||
currentGameDataSaveFile:
|
currentGameSlotSaveFile:
|
||||||
fileId: game-slot-slot-01
|
fileId: game-slot-slot-01
|
||||||
savedAt: 06/25/2026 08:45:20
|
savedAt:
|
||||||
data:
|
slot:
|
||||||
seed: cba1fc77c68a4d91b5484226bd4e8e09
|
seed: 60b725d607804d63946d14821cf64b3a
|
||||||
|
SentinelData:
|
||||||
|
Version: 0
|
||||||
|
LatestSaveStation:
|
||||||
|
StageId:
|
||||||
|
DeploymentPoint:
|
||||||
|
X: 0
|
||||||
|
Y: 0
|
||||||
|
Z: 0
|
||||||
|
WorldData:
|
||||||
|
Version: 0
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 396cb6e3d4c94d5b86c3b4fbe34531f1, type: 3}
|
||||||
|
m_Name: Storage Assembler
|
||||||
|
m_EditorClassIdentifier: Integration::Intrepid.Integration.Persistence.SnapshotAssembler
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 455e03f48525c4cfdb6126c542e5a46a
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -14,6 +14,7 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier: Intrepid General Utilities::Intrepid.Utilities.SingletonScriptableObjectManifest
|
m_EditorClassIdentifier: Intrepid General Utilities::Intrepid.Utilities.SingletonScriptableObjectManifest
|
||||||
singletons:
|
singletons:
|
||||||
- {fileID: 11400000, guid: 9ea72f9e3cacb4fc495eff7431ec5551, type: 2}
|
- {fileID: 11400000, guid: 9ea72f9e3cacb4fc495eff7431ec5551, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 455e03f48525c4cfdb6126c542e5a46a, type: 2}
|
||||||
- {fileID: 11400000, guid: 53f1211059b4847a49bde1be4b8d166c, type: 2}
|
- {fileID: 11400000, guid: 53f1211059b4847a49bde1be4b8d166c, type: 2}
|
||||||
- {fileID: 11400000, guid: b8a6c320b2b504cd09b22319b1d587a2, type: 2}
|
- {fileID: 11400000, guid: b8a6c320b2b504cd09b22319b1d587a2, type: 2}
|
||||||
- {fileID: 11400000, guid: 84f36528c13ab48d6ae2ae41878f2f9f, type: 2}
|
- {fileID: 11400000, guid: 84f36528c13ab48d6ae2ae41878f2f9f, type: 2}
|
||||||
|
|||||||
@ -196,6 +196,7 @@ GameObject:
|
|||||||
- component: {fileID: 740018679}
|
- component: {fileID: 740018679}
|
||||||
- component: {fileID: 740018681}
|
- component: {fileID: 740018681}
|
||||||
- component: {fileID: 740018682}
|
- component: {fileID: 740018682}
|
||||||
|
- component: {fileID: 740018683}
|
||||||
- component: {fileID: 740018678}
|
- component: {fileID: 740018678}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: GameMachine
|
m_Name: GameMachine
|
||||||
@ -280,6 +281,21 @@ MonoBehaviour:
|
|||||||
gameState: 1
|
gameState: 1
|
||||||
scenes:
|
scenes:
|
||||||
- {fileID: 11400000, guid: 41c2e50c343c049c882780d00be51231, type: 2}
|
- {fileID: 11400000, guid: 41c2e50c343c049c882780d00be51231, type: 2}
|
||||||
|
--- !u!114 &740018683
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 740018677}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 42169628482e4d8ebaa2e5d2aa981721, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Core::Intrepid.Core.GameState.GameStateObject
|
||||||
|
gameState: 4
|
||||||
|
scenes:
|
||||||
|
- {fileID: 11400000, guid: e0f4c84d2634a47cebca071a217b5303, type: 2}
|
||||||
--- !u!1660057539 &9223372036854775807
|
--- !u!1660057539 &9223372036854775807
|
||||||
SceneRoots:
|
SceneRoots:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|||||||
@ -149,7 +149,7 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Intrepid.Temporary.FakeSceneManager
|
m_EditorClassIdentifier: Assembly-CSharp::Intrepid.Temporary.FakeSceneManager
|
||||||
subscriptionId: 240c1e17dada481686201db0d4f74fd4
|
subscriptionId: 240c1e17dada481686201db0d4f74fd4
|
||||||
nextState: 1
|
nextState: 4
|
||||||
delay: 0.5
|
delay: 0.5
|
||||||
curtainType: {fileID: 11400000, guid: d91043b858654867aaa66b20d678191d, type: 2}
|
curtainType: {fileID: 11400000, guid: d91043b858654867aaa66b20d678191d, type: 2}
|
||||||
sceneName: Boot
|
sceneName: Boot
|
||||||
|
|||||||
@ -484,7 +484,7 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Intrepid.Temporary.FakeSceneManager
|
m_EditorClassIdentifier: Assembly-CSharp::Intrepid.Temporary.FakeSceneManager
|
||||||
subscriptionId: 240c1e17dada481686201db0d4f74fd4
|
subscriptionId: 240c1e17dada481686201db0d4f74fd4
|
||||||
nextState: 5
|
nextState: 4
|
||||||
delay: 2
|
delay: 2
|
||||||
curtainType: {fileID: 11400000, guid: d91043b858654867aaa66b20d678191d, type: 2}
|
curtainType: {fileID: 11400000, guid: d91043b858654867aaa66b20d678191d, type: 2}
|
||||||
sceneName: Opening
|
sceneName: Opening
|
||||||
|
|||||||
8
Assets/Scenes/4. Slot Selection.meta
Normal file
8
Assets/Scenes/4. Slot Selection.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c9b8eda3976bd469d9e72da6cb4fc5ea
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
15
Assets/Scenes/4. Slot Selection/4. SlotSelection.asset
Normal file
15
Assets/Scenes/4. Slot Selection/4. SlotSelection.asset
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e917eef1f66a43e0ad6a399f4a5fcb08, type: 3}
|
||||||
|
m_Name: 4. SlotSelection
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::Intrepid.Core.Tags.SceneTag
|
||||||
|
code: 4. SlotSelection
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e0f4c84d2634a47cebca071a217b5303
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
615
Assets/Scenes/4. Slot Selection/4. SlotSelection.unity
Normal file
615
Assets/Scenes/4. Slot Selection/4. SlotSelection.unity
Normal file
@ -0,0 +1,615 @@
|
|||||||
|
%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: 10
|
||||||
|
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: 0
|
||||||
|
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
|
||||||
|
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 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_UseRadianceAmbientProbe: 0
|
||||||
|
--- !u!157 &3
|
||||||
|
LightmapSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 13
|
||||||
|
m_BakeOnSceneLoad: 0
|
||||||
|
m_GISettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_BounceScale: 1
|
||||||
|
m_IndirectOutputScale: 1
|
||||||
|
m_AlbedoBoost: 1
|
||||||
|
m_EnvironmentLightingMode: 0
|
||||||
|
m_EnableBakedLightmaps: 1
|
||||||
|
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_ReflectionCompression: 2
|
||||||
|
m_MixedBakeMode: 2
|
||||||
|
m_BakeBackend: 2
|
||||||
|
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: 1
|
||||||
|
m_PVRFilteringGaussRadiusAO: 1
|
||||||
|
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
|
||||||
|
m_PVRFilteringAtrousPositionSigmaIndirect: 2
|
||||||
|
m_PVRFilteringAtrousPositionSigmaAO: 1
|
||||||
|
m_ExportTrainingData: 0
|
||||||
|
m_TrainingDataDestination: TrainingData
|
||||||
|
m_LightProbeSampleCountMultiplier: 4
|
||||||
|
m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_LightingSettings: {fileID: 0}
|
||||||
|
--- !u!196 &4
|
||||||
|
NavMeshSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_BuildSettings:
|
||||||
|
serializedVersion: 3
|
||||||
|
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
|
||||||
|
buildHeightMesh: 0
|
||||||
|
maxJobWorkers: 0
|
||||||
|
preserveTilesOutsideBounds: 0
|
||||||
|
debug:
|
||||||
|
m_Flags: 0
|
||||||
|
m_NavMeshData: {fileID: 0}
|
||||||
|
--- !u!1 &45248000
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 45248002}
|
||||||
|
- component: {fileID: 45248001}
|
||||||
|
- component: {fileID: 45248003}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: FakeSceneManager
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &45248001
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 45248000}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 5ce8a81b63f84fc2a163369a0e2824f0, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::Intrepid.Temporary.FakeSceneManager
|
||||||
|
subscriptionId: 240c1e17dada481686201db0d4f74fd4
|
||||||
|
nextState: 5
|
||||||
|
delay: 2
|
||||||
|
curtainType: {fileID: 11400000, guid: d91043b858654867aaa66b20d678191d, type: 2}
|
||||||
|
sceneName: Slot Selection
|
||||||
|
textMeshPro: {fileID: 1014920448}
|
||||||
|
startOnBootstrap: 0
|
||||||
|
backStageProcessor: {fileID: 0}
|
||||||
|
--- !u!4 &45248002
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 45248000}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 986300994}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &45248003
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 45248000}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 1100e436cf8b41549c11bf1b24ec387f, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::Temporary.FakeSlotSelection
|
||||||
|
gameDataSlotType: 1
|
||||||
|
gameSlotPersistenceService: {fileID: 11400000, guid: 4715554a8f2cb477bbf691096f0903f9, type: 2}
|
||||||
|
--- !u!1001 &49317937
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransformParent: {fileID: 0}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: 1110237080051008694, guid: 774b83ee4bf84c4c9b531c2a6350b8a5, type: 3}
|
||||||
|
propertyPath: m_IsActive
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6646150498868371415, guid: 774b83ee4bf84c4c9b531c2a6350b8a5, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6646150498868371415, guid: 774b83ee4bf84c4c9b531c2a6350b8a5, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6646150498868371415, guid: 774b83ee4bf84c4c9b531c2a6350b8a5, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6646150498868371415, guid: 774b83ee4bf84c4c9b531c2a6350b8a5, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6646150498868371415, guid: 774b83ee4bf84c4c9b531c2a6350b8a5, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6646150498868371415, guid: 774b83ee4bf84c4c9b531c2a6350b8a5, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6646150498868371415, guid: 774b83ee4bf84c4c9b531c2a6350b8a5, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6646150498868371415, guid: 774b83ee4bf84c4c9b531c2a6350b8a5, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6646150498868371415, guid: 774b83ee4bf84c4c9b531c2a6350b8a5, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6646150498868371415, guid: 774b83ee4bf84c4c9b531c2a6350b8a5, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6646150498868371416, guid: 774b83ee4bf84c4c9b531c2a6350b8a5, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: GameManager
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_RemovedGameObjects: []
|
||||||
|
m_AddedGameObjects: []
|
||||||
|
m_AddedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: 774b83ee4bf84c4c9b531c2a6350b8a5, type: 3}
|
||||||
|
--- !u!1 &88281136
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 88281140}
|
||||||
|
- component: {fileID: 88281139}
|
||||||
|
- component: {fileID: 88281138}
|
||||||
|
- component: {fileID: 88281137}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Camera
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &88281137
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 88281136}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.UniversalAdditionalCameraData
|
||||||
|
m_RenderShadows: 1
|
||||||
|
m_RequiresDepthTextureOption: 2
|
||||||
|
m_RequiresOpaqueTextureOption: 2
|
||||||
|
m_CameraType: 0
|
||||||
|
m_Cameras: []
|
||||||
|
m_RendererIndex: -1
|
||||||
|
m_VolumeLayerMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 1
|
||||||
|
m_VolumeTrigger: {fileID: 0}
|
||||||
|
m_VolumeFrameworkUpdateModeOption: 2
|
||||||
|
m_RenderPostProcessing: 0
|
||||||
|
m_Antialiasing: 0
|
||||||
|
m_AntialiasingQuality: 2
|
||||||
|
m_StopNaN: 0
|
||||||
|
m_Dithering: 0
|
||||||
|
m_ClearDepth: 1
|
||||||
|
m_AllowXRRendering: 1
|
||||||
|
m_AllowHDROutput: 1
|
||||||
|
m_UseScreenCoordOverride: 0
|
||||||
|
m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_RequiresDepthTexture: 0
|
||||||
|
m_RequiresColorTexture: 0
|
||||||
|
m_TaaSettings:
|
||||||
|
m_Quality: 3
|
||||||
|
m_FrameInfluence: 0.1
|
||||||
|
m_JitterScale: 1
|
||||||
|
m_MipBias: 0
|
||||||
|
m_VarianceClampScale: 0.9
|
||||||
|
m_ContrastAdaptiveSharpening: 0
|
||||||
|
m_Version: 2
|
||||||
|
--- !u!81 &88281138
|
||||||
|
AudioListener:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 88281136}
|
||||||
|
m_Enabled: 1
|
||||||
|
--- !u!20 &88281139
|
||||||
|
Camera:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 88281136}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 2
|
||||||
|
m_ClearFlags: 2
|
||||||
|
m_BackGroundColor: {r: 0.8490566, g: 0.56470275, b: 0.7071374, a: 1}
|
||||||
|
m_projectionMatrixMode: 1
|
||||||
|
m_GateFitMode: 2
|
||||||
|
m_FOVAxisMode: 0
|
||||||
|
m_Iso: 200
|
||||||
|
m_ShutterSpeed: 0.005
|
||||||
|
m_Aperture: 16
|
||||||
|
m_FocusDistance: 10
|
||||||
|
m_FocalLength: 50
|
||||||
|
m_BladeCount: 5
|
||||||
|
m_Curvature: {x: 2, y: 11}
|
||||||
|
m_BarrelClipping: 0.25
|
||||||
|
m_Anamorphism: 0
|
||||||
|
m_SensorSize: {x: 36, y: 24}
|
||||||
|
m_LensShift: {x: 0, y: 0}
|
||||||
|
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: 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!4 &88281140
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 88281136}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1 &986300993
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 986300994}
|
||||||
|
- component: {fileID: 986300996}
|
||||||
|
- component: {fileID: 986300995}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Canvas
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &986300994
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 986300993}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 0, y: 0, z: 0}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 1014920450}
|
||||||
|
m_Father: {fileID: 45248002}
|
||||||
|
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!114 &986300995
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 986300993}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.CanvasScaler
|
||||||
|
m_UiScaleMode: 1
|
||||||
|
m_ReferencePixelsPerUnit: 100
|
||||||
|
m_ScaleFactor: 1
|
||||||
|
m_ReferenceResolution: {x: 1920, y: 1080}
|
||||||
|
m_ScreenMatchMode: 0
|
||||||
|
m_MatchWidthOrHeight: 0.5
|
||||||
|
m_PhysicalUnit: 3
|
||||||
|
m_FallbackScreenDPI: 96
|
||||||
|
m_DefaultSpriteDPI: 96
|
||||||
|
m_DynamicPixelsPerUnit: 1
|
||||||
|
m_PresetInfoIsWorld: 0
|
||||||
|
--- !u!223 &986300996
|
||||||
|
Canvas:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 986300993}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 3
|
||||||
|
m_RenderMode: 0
|
||||||
|
m_Camera: {fileID: 0}
|
||||||
|
m_PlaneDistance: 100
|
||||||
|
m_PixelPerfect: 0
|
||||||
|
m_ReceivesEvents: 1
|
||||||
|
m_OverrideSorting: 0
|
||||||
|
m_OverridePixelPerfect: 0
|
||||||
|
m_SortingBucketNormalizedSize: 0
|
||||||
|
m_VertexColorAlwaysGammaSpace: 0
|
||||||
|
m_AdditionalShaderChannelsFlag: 25
|
||||||
|
m_UpdateRectTransformForStandalone: 0
|
||||||
|
m_SortingLayerID: 0
|
||||||
|
m_SortingOrder: 0
|
||||||
|
m_TargetDisplay: 0
|
||||||
|
--- !u!1 &1014920447
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1014920450}
|
||||||
|
- component: {fileID: 1014920449}
|
||||||
|
- component: {fileID: 1014920448}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Text
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &1014920448
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1014920447}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_text:
|
||||||
|
m_isRightToLeft: 0
|
||||||
|
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
|
||||||
|
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
|
||||||
|
m_fontSharedMaterials: []
|
||||||
|
m_fontMaterial: {fileID: 0}
|
||||||
|
m_fontMaterials: []
|
||||||
|
m_fontColor32:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4294967295
|
||||||
|
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_enableVertexGradient: 0
|
||||||
|
m_colorMode: 3
|
||||||
|
m_fontColorGradient:
|
||||||
|
topLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
topRight: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
bottomRight: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_fontColorGradientPreset: {fileID: 0}
|
||||||
|
m_spriteAsset: {fileID: 0}
|
||||||
|
m_tintAllSprites: 0
|
||||||
|
m_StyleSheet: {fileID: 0}
|
||||||
|
m_TextStyleHashCode: -1183493901
|
||||||
|
m_overrideHtmlColors: 0
|
||||||
|
m_faceColor:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4294967295
|
||||||
|
m_fontSize: 36
|
||||||
|
m_fontSizeBase: 36
|
||||||
|
m_fontWeight: 400
|
||||||
|
m_enableAutoSizing: 1
|
||||||
|
m_fontSizeMin: 18
|
||||||
|
m_fontSizeMax: 72
|
||||||
|
m_fontStyle: 0
|
||||||
|
m_HorizontalAlignment: 1
|
||||||
|
m_VerticalAlignment: 256
|
||||||
|
m_textAlignment: 65535
|
||||||
|
m_characterSpacing: 0
|
||||||
|
m_characterHorizontalScale: 1
|
||||||
|
m_wordSpacing: 0
|
||||||
|
m_lineSpacing: 0
|
||||||
|
m_lineSpacingMax: 0
|
||||||
|
m_paragraphSpacing: 0
|
||||||
|
m_charWidthMaxAdj: 0
|
||||||
|
m_TextWrappingMode: 1
|
||||||
|
m_wordWrappingRatios: 0.4
|
||||||
|
m_overflowMode: 0
|
||||||
|
m_linkedTextComponent: {fileID: 0}
|
||||||
|
parentLinkedComponent: {fileID: 0}
|
||||||
|
m_enableKerning: 0
|
||||||
|
m_ActiveFontFeatures: 6e72656b
|
||||||
|
m_enableExtraPadding: 0
|
||||||
|
checkPaddingRequired: 0
|
||||||
|
m_isRichText: 1
|
||||||
|
m_EmojiFallbackSupport: 1
|
||||||
|
m_parseCtrlCharacters: 1
|
||||||
|
m_isOrthographic: 1
|
||||||
|
m_isCullingEnabled: 0
|
||||||
|
m_horizontalMapping: 0
|
||||||
|
m_verticalMapping: 0
|
||||||
|
m_uvLineOffset: 0
|
||||||
|
m_geometrySortingOrder: 0
|
||||||
|
m_IsTextObjectScaleStatic: 0
|
||||||
|
m_VertexBufferAutoSizeReduction: 0
|
||||||
|
m_useMaxVisibleDescender: 1
|
||||||
|
m_pageToDisplay: 1
|
||||||
|
m_margin: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_isUsingLegacyAnimationComponent: 0
|
||||||
|
m_isVolumetricText: 0
|
||||||
|
m_hasFontAssetChanged: 0
|
||||||
|
m_baseMaterial: {fileID: 0}
|
||||||
|
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
--- !u!222 &1014920449
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1014920447}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!224 &1014920450
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1014920447}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 986300994}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0.5}
|
||||||
|
m_AnchorMax: {x: 1, y: 0.5}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: -500, y: 100}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!1660057539 &9223372036854775807
|
||||||
|
SceneRoots:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_Roots:
|
||||||
|
- {fileID: 45248002}
|
||||||
|
- {fileID: 88281140}
|
||||||
|
- {fileID: 49317937}
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e8820d766dca14db2a5ce1fdfdcf976b
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
File diff suppressed because one or more lines are too long
@ -33,16 +33,25 @@ namespace Intrepid.Core.Entities
|
|||||||
|
|
||||||
public EntitySensor EntitySensor => entitySensor;
|
public EntitySensor EntitySensor => entitySensor;
|
||||||
|
|
||||||
protected void OnEnable()
|
protected virtual void OnEnable()
|
||||||
{
|
{
|
||||||
UpdatableCollection.Instance.Add(this);
|
UpdatableCollection.Instance.Add(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnDisable()
|
protected virtual void OnDisable()
|
||||||
{
|
{
|
||||||
UpdatableCollection.Instance?.Remove(Id);
|
UpdatableCollection.Instance?.Remove(Id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual void WhenEntering()
|
||||||
|
{
|
||||||
|
EntityBrain.WhenEntering();
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual void WhenExiting()
|
||||||
|
{
|
||||||
|
EntityBrain.WhenExiting();
|
||||||
|
}
|
||||||
|
|
||||||
public virtual void UpdateFromUpdatable()
|
public virtual void UpdateFromUpdatable()
|
||||||
{
|
{
|
||||||
|
|||||||
@ -12,6 +12,8 @@ namespace Intrepid.Core.Entities
|
|||||||
public string Id => SubscriptionId;
|
public string Id => SubscriptionId;
|
||||||
protected Entity RootEntity => rootEntity;
|
protected Entity RootEntity => rootEntity;
|
||||||
|
|
||||||
|
public abstract void WhenEntering();
|
||||||
|
public abstract void WhenExiting();
|
||||||
public abstract void UpdateFromUpdatable();
|
public abstract void UpdateFromUpdatable();
|
||||||
public abstract void LateUpdateFromUpdatable();
|
public abstract void LateUpdateFromUpdatable();
|
||||||
public abstract void FixedUpdateFromUpdatable();
|
public abstract void FixedUpdateFromUpdatable();
|
||||||
|
|||||||
@ -17,7 +17,7 @@ namespace Intrepid.Core
|
|||||||
[GroupInjections, SerializeField] private SingletonScriptableObjectManifest manifest;
|
[GroupInjections, SerializeField] private SingletonScriptableObjectManifest manifest;
|
||||||
[GroupInjections, SerializeField] private InputManager inputManager;
|
[GroupInjections, SerializeField] private InputManager inputManager;
|
||||||
[GroupInjections, SerializeField] private ConfigurationPersistenceService configurationPersistenceService;
|
[GroupInjections, SerializeField] private ConfigurationPersistenceService configurationPersistenceService;
|
||||||
[GroupInjections, SerializeField] private GameDataPersistenceService gameDataPersistenceService;
|
[GroupInjections, SerializeField] private GameSlotPersistenceService gameSlotPersistenceService;
|
||||||
[GroupInjections, SerializeField] private GameStateMachine gameStateMachine;
|
[GroupInjections, SerializeField] private GameStateMachine gameStateMachine;
|
||||||
|
|
||||||
public static GameManager Instance => (GameManager)Proxy.Instance.GameManager;
|
public static GameManager Instance => (GameManager)Proxy.Instance.GameManager;
|
||||||
@ -25,7 +25,7 @@ namespace Intrepid.Core
|
|||||||
private GameStateMachine GameStateMachine => gameStateMachine;
|
private GameStateMachine GameStateMachine => gameStateMachine;
|
||||||
|
|
||||||
public ConfigurationPersistenceService ConfigurationPersistenceService => configurationPersistenceService;
|
public ConfigurationPersistenceService ConfigurationPersistenceService => configurationPersistenceService;
|
||||||
public GameDataPersistenceService GameDataPersistenceService => gameDataPersistenceService;
|
public GameSlotPersistenceService GameSlotPersistenceService => gameSlotPersistenceService;
|
||||||
|
|
||||||
public override void BootStrap()
|
public override void BootStrap()
|
||||||
{
|
{
|
||||||
@ -36,6 +36,7 @@ namespace Intrepid.Core
|
|||||||
Cursor.visible = false;
|
Cursor.visible = false;
|
||||||
InputService.Instance.ChangeInputSchema(InputSchema.None);
|
InputService.Instance.ChangeInputSchema(InputSchema.None);
|
||||||
DLogger.LogDebug($"resolution {InternalWidth} x {InternalHeight}");
|
DLogger.LogDebug($"resolution {InternalWidth} x {InternalHeight}");
|
||||||
|
// GameSlotPersistenceService.ClearGameData();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ChangeGameStateTo(
|
public void ChangeGameStateTo(
|
||||||
|
|||||||
3
Assets/Scripts/Intrepid/Gameplay/Data.meta
Normal file
3
Assets/Scripts/Intrepid/Gameplay/Data.meta
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1d6122927bd7457fac25b53c91f660eb
|
||||||
|
timeCreated: 1782403921
|
||||||
3
Assets/Scripts/Intrepid/Gameplay/Data/Conversion.meta
Normal file
3
Assets/Scripts/Intrepid/Gameplay/Data/Conversion.meta
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: dbf40c82544947d882cc73be4f1ed6a1
|
||||||
|
timeCreated: 1782403928
|
||||||
@ -0,0 +1,6 @@
|
|||||||
|
namespace Intrepid.Gameplay.Data.Conversion
|
||||||
|
{
|
||||||
|
public interface Converter<A, B> : Marshaler<A, B>, Unmarshaler<A, B>
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 059d79fa41b8484ea74b8a5ba952f8a4
|
||||||
|
timeCreated: 1782404056
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
namespace Intrepid.Gameplay.Data.Conversion
|
||||||
|
{
|
||||||
|
public static class Converters
|
||||||
|
{
|
||||||
|
public static Vector3DTOConverter Vector3 { get; } = new();
|
||||||
|
public static LatestSaveStationDTOConverter LatestSaveStation { get; } = new();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7f54c16bb2a74d6a8123eeef4045c973
|
||||||
|
timeCreated: 1782404294
|
||||||
@ -0,0 +1,31 @@
|
|||||||
|
using System;
|
||||||
|
using Intrepid.Gameplay.Entities.Player.Sentinel.Events;
|
||||||
|
using Intrepid.Integration.Persistence.DTOs;
|
||||||
|
|
||||||
|
namespace Intrepid.Gameplay.Data.Conversion
|
||||||
|
{
|
||||||
|
public class LatestSaveStationDTOConverter : Marshaler<LatestSaveStationDTO, LatestSaveStationEvent>
|
||||||
|
{
|
||||||
|
public LatestSaveStationDTO Marshal(LatestSaveStationEvent e)
|
||||||
|
{
|
||||||
|
if (e is null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
var data = new LatestSaveStationDTO();
|
||||||
|
|
||||||
|
if (e.StageTag.IsNull() || string.IsNullOrWhiteSpace(e.StageTag.StageId))
|
||||||
|
{
|
||||||
|
data.StageId = null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
data.StageId = e.StageTag.StageId;
|
||||||
|
}
|
||||||
|
|
||||||
|
data.DeploymentPoint = Converters.Vector3.Marshal(e.DeploymentPoint);
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4fd8c09356874683a62f2dc62eca8225
|
||||||
|
timeCreated: 1782458358
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
namespace Intrepid.Gameplay.Data.Conversion
|
||||||
|
{
|
||||||
|
public interface Marshaler<out A, in B>
|
||||||
|
{
|
||||||
|
A Marshal(B b);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 756a95987c3b4615ab76249e1266ccb0
|
||||||
|
timeCreated: 1782458425
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
namespace Intrepid.Gameplay.Data.Conversion
|
||||||
|
{
|
||||||
|
public interface Unmarshaler<in A, out B>
|
||||||
|
{
|
||||||
|
B Unmarshal(A a);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 98cca2f828724235a83adb579ae790d3
|
||||||
@ -0,0 +1,23 @@
|
|||||||
|
using Intrepid.Integration.Persistence.DTOs;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Intrepid.Gameplay.Data.Conversion
|
||||||
|
{
|
||||||
|
public class Vector3DTOConverter : Converter<Vector3DTO, Vector3>
|
||||||
|
{
|
||||||
|
public Vector3DTO Marshal(Vector3 v)
|
||||||
|
{
|
||||||
|
return new Vector3DTO
|
||||||
|
{
|
||||||
|
X = v.x,
|
||||||
|
Y = v.y,
|
||||||
|
Z = v.z
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vector3 Unmarshal(Vector3DTO v)
|
||||||
|
{
|
||||||
|
return new Vector3(v.X, v.Y, v.Z);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 84b0afcc92eb4e588eb82be4f0e8d483
|
||||||
|
timeCreated: 1782403942
|
||||||
72
Assets/Scripts/Intrepid/Gameplay/Data/SentinelDataStorage.cs
Normal file
72
Assets/Scripts/Intrepid/Gameplay/Data/SentinelDataStorage.cs
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using Intrepid.Diagnostics;
|
||||||
|
using Intrepid.Gameplay.Data.Conversion;
|
||||||
|
using Intrepid.Gameplay.Entities.Player.Sentinel.Events;
|
||||||
|
using Intrepid.Gameplay.Journey;
|
||||||
|
using Intrepid.Gameplay.Journey.Messages;
|
||||||
|
using Intrepid.Integration.Persistence;
|
||||||
|
using Intrepid.Integration.Persistence.DTOs;
|
||||||
|
|
||||||
|
namespace Intrepid.Gameplay.Data
|
||||||
|
{
|
||||||
|
public class SentinelDataStorage : AbstractDataStorage<SentinelDataStorage, SentinelDTO>
|
||||||
|
{
|
||||||
|
public LatestSaveStationDTO LatestSaveStationData { get; private set; }
|
||||||
|
public bool HasLatestSaveStationData => LatestSaveStationData is not null;
|
||||||
|
public LoadJourneyRequest LoadJourneyRequest => new()
|
||||||
|
{
|
||||||
|
StageTag = JourneyService.Instance.GetStageTag(LatestSaveStationData.StageId),
|
||||||
|
DeploymentPoint = Converters.Vector3.Unmarshal(LatestSaveStationData.DeploymentPoint),
|
||||||
|
};
|
||||||
|
|
||||||
|
public void SetLatestSaveStationData(LatestSaveStationEvent e)
|
||||||
|
{
|
||||||
|
LatestSaveStationData = Converters.LatestSaveStation.Marshal(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int Order => 0;
|
||||||
|
|
||||||
|
protected override void ValidateDataOrError(List<string> errors)
|
||||||
|
{
|
||||||
|
ValidateLatestSaveStationEvent();
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
void ValidateLatestSaveStationEvent()
|
||||||
|
{
|
||||||
|
if (LatestSaveStationData is null)
|
||||||
|
{
|
||||||
|
errors.Add("LatestSaveStationData should not be null");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (LatestSaveStationData.StageId is null)
|
||||||
|
{
|
||||||
|
errors.Add("LatestSaveStationData/StageId should not be null or empty");
|
||||||
|
}
|
||||||
|
if (LatestSaveStationData.DeploymentPoint is null)
|
||||||
|
{
|
||||||
|
errors.Add("LatestSaveStationData/DeploymentPoint should not be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override SentinelDTO Marshal()
|
||||||
|
{
|
||||||
|
return new SentinelDTO
|
||||||
|
{
|
||||||
|
LatestSaveStation = LatestSaveStationData,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Unmarshal(GameDataSlotType slotType, GameSlotDTO gameSlot)
|
||||||
|
{
|
||||||
|
if (GameDataSlotType.None == slotType)
|
||||||
|
{
|
||||||
|
DLogger.LogDebug("game slot is empty / running tests?");
|
||||||
|
LatestSaveStationData = null;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
LatestSaveStationData = gameSlot.SentinelData.LatestSaveStation;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1ed708114a7843619a32a0d38d32a55f
|
||||||
|
timeCreated: 1782452250
|
||||||
27
Assets/Scripts/Intrepid/Gameplay/Data/WorldDataStorage.cs
Normal file
27
Assets/Scripts/Intrepid/Gameplay/Data/WorldDataStorage.cs
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using Intrepid.Integration.Persistence;
|
||||||
|
using Intrepid.Integration.Persistence.DTOs;
|
||||||
|
|
||||||
|
namespace Intrepid.Gameplay.Data
|
||||||
|
{
|
||||||
|
public class WorldDataStorage : AbstractDataStorage<WorldDataStorage, WorldDTO>
|
||||||
|
{
|
||||||
|
public override int Order => 1;
|
||||||
|
|
||||||
|
protected override void ValidateDataOrError(List<string> errors)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override WorldDTO Marshal()
|
||||||
|
{
|
||||||
|
return new WorldDTO
|
||||||
|
{
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Unmarshal(GameDataSlotType slotType, GameSlotDTO gameSlot)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9a8a458b92c04959bb71a74c7f2c76e0
|
||||||
|
timeCreated: 1782451748
|
||||||
@ -1,7 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using Intrepid.Diagnostics;
|
||||||
using Intrepid.Localization;
|
using Intrepid.Localization;
|
||||||
using Intrepid.Structures;
|
using Intrepid.Structures;
|
||||||
using Intrepid.Utilities;
|
|
||||||
using Sirenix.OdinInspector;
|
using Sirenix.OdinInspector;
|
||||||
|
|
||||||
namespace Intrepid.Gameplay.Entities.Player.ActionBelt
|
namespace Intrepid.Gameplay.Entities.Player.ActionBelt
|
||||||
@ -17,7 +17,7 @@ namespace Intrepid.Gameplay.Entities.Player.ActionBelt
|
|||||||
public Parameter[] DescriptionParams { get; set; }
|
public Parameter[] DescriptionParams { get; set; }
|
||||||
public Func<ActionIdentifier, bool> Callback { get; set; } = actionInfo =>
|
public Func<ActionIdentifier, bool> Callback { get; set; } = actionInfo =>
|
||||||
{
|
{
|
||||||
Dbg.Normal.Log("Callback - Action Fired: {0}", actionInfo.Id);
|
DLogger.LogDebug("Callback - Action Fired: {0}", actionInfo.Id);
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using Intrepid.Diagnostics;
|
||||||
using Intrepid.GameManagers;
|
using Intrepid.GameManagers;
|
||||||
using Intrepid.Gameplay.Entities.Player.PDA.Inputs;
|
using Intrepid.Gameplay.Entities.Player.PDA.Inputs;
|
||||||
using Intrepid.Sound;
|
using Intrepid.Sound;
|
||||||
using Intrepid.Utilities;
|
|
||||||
using TMPro;
|
using TMPro;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
@ -121,7 +121,7 @@ namespace Intrepid.Gameplay.Entities.Player.PDA.UI.Applications.MusicPlayer
|
|||||||
{
|
{
|
||||||
if (soundMusicData is null)
|
if (soundMusicData is null)
|
||||||
{
|
{
|
||||||
Dbg.Always.LogError("there is no music data selected");
|
DLogger.LogError("there is no music data selected");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,9 +2,9 @@ using Intrepid.Gameplay.Journey;
|
|||||||
using Intrepid.SimpleEvents;
|
using Intrepid.SimpleEvents;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Intrepid.Gameplay.Messages.Events
|
namespace Intrepid.Gameplay.Entities.Player.Sentinel.Events
|
||||||
{
|
{
|
||||||
public class SaveStationActionExecutedEvent : IEventBase
|
public class LatestSaveStationEvent : IEventBase
|
||||||
{
|
{
|
||||||
public StageTag StageTag { get; set; }
|
public StageTag StageTag { get; set; }
|
||||||
public Vector3 DeploymentPoint { get; set; }
|
public Vector3 DeploymentPoint { get; set; }
|
||||||
@ -5,12 +5,14 @@ using Intrepid.Core.Entities;
|
|||||||
using Intrepid.Core.Entities.Messages;
|
using Intrepid.Core.Entities.Messages;
|
||||||
using Intrepid.Core.TimeControl;
|
using Intrepid.Core.TimeControl;
|
||||||
using Intrepid.GameManagers;
|
using Intrepid.GameManagers;
|
||||||
|
using Intrepid.Gameplay.Data;
|
||||||
using Intrepid.Gameplay.Entities.Player.ActionBelt;
|
using Intrepid.Gameplay.Entities.Player.ActionBelt;
|
||||||
using Intrepid.Gameplay.Entities.Player.Sentinel.Cadence;
|
using Intrepid.Gameplay.Entities.Player.Sentinel.Cadence;
|
||||||
|
using Intrepid.Gameplay.Entities.Player.Sentinel.Events;
|
||||||
using Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine;
|
using Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine;
|
||||||
using Intrepid.Gameplay.Flooring.Events;
|
using Intrepid.Gameplay.Flooring.Events;
|
||||||
using Intrepid.Gameplay.Journey.Messages.Events;
|
using Intrepid.Gameplay.Journey.Messages.Events;
|
||||||
using Intrepid.Gameplay.Messages.Events;
|
using Intrepid.Integration.Persistence;
|
||||||
using Intrepid.Structures;
|
using Intrepid.Structures;
|
||||||
using Intrepid.Utilities;
|
using Intrepid.Utilities;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
@ -86,12 +88,22 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel
|
|||||||
});
|
});
|
||||||
ChangeState(SentinelStateType.Idle);
|
ChangeState(SentinelStateType.Idle);
|
||||||
});
|
});
|
||||||
Subscribe<SaveStationActionExecutedEvent>(e =>
|
Subscribe<LatestSaveStationEvent>(e =>
|
||||||
{
|
{
|
||||||
ChangeState(SentinelStateType.SavingStation, ("SaveStationActionExecutedEvent", e));
|
SentinelDataStorage.Instance.SetLatestSaveStationData(e);
|
||||||
|
ChangeState(SentinelStateType.SavingStation,
|
||||||
|
(SentinelConstants.Parameters.DeploymentPoint, e.DeploymentPoint));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void WhenEntering()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void WhenExiting()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
public override void UpdateFromUpdatable()
|
public override void UpdateFromUpdatable()
|
||||||
{
|
{
|
||||||
if (!IsEnabled) return;
|
if (!IsEnabled) return;
|
||||||
|
|||||||
@ -16,6 +16,7 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel
|
|||||||
public static class Parameters
|
public static class Parameters
|
||||||
{
|
{
|
||||||
public const string KnockdownForce = "KnockdownForce";
|
public const string KnockdownForce = "KnockdownForce";
|
||||||
|
public const string DeploymentPoint = "DeploymentPoint";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3,7 +3,6 @@ using Intrepid.Core.Grounding;
|
|||||||
using Intrepid.GameManagers;
|
using Intrepid.GameManagers;
|
||||||
using Intrepid.Gameplay.Entities.Player.Sentinel.Events;
|
using Intrepid.Gameplay.Entities.Player.Sentinel.Events;
|
||||||
using Intrepid.Gameplay.Flooring;
|
using Intrepid.Gameplay.Flooring;
|
||||||
using Intrepid.Gameplay.Messages.Events;
|
|
||||||
using Intrepid.Utilities;
|
using Intrepid.Utilities;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
@ -65,6 +64,11 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel
|
|||||||
MotorPhysicsContact.enabled = false;
|
MotorPhysicsContact.enabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
RetreatEntity();
|
||||||
|
}
|
||||||
|
|
||||||
public void ChangeOrientation(Vector2 direction)
|
public void ChangeOrientation(Vector2 direction)
|
||||||
{
|
{
|
||||||
if (direction.sqrMagnitude <= GonConstants.CommonZeroSqrt)
|
if (direction.sqrMagnitude <= GonConstants.CommonZeroSqrt)
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
using Intrepid.Gameplay.Entities.Player.Sentinel.Events;
|
using Intrepid.Gameplay.Entities.Player.Sentinel.Events;
|
||||||
using Intrepid.Gameplay.Messages.Events;
|
|
||||||
using Intrepid.Structures;
|
using Intrepid.Structures;
|
||||||
using Intrepid.Utilities;
|
using Intrepid.Utilities;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|||||||
@ -1,11 +1,7 @@
|
|||||||
|
using Intrepid.Core;
|
||||||
using Intrepid.Diagnostics;
|
using Intrepid.Diagnostics;
|
||||||
using Intrepid.GameManagers;
|
|
||||||
using Intrepid.Gameplay.Messages.Events;
|
|
||||||
using Intrepid.Integration.Input;
|
using Intrepid.Integration.Input;
|
||||||
using Intrepid.Integration.Persistence;
|
|
||||||
using Intrepid.Integration.Persistence.DTOs;
|
|
||||||
using Intrepid.Integration.Persistence.Events;
|
using Intrepid.Integration.Persistence.Events;
|
||||||
using Intrepid.SaveSystem;
|
|
||||||
using Intrepid.Structures;
|
using Intrepid.Structures;
|
||||||
using Intrepid.Utilities;
|
using Intrepid.Utilities;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
@ -14,7 +10,6 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine.States
|
|||||||
{
|
{
|
||||||
public class SentinelStateSavingStation : SentinelState
|
public class SentinelStateSavingStation : SentinelState
|
||||||
{
|
{
|
||||||
[GroupInjections, SerializeField] private GameDataPersistenceService gameDataPersistenceService;
|
|
||||||
[GroupInjections, SerializeField] private AnimationClip savingStation;
|
[GroupInjections, SerializeField] private AnimationClip savingStation;
|
||||||
[GroupInjections, SerializeField, Range(0, 3)] private float minSavingStationDuration = 1f;
|
[GroupInjections, SerializeField, Range(0, 3)] private float minSavingStationDuration = 1f;
|
||||||
|
|
||||||
@ -46,22 +41,13 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine.States
|
|||||||
|
|
||||||
protected override void RunOnEnter(ParameterStore ps)
|
protected override void RunOnEnter(ParameterStore ps)
|
||||||
{
|
{
|
||||||
var e = ps.Get<SaveStationActionExecutedEvent>("SaveStationActionExecutedEvent");
|
var deploymentPoint = ps.Get<Vector3>(SentinelConstants.Parameters.DeploymentPoint);
|
||||||
Brain.Entity.DesiredVelocity = Vector2.zero;
|
Brain.Entity.DesiredVelocity = Vector2.zero;
|
||||||
Brain.Entity.Position = e.DeploymentPoint;
|
Brain.Entity.Position = deploymentPoint;
|
||||||
Brain.Entity.ChangeOrientation(Vector2.down);
|
Brain.Entity.ChangeOrientation(Vector2.down);
|
||||||
Brain.Entity.ModelAnimation.Play(savingStation);
|
Brain.Entity.ModelAnimation.Play(savingStation);
|
||||||
Timer.Stop();
|
Timer.Stop();
|
||||||
gameDataPersistenceService.SaveCurrentGameData(new SavingCallbacksAggregator<GameDataSaveFileDTO>(
|
GameManager.Instance.GameSlotPersistenceService.SaveCurrentGameData();
|
||||||
gameData =>
|
|
||||||
{
|
|
||||||
gameData.data.SentinelData.LatestSaveStation = new SaveStationDTO
|
|
||||||
{
|
|
||||||
StageId = e.StageTag.StageId,
|
|
||||||
DeploymentPosition = e.DeploymentPoint.ToVector3DTO(),
|
|
||||||
};
|
|
||||||
},
|
|
||||||
_ => { }));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void RunOnExit()
|
protected override void RunOnExit()
|
||||||
|
|||||||
@ -3,9 +3,9 @@ using System.Collections;
|
|||||||
using Intrepid.Core.Camera;
|
using Intrepid.Core.Camera;
|
||||||
using Intrepid.Diagnostics;
|
using Intrepid.Diagnostics;
|
||||||
using Intrepid.GameManagers;
|
using Intrepid.GameManagers;
|
||||||
|
using Intrepid.Gameplay.Data;
|
||||||
using Intrepid.Gameplay.Entities.Player.ActionBelt.Events;
|
using Intrepid.Gameplay.Entities.Player.ActionBelt.Events;
|
||||||
using Intrepid.Gameplay.Entities.Player.Tags;
|
using Intrepid.Gameplay.Entities.Player.Tags;
|
||||||
using Intrepid.Gameplay.Journey.Messages;
|
|
||||||
using Intrepid.Gameplay.Journey.Messages.Events;
|
using Intrepid.Gameplay.Journey.Messages.Events;
|
||||||
using Intrepid.Integration.Input;
|
using Intrepid.Integration.Input;
|
||||||
using Intrepid.SimpleEvents;
|
using Intrepid.SimpleEvents;
|
||||||
@ -40,9 +40,9 @@ namespace Intrepid.Gameplay.Journey
|
|||||||
private IBackStageWindowExecution CallbackProcessors { get; set; }
|
private IBackStageWindowExecution CallbackProcessors { get; set; }
|
||||||
private string DestinyEndpoint { get; set; }
|
private string DestinyEndpoint { get; set; }
|
||||||
private InputSchema LastInputSchema { get; set; } = InputSchema.None;
|
private InputSchema LastInputSchema { get; set; } = InputSchema.None;
|
||||||
public ICurtainProgress OpenCurtainProgress { get; set; }
|
private bool IsBooting { get; set; } = true;
|
||||||
|
|
||||||
public bool IsProcessFinished => StageStateMachine.IsLoadingFinished && !CameraSystem.Instance.IsCameraBlending;
|
public bool IsProcessFinished => !IsBooting && StageStateMachine.IsLoadingFinished && !CameraSystem.Instance.IsCameraBlending;
|
||||||
|
|
||||||
protected override void InitializeVariables()
|
protected override void InitializeVariables()
|
||||||
{
|
{
|
||||||
@ -57,9 +57,24 @@ namespace Intrepid.Gameplay.Journey
|
|||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
if (IsRunningTest && stageToTest.IsNotNull())
|
if (IsRunningTest && stageToTest.IsNotNull())
|
||||||
{
|
{
|
||||||
LoadJourneyForTesting(stageToTest, landingStart);
|
LoadJourneyForTesting(stageToTest);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
if (SentinelDataStorage.Instance.HasLatestSaveStationData)
|
||||||
|
{
|
||||||
|
var request = SentinelDataStorage.Instance.LoadJourneyRequest;
|
||||||
|
StageStateMachine.InitMachine(request.StageTag);
|
||||||
|
StartCoroutine(WaitUntilStageLoadingIsFinished(() =>
|
||||||
|
{
|
||||||
|
Proxy.Instance.EventBus.Raise(new StageDispatchDeploymentPointEvent
|
||||||
|
{
|
||||||
|
DeploymentPoint = request.DeploymentPoint,
|
||||||
|
DeploymentDirection = Vector2.down,
|
||||||
|
});
|
||||||
|
StartCoroutine(WaitingNSecs(1, () => IsBooting = false));
|
||||||
|
}));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Subscriptions()
|
protected override void Subscriptions()
|
||||||
@ -69,11 +84,6 @@ namespace Intrepid.Gameplay.Journey
|
|||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
BackStageService.UpdateCurtains();
|
BackStageService.UpdateCurtains();
|
||||||
if (OpenCurtainProgress?.IsFinished() ?? false)
|
|
||||||
{
|
|
||||||
OpenCurtainProgress = null;
|
|
||||||
AfterOpened();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnTearDown()
|
protected override void OnTearDown()
|
||||||
@ -81,40 +91,63 @@ namespace Intrepid.Gameplay.Journey
|
|||||||
StageStateMachine.TearDown();
|
StageStateMachine.TearDown();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LoadJourney(LoadJourneyRequest request)
|
|
||||||
{
|
|
||||||
if (request is null)
|
|
||||||
{
|
|
||||||
DLogger.LogError("load journey request should not be null");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (request.StageTag.IsNull() || string.IsNullOrWhiteSpace(request.StageTag.Code))
|
|
||||||
{
|
|
||||||
DLogger.LogError("stage tag/code should not be null or empty");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
StageStateMachine.InitMachine(request.StageTag);
|
|
||||||
}
|
|
||||||
|
|
||||||
[GroupDebug, Button(ButtonSizes.Large, ButtonStyle.FoldoutButton)]
|
[GroupDebug, Button(ButtonSizes.Large, ButtonStyle.FoldoutButton)]
|
||||||
private void LoadJourneyForTesting(StageTag stage, Transform landing)
|
private void LoadJourneyForTesting(StageTag stageTag, Transform landing = null)
|
||||||
{
|
{
|
||||||
LoadJourney(new LoadJourneyRequest
|
if (stageTag.IsNull())
|
||||||
{
|
{
|
||||||
StageTag = stage
|
DLogger.LogWarn("stage tag is empty, you should bootstrap manually");
|
||||||
});
|
return;
|
||||||
StartCoroutine(OpenAfterNSecs(landing.IsNull() ? landingStart : landing));
|
}
|
||||||
|
StageStateMachine.InitMachine(stageTag);
|
||||||
|
IsBooting = false;
|
||||||
|
if (IsRunningTest)
|
||||||
|
{
|
||||||
|
Proxy.Instance.EventBus.Raise(new StageDispatchDeploymentPointEvent
|
||||||
|
{
|
||||||
|
DeploymentPoint = landing?.position ?? landingStart.position,
|
||||||
|
DeploymentDirection = Vector2.down,
|
||||||
|
});
|
||||||
|
StartCoroutine(WaitingNSecs(1, () =>
|
||||||
|
{
|
||||||
|
var openCurtainProgress = Proxy.Instance.CurtainStateMachine.RaiseCommand(CurtainCommandType.Open);
|
||||||
|
StartCoroutine(WaitUntilCurtainGetsOpened(openCurtainProgress, AfterOpened));
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
StartCoroutine(WaitUntilStageLoadingIsFinished(() =>
|
||||||
|
{
|
||||||
|
Proxy.Instance.EventBus.Raise(new StageDispatchDeploymentPointEvent
|
||||||
|
{
|
||||||
|
DeploymentPoint = landing?.position ?? landingStart.position,
|
||||||
|
DeploymentDirection = Vector2.down,
|
||||||
|
});
|
||||||
|
StartCoroutine(WaitingNSecs(1, () =>
|
||||||
|
{
|
||||||
|
var openCurtainProgress = Proxy.Instance.CurtainStateMachine.RaiseCommand(CurtainCommandType.Open);
|
||||||
|
StartCoroutine(WaitUntilCurtainGetsOpened(openCurtainProgress, AfterOpened));
|
||||||
|
}));
|
||||||
|
}));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerator OpenAfterNSecs(Transform landing, float nSecs = 1f)
|
private IEnumerator WaitUntilCurtainGetsOpened(ICurtainProgress openCurtainProgress, Action action)
|
||||||
|
{
|
||||||
|
yield return new WaitUntil(openCurtainProgress.IsFinished);
|
||||||
|
action?.Invoke();
|
||||||
|
}
|
||||||
|
|
||||||
|
private IEnumerator WaitUntilStageLoadingIsFinished(Action action)
|
||||||
|
{
|
||||||
|
yield return new WaitUntil(() => StageStateMachine?.IsLoadingFinished ?? false);
|
||||||
|
action?.Invoke();
|
||||||
|
}
|
||||||
|
|
||||||
|
private IEnumerator WaitingNSecs(float nSecs, Action action)
|
||||||
{
|
{
|
||||||
yield return new WaitForSeconds(nSecs);
|
yield return new WaitForSeconds(nSecs);
|
||||||
Proxy.Instance.EventBus.Raise(new StageDispatchDeploymentPointEvent
|
action?.Invoke();
|
||||||
{
|
|
||||||
DeploymentPoint = landing.position,
|
|
||||||
});
|
|
||||||
OpenCurtainProgress = Proxy.Instance.CurtainStateMachine.RaiseCommand(CurtainCommandType.Open);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[GroupDebug, Button(ButtonSizes.Large, ButtonStyle.FoldoutButton)]
|
[GroupDebug, Button(ButtonSizes.Large, ButtonStyle.FoldoutButton)]
|
||||||
|
|||||||
@ -263,6 +263,16 @@ namespace Intrepid.Gameplay.Journey
|
|||||||
stageConnections.TryAdd(endpointId, new List<JConnection>());
|
stageConnections.TryAdd(endpointId, new List<JConnection>());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public StageTag GetStageTag(string stageId)
|
||||||
|
{
|
||||||
|
if (StageTagMap.TryGetValue(stageId, out var stageTag))
|
||||||
|
{
|
||||||
|
return stageTag;
|
||||||
|
}
|
||||||
|
DLogger.LogWarn($"Stage {stageId} is not found in the stage tag list");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public bool TryGetJConnections(
|
public bool TryGetJConnections(
|
||||||
string stageId,
|
string stageId,
|
||||||
string endpointId,
|
string endpointId,
|
||||||
|
|||||||
@ -1,7 +1,10 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Intrepid.Gameplay.Journey.Messages
|
namespace Intrepid.Gameplay.Journey.Messages
|
||||||
{
|
{
|
||||||
public class LoadJourneyRequest
|
public class LoadJourneyRequest
|
||||||
{
|
{
|
||||||
public StageTag StageTag { get; set; }
|
public StageTag StageTag { get; set; }
|
||||||
|
public Vector3 DeploymentPoint { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -16,7 +16,7 @@ namespace Intrepid.Gameplay.Journey
|
|||||||
}
|
}
|
||||||
|
|
||||||
private AsyncOperation AsyncOperation { get; set; }
|
private AsyncOperation AsyncOperation { get; set; }
|
||||||
public bool IsLoadingFinished => AsyncOperation.isDone;
|
public bool IsLoadingFinished => AsyncOperation?.isDone ?? false;
|
||||||
|
|
||||||
public bool CanEnterState => true;
|
public bool CanEnterState => true;
|
||||||
public bool CanExitState => true;
|
public bool CanExitState => true;
|
||||||
|
|||||||
@ -10,7 +10,7 @@ namespace Intrepid.Gameplay.Journey
|
|||||||
private IState<StageTag, StageLoadingService> CurrentState => StateMachine.GetCurrentState();
|
private IState<StageTag, StageLoadingService> CurrentState => StateMachine.GetCurrentState();
|
||||||
|
|
||||||
public StageTag CurrentStageTag => CurrentState.GetStateKey();
|
public StageTag CurrentStageTag => CurrentState.GetStateKey();
|
||||||
public bool IsLoadingFinished => CurrentState.Implementation().IsLoadingFinished;
|
public bool IsLoadingFinished => CurrentState?.Implementation()?.IsLoadingFinished ?? false;
|
||||||
public bool IsRunning => StateMachine.IsRunning;
|
public bool IsRunning => StateMachine.IsRunning;
|
||||||
|
|
||||||
public void LoadMachine(IEnumerable<StageTag> stageTags)
|
public void LoadMachine(IEnumerable<StageTag> stageTags)
|
||||||
|
|||||||
@ -1,3 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: ff892e2a13ea49c08ea9dca213fafb6a
|
|
||||||
timeCreated: 1780477050
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: f4a9672231414939926d322b1d138287
|
|
||||||
timeCreated: 1780477050
|
|
||||||
@ -1,6 +1,6 @@
|
|||||||
using Intrepid.GameManagers;
|
using Intrepid.GameManagers;
|
||||||
using Intrepid.Gameplay.Entities.Player.ActionBelt;
|
using Intrepid.Gameplay.Entities.Player.ActionBelt;
|
||||||
using Intrepid.Gameplay.Messages.Events;
|
using Intrepid.Gameplay.Entities.Player.Sentinel.Events;
|
||||||
using Intrepid.Localization;
|
using Intrepid.Localization;
|
||||||
using Intrepid.Utilities;
|
using Intrepid.Utilities;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
@ -18,7 +18,7 @@ namespace Intrepid.Gameplay.Prototyping.SaveStations
|
|||||||
|
|
||||||
protected override void Execute(ActionIdentifier identifier)
|
protected override void Execute(ActionIdentifier identifier)
|
||||||
{
|
{
|
||||||
Proxy.Instance.EventBus.Raise(new SaveStationActionExecutedEvent
|
Proxy.Instance.EventBus.Raise(new LatestSaveStationEvent
|
||||||
{
|
{
|
||||||
StageTag = saveStationModelPrototype.StageTag,
|
StageTag = saveStationModelPrototype.StageTag,
|
||||||
DeploymentPoint = saveStationModelPrototype.DeploymentPoint
|
DeploymentPoint = saveStationModelPrototype.DeploymentPoint
|
||||||
|
|||||||
@ -37,7 +37,6 @@ namespace Intrepid.Gameplay.Prototyping.Sockets
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
JourneyManager.Instance.ChangeStageTo(stageTag, destinyEndpoint);
|
JourneyManager.Instance.ChangeStageTo(stageTag, destinyEndpoint);
|
||||||
DLogger.LogDebug("stage change");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private string GrabDestinyEndpoint(JConnection jConnection)
|
private string GrabDestinyEndpoint(JConnection jConnection)
|
||||||
|
|||||||
@ -0,0 +1,68 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Intrepid.Diagnostics;
|
||||||
|
using Intrepid.Integration.Persistence.DTOs;
|
||||||
|
using Intrepid.Utilities;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Intrepid.Integration.Persistence
|
||||||
|
{
|
||||||
|
public abstract class AbstractDataStorage<T, V> : SingletonMonoBehaviour<T>, IDataStorage
|
||||||
|
where T : AbstractDataStorage<T, V>
|
||||||
|
where V : VersionableDTO
|
||||||
|
{
|
||||||
|
[GroupInjections, SerializeField] private GameSlotPersistenceService gameSlotPersistenceService;
|
||||||
|
|
||||||
|
public abstract int Order { get; }
|
||||||
|
protected abstract void ValidateDataOrError(List<string> errors);
|
||||||
|
protected abstract V Marshal();
|
||||||
|
protected abstract void Unmarshal(GameDataSlotType slotType, GameSlotDTO gameSlot);
|
||||||
|
|
||||||
|
public bool IsDataValid(out List<string> errors)
|
||||||
|
{
|
||||||
|
errors = new List<string>();
|
||||||
|
ValidateDataOrError(errors);
|
||||||
|
return errors.Count == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void MarshalData(GameSlotDTO gameSlot)
|
||||||
|
{
|
||||||
|
var v = Marshal();
|
||||||
|
switch (v)
|
||||||
|
{
|
||||||
|
case SentinelDTO sentinelData:
|
||||||
|
gameSlot.SentinelData = sentinelData;
|
||||||
|
gameSlot.SentinelData.Version = Versions.Sentinel;
|
||||||
|
break;
|
||||||
|
case WorldDTO worldData:
|
||||||
|
gameSlot.WorldData = worldData;
|
||||||
|
gameSlot.WorldData.Version = Versions.World;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new Exception($"Cannot marshal data of type {v.GetType()} to GameSlotDTO");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual void AwakeDataStorage()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
SingletonInstantiation(false, _ => AwakeDataStorage());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnEnable()
|
||||||
|
{
|
||||||
|
StorageAssembler.Instance.Register(this);
|
||||||
|
var slotType = gameSlotPersistenceService.CurrentGameDataSlotTypeLoaded;
|
||||||
|
var gameSlot = gameSlotPersistenceService.CurrentGameSlot;
|
||||||
|
Unmarshal(slotType, gameSlot);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDisable()
|
||||||
|
{
|
||||||
|
StorageAssembler.Instance.Unregister(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c966cb6d0fea4f26ba9443a3ba16f36d
|
||||||
|
timeCreated: 1782452283
|
||||||
@ -8,7 +8,7 @@ using UnityEngine;
|
|||||||
namespace Intrepid.Integration.Persistence
|
namespace Intrepid.Integration.Persistence
|
||||||
{
|
{
|
||||||
[Serializable]
|
[Serializable]
|
||||||
[CreateAssetMenu(fileName = "Persistence Configuration", menuName = "Intrepid/Save System/Persistence Configuration")]
|
[CreateAssetMenu(fileName = "Persistence Configuration", menuName = "GON/Services/Persistence Configuration")]
|
||||||
public class ConfigurationPersistenceService : AbstractPersistenceService<ConfigurationSaveFileDTO>
|
public class ConfigurationPersistenceService : AbstractPersistenceService<ConfigurationSaveFileDTO>
|
||||||
{
|
{
|
||||||
private const string ConfigurationSaveFileName = "configuration";
|
private const string ConfigurationSaveFileName = "configuration";
|
||||||
|
|||||||
@ -1,20 +0,0 @@
|
|||||||
using System;
|
|
||||||
|
|
||||||
namespace Intrepid.Integration.Persistence.DTOs
|
|
||||||
{
|
|
||||||
[Serializable]
|
|
||||||
public class GameDataDTO
|
|
||||||
{
|
|
||||||
public string Seed;
|
|
||||||
public SentinelDataDTO SentinelData;
|
|
||||||
|
|
||||||
public static GameDataDTO WithInitialValues()
|
|
||||||
{
|
|
||||||
return new GameDataDTO
|
|
||||||
{
|
|
||||||
Seed = Guid.NewGuid().ToString("N"),
|
|
||||||
SentinelData = SentinelDataDTO.WithInitialValues(),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -0,0 +1,33 @@
|
|||||||
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Intrepid.Integration.Persistence.DTOs
|
||||||
|
{
|
||||||
|
[Serializable]
|
||||||
|
public class GameSlotDTO
|
||||||
|
{
|
||||||
|
[SerializeField] private string seed;
|
||||||
|
public SentinelDTO SentinelData;
|
||||||
|
public WorldDTO WorldData;
|
||||||
|
|
||||||
|
private GameSlotDTO()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Seed
|
||||||
|
{
|
||||||
|
get => seed;
|
||||||
|
private set => seed = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static GameSlotDTO WithInitialValues()
|
||||||
|
{
|
||||||
|
return new GameSlotDTO
|
||||||
|
{
|
||||||
|
Seed = Guid.NewGuid().ToString("N"),
|
||||||
|
SentinelData = SentinelDTO.WithInitialValues(),
|
||||||
|
WorldData = WorldDTO.WithInitialValues(),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -6,9 +6,9 @@ using UnityEngine;
|
|||||||
namespace Intrepid.Integration.Persistence.DTOs
|
namespace Intrepid.Integration.Persistence.DTOs
|
||||||
{
|
{
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class GameDataSaveFileDTO : SaveFileDTO
|
public class GameSlotSaveFileDTO : SaveFileDTO
|
||||||
{
|
{
|
||||||
[SerializeField, InlineProperty, Title("Game Data"), HideLabel, PropertySpace]
|
[SerializeField, InlineProperty, Title("Game Slot"), HideLabel, PropertySpace]
|
||||||
public GameDataDTO data;
|
public GameSlotDTO slot;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,27 +0,0 @@
|
|||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace Intrepid.Integration.Persistence.DTOs
|
|
||||||
{
|
|
||||||
public static class MappingExtensions
|
|
||||||
{
|
|
||||||
public static Vector3DTO ToVector3DTO(this Vector3 vector3)
|
|
||||||
{
|
|
||||||
return new Vector3DTO
|
|
||||||
{
|
|
||||||
X = vector3.x,
|
|
||||||
Y = vector3.y,
|
|
||||||
Z = vector3.z,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Vector3 ToVector3(this Vector3DTO vector3DTO)
|
|
||||||
{
|
|
||||||
return new Vector3
|
|
||||||
{
|
|
||||||
x = vector3DTO.X,
|
|
||||||
y = vector3DTO.Y,
|
|
||||||
z = vector3DTO.Z,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 4df2772c805448e3887df8b70fc14d82
|
|
||||||
timeCreated: 1782400976
|
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Intrepid.Integration.Persistence.DTOs
|
||||||
|
{
|
||||||
|
[Serializable]
|
||||||
|
public class LatestSaveStationDTO
|
||||||
|
{
|
||||||
|
public string StageId;
|
||||||
|
public Vector3DTO DeploymentPoint;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public class SentinelDTO : VersionableDTO
|
||||||
|
{
|
||||||
|
public LatestSaveStationDTO LatestSaveStation;
|
||||||
|
|
||||||
|
public static SentinelDTO WithInitialValues()
|
||||||
|
{
|
||||||
|
return new SentinelDTO
|
||||||
|
{
|
||||||
|
LatestSaveStation = null,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,25 +0,0 @@
|
|||||||
using System;
|
|
||||||
|
|
||||||
namespace Intrepid.Integration.Persistence.DTOs
|
|
||||||
{
|
|
||||||
[Serializable]
|
|
||||||
public class SaveStationDTO
|
|
||||||
{
|
|
||||||
public string StageId;
|
|
||||||
public Vector3DTO DeploymentPosition;
|
|
||||||
}
|
|
||||||
|
|
||||||
[Serializable]
|
|
||||||
public class SentinelDataDTO
|
|
||||||
{
|
|
||||||
public SaveStationDTO LatestSaveStation;
|
|
||||||
|
|
||||||
public static SentinelDataDTO WithInitialValues()
|
|
||||||
{
|
|
||||||
return new SentinelDataDTO
|
|
||||||
{
|
|
||||||
LatestSaveStation = null,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
namespace Intrepid.Integration.Persistence.DTOs
|
||||||
|
{
|
||||||
|
public abstract class VersionableDTO
|
||||||
|
{
|
||||||
|
public int Version;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: df9df66862c44d6aa9f73eda508d2107
|
||||||
|
timeCreated: 1782456838
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Intrepid.Integration.Persistence.DTOs
|
||||||
|
{
|
||||||
|
[Serializable]
|
||||||
|
public class WorldDTO : VersionableDTO
|
||||||
|
{
|
||||||
|
public static WorldDTO WithInitialValues()
|
||||||
|
{
|
||||||
|
return new WorldDTO
|
||||||
|
{
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: da0c993c43c84e629820ea48f184398d
|
||||||
|
timeCreated: 1782451963
|
||||||
@ -1,10 +1,8 @@
|
|||||||
using Intrepid.Integration.Persistence.DTOs;
|
|
||||||
using Intrepid.SimpleEvents;
|
using Intrepid.SimpleEvents;
|
||||||
|
|
||||||
namespace Intrepid.Integration.Persistence.Events
|
namespace Intrepid.Integration.Persistence.Events
|
||||||
{
|
{
|
||||||
public class SavingGameDataBeginEvent : IEventBase
|
public class SavingGameDataBeginEvent : IEventBase
|
||||||
{
|
{
|
||||||
public GameDataSaveFileDTO GameData { get; set; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2,9 +2,9 @@
|
|||||||
{
|
{
|
||||||
public enum GameDataSlotType
|
public enum GameDataSlotType
|
||||||
{
|
{
|
||||||
Slot01 = 0,
|
None = 0,
|
||||||
Slot02 = 1,
|
Slot01 = 1,
|
||||||
Slot03 = 2,
|
Slot02 = 2,
|
||||||
None = 1000
|
Slot03 = 3,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using Intrepid.Diagnostics;
|
||||||
using Intrepid.GameManagers;
|
using Intrepid.GameManagers;
|
||||||
using Intrepid.Integration.Persistence.DTOs;
|
using Intrepid.Integration.Persistence.DTOs;
|
||||||
using Intrepid.Integration.Persistence.Events;
|
using Intrepid.Integration.Persistence.Events;
|
||||||
@ -10,18 +11,21 @@ using UnityEngine;
|
|||||||
namespace Intrepid.Integration.Persistence
|
namespace Intrepid.Integration.Persistence
|
||||||
{
|
{
|
||||||
[Serializable]
|
[Serializable]
|
||||||
[CreateAssetMenu(fileName = "Persistence Game Data", menuName = "Intrepid/Save System/Persistence Game Data")]
|
[CreateAssetMenu(fileName = "Persistence Game Slot", menuName = "GON/Services/Persistence Game Slot")]
|
||||||
public class GameDataPersistenceService : AbstractPersistenceService<GameDataSaveFileDTO>
|
public class GameSlotPersistenceService : AbstractPersistenceService<GameSlotSaveFileDTO>
|
||||||
{
|
{
|
||||||
public static readonly SavingCallbacksAggregator<GameDataSaveFileDTO> Events = new(
|
public static readonly SavingCallbacksAggregator<GameSlotSaveFileDTO> Events = new(
|
||||||
gameData => Proxy.Instance?.EventBus.Raise(new SavingGameDataBeginEvent { GameData = gameData }),
|
gameData =>
|
||||||
|
{
|
||||||
|
StorageAssembler.Instance.TakeSnapshot(gameData.slot);
|
||||||
|
Proxy.Instance?.EventBus.Raise(new SavingGameDataBeginEvent());
|
||||||
|
},
|
||||||
isOk => Proxy.Instance?.EventBus.Raise(new SavingGameDataEndEvent { IsOk = isOk }));
|
isOk => Proxy.Instance?.EventBus.Raise(new SavingGameDataEndEvent { IsOk = isOk }));
|
||||||
|
|
||||||
[GroupInjections, SerializeField]
|
[GroupInjections, SerializeField] private ConfigurationPersistenceService configurationPersistenceService;
|
||||||
private ConfigurationPersistenceService configurationPersistenceService;
|
|
||||||
|
|
||||||
[GroupDebug, ReadOnly, SerializeField, InlineProperty, HideLabel, Title("Current Slot"), PropertySpace]
|
[GroupDebug, ReadOnly, SerializeField, InlineProperty, HideLabel, Title("Current Slot"), PropertySpace]
|
||||||
private GameDataSaveFileDTO currentGameDataSaveFile;
|
private GameSlotSaveFileDTO currentGameSlotSaveFile;
|
||||||
|
|
||||||
[GroupDebug, ReadOnly, ShowInInspector, PropertyOrder(-9), PropertySpace, LabelText("Game Slot")]
|
[GroupDebug, ReadOnly, ShowInInspector, PropertyOrder(-9), PropertySpace, LabelText("Game Slot")]
|
||||||
public GameDataSlotType CurrentGameDataSlotTypeLoaded
|
public GameDataSlotType CurrentGameDataSlotTypeLoaded
|
||||||
@ -37,7 +41,7 @@ namespace Intrepid.Integration.Persistence
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public GameDataDTO CurrentGameData => currentGameDataSaveFile.data;
|
public GameSlotDTO CurrentGameSlot => currentGameSlotSaveFile?.slot;
|
||||||
|
|
||||||
private bool ExistsGameSlot(GameDataSlotType gameSlotType)
|
private bool ExistsGameSlot(GameDataSlotType gameSlotType)
|
||||||
{
|
{
|
||||||
@ -70,51 +74,45 @@ namespace Intrepid.Integration.Persistence
|
|||||||
Delete(BuildSaveSlotIdFrom(gameSlotType));
|
Delete(BuildSaveSlotIdFrom(gameSlotType));
|
||||||
}
|
}
|
||||||
|
|
||||||
[GroupDebug]
|
[GroupDebug, Button(ButtonSizes.Medium, ButtonStyle.FoldoutButton), PropertyOrder(-10)]
|
||||||
[Button]
|
|
||||||
[PropertyOrder(-10)]
|
|
||||||
public void SaveCurrentGameDataQuietly()
|
public void SaveCurrentGameDataQuietly()
|
||||||
{
|
{
|
||||||
SaveCurrentGameData();
|
SaveCurrentGameData();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async void SaveCurrentGameData(SavingCallbacksAggregator<GameDataSaveFileDTO> savingCallbacks = null)
|
public async void SaveCurrentGameData(SavingCallbacksAggregator<GameSlotSaveFileDTO> savingCallbacks = null)
|
||||||
{
|
{
|
||||||
savingCallbacks ??= SavingCallbacksAggregator<GameDataSaveFileDTO>.Empty();
|
savingCallbacks ??= SavingCallbacksAggregator<GameSlotSaveFileDTO>.Empty();
|
||||||
savingCallbacks += Events;
|
savingCallbacks += Events;
|
||||||
await Save(currentGameDataSaveFile, savingCallbacks);
|
await Save(currentGameSlotSaveFile, savingCallbacks);
|
||||||
}
|
}
|
||||||
|
|
||||||
[GroupDebug]
|
[GroupDebug, Button(ButtonSizes.Medium, ButtonStyle.FoldoutButton), PropertyOrder(-10)]
|
||||||
[Button(ButtonStyle.FoldoutButton)]
|
public GameSlotSaveFileDTO CreateEmptyGameDataAsCurrent(GameDataSlotType gameSlotType = GameDataSlotType.Slot01)
|
||||||
[PropertyOrder(-10)]
|
|
||||||
public GameDataSaveFileDTO CreateEmptyGameDataAsCurrent(GameDataSlotType gameSlotType)
|
|
||||||
{
|
{
|
||||||
var gameData = GameDataDTO.WithInitialValues();
|
var gameData = GameSlotDTO.WithInitialValues();
|
||||||
currentGameDataSaveFile = new GameDataSaveFileDTO
|
currentGameSlotSaveFile = new GameSlotSaveFileDTO
|
||||||
{
|
{
|
||||||
fileId = BuildSaveSlotIdFrom(gameSlotType),
|
fileId = BuildSaveSlotIdFrom(gameSlotType),
|
||||||
data = gameData
|
slot = gameData
|
||||||
};
|
};
|
||||||
CurrentGameDataSlotTypeLoaded = gameSlotType;
|
CurrentGameDataSlotTypeLoaded = gameSlotType;
|
||||||
return currentGameDataSaveFile;
|
return currentGameSlotSaveFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
public GameDataSaveFileDTO LoadGame(GameDataSlotType gameSlotType)
|
public GameSlotSaveFileDTO LoadGame(GameDataSlotType gameSlotType = GameDataSlotType.Slot01)
|
||||||
{
|
{
|
||||||
return Load(BuildSaveSlotIdFrom(gameSlotType));
|
return Load(BuildSaveSlotIdFrom(gameSlotType));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetAsCurrent(GameDataSlotType gameSlotType, GameDataSaveFileDTO gameDataSaveSlot)
|
private void SetAsCurrent(GameDataSlotType gameSlotType, GameSlotSaveFileDTO gameSlotSaveSlotSave)
|
||||||
{
|
{
|
||||||
CurrentGameDataSlotTypeLoaded = gameSlotType;
|
CurrentGameDataSlotTypeLoaded = gameSlotType;
|
||||||
currentGameDataSaveFile = gameDataSaveSlot;
|
currentGameSlotSaveFile = gameSlotSaveSlotSave;
|
||||||
}
|
}
|
||||||
|
|
||||||
[GroupDebug]
|
[GroupDebug, Button(ButtonSizes.Medium, ButtonStyle.FoldoutButton), PropertyOrder(-10)]
|
||||||
[Button(ButtonStyle.FoldoutButton)]
|
public void LoadGameDataAsCurrent(GameDataSlotType gameSlotType = GameDataSlotType.Slot01)
|
||||||
[PropertyOrder(-10)]
|
|
||||||
private void LoadGameDataAsCurrent(GameDataSlotType gameSlotType)
|
|
||||||
{
|
{
|
||||||
if (ExistsGameSlot(gameSlotType))
|
if (ExistsGameSlot(gameSlotType))
|
||||||
{
|
{
|
||||||
@ -123,15 +121,13 @@ namespace Intrepid.Integration.Persistence
|
|||||||
}
|
}
|
||||||
|
|
||||||
ClearGameData();
|
ClearGameData();
|
||||||
Dbg.Always.LogError($"no game slot available to load: {BuildSaveSlotIdFrom(gameSlotType)}");
|
DLogger.LogError($"no game slot available to load: {BuildSaveSlotIdFrom(gameSlotType)}");
|
||||||
}
|
}
|
||||||
|
|
||||||
[GroupDebug]
|
[GroupDebug, Button(ButtonSizes.Medium, ButtonStyle.FoldoutButton), PropertyOrder(-10)]
|
||||||
[Button]
|
public void ClearGameData()
|
||||||
[PropertyOrder(-10)]
|
|
||||||
private void ClearGameData()
|
|
||||||
{
|
{
|
||||||
currentGameDataSaveFile = null;
|
currentGameSlotSaveFile = null;
|
||||||
CurrentGameDataSlotTypeLoaded = GameDataSlotType.None;
|
CurrentGameDataSlotTypeLoaded = GameDataSlotType.None;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using Intrepid.Integration.Persistence.DTOs;
|
||||||
|
|
||||||
|
namespace Intrepid.Integration.Persistence
|
||||||
|
{
|
||||||
|
public interface IDataStorage
|
||||||
|
{
|
||||||
|
int Order { get; }
|
||||||
|
bool IsDataValid(out List<string> errors);
|
||||||
|
void MarshalData(GameSlotDTO gameSlot);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d54c80455b0a40e6a47a28a3bbf0722d
|
||||||
|
timeCreated: 1782454467
|
||||||
@ -0,0 +1,60 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using Intrepid.Diagnostics;
|
||||||
|
using Intrepid.Integration.Persistence.DTOs;
|
||||||
|
using Intrepid.Utilities;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Intrepid.Integration.Persistence
|
||||||
|
{
|
||||||
|
[CreateAssetMenu(fileName = "Storage Assembler", menuName = "GON/Services/Storage Assembler")]
|
||||||
|
public class StorageAssembler : SingletonScriptableObject<StorageAssembler>
|
||||||
|
{
|
||||||
|
private List<IDataStorage> DataStores { get; } = new();
|
||||||
|
|
||||||
|
protected override void WhenInstantiate(StorageAssembler singleton)
|
||||||
|
{
|
||||||
|
base.WhenInstantiate(singleton);
|
||||||
|
DataStores.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Register(IDataStorage handler)
|
||||||
|
{
|
||||||
|
if (handler is null) return;
|
||||||
|
DataStores.Add(handler);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Unregister(IDataStorage handler)
|
||||||
|
{
|
||||||
|
if (handler is null) return;
|
||||||
|
DataStores.Remove(handler);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void TakeSnapshot(GameSlotDTO gameSlot)
|
||||||
|
{
|
||||||
|
var orderedHandlers = DataStores.OrderBy(s => s.Order).ToList();
|
||||||
|
ValidateSnapshotData();
|
||||||
|
orderedHandlers.ForEach(s => s.MarshalData(gameSlot));
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
void ValidateSnapshotData()
|
||||||
|
{
|
||||||
|
var failValidation = false;
|
||||||
|
foreach (var handler in orderedHandlers)
|
||||||
|
{
|
||||||
|
if (!handler.IsDataValid(out var errors))
|
||||||
|
{
|
||||||
|
DLogger.LogError($"Errors occurred while validating saving data for handler {handler.GetType().Name}: {string.Join(", ", errors)}");
|
||||||
|
failValidation = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (failValidation)
|
||||||
|
{
|
||||||
|
throw new Exception("Validation failed for one or more saving snapshot handlers.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 396cb6e3d4c94d5b86c3b4fbe34531f1
|
||||||
|
timeCreated: 1782409836
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
namespace Intrepid.Integration.Persistence
|
||||||
|
{
|
||||||
|
public static class Versions
|
||||||
|
{
|
||||||
|
public const int Sentinel = 1;
|
||||||
|
public const int World = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b856f06bd099441f92a5330cf1c3ec96
|
||||||
|
timeCreated: 1782456980
|
||||||
@ -5,6 +5,8 @@ namespace Intrepid.Utilities.Updatable
|
|||||||
string Id { get; }
|
string Id { get; }
|
||||||
int Order => int.MaxValue;
|
int Order => int.MaxValue;
|
||||||
|
|
||||||
|
void WhenEntering();
|
||||||
|
void WhenExiting();
|
||||||
void UpdateFromUpdatable();
|
void UpdateFromUpdatable();
|
||||||
void LateUpdateFromUpdatable();
|
void LateUpdateFromUpdatable();
|
||||||
void FixedUpdateFromUpdatable();
|
void FixedUpdateFromUpdatable();
|
||||||
|
|||||||
@ -25,14 +25,21 @@ namespace Intrepid.Utilities.Updatable
|
|||||||
|
|
||||||
public void Add(IUpdatable updatable)
|
public void Add(IUpdatable updatable)
|
||||||
{
|
{
|
||||||
UpdatableMap.TryAdd(updatable.Id, updatable);
|
if (UpdatableMap.TryAdd(updatable.Id, updatable))
|
||||||
AddedIds.Add(updatable.Id);
|
{
|
||||||
|
updatable.WhenEntering();
|
||||||
|
AddedIds.Add(updatable.Id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Remove(string id)
|
public void Remove(string id)
|
||||||
{
|
{
|
||||||
UpdatableMap.Remove(id);
|
if (UpdatableMap.TryGetValue(id, out var updatable))
|
||||||
RemovedIds.Add(id);
|
{
|
||||||
|
updatable.WhenExiting();
|
||||||
|
UpdatableMap.Remove(id);
|
||||||
|
RemovedIds.Add(id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ListOrderManagement()
|
public void ListOrderManagement()
|
||||||
|
|||||||
17
Assets/Scripts/Temporary/FakeSlotSelection.cs
Normal file
17
Assets/Scripts/Temporary/FakeSlotSelection.cs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
using Intrepid.Integration.Persistence;
|
||||||
|
using Intrepid.Utilities;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Temporary
|
||||||
|
{
|
||||||
|
public class FakeSlotSelection : MonoBehaviour
|
||||||
|
{
|
||||||
|
[GroupConfigurations, SerializeField] private GameDataSlotType gameDataSlotType = GameDataSlotType.Slot01;
|
||||||
|
[GroupInjections, SerializeField] private GameSlotPersistenceService gameSlotPersistenceService;
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
gameSlotPersistenceService.LoadGameDataAsCurrent(gameDataSlotType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
3
Assets/Scripts/Temporary/FakeSlotSelection.cs.meta
Normal file
3
Assets/Scripts/Temporary/FakeSlotSelection.cs.meta
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1100e436cf8b41549c11bf1b24ec387f
|
||||||
|
timeCreated: 1782461664
|
||||||
@ -5,7 +5,7 @@
|
|||||||
"depth": 0,
|
"depth": 0,
|
||||||
"source": "git",
|
"source": "git",
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"hash": "be2ea033f2bea17b65f158f686a54458e8cd9606"
|
"hash": "aff4fd3d1d9ba1bdc6a924b309e7af883e8cf191"
|
||||||
},
|
},
|
||||||
"com.unity.2d.animation": {
|
"com.unity.2d.animation": {
|
||||||
"version": "13.0.5",
|
"version": "13.0.5",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user