Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
hho210 2025-08-06 15:20:23 +09:00
commit ec1372748b
33 changed files with 16734 additions and 1001 deletions

View File

@ -15,8 +15,14 @@ MonoBehaviour:
m_GroupName: Group
m_GUID: 30e7f67fe9aaa7849a34c9b6e2bc53ae
m_SerializeEntries:
- m_GUID: 01781f7b55a7c704a8522915038fb571
m_Address: RestaurantProps
- m_GUID: 01b8de2498ebb6a49843147da99a3c8d
m_Address: RestaurantManagementUi
m_ReadOnly: 0
m_SerializedLabels:
- Atlas
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 034ac52b4c3fe854193b7c9c2d353be5
m_Address: Foods
m_ReadOnly: 0
m_SerializedLabels:
- Atlas
@ -38,6 +44,12 @@ MonoBehaviour:
m_SerializedLabels:
- Prefab
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 2007acba03804024a801aee30991e439
m_Address: Ingredients
m_ReadOnly: 0
m_SerializedLabels:
- Atlas
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 2986d47c2acd84257866fc5e3180f833
m_Address: BarrelTestTile
m_ReadOnly: 0
@ -66,8 +78,8 @@ MonoBehaviour:
m_ReadOnly: 0
m_SerializedLabels: []
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 45df551d68bbf8447aa57710f5408b3f
m_Address: Ingredients
- m_GUID: 43d183a6e5f0da746b6dbe4b447caa9e
m_Address: RestaurantProps
m_ReadOnly: 0
m_SerializedLabels:
- Atlas
@ -83,26 +95,26 @@ MonoBehaviour:
m_ReadOnly: 0
m_SerializedLabels: []
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 63856fbf8c315884487fa5c6fb1616f5
m_Address: Drinks
m_ReadOnly: 0
m_SerializedLabels:
- Atlas
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 700b1d73671ee424dadd18a1443e7b7b
m_Address: BarrelTestProp
m_ReadOnly: 0
m_SerializedLabels:
- Material
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 79f90744c9c7ada498ba1ee8c60272d3
m_Address: Common
m_ReadOnly: 0
m_SerializedLabels:
- Atlas
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 7a110f482049d4062b4545dc94852fea
m_Address: PropBarrelTestProp
m_ReadOnly: 0
m_SerializedLabels:
- Prefab
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 7e99097a09ed8b24bb249a1bd7969dc9
m_Address: RestaurantManagementUi
- m_GUID: 7d5defa51c3d6764ca544d54592fdb47
m_Address: RestaurantManagementUi_OnlyAtlas
m_ReadOnly: 0
m_SerializedLabels:
- Atlas
@ -123,6 +135,12 @@ MonoBehaviour:
m_ReadOnly: 0
m_SerializedLabels: []
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 91f41ed6ea0600f4abed98cf0bf53bc5
m_Address: Drinks
m_ReadOnly: 0
m_SerializedLabels:
- Atlas
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 99d3d87bd43df65488e757c43a308f36
m_Address: ConfirmUi_RestaurantUiActions_InputBindingSo
m_ReadOnly: 0
@ -134,24 +152,12 @@ MonoBehaviour:
m_SerializedLabels:
- Scene
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: bc513b925e9b7294d9dae94d21c23182
m_Address: Foods
m_ReadOnly: 0
m_SerializedLabels:
- Atlas
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: be3e2271305612d4ab3277c241ffe629
m_Address: Restaurant2
m_ReadOnly: 0
m_SerializedLabels:
- Scene
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: c6b00035a78a6984988f4a04d96018f2
m_Address: RestaurantManagementUi_OnlyAtlas
m_ReadOnly: 0
m_SerializedLabels:
- Atlas
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: c6d19267dabc844449cc778f2f03fb34
m_Address: SummerGrass01_SkeletonData
m_ReadOnly: 0
@ -169,6 +175,12 @@ MonoBehaviour:
m_SerializedLabels:
- Prefab
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: d530c37d61295a6498a34f20e4a70bee
m_Address: Cookwares
m_ReadOnly: 0
m_SerializedLabels:
- Atlas
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: ddb0db863be8f254bb8a8f07d39a960e
m_Address: RestaurantPlayerDataSo
m_ReadOnly: 0
@ -198,12 +210,6 @@ MonoBehaviour:
m_SerializedLabels:
- Prefab
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: f4456100a115bb54eb83d25dfc9d6f4f
m_Address: Common
m_ReadOnly: 0
m_SerializedLabels:
- Atlas
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: f9bb25b96d102c34ea2088901e9815df
m_Address: TasteHashTagSlotUi
m_ReadOnly: 0

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,73 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-8234383602081283606
MonoBehaviour:
m_ObjectHideFlags: 11
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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 9
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Shader Graphs_WorldGridShader
m_Shader: {fileID: -6465566751694194690, guid: 751d5e3beaa1c4d8ab1bdb6fdc7a7f1f, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses:
- MOTIONVECTORS
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _SampleTexture2D_2b1c29c3c7a141dab7b3fdf5defb1f81_Texture_1_Texture2D:
m_Texture: {fileID: 2800000, guid: bf72a12a639b04d609de13f1e8957f2a, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_Lightmaps:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_LightmapsInd:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_ShadowMasks:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AlphaNoiseSpeed: 0.002
- _ColorNoiseSpeed: 0.001
- _DiagonalMode: 1
- _DistortionIntensity: 0.2
- _DistortionSpeed: 0.02
- _DistortionTiling: 1
- _GridAngle: 45
- _GridScale: 1
- _LineWidth: 0.02
- _QueueControl: 0
- _QueueOffset: 0
m_Colors:
- _GridLineColor: {r: 0.5, g: 1, b: 1, a: 1}
- _Offset: {r: 0.5, g: 0, b: 0, a: 0}
m_BuildTextureStacks: []
m_AllowLocking: 1

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 9b5ebdd09c8f1447f912bc7fcee64423
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 751d5e3beaa1c4d8ab1bdb6fdc7a7f1f
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3}

View File

@ -411,32 +411,7 @@ AnimationClip:
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves: []
m_ScaleCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: {x: 1, y: 1, z: 1}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 0.16666667
value: {x: 0.9, y: 0.9, z: 0.9}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
path:
m_ScaleCurves: []
m_FloatCurves:
- serializedVersion: 2
curve:
@ -451,15 +426,6 @@ AnimationClip:
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.16666667
value: 0.8980393
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
@ -481,15 +447,6 @@ AnimationClip:
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.16666667
value: 0.8588236
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
@ -511,15 +468,6 @@ AnimationClip:
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.16666667
value: 0.6
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
@ -541,15 +489,6 @@ AnimationClip:
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.16666667
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
@ -587,15 +526,6 @@ AnimationClip:
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 0
attribute: 3
script: {fileID: 0}
typeID: 4
customType: 0
isPPtrCurve: 0
isIntCurve: 0
isSerializeReferenceCurve: 0
- serializedVersion: 2
path: 4080383872
attribute: 2526845255
@ -647,7 +577,7 @@ AnimationClip:
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 0.16666667
m_StopTime: 0
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
@ -676,15 +606,6 @@ AnimationClip:
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.16666667
value: 0.8980393
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
@ -706,15 +627,6 @@ AnimationClip:
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.16666667
value: 0.8588236
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
@ -736,15 +648,6 @@ AnimationClip:
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.16666667
value: 0.6
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
@ -766,15 +669,6 @@ AnimationClip:
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.16666667
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
@ -783,96 +677,6 @@ AnimationClip:
classID: 114
script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.16666667
value: 0.9
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalScale.x
path:
classID: 224
script: {fileID: 0}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.16666667
value: 0.9
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalScale.y
path:
classID: 224
script: {fileID: 0}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.16666667
value: 0.9
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalScale.z
path:
classID: 224
script: {fileID: 0}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
@ -1346,12 +1150,6 @@ AnimatorController:
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: CanDisable
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
@ -1373,9 +1171,6 @@ AnimatorStateTransition:
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: CanDisable
m_EventTreshold: 0
- m_ConditionMode: 1
m_ConditionEvent: Disabled
m_EventTreshold: 0
@ -1481,6 +1276,90 @@ AnimationClip:
classID: 114
script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0.5529412
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_Color.r
path: Background
classID: 114
script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0.5254902
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_Color.g
path: Background
classID: 114
script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0.4470589
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_Color.b
path: Background
classID: 114
script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_Color.a
path: Background
classID: 114
script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
flags: 0
m_PPtrCurves: []
m_SampleRate: 60
m_WrapMode: 0
@ -1498,6 +1377,42 @@ AnimationClip:
isPPtrCurve: 0
isIntCurve: 0
isSerializeReferenceCurve: 0
- serializedVersion: 2
path: 4080383872
attribute: 2526845255
script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
typeID: 114
customType: 0
isPPtrCurve: 0
isIntCurve: 0
isSerializeReferenceCurve: 0
- serializedVersion: 2
path: 4080383872
attribute: 4215373228
script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
typeID: 114
customType: 0
isPPtrCurve: 0
isIntCurve: 0
isSerializeReferenceCurve: 0
- serializedVersion: 2
path: 4080383872
attribute: 2334886179
script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
typeID: 114
customType: 0
isPPtrCurve: 0
isIntCurve: 0
isSerializeReferenceCurve: 0
- serializedVersion: 2
path: 4080383872
attribute: 304273561
script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
typeID: 114
customType: 0
isPPtrCurve: 0
isIntCurve: 0
isSerializeReferenceCurve: 0
pptrCurveMapping: []
m_AnimationClipSettings:
serializedVersion: 2
@ -1541,6 +1456,90 @@ AnimationClip:
classID: 114
script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0.5529412
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_Color.r
path: Background
classID: 114
script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0.5254902
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_Color.g
path: Background
classID: 114
script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0.4470589
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_Color.b
path: Background
classID: 114
script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_Color.a
path: Background
classID: 114
script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
flags: 0
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0

View File

@ -411,23 +411,7 @@ AnimationClip:
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves: []
m_ScaleCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: {x: 1, y: 1, z: 1}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
path:
m_ScaleCurves: []
m_FloatCurves:
- serializedVersion: 2
curve:
@ -542,15 +526,6 @@ AnimationClip:
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 0
attribute: 3
script: {fileID: 0}
typeID: 4
customType: 0
isPPtrCurve: 0
isIntCurve: 0
isSerializeReferenceCurve: 0
- serializedVersion: 2
path: 4080383872
attribute: 2526845255
@ -702,69 +677,6 @@ AnimationClip:
classID: 114
script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalScale.x
path:
classID: 224
script: {fileID: 0}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalScale.y
path:
classID: 224
script: {fileID: 0}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalScale.z
path:
classID: 224
script: {fileID: 0}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2

View File

@ -202,6 +202,11 @@ MonoBehaviour:
_countText: {fileID: 6606259529242263844}
_markImage: {fileID: 4825096369561648102}
_animator: {fileID: 8864952879369828923}
<RectTransform>k__BackingField: {fileID: 186537154872449206}
<Model>k__BackingField:
<Id>k__BackingField:
<ItemType>k__BackingField: 0
<Count>k__BackingField: 0
--- !u!114 &3263594629702172720
MonoBehaviour:
m_ObjectHideFlags: 0

View File

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

Binary file not shown.

View File

@ -0,0 +1,143 @@
fileFormatVersion: 2
guid: 43612ff6b93b59f4592721f30e7315a2
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 2
spriteMeshType: 0
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WindowsStoreApps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,143 @@
fileFormatVersion: 2
guid: 3c0a671a1617e6b4fa3a282057ea8d11
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 2
spriteMeshType: 0
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WindowsStoreApps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,143 @@
fileFormatVersion: 2
guid: b10c88d202fa63947808a747e2896865
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 2
spriteMeshType: 0
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WindowsStoreApps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -12,6 +12,7 @@ public class DataManager : Singleton<DataManager>, IManager
private Dictionary<string, Sprite> _spriteAtlas;
private const string SoLabel = "GoogleSheetSo";
private const string Icon = "_icon";
public void PreInit()
{
@ -79,10 +80,6 @@ public T GetDataSo<T>() where T : ScriptableObject
}
public Sprite GetSprite(string key) => _spriteAtlas.GetValueOrDefault(key);
// TODO : So가 늘어나는 경우 관리 방법 변경 필요성이 있음
// GetItemType(id)
// GetItemImage
// GetItemName
public Sprite GetIcon(string key) => GetSprite(key + Icon);
}
}

View File

@ -6,11 +6,20 @@
namespace DDD
{
public enum InventorySortType
{
None = 0,
NameAscending,
NameDescending,
QuantityAscending,
QuantityDescending
}
public class InventoryManager : Singleton<InventoryManager>, IManager
{
[Title("아이템 전체 목록")]
[ShowInInspector, ReadOnly]
private Dictionary<string, ItemData> _itemDataLookup;
private Dictionary<string, ItemData> _allItemDataLookup;
[Title("아이템 보유 목록")]
[ShowInInspector, ReadOnly]
@ -41,7 +50,7 @@ private void InitializeItemData()
var itemDataSo = DataManager.Instance.GetDataSo<ItemDataSo>();
Debug.Assert(itemDataSo != null, "itemDataSo != null");
_itemDataLookup = itemDataSo.GetDataList()
_allItemDataLookup = itemDataSo.GetDataList()
.Where(item => !string.IsNullOrEmpty(item.Id))
.ToDictionary(item => item.Id, item => item);
@ -72,7 +81,7 @@ private async void ApplyEditorTestData()
public bool AddItem(string id, int quantity = 1)
{
if (!_itemDataLookup.ContainsKey(id))
if (!_allItemDataLookup.ContainsKey(id))
{
Debug.LogError($"[Inventory] 등록되지 않은 아이템 ID: {id}");
return false;
@ -123,12 +132,14 @@ public bool RemoveItem(string id, int quantity = 1)
return true;
}
public IReadOnlyDictionary<string, ItemData> AllItemDataLookup => _allItemDataLookup;
public IReadOnlyDictionary<string, InventoryItemData> InventoryItems => _inventoryItemDatas;
public bool TryGetItemData(string id, out ItemData itemData) => _itemDataLookup.TryGetValue(id, out itemData);
public bool ContainInventoryItem(string id) => _inventoryItemDatas.ContainsKey(id);
public bool TryGetInventoryItemData(string id, out InventoryItemData inventoryItemData) => _inventoryItemDatas.TryGetValue(id, out inventoryItemData);
public int GetItemCount(string id) => _inventoryItemDatas.TryGetValue(id, out var itemData) ? itemData.Quantity : 0;
public ItemData GetItemDataByIdOrNull(string id)
{
_itemDataLookup.TryGetValue(id, out var itemData);
_allItemDataLookup.TryGetValue(id, out var itemData);
return itemData;
}
}

View File

@ -1,13 +1,11 @@
using System.Collections.Generic;
using DG.Tweening;
using TMPro;
using UnityEngine;
namespace DDD
{
public class GlobalMessageUi : BaseUi, IEventHandler<ShowGlobalMessageEvent>
{
private CanvasGroup _canvasGroup;
private TextMeshProUGUI _messageText;
private Tween _fadeTween;
@ -18,7 +16,6 @@ protected override void Awake()
{
base.Awake();
_canvasGroup = GetComponent<CanvasGroup>();
_messageText = GetComponentInChildren<TextMeshProUGUI>();
_canvasGroup.alpha = 0;

View File

@ -9,10 +9,33 @@ public class InventorySlotUiStrategy : IItemSlotUiStrategy
public void Setup(ItemSlotUi ui, ItemViewModel model)
{
ui.SetIcon(model.ItemSprite);
ui.ShowCountText();
if (InventoryManager.Instance.ContainInventoryItem(model.Id))
{
ui.SetIcon(model.ItemSprite);
ui.ShowCountText();
ui.HideMark();
ui.SetButtonInteractable(true);
return;
}
// TODO : 임시 초기화 값
string emptySpriteKey = SpriteConstants.EmptyFoodSpriteKey;
if (model.ItemType == ItemType.Recipe)
{
if (model.RecipeType == RecipeType.FoodRecipe)
{
emptySpriteKey = SpriteConstants.EmptyFoodSpriteKey;
}
else if (model.RecipeType == RecipeType.DrinkRecipe)
{
emptySpriteKey = SpriteConstants.EmptyDrinkSpriteKey;
}
}
ui.SetIcon(DataManager.Instance.GetSprite(emptySpriteKey));
ui.HideCountText();
ui.HideMark();
ui.SetButtonInteractable(true);
ui.SetButtonInteractable(false);
}
public async Task<RuntimeAnimatorController> GetAnimatorController()
@ -22,10 +45,12 @@ public async Task<RuntimeAnimatorController> GetAnimatorController()
public void OnInventoryChanged(ItemSlotUi ui)
{
if (ui.Model == null) return;
ui.Model.UpdateCount();
ui.ShowCountText();
var model = ui.Model;
if (InventoryManager.Instance.ContainInventoryItem(model.Id))
{
ui.Model.UpdateCount();
ui.ShowCountText();
}
}
public bool CanCrafting(ItemSlotUi ui)

View File

@ -1,12 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.AddressableAssets;
namespace DDD
{
public class InventoryView : MonoBehaviour, IEventHandler<InventoryChangedEvent>, IEventHandler<TodayMenuAddedEvent>, IEventHandler<TodayMenuRemovedEvent>
public class InventoryView : MonoBehaviour, IEventHandler<InventoryChangedEvent>,
IEventHandler<TodayMenuAddedEvent>, IEventHandler<TodayMenuRemovedEvent>
{
[SerializeField] private Transform _slotParent;
@ -15,6 +15,7 @@ public class InventoryView : MonoBehaviour, IEventHandler<InventoryChangedEvent>
private readonly Dictionary<string, ItemSlotUi> _slotLookup = new();
private GameObject _firstSlot;
private InventorySortType _currentSortType = InventorySortType.None;
private const string ItemSlotUiName = "ItemSlotUi_";
@ -33,9 +34,11 @@ private void OnDisable()
}
public GameObject GetInitialSelected() => _firstSlot;
public async Task Initialize()
{
_restaurantManagementSo = await AssetManager.LoadAsset<RestaurantManagementSo>(DataConstants.RestaurantManagementSo);
_restaurantManagementSo =
await AssetManager.LoadAsset<RestaurantManagementSo>(DataConstants.RestaurantManagementSo);
Debug.Assert(_restaurantManagementSo != null, "_todayMenuDataSo != null");
Clear();
@ -67,30 +70,54 @@ public async Task Initialize()
}
}
public void SetSortType(InventorySortType sortType)
{
_currentSortType = sortType;
UpdateView();
}
private IEnumerable<ItemSlotUi> SortSlots(IEnumerable<ItemSlotUi> slots)
{
return _currentSortType switch
{
InventorySortType.NameAscending => slots.OrderByDescending(slot => slot.Model.HasItem).ThenBy(slot => slot.Model.DisplayName),
InventorySortType.NameDescending => slots.OrderByDescending(slot => slot.Model.HasItem).ThenByDescending(slot => slot.Model.DisplayName),
InventorySortType.QuantityAscending => slots.OrderByDescending(slot => slot.Model.HasItem).ThenBy(slot => slot.Model.Count),
InventorySortType.QuantityDescending => slots.OrderByDescending(slot => slot.Model.HasItem).ThenByDescending(slot => slot.Model.Count),
InventorySortType.None => slots.OrderBy(slot => slot.Model.Id),
_ => slots
};
}
public void UpdateCategoryView(InventoryCategoryType category)
{
_currenInventoryCategoryType = category;
_firstSlot = null;
foreach (var kvp in _slotLookup)
var filteredSlots = _slotLookup.Values;
var sortedSlots = SortSlots(filteredSlots);
int siblingIndex = 0;
foreach (var slot in sortedSlots)
{
var id = kvp.Key;
var slot = kvp.Value;
var model = slot.Model;
string id = model.Id;
// 1. 오늘의 메뉴에 등록된 경우 필터링
bool isRegisteredTodayMenu = model.ItemType == ItemType.Recipe && _restaurantManagementSo.IsContainTodayMenu(id);
// 2. 현재 선택된 카테고리에 맞는지 필터링
bool matchCategory = MatchesCategory(model, _currenInventoryCategoryType);
// 3. 조건을 모두 만족할 경우만 활성화
bool shouldShow = !isRegisteredTodayMenu && matchCategory;
slot.SetActive(shouldShow);
if (shouldShow && _firstSlot == null)
if (shouldShow && model.HasItem)
{
_firstSlot = slot.gameObject;
slot.transform.SetSiblingIndex(siblingIndex++);
if (_firstSlot == null)
{
_firstSlot = slot.gameObject;
}
}
}
}
@ -102,15 +129,19 @@ private bool MatchesCategory(ItemViewModel model, InventoryCategoryType category
case InventoryCategoryType.Food:
if (model.ItemType != ItemType.Recipe) return false;
return DataManager.Instance.GetDataSo<RecipeDataSo>().TryGetDataById(model.Id, out var foodRecipe) && foodRecipe.RecipeType == RecipeType.FoodRecipe;
return DataManager.Instance.GetDataSo<RecipeDataSo>()
.TryGetDataById(model.Id, out var foodRecipe) && foodRecipe.RecipeType == RecipeType.FoodRecipe;
case InventoryCategoryType.Drink:
if (model.ItemType != ItemType.Recipe) return false;
return DataManager.Instance.GetDataSo<RecipeDataSo>().TryGetDataById(model.Id, out var drinkRecipe) && drinkRecipe.RecipeType == RecipeType.DrinkRecipe;
return DataManager.Instance.GetDataSo<RecipeDataSo>()
.TryGetDataById(model.Id, out var drinkRecipe) &&
drinkRecipe.RecipeType == RecipeType.DrinkRecipe;
case InventoryCategoryType.Ingredient:
return model.ItemType == ItemType.Ingredient;
case InventoryCategoryType.Cookware:
return DataManager.Instance.GetDataSo<CookwareDataSo>().TryGetDataById(model.Id, out var cookwareData);
return DataManager.Instance.GetDataSo<CookwareDataSo>()
.TryGetDataById(model.Id, out var cookwareData);
case InventoryCategoryType.Special:
return false;
default:

View File

@ -6,8 +6,9 @@
namespace DDD
{
public class ItemSlotUi : MonoBehaviour, ISelectHandler
public class ItemSlotUi : MonoBehaviour, ISelectHandler, IAutoScrollItem
{
[field: SerializeField] public RectTransform RectTransform { get; private set; }
[SerializeField] private Button _button;
[SerializeField] private Image _backgroundImage;
[SerializeField] private Image _icon;

View File

@ -25,6 +25,8 @@ public ItemViewModel(string id, ItemType itemType)
Count = 0;
}
public bool HasItem => Count > 0;
public string DisplayName => LocalizationManager.Instance.GetName(Id);
public RecipeType RecipeType => ItemType == ItemType.Recipe ? DataManager.Instance.GetDataSo<RecipeDataSo>().GetDataById(Id).RecipeType : RecipeType.None;
public Sprite ItemSprite
{
@ -36,6 +38,11 @@ public Sprite ItemSprite
return DataManager.Instance.GetSprite(recipe.RecipeResult);
}
if (DataManager.Instance.GetDataSo<CookwareDataSo>().ContainsData(Id))
{
return DataManager.Instance.GetIcon(Id);
}
return DataManager.Instance.GetSprite(Id);
}
}

View File

@ -7,18 +7,23 @@ public static class ItemViewModelFactory
public static List<ItemViewModel> CreateRestaurantManagementInventoryItem()
{
var result = new List<ItemViewModel>();
foreach (var kvp in InventoryManager.Instance.InventoryItems)
var allItemDataLookup = InventoryManager.Instance.AllItemDataLookup;
foreach (var keyItemDataPair in allItemDataLookup)
{
var id = kvp.Key;
var item = InventoryManager.Instance.GetItemDataByIdOrNull(id);
if (item == null) continue;
var id = keyItemDataPair.Key;
var itemData = keyItemDataPair.Value;
var modelCount = item.ItemType switch
int modelCount = 0;
if (InventoryManager.Instance.ContainInventoryItem(id))
{
ItemType.Recipe => CalculateCraftableCount(item.Id),
_ => InventoryManager.Instance.GetItemCount(id)
};
var model = new ItemViewModel(item.Id, item.ItemType, modelCount);
modelCount = itemData.ItemType switch
{
ItemType.Recipe => CalculateCraftableCount(itemData.Id),
_ => InventoryManager.Instance.GetItemCount(id)
};
}
var model = new ItemViewModel(id, itemData.ItemType, modelCount);
result.Add(model);
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: cef6f159132c4390b2a3051b45903dff
timeCreated: 1754451723

View File

@ -0,0 +1,106 @@
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
namespace DDD
{
public class AutoScrollToSelected : MonoBehaviour
{
private ScrollRect _scrollRect;
private RectTransform _viewport;
private RectTransform _content;
private GameObject _lastSelected;
private bool _wasScrolling;
private void Awake()
{
_scrollRect = GetComponent<ScrollRect>();
_viewport = _scrollRect.viewport;
_content = _scrollRect.content;
}
private void Update()
{
if (_scrollRect.velocity.sqrMagnitude > 0.01f)
{
_wasScrolling = true;
return;
}
if (_wasScrolling)
{
_wasScrolling = false;
return;
}
var selected = EventSystem.current.currentSelectedGameObject;
if (selected == null || selected == _lastSelected) return;
_lastSelected = selected;
if (!selected.TryGetComponent<IAutoScrollItem>(out var autoScrollItem)) return;
var target = autoScrollItem.RectTransform;
if (!target.IsChildOf(_content)) return;
if (!IsFullyVisible(target))
{
ScrollToMakeFullyVisible(target);
}
}
private bool IsFullyVisible(RectTransform target)
{
var worldCorners = new Vector3[4];
target.GetWorldCorners(worldCorners);
for (int i = 0; i < 4; i++)
{
Vector3 local = _viewport.InverseTransformPoint(worldCorners[i]);
if (!_viewport.rect.Contains(local)) return false;
}
return true;
}
private void ScrollToMakeFullyVisible(RectTransform target)
{
Canvas.ForceUpdateCanvases();
float scrollRange = _content.rect.height - _viewport.rect.height;
if (scrollRange <= 0f) return;
Vector3[] itemCorners = new Vector3[4];
target.GetWorldCorners(itemCorners);
Vector3[] viewportCorners = new Vector3[4];
_viewport.GetWorldCorners(viewportCorners);
float itemTop = itemCorners[1].y;
float itemBottom = itemCorners[0].y;
float viewTop = viewportCorners[1].y;
float viewBottom = viewportCorners[0].y;
float offset = 0f;
float normalizedDelta = 0f;
if (itemTop > viewTop)
{
offset = itemTop - viewTop;
normalizedDelta = offset / scrollRange;
_scrollRect.verticalNormalizedPosition += normalizedDelta;
}
else if (itemBottom < viewBottom)
{
offset = viewBottom - itemBottom;
normalizedDelta = offset / scrollRange;
_scrollRect.verticalNormalizedPosition -= normalizedDelta;
}
else
{
return;
}
_scrollRect.verticalNormalizedPosition = Mathf.Clamp01(_scrollRect.verticalNormalizedPosition);
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 90e3161604ff4bc1b20414acca7f1a1c
timeCreated: 1754451829

View File

@ -0,0 +1,9 @@
using UnityEngine;
namespace DDD
{
public interface IAutoScrollItem
{
RectTransform RectTransform { get; }
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: bf2ceb045efe40abbdffdb3a56c26106
timeCreated: 1754451748

View File

@ -11,6 +11,8 @@ public class DataSo<T> : ScriptableObject where T : IId
public T GetDataById(string id) => Datas.FirstOrDefault(x => x.Id == id);
public bool ContainsData(string id) => Datas.Any(x => x.Id == id);
public bool TryGetDataById(string id, out T data)
{
data = Datas.FirstOrDefault(x => x.Id == id);