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}
|
||||
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:
|
||||
|
||||
@ -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
|
||||
@ -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}
|
||||
@ -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
|
||||
@ -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
|
||||
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}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
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;
|
||||
|
||||
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()
|
||||
{
|
||||
|
||||
@ -12,6 +12,8 @@ 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();
|
||||
|
||||
@ -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(
|
||||
|
||||
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 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;
|
||||
};
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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; }
|
||||
@ -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;
|
||||
|
||||
@ -16,6 +16,7 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel
|
||||
public static class Parameters
|
||||
{
|
||||
public const string KnockdownForce = "KnockdownForce";
|
||||
public const string DeploymentPoint = "DeploymentPoint";
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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)
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
using Intrepid.Gameplay.Entities.Player.Sentinel.Events;
|
||||
using Intrepid.Gameplay.Messages.Events;
|
||||
using Intrepid.Structures;
|
||||
using Intrepid.Utilities;
|
||||
using UnityEngine;
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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,11 +84,6 @@ namespace Intrepid.Gameplay.Journey
|
||||
private void Update()
|
||||
{
|
||||
BackStageService.UpdateCurtains();
|
||||
if (OpenCurtainProgress?.IsFinished() ?? false)
|
||||
{
|
||||
OpenCurtainProgress = null;
|
||||
AfterOpened();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnTearDown()
|
||||
@ -81,40 +91,63 @@ namespace Intrepid.Gameplay.Journey
|
||||
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;
|
||||
}
|
||||
|
||||
private IEnumerator OpenAfterNSecs(Transform landing, float nSecs = 1f)
|
||||
StageStateMachine.InitMachine(stageTag);
|
||||
IsBooting = false;
|
||||
if (IsRunningTest)
|
||||
{
|
||||
yield return new WaitForSeconds(nSecs);
|
||||
Proxy.Instance.EventBus.Raise(new StageDispatchDeploymentPointEvent
|
||||
{
|
||||
DeploymentPoint = landing.position,
|
||||
DeploymentPoint = landing?.position ?? landingStart.position,
|
||||
DeploymentDirection = Vector2.down,
|
||||
});
|
||||
OpenCurtainProgress = Proxy.Instance.CurtainStateMachine.RaiseCommand(CurtainCommandType.Open);
|
||||
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 WaitUntilStageLoadingIsFinished(Action action)
|
||||
{
|
||||
yield return new WaitUntil(() => StageStateMachine?.IsLoadingFinished ?? false);
|
||||
action?.Invoke();
|
||||
}
|
||||
|
||||
private IEnumerator WaitingNSecs(float nSecs, Action action)
|
||||
{
|
||||
yield return new WaitForSeconds(nSecs);
|
||||
action?.Invoke();
|
||||
}
|
||||
|
||||
[GroupDebug, Button(ButtonSizes.Large, ButtonStyle.FoldoutButton)]
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -1,7 +1,10 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Intrepid.Gameplay.Journey.Messages
|
||||
{
|
||||
public class LoadJourneyRequest
|
||||
{
|
||||
public StageTag StageTag { get; set; }
|
||||
public Vector3 DeploymentPoint { get; set; }
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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.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
|
||||
|
||||
@ -37,7 +37,6 @@ namespace Intrepid.Gameplay.Prototyping.Sockets
|
||||
return;
|
||||
}
|
||||
JourneyManager.Instance.ChangeStageTo(stageTag, destinyEndpoint);
|
||||
DLogger.LogDebug("stage change");
|
||||
}
|
||||
|
||||
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
|
||||
{
|
||||
[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";
|
||||
|
||||
@ -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
|
||||
{
|
||||
[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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
|
||||
namespace Intrepid.Integration.Persistence.Events
|
||||
{
|
||||
public class SavingGameDataBeginEvent : IEventBase
|
||||
{
|
||||
public GameDataSaveFileDTO GameData { get; set; }
|
||||
}
|
||||
}
|
||||
@ -2,9 +2,9 @@
|
||||
{
|
||||
public enum GameDataSlotType
|
||||
{
|
||||
Slot01 = 0,
|
||||
Slot02 = 1,
|
||||
Slot03 = 2,
|
||||
None = 1000
|
||||
None = 0,
|
||||
Slot01 = 1,
|
||||
Slot02 = 2,
|
||||
Slot03 = 3,
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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; }
|
||||
int Order => int.MaxValue;
|
||||
|
||||
void WhenEntering();
|
||||
void WhenExiting();
|
||||
void UpdateFromUpdatable();
|
||||
void LateUpdateFromUpdatable();
|
||||
void FixedUpdateFromUpdatable();
|
||||
|
||||
@ -25,15 +25,22 @@ namespace Intrepid.Utilities.Updatable
|
||||
|
||||
public void Add(IUpdatable updatable)
|
||||
{
|
||||
UpdatableMap.TryAdd(updatable.Id, updatable);
|
||||
if (UpdatableMap.TryAdd(updatable.Id, updatable))
|
||||
{
|
||||
updatable.WhenEntering();
|
||||
AddedIds.Add(updatable.Id);
|
||||
}
|
||||
}
|
||||
|
||||
public void Remove(string id)
|
||||
{
|
||||
if (UpdatableMap.TryGetValue(id, out var updatable))
|
||||
{
|
||||
updatable.WhenExiting();
|
||||
UpdatableMap.Remove(id);
|
||||
RemovedIds.Add(id);
|
||||
}
|
||||
}
|
||||
|
||||
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,
|
||||
"source": "git",
|
||||
"dependencies": {},
|
||||
"hash": "be2ea033f2bea17b65f158f686a54458e8cd9606"
|
||||
"hash": "aff4fd3d1d9ba1bdc6a924b309e7af883e8cf191"
|
||||
},
|
||||
"com.unity.2d.animation": {
|
||||
"version": "13.0.5",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user