clean up and adjustments on journey manager

This commit is contained in:
Nilton Constantino 2026-06-26 11:18:49 +01:00
parent 24f1549dbd
commit 720ec7def1
No known key found for this signature in database
90 changed files with 33298 additions and 32078 deletions

View File

@ -202,7 +202,7 @@ MonoBehaviour:
manifest: {fileID: 11400000, guid: d2ff85c9d4e364f50aa65158f0b6daa2, type: 2}
inputManager: {fileID: 2567165502544804230}
configurationPersistenceService: {fileID: 11400000, guid: fd9dae561c8d640df9c516df6a7d3b37, type: 2}
gameDataPersistenceService: {fileID: 11400000, guid: 4715554a8f2cb477bbf691096f0903f9, type: 2}
gameSlotPersistenceService: {fileID: 11400000, guid: 4715554a8f2cb477bbf691096f0903f9, type: 2}
gameStateMachine: {fileID: 0}
--- !u!1 &6646150498879786644
GameObject:

View File

@ -10,7 +10,7 @@ MonoBehaviour:
m_Enabled: 1
m_EditorHideFlags: 0
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
saveDirectory: saves
fileSaveExtension: save

View File

@ -10,7 +10,7 @@ MonoBehaviour:
m_Enabled: 1
m_EditorHideFlags: 0
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
extraWaiting: 3
fileHandler: {fileID: 11400000, guid: 1deed874fc4f94a079572799b9b16936, type: 2}

View File

@ -10,13 +10,23 @@ MonoBehaviour:
m_Enabled: 1
m_EditorHideFlags: 0
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
extraWaiting: 1
extraWaiting: 0
fileHandler: {fileID: 11400000, guid: 1deed874fc4f94a079572799b9b16936, type: 2}
configurationPersistenceService: {fileID: 11400000, guid: fd9dae561c8d640df9c516df6a7d3b37, type: 2}
currentGameDataSaveFile:
currentGameSlotSaveFile:
fileId: game-slot-slot-01
savedAt: 06/25/2026 08:45:20
data:
seed: cba1fc77c68a4d91b5484226bd4e8e09
savedAt:
slot:
seed: 60b725d607804d63946d14821cf64b3a
SentinelData:
Version: 0
LatestSaveStation:
StageId:
DeploymentPoint:
X: 0
Y: 0
Z: 0
WorldData:
Version: 0

View File

@ -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

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 455e03f48525c4cfdb6126c542e5a46a
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -14,6 +14,7 @@ MonoBehaviour:
m_EditorClassIdentifier: Intrepid General Utilities::Intrepid.Utilities.SingletonScriptableObjectManifest
singletons:
- {fileID: 11400000, guid: 9ea72f9e3cacb4fc495eff7431ec5551, type: 2}
- {fileID: 11400000, guid: 455e03f48525c4cfdb6126c542e5a46a, type: 2}
- {fileID: 11400000, guid: 53f1211059b4847a49bde1be4b8d166c, type: 2}
- {fileID: 11400000, guid: b8a6c320b2b504cd09b22319b1d587a2, type: 2}
- {fileID: 11400000, guid: 84f36528c13ab48d6ae2ae41878f2f9f, type: 2}

View File

@ -196,6 +196,7 @@ GameObject:
- component: {fileID: 740018679}
- component: {fileID: 740018681}
- component: {fileID: 740018682}
- component: {fileID: 740018683}
- component: {fileID: 740018678}
m_Layer: 0
m_Name: GameMachine
@ -280,6 +281,21 @@ MonoBehaviour:
gameState: 1
scenes:
- {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
SceneRoots:
m_ObjectHideFlags: 0

View File

@ -149,7 +149,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Intrepid.Temporary.FakeSceneManager
subscriptionId: 240c1e17dada481686201db0d4f74fd4
nextState: 1
nextState: 4
delay: 0.5
curtainType: {fileID: 11400000, guid: d91043b858654867aaa66b20d678191d, type: 2}
sceneName: Boot

View File

@ -484,7 +484,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Intrepid.Temporary.FakeSceneManager
subscriptionId: 240c1e17dada481686201db0d4f74fd4
nextState: 5
nextState: 4
delay: 2
curtainType: {fileID: 11400000, guid: d91043b858654867aaa66b20d678191d, type: 2}
sceneName: Opening

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c9b8eda3976bd469d9e72da6cb4fc5ea
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View 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

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e0f4c84d2634a47cebca071a217b5303
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View 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}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e8820d766dca14db2a5ce1fdfdcf976b
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because one or more lines are too long

View File

@ -33,22 +33,31 @@ namespace Intrepid.Core.Entities
public EntitySensor EntitySensor => entitySensor;
protected void OnEnable()
protected virtual void OnEnable()
{
UpdatableCollection.Instance.Add(this);
}
protected void OnDisable()
protected virtual void OnDisable()
{
UpdatableCollection.Instance?.Remove(Id);
}
public virtual void WhenEntering()
{
EntityBrain.WhenEntering();
}
public virtual void WhenExiting()
{
EntityBrain.WhenExiting();
}
public virtual void UpdateFromUpdatable()
{
EntityBrain.UpdateFromUpdatable();
}
public virtual void LateUpdateFromUpdatable()
{
EntityBrain.LateUpdateFromUpdatable();

View File

@ -11,7 +11,9 @@ namespace Intrepid.Core.Entities
public string Id => SubscriptionId;
protected Entity RootEntity => rootEntity;
public abstract void WhenEntering();
public abstract void WhenExiting();
public abstract void UpdateFromUpdatable();
public abstract void LateUpdateFromUpdatable();
public abstract void FixedUpdateFromUpdatable();

View File

@ -17,7 +17,7 @@ namespace Intrepid.Core
[GroupInjections, SerializeField] private SingletonScriptableObjectManifest manifest;
[GroupInjections, SerializeField] private InputManager inputManager;
[GroupInjections, SerializeField] private ConfigurationPersistenceService configurationPersistenceService;
[GroupInjections, SerializeField] private GameDataPersistenceService gameDataPersistenceService;
[GroupInjections, SerializeField] private GameSlotPersistenceService gameSlotPersistenceService;
[GroupInjections, SerializeField] private GameStateMachine gameStateMachine;
public static GameManager Instance => (GameManager)Proxy.Instance.GameManager;
@ -25,7 +25,7 @@ namespace Intrepid.Core
private GameStateMachine GameStateMachine => gameStateMachine;
public ConfigurationPersistenceService ConfigurationPersistenceService => configurationPersistenceService;
public GameDataPersistenceService GameDataPersistenceService => gameDataPersistenceService;
public GameSlotPersistenceService GameSlotPersistenceService => gameSlotPersistenceService;
public override void BootStrap()
{
@ -36,6 +36,7 @@ namespace Intrepid.Core
Cursor.visible = false;
InputService.Instance.ChangeInputSchema(InputSchema.None);
DLogger.LogDebug($"resolution {InternalWidth} x {InternalHeight}");
// GameSlotPersistenceService.ClearGameData();
}
public void ChangeGameStateTo(

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 1d6122927bd7457fac25b53c91f660eb
timeCreated: 1782403921

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: dbf40c82544947d882cc73be4f1ed6a1
timeCreated: 1782403928

View File

@ -0,0 +1,6 @@
namespace Intrepid.Gameplay.Data.Conversion
{
public interface Converter<A, B> : Marshaler<A, B>, Unmarshaler<A, B>
{
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 059d79fa41b8484ea74b8a5ba952f8a4
timeCreated: 1782404056

View File

@ -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();
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 7f54c16bb2a74d6a8123eeef4045c973
timeCreated: 1782404294

View File

@ -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;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 4fd8c09356874683a62f2dc62eca8225
timeCreated: 1782458358

View File

@ -0,0 +1,7 @@
namespace Intrepid.Gameplay.Data.Conversion
{
public interface Marshaler<out A, in B>
{
A Marshal(B b);
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 756a95987c3b4615ab76249e1266ccb0
timeCreated: 1782458425

View File

@ -0,0 +1,7 @@
namespace Intrepid.Gameplay.Data.Conversion
{
public interface Unmarshaler<in A, out B>
{
B Unmarshal(A a);
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 98cca2f828724235a83adb579ae790d3

View File

@ -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);
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 84b0afcc92eb4e588eb82be4f0e8d483
timeCreated: 1782403942

View 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;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 1ed708114a7843619a32a0d38d32a55f
timeCreated: 1782452250

View 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)
{
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 9a8a458b92c04959bb71a74c7f2c76e0
timeCreated: 1782451748

View File

@ -1,7 +1,7 @@
using System;
using Intrepid.Diagnostics;
using Intrepid.Localization;
using Intrepid.Structures;
using Intrepid.Utilities;
using Sirenix.OdinInspector;
namespace Intrepid.Gameplay.Entities.Player.ActionBelt
@ -17,7 +17,7 @@ namespace Intrepid.Gameplay.Entities.Player.ActionBelt
public Parameter[] DescriptionParams { get; set; }
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;
};

View File

@ -1,8 +1,8 @@
using System.Collections.Generic;
using Intrepid.Diagnostics;
using Intrepid.GameManagers;
using Intrepid.Gameplay.Entities.Player.PDA.Inputs;
using Intrepid.Sound;
using Intrepid.Utilities;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
@ -121,7 +121,7 @@ namespace Intrepid.Gameplay.Entities.Player.PDA.UI.Applications.MusicPlayer
{
if (soundMusicData is null)
{
Dbg.Always.LogError("there is no music data selected");
DLogger.LogError("there is no music data selected");
return;
}

View File

@ -2,9 +2,9 @@ using Intrepid.Gameplay.Journey;
using Intrepid.SimpleEvents;
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 Vector3 DeploymentPoint { get; set; }

View File

@ -5,12 +5,14 @@ using Intrepid.Core.Entities;
using Intrepid.Core.Entities.Messages;
using Intrepid.Core.TimeControl;
using Intrepid.GameManagers;
using Intrepid.Gameplay.Data;
using Intrepid.Gameplay.Entities.Player.ActionBelt;
using Intrepid.Gameplay.Entities.Player.Sentinel.Cadence;
using Intrepid.Gameplay.Entities.Player.Sentinel.Events;
using Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine;
using Intrepid.Gameplay.Flooring.Events;
using Intrepid.Gameplay.Journey.Messages.Events;
using Intrepid.Gameplay.Messages.Events;
using Intrepid.Integration.Persistence;
using Intrepid.Structures;
using Intrepid.Utilities;
using UnityEngine;
@ -86,12 +88,22 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel
});
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()
{
if (!IsEnabled) return;

View File

@ -16,6 +16,7 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel
public static class Parameters
{
public const string KnockdownForce = "KnockdownForce";
public const string DeploymentPoint = "DeploymentPoint";
}
}
}

View File

@ -3,7 +3,6 @@ using Intrepid.Core.Grounding;
using Intrepid.GameManagers;
using Intrepid.Gameplay.Entities.Player.Sentinel.Events;
using Intrepid.Gameplay.Flooring;
using Intrepid.Gameplay.Messages.Events;
using Intrepid.Utilities;
using UnityEngine;
@ -65,6 +64,11 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel
MotorPhysicsContact.enabled = false;
}
private void Start()
{
RetreatEntity();
}
public void ChangeOrientation(Vector2 direction)
{
if (direction.sqrMagnitude <= GonConstants.CommonZeroSqrt)

View File

@ -1,5 +1,4 @@
using Intrepid.Gameplay.Entities.Player.Sentinel.Events;
using Intrepid.Gameplay.Messages.Events;
using Intrepid.Structures;
using Intrepid.Utilities;
using UnityEngine;

View File

@ -1,11 +1,7 @@
using Intrepid.Core;
using Intrepid.Diagnostics;
using Intrepid.GameManagers;
using Intrepid.Gameplay.Messages.Events;
using Intrepid.Integration.Input;
using Intrepid.Integration.Persistence;
using Intrepid.Integration.Persistence.DTOs;
using Intrepid.Integration.Persistence.Events;
using Intrepid.SaveSystem;
using Intrepid.Structures;
using Intrepid.Utilities;
using UnityEngine;
@ -14,7 +10,6 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine.States
{
public class SentinelStateSavingStation : SentinelState
{
[GroupInjections, SerializeField] private GameDataPersistenceService gameDataPersistenceService;
[GroupInjections, SerializeField] private AnimationClip savingStation;
[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)
{
var e = ps.Get<SaveStationActionExecutedEvent>("SaveStationActionExecutedEvent");
var deploymentPoint = ps.Get<Vector3>(SentinelConstants.Parameters.DeploymentPoint);
Brain.Entity.DesiredVelocity = Vector2.zero;
Brain.Entity.Position = e.DeploymentPoint;
Brain.Entity.Position = deploymentPoint;
Brain.Entity.ChangeOrientation(Vector2.down);
Brain.Entity.ModelAnimation.Play(savingStation);
Timer.Stop();
gameDataPersistenceService.SaveCurrentGameData(new SavingCallbacksAggregator<GameDataSaveFileDTO>(
gameData =>
{
gameData.data.SentinelData.LatestSaveStation = new SaveStationDTO
{
StageId = e.StageTag.StageId,
DeploymentPosition = e.DeploymentPoint.ToVector3DTO(),
};
},
_ => { }));
GameManager.Instance.GameSlotPersistenceService.SaveCurrentGameData();
}
protected override void RunOnExit()

View File

@ -3,9 +3,9 @@ using System.Collections;
using Intrepid.Core.Camera;
using Intrepid.Diagnostics;
using Intrepid.GameManagers;
using Intrepid.Gameplay.Data;
using Intrepid.Gameplay.Entities.Player.ActionBelt.Events;
using Intrepid.Gameplay.Entities.Player.Tags;
using Intrepid.Gameplay.Journey.Messages;
using Intrepid.Gameplay.Journey.Messages.Events;
using Intrepid.Integration.Input;
using Intrepid.SimpleEvents;
@ -40,9 +40,9 @@ namespace Intrepid.Gameplay.Journey
private IBackStageWindowExecution CallbackProcessors { get; set; }
private string DestinyEndpoint { get; set; }
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()
{
@ -57,9 +57,24 @@ namespace Intrepid.Gameplay.Journey
#if UNITY_EDITOR
if (IsRunningTest && stageToTest.IsNotNull())
{
LoadJourneyForTesting(stageToTest, landingStart);
LoadJourneyForTesting(stageToTest);
return;
}
#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()
@ -69,54 +84,72 @@ namespace Intrepid.Gameplay.Journey
private void Update()
{
BackStageService.UpdateCurtains();
if (OpenCurtainProgress?.IsFinished() ?? false)
{
OpenCurtainProgress = null;
AfterOpened();
}
}
protected override void OnTearDown()
{
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)]
private void LoadJourneyForTesting(StageTag stage, Transform landing)
private void LoadJourneyForTesting(StageTag stageTag, Transform landing = null)
{
LoadJourney(new LoadJourneyRequest
if (stageTag.IsNull())
{
StageTag = stage
});
StartCoroutine(OpenAfterNSecs(landing.IsNull() ? landingStart : landing));
DLogger.LogWarn("stage tag is empty, you should bootstrap manually");
return;
}
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 WaitUntilCurtainGetsOpened(ICurtainProgress openCurtainProgress, Action action)
{
yield return new WaitUntil(openCurtainProgress.IsFinished);
action?.Invoke();
}
private IEnumerator OpenAfterNSecs(Transform landing, float nSecs = 1f)
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);
Proxy.Instance.EventBus.Raise(new StageDispatchDeploymentPointEvent
{
DeploymentPoint = landing.position,
});
OpenCurtainProgress = Proxy.Instance.CurtainStateMachine.RaiseCommand(CurtainCommandType.Open);
action?.Invoke();
}
[GroupDebug, Button(ButtonSizes.Large, ButtonStyle.FoldoutButton)]
private void ChangeStageForTesting(StageTag stageTag, string destinyEndpoint)
{

View File

@ -263,6 +263,16 @@ namespace Intrepid.Gameplay.Journey
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(
string stageId,
string endpointId,

View File

@ -1,7 +1,10 @@
using UnityEngine;
namespace Intrepid.Gameplay.Journey.Messages
{
public class LoadJourneyRequest
{
public StageTag StageTag { get; set; }
public Vector3 DeploymentPoint { get; set; }
}
}

View File

@ -16,7 +16,7 @@ namespace Intrepid.Gameplay.Journey
}
private AsyncOperation AsyncOperation { get; set; }
public bool IsLoadingFinished => AsyncOperation.isDone;
public bool IsLoadingFinished => AsyncOperation?.isDone ?? false;
public bool CanEnterState => true;
public bool CanExitState => true;

View File

@ -10,7 +10,7 @@ namespace Intrepid.Gameplay.Journey
private IState<StageTag, StageLoadingService> CurrentState => StateMachine.GetCurrentState();
public StageTag CurrentStageTag => CurrentState.GetStateKey();
public bool IsLoadingFinished => CurrentState.Implementation().IsLoadingFinished;
public bool IsLoadingFinished => CurrentState?.Implementation()?.IsLoadingFinished ?? false;
public bool IsRunning => StateMachine.IsRunning;
public void LoadMachine(IEnumerable<StageTag> stageTags)

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: ff892e2a13ea49c08ea9dca213fafb6a
timeCreated: 1780477050

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: f4a9672231414939926d322b1d138287
timeCreated: 1780477050

View File

@ -1,6 +1,6 @@
using Intrepid.GameManagers;
using Intrepid.Gameplay.Entities.Player.ActionBelt;
using Intrepid.Gameplay.Messages.Events;
using Intrepid.Gameplay.Entities.Player.Sentinel.Events;
using Intrepid.Localization;
using Intrepid.Utilities;
using UnityEngine;
@ -18,7 +18,7 @@ namespace Intrepid.Gameplay.Prototyping.SaveStations
protected override void Execute(ActionIdentifier identifier)
{
Proxy.Instance.EventBus.Raise(new SaveStationActionExecutedEvent
Proxy.Instance.EventBus.Raise(new LatestSaveStationEvent
{
StageTag = saveStationModelPrototype.StageTag,
DeploymentPoint = saveStationModelPrototype.DeploymentPoint

View File

@ -37,7 +37,6 @@ namespace Intrepid.Gameplay.Prototyping.Sockets
return;
}
JourneyManager.Instance.ChangeStageTo(stageTag, destinyEndpoint);
DLogger.LogDebug("stage change");
}
private string GrabDestinyEndpoint(JConnection jConnection)

View File

@ -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);
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: c966cb6d0fea4f26ba9443a3ba16f36d
timeCreated: 1782452283

View File

@ -8,7 +8,7 @@ using UnityEngine;
namespace Intrepid.Integration.Persistence
{
[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>
{
private const string ConfigurationSaveFileName = "configuration";

View File

@ -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(),
};
}
}
}

View File

@ -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(),
};
}
}
}

View File

@ -6,9 +6,9 @@ using UnityEngine;
namespace Intrepid.Integration.Persistence.DTOs
{
[Serializable]
public class GameDataSaveFileDTO : SaveFileDTO
public class GameSlotSaveFileDTO : SaveFileDTO
{
[SerializeField, InlineProperty, Title("Game Data"), HideLabel, PropertySpace]
public GameDataDTO data;
[SerializeField, InlineProperty, Title("Game Slot"), HideLabel, PropertySpace]
public GameSlotDTO slot;
}
}

View File

@ -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,
};
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 4df2772c805448e3887df8b70fc14d82
timeCreated: 1782400976

View File

@ -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,
};
}
}
}

View File

@ -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,
};
}
}
}

View File

@ -0,0 +1,7 @@
namespace Intrepid.Integration.Persistence.DTOs
{
public abstract class VersionableDTO
{
public int Version;
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: df9df66862c44d6aa9f73eda508d2107
timeCreated: 1782456838

View File

@ -0,0 +1,16 @@
using System;
namespace Intrepid.Integration.Persistence.DTOs
{
[Serializable]
public class WorldDTO : VersionableDTO
{
public static WorldDTO WithInitialValues()
{
return new WorldDTO
{
};
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: da0c993c43c84e629820ea48f184398d
timeCreated: 1782451963

View File

@ -1,10 +1,8 @@
using Intrepid.Integration.Persistence.DTOs;
using Intrepid.SimpleEvents;
namespace Intrepid.Integration.Persistence.Events
{
public class SavingGameDataBeginEvent : IEventBase
{
public GameDataSaveFileDTO GameData { get; set; }
}
}

View File

@ -2,9 +2,9 @@
{
public enum GameDataSlotType
{
Slot01 = 0,
Slot02 = 1,
Slot03 = 2,
None = 1000
None = 0,
Slot01 = 1,
Slot02 = 2,
Slot03 = 3,
}
}

View File

@ -1,4 +1,5 @@
using System;
using Intrepid.Diagnostics;
using Intrepid.GameManagers;
using Intrepid.Integration.Persistence.DTOs;
using Intrepid.Integration.Persistence.Events;
@ -10,18 +11,21 @@ using UnityEngine;
namespace Intrepid.Integration.Persistence
{
[Serializable]
[CreateAssetMenu(fileName = "Persistence Game Data", menuName = "Intrepid/Save System/Persistence Game Data")]
public class GameDataPersistenceService : AbstractPersistenceService<GameDataSaveFileDTO>
[CreateAssetMenu(fileName = "Persistence Game Slot", menuName = "GON/Services/Persistence Game Slot")]
public class GameSlotPersistenceService : AbstractPersistenceService<GameSlotSaveFileDTO>
{
public static readonly SavingCallbacksAggregator<GameDataSaveFileDTO> Events = new(
gameData => Proxy.Instance?.EventBus.Raise(new SavingGameDataBeginEvent { GameData = gameData }),
public static readonly SavingCallbacksAggregator<GameSlotSaveFileDTO> Events = new(
gameData =>
{
StorageAssembler.Instance.TakeSnapshot(gameData.slot);
Proxy.Instance?.EventBus.Raise(new SavingGameDataBeginEvent());
},
isOk => Proxy.Instance?.EventBus.Raise(new SavingGameDataEndEvent { IsOk = isOk }));
[GroupInjections, SerializeField]
private ConfigurationPersistenceService configurationPersistenceService;
[GroupInjections, SerializeField] private ConfigurationPersistenceService configurationPersistenceService;
[GroupDebug, ReadOnly, SerializeField, InlineProperty, HideLabel, Title("Current Slot"), PropertySpace]
private GameDataSaveFileDTO currentGameDataSaveFile;
private GameSlotSaveFileDTO currentGameSlotSaveFile;
[GroupDebug, ReadOnly, ShowInInspector, PropertyOrder(-9), PropertySpace, LabelText("Game Slot")]
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)
{
@ -70,51 +74,45 @@ namespace Intrepid.Integration.Persistence
Delete(BuildSaveSlotIdFrom(gameSlotType));
}
[GroupDebug]
[Button]
[PropertyOrder(-10)]
[GroupDebug, Button(ButtonSizes.Medium, ButtonStyle.FoldoutButton), PropertyOrder(-10)]
public void SaveCurrentGameDataQuietly()
{
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;
await Save(currentGameDataSaveFile, savingCallbacks);
await Save(currentGameSlotSaveFile, savingCallbacks);
}
[GroupDebug]
[Button(ButtonStyle.FoldoutButton)]
[PropertyOrder(-10)]
public GameDataSaveFileDTO CreateEmptyGameDataAsCurrent(GameDataSlotType gameSlotType)
[GroupDebug, Button(ButtonSizes.Medium, ButtonStyle.FoldoutButton), PropertyOrder(-10)]
public GameSlotSaveFileDTO CreateEmptyGameDataAsCurrent(GameDataSlotType gameSlotType = GameDataSlotType.Slot01)
{
var gameData = GameDataDTO.WithInitialValues();
currentGameDataSaveFile = new GameDataSaveFileDTO
var gameData = GameSlotDTO.WithInitialValues();
currentGameSlotSaveFile = new GameSlotSaveFileDTO
{
fileId = BuildSaveSlotIdFrom(gameSlotType),
data = gameData
slot = gameData
};
CurrentGameDataSlotTypeLoaded = gameSlotType;
return currentGameDataSaveFile;
return currentGameSlotSaveFile;
}
public GameDataSaveFileDTO LoadGame(GameDataSlotType gameSlotType)
public GameSlotSaveFileDTO LoadGame(GameDataSlotType gameSlotType = GameDataSlotType.Slot01)
{
return Load(BuildSaveSlotIdFrom(gameSlotType));
}
public void SetAsCurrent(GameDataSlotType gameSlotType, GameDataSaveFileDTO gameDataSaveSlot)
private void SetAsCurrent(GameDataSlotType gameSlotType, GameSlotSaveFileDTO gameSlotSaveSlotSave)
{
CurrentGameDataSlotTypeLoaded = gameSlotType;
currentGameDataSaveFile = gameDataSaveSlot;
currentGameSlotSaveFile = gameSlotSaveSlotSave;
}
[GroupDebug]
[Button(ButtonStyle.FoldoutButton)]
[PropertyOrder(-10)]
private void LoadGameDataAsCurrent(GameDataSlotType gameSlotType)
[GroupDebug, Button(ButtonSizes.Medium, ButtonStyle.FoldoutButton), PropertyOrder(-10)]
public void LoadGameDataAsCurrent(GameDataSlotType gameSlotType = GameDataSlotType.Slot01)
{
if (ExistsGameSlot(gameSlotType))
{
@ -123,15 +121,13 @@ namespace Intrepid.Integration.Persistence
}
ClearGameData();
Dbg.Always.LogError($"no game slot available to load: {BuildSaveSlotIdFrom(gameSlotType)}");
DLogger.LogError($"no game slot available to load: {BuildSaveSlotIdFrom(gameSlotType)}");
}
[GroupDebug]
[Button]
[PropertyOrder(-10)]
private void ClearGameData()
[GroupDebug, Button(ButtonSizes.Medium, ButtonStyle.FoldoutButton), PropertyOrder(-10)]
public void ClearGameData()
{
currentGameDataSaveFile = null;
currentGameSlotSaveFile = null;
CurrentGameDataSlotTypeLoaded = GameDataSlotType.None;
}
}

View File

@ -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);
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: d54c80455b0a40e6a47a28a3bbf0722d
timeCreated: 1782454467

View File

@ -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.");
}
}
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 396cb6e3d4c94d5b86c3b4fbe34531f1
timeCreated: 1782409836

View File

@ -0,0 +1,8 @@
namespace Intrepid.Integration.Persistence
{
public static class Versions
{
public const int Sentinel = 1;
public const int World = 1;
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: b856f06bd099441f92a5330cf1c3ec96
timeCreated: 1782456980

View File

@ -4,7 +4,9 @@ namespace Intrepid.Utilities.Updatable
{
string Id { get; }
int Order => int.MaxValue;
void WhenEntering();
void WhenExiting();
void UpdateFromUpdatable();
void LateUpdateFromUpdatable();
void FixedUpdateFromUpdatable();

View File

@ -25,14 +25,21 @@ namespace Intrepid.Utilities.Updatable
public void Add(IUpdatable updatable)
{
UpdatableMap.TryAdd(updatable.Id, updatable);
AddedIds.Add(updatable.Id);
if (UpdatableMap.TryAdd(updatable.Id, updatable))
{
updatable.WhenEntering();
AddedIds.Add(updatable.Id);
}
}
public void Remove(string id)
{
UpdatableMap.Remove(id);
RemovedIds.Add(id);
if (UpdatableMap.TryGetValue(id, out var updatable))
{
updatable.WhenExiting();
UpdatableMap.Remove(id);
RemovedIds.Add(id);
}
}
public void ListOrderManagement()

View 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);
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 1100e436cf8b41549c11bf1b24ec387f
timeCreated: 1782461664

View File

@ -5,7 +5,7 @@
"depth": 0,
"source": "git",
"dependencies": {},
"hash": "be2ea033f2bea17b65f158f686a54458e8cd9606"
"hash": "aff4fd3d1d9ba1bdc6a924b309e7af883e8cf191"
},
"com.unity.2d.animation": {
"version": "13.0.5",