Compare commits
2 Commits
main
...
sort_minig
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
247f7b73af | ||
|
|
359e0e35bd |
@@ -63,18 +63,6 @@ MonoBehaviour:
|
||||
m_SerializedLabels:
|
||||
- BlokkemonCard
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 4f4ec75013bc276429c2f4fa52d165e0
|
||||
m_Address: Assets/Data/Cards/Card_New Card.asset
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels:
|
||||
- BlokkemonCard
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 53996921ed2094948aa317efe4ca6630
|
||||
m_Address: Assets/Data/Cards/Card_New Card.asset
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels:
|
||||
- BlokkemonCard
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 73d54071304571647b3238a799d9781f
|
||||
m_Address: Assets/Data/Cards/Card_New Card.asset
|
||||
m_ReadOnly: 0
|
||||
|
||||
@@ -20,6 +20,11 @@ MonoBehaviour:
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 9d4a355954ae0a544a9c2a8281bc4bee
|
||||
m_Address: Settings/CardSortingSettings
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: d28c589c05c122f449a8b34e696cda53
|
||||
m_Address: Puzzles/Quarry
|
||||
m_ReadOnly: 0
|
||||
|
||||
8
Assets/Data/CardQualityControl.meta
Normal file
8
Assets/Data/CardQualityControl.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8e78bf67b6dbe484a9550a8689254162
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
17
Assets/Data/CardQualityControl/ExampleGarbageItem.asset
Normal file
17
Assets/Data/CardQualityControl/ExampleGarbageItem.asset
Normal file
@@ -0,0 +1,17 @@
|
||||
%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: 2e69a2167710437798b1980126d5a4f6, type: 3}
|
||||
m_Name: ExampleGarbageItem
|
||||
m_EditorClassIdentifier: AppleHillsScripts::Minigames.CardSorting.Data.GarbageItemDefinition
|
||||
itemId: ExampleGarbageItem
|
||||
displayName: Battlefield 6
|
||||
sprite: {fileID: 3452939858483483321, guid: 07aae524a464bd44fbb2abd932615899, type: 3}
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b9c54fbced64684419e983429fd27b34
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -19,3 +19,5 @@ MonoBehaviour:
|
||||
requiredOrientation: 1
|
||||
- sceneName: DivingForPictures
|
||||
requiredOrientation: 0
|
||||
- sceneName: CardQualityControl
|
||||
requiredOrientation: 1
|
||||
|
||||
@@ -3,6 +3,7 @@ using UnityEditor;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.IO;
|
||||
using Core.Settings;
|
||||
|
||||
namespace AppleHills.Core.Settings.Editor
|
||||
{
|
||||
@@ -10,7 +11,7 @@ namespace AppleHills.Core.Settings.Editor
|
||||
{
|
||||
private Vector2 scrollPosition;
|
||||
private List<BaseSettings> allSettings = new List<BaseSettings>();
|
||||
private string[] tabNames = new string[] { "Player & Follower", "Interaction & Items", "Diving Minigame", "Card System" };
|
||||
private string[] tabNames = new string[] { "Player & Follower", "Interaction & Items", "Diving Minigame", "Card System", "Card Sorting" };
|
||||
private int selectedTab = 0;
|
||||
private Dictionary<string, SerializedObject> serializedSettingsObjects = new Dictionary<string, SerializedObject>();
|
||||
private GUIStyle headerStyle;
|
||||
@@ -49,6 +50,7 @@ namespace AppleHills.Core.Settings.Editor
|
||||
CreateSettingsIfMissing<InteractionSettings>("InteractionSettings");
|
||||
CreateSettingsIfMissing<DivingMinigameSettings>("DivingMinigameSettings");
|
||||
CreateSettingsIfMissing<CardSystemSettings>("CardSystemSettings");
|
||||
CreateSettingsIfMissing<CardSortingSettings>("CardSortingSettings");
|
||||
}
|
||||
|
||||
private void CreateSettingsIfMissing<T>(string fileName) where T : BaseSettings
|
||||
@@ -118,6 +120,9 @@ namespace AppleHills.Core.Settings.Editor
|
||||
case 3: // Card System
|
||||
DrawSettingsEditor<CardSystemSettings>();
|
||||
break;
|
||||
case 4: // Card Sorting
|
||||
DrawSettingsEditor<CardSortingSettings>();
|
||||
break;
|
||||
}
|
||||
|
||||
EditorGUILayout.EndScrollView();
|
||||
|
||||
BIN
Assets/External/Placeholders/battlefield6.png
vendored
Normal file
BIN
Assets/External/Placeholders/battlefield6.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 220 KiB |
195
Assets/External/Placeholders/battlefield6.png.meta
vendored
Normal file
195
Assets/External/Placeholders/battlefield6.png.meta
vendored
Normal file
@@ -0,0 +1,195 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 07aae524a464bd44fbb2abd932615899
|
||||
TextureImporter:
|
||||
internalIDToNameTable:
|
||||
- first:
|
||||
213: 3452939858483483321
|
||||
second: battlefield6_0
|
||||
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: 2
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
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: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: iOS
|
||||
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: 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: WebGL
|
||||
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:
|
||||
- serializedVersion: 2
|
||||
name: battlefield6_0
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 349
|
||||
height: 350
|
||||
alignment: 0
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
customData:
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: -1
|
||||
bones: []
|
||||
spriteID: 9b212bfb18e4bef20800000000000000
|
||||
internalID: 3452939858483483321
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable:
|
||||
battlefield6_0: 3452939858483483321
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Assets/Prefabs/Minigames/CardQualityControl.meta
Normal file
8
Assets/Prefabs/Minigames/CardQualityControl.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6e713c98b120a7047acba325b8f5687b
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
662
Assets/Prefabs/Minigames/CardQualityControl/SortableCard.prefab
Normal file
662
Assets/Prefabs/Minigames/CardQualityControl/SortableCard.prefab
Normal file
@@ -0,0 +1,662 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &1384381902454720507
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8730990344497138252}
|
||||
- component: {fileID: 2127389269465269351}
|
||||
- component: {fileID: 5587534902400065439}
|
||||
- component: {fileID: 7928211723630959765}
|
||||
- component: {fileID: 6730564746972857952}
|
||||
- component: {fileID: 6189457089612025521}
|
||||
m_Layer: 0
|
||||
m_Name: SortableCard
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &8730990344497138252
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1384381902454720507}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 0.03, y: 0.03, z: 0.03}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 1832493617040022640}
|
||||
- {fileID: 3435345339851500234}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 200, y: 270}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &2127389269465269351
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1384381902454720507}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 9b3db9ce867c4df884411fb3da8fd80a, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: AppleHillsScripts::Minigames.CardSorting.Core.SortableItem
|
||||
moveSpeed: 50
|
||||
smoothMovement: 0
|
||||
snapDuration: 0.3
|
||||
visual: {fileID: 0}
|
||||
isSelectable: 1
|
||||
selectionOffset: 50
|
||||
context: {fileID: 0}
|
||||
stateMachine: {fileID: 0}
|
||||
initialState: OnConveyorState
|
||||
--- !u!114 &5587534902400065439
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1384381902454720507}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 9a9c60767eef4a3090d8bf70ee87340f, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: AppleHillsScripts::Minigames.CardSorting.Core.SortableItemContext
|
||||
cardDisplay: {fileID: 942985408699919073}
|
||||
garbageVisual: {fileID: 0}
|
||||
animator: {fileID: 7928211723630959765}
|
||||
visualTransform: {fileID: 3435345339851500234}
|
||||
--- !u!114 &7928211723630959765
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1384381902454720507}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5eacab725f4346d091696042b9cd2a82, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: AppleHillsScripts::UI.CardSystem.StateMachine.CardAnimator
|
||||
--- !u!223 &6730564746972857952
|
||||
Canvas:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1384381902454720507}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 3
|
||||
m_RenderMode: 2
|
||||
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: -1132846201
|
||||
m_SortingOrder: 0
|
||||
m_TargetDisplay: 0
|
||||
--- !u!114 &6189457089612025521
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1384381902454720507}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.GraphicRaycaster
|
||||
m_IgnoreReversedGraphics: 1
|
||||
m_BlockingObjects: 0
|
||||
m_BlockingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
--- !u!1 &1524887561224457495
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4915963048385449277}
|
||||
- component: {fileID: 2636359196694958052}
|
||||
m_Layer: 0
|
||||
m_Name: FellOffConveyorState
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &4915963048385449277
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1524887561224457495}
|
||||
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: 1832493617040022640}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 100, y: 100}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &2636359196694958052
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1524887561224457495}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 619a38624dcf48b19913bd4e1ac28625, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: AppleHillsScripts::Minigames.CardSorting.StateMachine.States.FellOffConveyorState
|
||||
--- !u!1 &4127399957670380340
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1832493617040022640}
|
||||
- component: {fileID: 8945307576217044656}
|
||||
- component: {fileID: 8645082511974305963}
|
||||
m_Layer: 0
|
||||
m_Name: SortingStateMachine
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &1832493617040022640
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4127399957670380340}
|
||||
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: 3313403483268767269}
|
||||
- {fileID: 2639445114329646364}
|
||||
- {fileID: 6846791113334578555}
|
||||
- {fileID: 9068178704258338862}
|
||||
- {fileID: 4915963048385449277}
|
||||
- {fileID: 8379092957690634087}
|
||||
m_Father: {fileID: 8730990344497138252}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &8945307576217044656
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4127399957670380340}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 55938fb1577dd4ad3af7e994048c86f6, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: PixelplacementAssembly::Pixelplacement.Initialization
|
||||
--- !u!114 &8645082511974305963
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4127399957670380340}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 87ed5616041a4d878f452a8741e1eeab, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: AppleHillsScripts::UI.CardSystem.StateMachine.CardStateMachine
|
||||
defaultState: {fileID: 0}
|
||||
currentState: {fileID: 0}
|
||||
_unityEventsFolded: 0
|
||||
verbose: 0
|
||||
allowReentry: 0
|
||||
returnToDefaultOnDisable: 1
|
||||
OnStateExited:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
OnStateEntered:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
OnFirstStateEntered:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
OnFirstStateExited:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
OnLastStateEntered:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
OnLastStateExited:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
customSaveId:
|
||||
--- !u!1 &5278071270215530147
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6846791113334578555}
|
||||
- component: {fileID: 6984415130404958205}
|
||||
m_Layer: 0
|
||||
m_Name: SortedCorrectlyState
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &6846791113334578555
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5278071270215530147}
|
||||
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: 1832493617040022640}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 100, y: 100}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &6984415130404958205
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5278071270215530147}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f3ed2e6fb0814273926c33a178bdf42b, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: AppleHillsScripts::Minigames.CardSorting.StateMachine.States.SortedCorrectlyState
|
||||
--- !u!1 &5979039784013227400
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 9068178704258338862}
|
||||
- component: {fileID: 4385886365713563158}
|
||||
m_Layer: 0
|
||||
m_Name: SortedIncorrectlyState
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &9068178704258338862
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5979039784013227400}
|
||||
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: 1832493617040022640}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 100, y: 100}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &4385886365713563158
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5979039784013227400}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: edef0fb846be4fd99d396ea27dca1e4f, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: AppleHillsScripts::Minigames.CardSorting.StateMachine.States.SortedIncorrectlyState
|
||||
--- !u!1 &6327696013805378735
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3313403483268767269}
|
||||
- component: {fileID: 1092557656867638961}
|
||||
m_Layer: 0
|
||||
m_Name: OnConveyorState
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &3313403483268767269
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6327696013805378735}
|
||||
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: 1832493617040022640}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 100, y: 100}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &1092557656867638961
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6327696013805378735}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 17d2ba6f5aec4b698247b082734cad8f, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: AppleHillsScripts::Minigames.CardSorting.StateMachine.States.OnConveyorState
|
||||
--- !u!1 &7284206288927199055
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2639445114329646364}
|
||||
- component: {fileID: 3159056251950411054}
|
||||
m_Layer: 0
|
||||
m_Name: BeingDraggedState
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &2639445114329646364
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7284206288927199055}
|
||||
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: 1832493617040022640}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 100, y: 100}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &3159056251950411054
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7284206288927199055}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 015c0740240748c8901c9304490cb80d, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: AppleHillsScripts::Minigames.CardSorting.StateMachine.States.BeingDraggedState
|
||||
--- !u!1 &7496445430129834038
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8379092957690634087}
|
||||
- component: {fileID: 6205288184969541608}
|
||||
m_Layer: 0
|
||||
m_Name: DroppedOnFloorState
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &8379092957690634087
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7496445430129834038}
|
||||
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: 1832493617040022640}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 100, y: 100}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &6205288184969541608
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7496445430129834038}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: b384e4988bf549f2b6e70d1ff0fa4bcd, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: AppleHillsScripts::Minigames.CardSorting.StateMachine.States.DroppedOnFloorState
|
||||
--- !u!1001 &327057115485850371
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 8730990344497138252}
|
||||
m_Modifications:
|
||||
- target: {fileID: 790099756778783334, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 790099756778783334, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 0.8335571
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 790099756778783334, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -0.06774902
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1802458852284665438, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3108957999325520329, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_Pivot.x
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3108957999325520329, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_Pivot.y
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3108957999325520329, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3108957999325520329, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3108957999325520329, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3108957999325520329, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3108957999325520329, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3108957999325520329, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3108957999325520329, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3108957999325520329, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3108957999325520329, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3108957999325520329, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3108957999325520329, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3108957999325520329, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3108957999325520329, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3108957999325520329, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3108957999325520329, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3108957999325520329, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3108957999325520329, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3108957999325520329, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4210468743547155963, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5533787515014034956, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Card
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7619421269260494372, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7619421269260494372, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7619421269260494372, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7619421269260494372, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
--- !u!114 &942985408699919073 stripped
|
||||
MonoBehaviour:
|
||||
m_CorrespondingSourceObject: {fileID: 693510968212398562, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
m_PrefabInstance: {fileID: 327057115485850371}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 72cb26621865420aa763a66c06eb7f6d, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: AppleHillsScripts::UI.CardSystem.CardDisplay
|
||||
--- !u!224 &3435345339851500234 stripped
|
||||
RectTransform:
|
||||
m_CorrespondingSourceObject: {fileID: 3108957999325520329, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
m_PrefabInstance: {fileID: 327057115485850371}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9788d529b225ddd44b92be992be99988
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,602 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &1384381902454720507
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8730990344497138252}
|
||||
- component: {fileID: 2127389269465269351}
|
||||
- component: {fileID: 5587534902400065439}
|
||||
- component: {fileID: 7928211723630959765}
|
||||
- component: {fileID: 6730564746972857952}
|
||||
- component: {fileID: 6189457089612025521}
|
||||
m_Layer: 0
|
||||
m_Name: SortableGarbage
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &8730990344497138252
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1384381902454720507}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 0.03, y: 0.03, z: 0.03}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 1832493617040022640}
|
||||
- {fileID: 8626179209158889260}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 200, y: 270}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &2127389269465269351
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1384381902454720507}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 9b3db9ce867c4df884411fb3da8fd80a, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: AppleHillsScripts::Minigames.CardSorting.Core.SortableItem
|
||||
moveSpeed: 50
|
||||
smoothMovement: 0
|
||||
snapDuration: 0.3
|
||||
visual: {fileID: 0}
|
||||
isSelectable: 1
|
||||
selectionOffset: 50
|
||||
context: {fileID: 0}
|
||||
stateMachine: {fileID: 0}
|
||||
initialState: OnConveyorState
|
||||
--- !u!114 &5587534902400065439
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1384381902454720507}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 9a9c60767eef4a3090d8bf70ee87340f, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: AppleHillsScripts::Minigames.CardSorting.Core.SortableItemContext
|
||||
cardDisplay: {fileID: 0}
|
||||
garbageVisual: {fileID: 581410895551808339}
|
||||
animator: {fileID: 7928211723630959765}
|
||||
visualTransform: {fileID: 8626179209158889260}
|
||||
--- !u!114 &7928211723630959765
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1384381902454720507}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5eacab725f4346d091696042b9cd2a82, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: AppleHillsScripts::UI.CardSystem.StateMachine.CardAnimator
|
||||
--- !u!223 &6730564746972857952
|
||||
Canvas:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1384381902454720507}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 3
|
||||
m_RenderMode: 2
|
||||
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: -1132846201
|
||||
m_SortingOrder: 0
|
||||
m_TargetDisplay: 0
|
||||
--- !u!114 &6189457089612025521
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1384381902454720507}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.GraphicRaycaster
|
||||
m_IgnoreReversedGraphics: 1
|
||||
m_BlockingObjects: 0
|
||||
m_BlockingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
--- !u!1 &3963317030246886356
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8626179209158889260}
|
||||
- component: {fileID: 581410895551808339}
|
||||
- component: {fileID: 9061673992343081870}
|
||||
- component: {fileID: 2391223799317068879}
|
||||
m_Layer: 0
|
||||
m_Name: Visual
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &8626179209158889260
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3963317030246886356}
|
||||
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: 8730990344497138252}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 200, y: 200}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &581410895551808339
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3963317030246886356}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: b707770fc3a6448ea0dcd1b2fbf41e00, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: AppleHillsScripts::Minigames.CardSorting.Core.GarbageVisual
|
||||
spriteRenderer: {fileID: 2391223799317068879}
|
||||
--- !u!222 &9061673992343081870
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3963317030246886356}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &2391223799317068879
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3963317030246886356}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
|
||||
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_Sprite: {fileID: 3452939858483483321, guid: 07aae524a464bd44fbb2abd932615899, type: 3}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!1 &4127399957670380340
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1832493617040022640}
|
||||
- component: {fileID: 8945307576217044656}
|
||||
- component: {fileID: 8645082511974305963}
|
||||
m_Layer: 0
|
||||
m_Name: SortingStateMachine
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &1832493617040022640
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4127399957670380340}
|
||||
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: 3313403483268767269}
|
||||
- {fileID: 2639445114329646364}
|
||||
- {fileID: 6286864144870698111}
|
||||
- {fileID: 6932285083475453639}
|
||||
- {fileID: 1605142575474884226}
|
||||
- {fileID: 2742122570286299997}
|
||||
m_Father: {fileID: 8730990344497138252}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &8945307576217044656
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4127399957670380340}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 55938fb1577dd4ad3af7e994048c86f6, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: PixelplacementAssembly::Pixelplacement.Initialization
|
||||
--- !u!114 &8645082511974305963
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4127399957670380340}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 87ed5616041a4d878f452a8741e1eeab, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: AppleHillsScripts::UI.CardSystem.StateMachine.CardStateMachine
|
||||
defaultState: {fileID: 0}
|
||||
currentState: {fileID: 0}
|
||||
_unityEventsFolded: 0
|
||||
verbose: 0
|
||||
allowReentry: 0
|
||||
returnToDefaultOnDisable: 1
|
||||
OnStateExited:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
OnStateEntered:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
OnFirstStateEntered:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
OnFirstStateExited:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
OnLastStateEntered:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
OnLastStateExited:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
customSaveId:
|
||||
--- !u!1 &4665976863542359759
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6932285083475453639}
|
||||
- component: {fileID: 4451229561143278730}
|
||||
m_Layer: 0
|
||||
m_Name: SortedIncorrectlyState
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &6932285083475453639
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4665976863542359759}
|
||||
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: 1832493617040022640}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0.00091552734, y: 0.0006713867}
|
||||
m_SizeDelta: {x: 100, y: 100}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &4451229561143278730
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4665976863542359759}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: edef0fb846be4fd99d396ea27dca1e4f, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: AppleHillsScripts::Minigames.CardSorting.StateMachine.States.SortedIncorrectlyState
|
||||
--- !u!1 &5724403781907577170
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2742122570286299997}
|
||||
- component: {fileID: 4800484645399462961}
|
||||
m_Layer: 0
|
||||
m_Name: DroppedOnFloorState
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &2742122570286299997
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5724403781907577170}
|
||||
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: 1832493617040022640}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0.00091552734, y: 0.0006713867}
|
||||
m_SizeDelta: {x: 100, y: 100}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &4800484645399462961
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5724403781907577170}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: b384e4988bf549f2b6e70d1ff0fa4bcd, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: AppleHillsScripts::Minigames.CardSorting.StateMachine.States.DroppedOnFloorState
|
||||
--- !u!1 &6327696013805378735
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3313403483268767269}
|
||||
- component: {fileID: 1092557656867638961}
|
||||
m_Layer: 0
|
||||
m_Name: OnConveyorState
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &3313403483268767269
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6327696013805378735}
|
||||
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: 1832493617040022640}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 100, y: 100}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &1092557656867638961
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6327696013805378735}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 17d2ba6f5aec4b698247b082734cad8f, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: AppleHillsScripts::Minigames.CardSorting.StateMachine.States.OnConveyorState
|
||||
--- !u!1 &6370853208446123222
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6286864144870698111}
|
||||
- component: {fileID: 8997831685923851135}
|
||||
m_Layer: 0
|
||||
m_Name: SortedCorrectlyState
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &6286864144870698111
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6370853208446123222}
|
||||
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: 1832493617040022640}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0.00091552734, y: 0.0006713867}
|
||||
m_SizeDelta: {x: 100, y: 100}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &8997831685923851135
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6370853208446123222}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f3ed2e6fb0814273926c33a178bdf42b, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: AppleHillsScripts::Minigames.CardSorting.StateMachine.States.SortedCorrectlyState
|
||||
--- !u!1 &7284206288927199055
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2639445114329646364}
|
||||
- component: {fileID: 3159056251950411054}
|
||||
m_Layer: 0
|
||||
m_Name: BeingDraggedState
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &2639445114329646364
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7284206288927199055}
|
||||
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: 1832493617040022640}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 100, y: 100}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &3159056251950411054
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7284206288927199055}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 015c0740240748c8901c9304490cb80d, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: AppleHillsScripts::Minigames.CardSorting.StateMachine.States.BeingDraggedState
|
||||
--- !u!1 &9016465332917481836
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1605142575474884226}
|
||||
- component: {fileID: 8865404769901428854}
|
||||
m_Layer: 0
|
||||
m_Name: FellOffConveyorState
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &1605142575474884226
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 9016465332917481836}
|
||||
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: 1832493617040022640}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0.00091552734, y: 0.0006713867}
|
||||
m_SizeDelta: {x: 100, y: 100}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &8865404769901428854
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 9016465332917481836}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 619a38624dcf48b19913bd4e1ac28625, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: AppleHillsScripts::Minigames.CardSorting.StateMachine.States.FellOffConveyorState
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 942e43abb9beaef429f3d0e7f5bb8fcc
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
265
Assets/Prefabs/Minigames/CardQualityControl/SortingBox.prefab
Normal file
265
Assets/Prefabs/Minigames/CardQualityControl/SortingBox.prefab
Normal file
@@ -0,0 +1,265 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &558342595185239558
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 5117288307080929430}
|
||||
- component: {fileID: 3934371481972522631}
|
||||
m_Layer: 0
|
||||
m_Name: SortingBox
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &5117288307080929430
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 558342595185239558}
|
||||
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: 6518373398422451678}
|
||||
- {fileID: 9217432009376634151}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &3934371481972522631
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 558342595185239558}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: a25b1c9a82b540c8ac0d6c016849f561, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: AppleHillsScripts::Minigames.CardSorting.Core.SortingBox
|
||||
slotIndex: -1
|
||||
isLocked: 0
|
||||
hideImageOnPlay: 0
|
||||
filterByType: 0
|
||||
allowedTypeNames: []
|
||||
occupantSizeMode: 0
|
||||
occupantScale: {x: 1, y: 1, z: 1}
|
||||
scaleTransitionDuration: 0.3
|
||||
boxType: 0
|
||||
boxSprite: {fileID: 0}
|
||||
--- !u!1 &6923066319076554151
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6518373398422451678}
|
||||
- component: {fileID: 1395181864555928322}
|
||||
m_Layer: 0
|
||||
m_Name: SpriteVisual
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &6518373398422451678
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6923066319076554151}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 3, y: 3, z: 3}
|
||||
m_ConstrainProportionsScale: 1
|
||||
m_Children: []
|
||||
m_Father: {fileID: 5117288307080929430}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!212 &1395181864555928322
|
||||
SpriteRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6923066319076554151}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 0
|
||||
m_ReceiveShadows: 0
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 0
|
||||
m_RayTraceProcedural: 0
|
||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||
m_RayTracingAccelStructBuildFlags: 1
|
||||
m_SmallMeshCulling: 1
|
||||
m_ForceMeshLod: -1
|
||||
m_MeshLodSelectionBias: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 0
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_GlobalIlluminationMeshLod: 0
|
||||
m_SortingLayerID: -1132846201
|
||||
m_SortingLayer: 1
|
||||
m_SortingOrder: 0
|
||||
m_Sprite: {fileID: -7843813406500067289, guid: bd1c641e7bfe53145820bb64b08f8fc8, type: 3}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_FlipX: 0
|
||||
m_FlipY: 0
|
||||
m_DrawMode: 0
|
||||
m_Size: {x: 2, y: 3}
|
||||
m_AdaptiveModeThreshold: 0.5
|
||||
m_SpriteTileMode: 0
|
||||
m_WasSpriteAssigned: 1
|
||||
m_MaskInteraction: 0
|
||||
m_SpriteSortPoint: 0
|
||||
--- !u!1 &8952044779537201808
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 9217432009376634151}
|
||||
- component: {fileID: 648444132027869173}
|
||||
- component: {fileID: 782368896286959756}
|
||||
- component: {fileID: 5156931632607827063}
|
||||
- component: {fileID: 1900348448078271703}
|
||||
m_Layer: 0
|
||||
m_Name: CanvasHitbox
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &9217432009376634151
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8952044779537201808}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 0.08, y: 0.08, z: 0.08}
|
||||
m_ConstrainProportionsScale: 1
|
||||
m_Children: []
|
||||
m_Father: {fileID: 5117288307080929430}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: -0.22, y: 0}
|
||||
m_SizeDelta: {x: 100, y: 100}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!223 &648444132027869173
|
||||
Canvas:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8952044779537201808}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 3
|
||||
m_RenderMode: 2
|
||||
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: 0
|
||||
m_UpdateRectTransformForStandalone: 0
|
||||
m_SortingLayerID: -1132846201
|
||||
m_SortingOrder: 0
|
||||
m_TargetDisplay: 0
|
||||
--- !u!114 &782368896286959756
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8952044779537201808}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.GraphicRaycaster
|
||||
m_IgnoreReversedGraphics: 1
|
||||
m_BlockingObjects: 0
|
||||
m_BlockingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
--- !u!222 &5156931632607827063
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8952044779537201808}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &1900348448078271703
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8952044779537201808}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 0.003921569}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 0}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 30642bab8eeeb344bbc5773058a20a3c
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,75 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1001 &4783960465046462854
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications:
|
||||
- target: {fileID: 558342595185239558, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: SortingBox_Legend
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1395181864555928322, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_Color.b
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1395181864555928322, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_Color.g
|
||||
value: 0.99722207
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1395181864555928322, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_Color.r
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3934371481972522631, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: boxType
|
||||
value: 2
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 6.47801
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 1.71442
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f2ff655064890df4a93829542a45db0b
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,59 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1001 &4800178131179840808
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications:
|
||||
- target: {fileID: 558342595185239558, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: SortingBox Variant
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 6.47801
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 1.71442
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cc542599819a43f468d691d16f48a78a
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,75 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1001 &8300740829714082025
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications:
|
||||
- target: {fileID: 558342595185239558, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: SortingBox_Rare
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1395181864555928322, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_Color.b
|
||||
value: 0.09333682
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1395181864555928322, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_Color.g
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1395181864555928322, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_Color.r
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3934371481972522631, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: boxType
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 6.47801
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 1.71442
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4bccba1bd6f78134b82aabef275fd6bd
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,87 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1001 &3512625870166755645
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications:
|
||||
- target: {fileID: 558342595185239558, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: SortingBox_Trash
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1395181864555928322, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_Sprite
|
||||
value:
|
||||
objectReference: {fileID: -3078401260823067384, guid: 6a9067e93704c28459a07abe13595616, type: 3}
|
||||
- target: {fileID: 3934371481972522631, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: boxType
|
||||
value: 3
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 14.85
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5117288307080929430, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6518373398422451678, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalScale.x
|
||||
value: 1.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6518373398422451678, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalScale.y
|
||||
value: 1.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6518373398422451678, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalScale.z
|
||||
value: 1.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6518373398422451678, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: -0.3
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6518373398422451678, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: -2.2
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 30642bab8eeeb344bbc5773058a20a3c, type: 3}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b9a73a263efdfb8489bd390bcf174dc5
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Assets/Prefabs/Minigames/CardQualityControl/UI.meta
Normal file
8
Assets/Prefabs/Minigames/CardQualityControl/UI.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 34a2a2685e8779945b25deb59024695d
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,527 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &97040762695298152
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3193587684358315289}
|
||||
- component: {fileID: 6535475175108777945}
|
||||
- component: {fileID: 4139981089598238079}
|
||||
m_Layer: 5
|
||||
m_Name: ScoreDisplay
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &3193587684358315289
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 97040762695298152}
|
||||
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: 8952171418799244803}
|
||||
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: 200, y: 50}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &6535475175108777945
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 97040762695298152}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &4139981089598238079
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 97040762695298152}
|
||||
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: 0000
|
||||
m_isRightToLeft: 0
|
||||
m_fontAsset: {fileID: 11400000, guid: 4aca0db6ec111b5418bdc747168f9474, type: 2}
|
||||
m_sharedMaterial: {fileID: -1441574381962284772, guid: 4aca0db6ec111b5418bdc747168f9474, 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: 100
|
||||
m_fontSizeBase: 100
|
||||
m_fontWeight: 400
|
||||
m_enableAutoSizing: 0
|
||||
m_fontSizeMin: 18
|
||||
m_fontSizeMax: 72
|
||||
m_fontStyle: 1
|
||||
m_HorizontalAlignment: 1
|
||||
m_VerticalAlignment: 256
|
||||
m_textAlignment: 65535
|
||||
m_characterSpacing: 0
|
||||
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!1 &129287496044486005
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8294328820939081367}
|
||||
- component: {fileID: 6186147173729892847}
|
||||
- component: {fileID: 1929638711813240478}
|
||||
m_Layer: 5
|
||||
m_Name: AccuracyDisplay
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &8294328820939081367
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 129287496044486005}
|
||||
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: 8952171418799244803}
|
||||
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: 200, y: 50}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &6186147173729892847
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 129287496044486005}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &1929638711813240478
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 129287496044486005}
|
||||
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: 0%
|
||||
m_isRightToLeft: 0
|
||||
m_fontAsset: {fileID: 11400000, guid: 4aca0db6ec111b5418bdc747168f9474, type: 2}
|
||||
m_sharedMaterial: {fileID: -1441574381962284772, guid: 4aca0db6ec111b5418bdc747168f9474, 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: 100
|
||||
m_fontSizeBase: 100
|
||||
m_fontWeight: 400
|
||||
m_enableAutoSizing: 0
|
||||
m_fontSizeMin: 18
|
||||
m_fontSizeMax: 72
|
||||
m_fontStyle: 1
|
||||
m_HorizontalAlignment: 1
|
||||
m_VerticalAlignment: 256
|
||||
m_textAlignment: 65535
|
||||
m_characterSpacing: 0
|
||||
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!1 &2204255282719587443
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8952171418799244803}
|
||||
- component: {fileID: 3416581373676611538}
|
||||
m_Layer: 5
|
||||
m_Name: ScoresLayoutGroup
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &8952171418799244803
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2204255282719587443}
|
||||
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: 4881154979794857029}
|
||||
- {fileID: 3193587684358315289}
|
||||
- {fileID: 8294328820939081367}
|
||||
m_Father: {fileID: 707190640386266950}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 150}
|
||||
m_Pivot: {x: 0.5, y: 1}
|
||||
--- !u!114 &3416581373676611538
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2204255282719587443}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.HorizontalLayoutGroup
|
||||
m_Padding:
|
||||
m_Left: 0
|
||||
m_Right: 0
|
||||
m_Top: 0
|
||||
m_Bottom: 0
|
||||
m_ChildAlignment: 4
|
||||
m_Spacing: 150
|
||||
m_ChildForceExpandWidth: 0
|
||||
m_ChildForceExpandHeight: 1
|
||||
m_ChildControlWidth: 0
|
||||
m_ChildControlHeight: 0
|
||||
m_ChildScaleWidth: 0
|
||||
m_ChildScaleHeight: 0
|
||||
m_ReverseArrangement: 0
|
||||
--- !u!1 &5517642253100401386
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4881154979794857029}
|
||||
- component: {fileID: 6941393494789352809}
|
||||
- component: {fileID: 1653089319504497253}
|
||||
m_Layer: 5
|
||||
m_Name: TimerDisplay
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &4881154979794857029
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5517642253100401386}
|
||||
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: 8952171418799244803}
|
||||
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: 200, y: 50}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &6941393494789352809
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5517642253100401386}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &1653089319504497253
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5517642253100401386}
|
||||
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: 2:00
|
||||
m_isRightToLeft: 0
|
||||
m_fontAsset: {fileID: 11400000, guid: 4aca0db6ec111b5418bdc747168f9474, type: 2}
|
||||
m_sharedMaterial: {fileID: -1441574381962284772, guid: 4aca0db6ec111b5418bdc747168f9474, 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: 100
|
||||
m_fontSizeBase: 100
|
||||
m_fontWeight: 400
|
||||
m_enableAutoSizing: 0
|
||||
m_fontSizeMin: 18
|
||||
m_fontSizeMax: 72
|
||||
m_fontStyle: 1
|
||||
m_HorizontalAlignment: 1
|
||||
m_VerticalAlignment: 256
|
||||
m_textAlignment: 65535
|
||||
m_characterSpacing: 0
|
||||
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!1 &7537653696112211670
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 707190640386266950}
|
||||
- component: {fileID: 5556944003491708754}
|
||||
m_Layer: 5
|
||||
m_Name: MinigameHUD
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &707190640386266950
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7537653696112211670}
|
||||
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: 8952171418799244803}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &5556944003491708754
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7537653696112211670}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: aa656e03d5384a9eae31fab73b6fe5e2, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: AppleHillsScripts::Minigames.CardSorting.UI.SortingGameHUD
|
||||
timerText: {fileID: 1653089319504497253}
|
||||
scoreText: {fileID: 4139981089598238079}
|
||||
accuracyText: {fileID: 1929638711813240478}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: acc5a752dcc18834b984fe78b6926dad
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
2370
Assets/Prefabs/Minigames/CardQualityControl/UI/ResultsScreen.prefab
Normal file
2370
Assets/Prefabs/Minigames/CardQualityControl/UI/ResultsScreen.prefab
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c8846509eba59f84aa047197fe02375b
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1023,7 +1023,7 @@ RectTransform:
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 200, y: 270}
|
||||
m_SizeDelta: {x: 20, y: 270}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &5882185627204126092
|
||||
MonoBehaviour:
|
||||
@@ -1367,6 +1367,10 @@ PrefabInstance:
|
||||
propertyPath: m_Name
|
||||
value: CardDisplay
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7441149886460635393, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_fontSize
|
||||
value: 0.1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7619421269260494372, guid: 6d6e64f153ccde149bede8e82351d3c4, type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 0
|
||||
|
||||
File diff suppressed because one or more lines are too long
1
Assets/Resources/PerformanceTestRunInfo.json
Normal file
1
Assets/Resources/PerformanceTestRunInfo.json
Normal file
@@ -0,0 +1 @@
|
||||
{"TestSuite":"","Date":0,"Player":{"Development":false,"ScreenWidth":0,"ScreenHeight":0,"ScreenRefreshRate":0,"Fullscreen":false,"Vsync":0,"AntiAliasing":0,"Batchmode":false,"RenderThreadingMode":"MultiThreaded","GpuSkinning":false,"Platform":"","ColorSpace":"","AnisotropicFiltering":"","BlendWeights":"","GraphicsApi":"","ScriptingBackend":"IL2CPP","AndroidTargetSdkVersion":"AndroidApiLevelAuto","AndroidBuildSystem":"Gradle","BuildTarget":"Android","StereoRenderingPath":"MultiPass"},"Hardware":{"OperatingSystem":"","DeviceModel":"","DeviceName":"","ProcessorType":"","ProcessorCount":0,"GraphicsDeviceName":"","SystemMemorySizeMB":0},"Editor":{"Version":"6000.2.6f1","Branch":"6000.2/staging","Changeset":"cc51a95c0300","Date":1758053328},"Dependencies":["com.coplaydev.unity-mcp@6.3.0","com.moolt.packages.net@0.0.3","com.unity.2d.sprite@1.0.0","com.unity.2d.spriteshape@12.0.1","com.unity.addressables@2.7.3","com.unity.addressables.android@1.0.7","com.unity.cinemachine@3.1.4","com.unity.device-simulator.devices@1.0.0","com.unity.feature.2d@2.0.1","com.unity.film-internal-utilities@0.18.4-preview","com.unity.graphtoolkit@0.4.0-exp.2","com.unity.ide.rider@3.0.38","com.unity.ide.visualstudio@2.0.23","com.unity.inputsystem@1.14.2","com.unity.multiplayer.center@1.0.0","com.unity.render-pipelines.universal@17.2.0","com.unity.timeline@1.8.9","com.unity.ugui@2.0.0","com.unity.modules.accessibility@1.0.0","com.unity.modules.ai@1.0.0","com.unity.modules.androidjni@1.0.0","com.unity.modules.animation@1.0.0","com.unity.modules.assetbundle@1.0.0","com.unity.modules.audio@1.0.0","com.unity.modules.cloth@1.0.0","com.unity.modules.director@1.0.0","com.unity.modules.imageconversion@1.0.0","com.unity.modules.imgui@1.0.0","com.unity.modules.jsonserialize@1.0.0","com.unity.modules.particlesystem@1.0.0","com.unity.modules.physics@1.0.0","com.unity.modules.physics2d@1.0.0","com.unity.modules.screencapture@1.0.0","com.unity.modules.terrain@1.0.0","com.unity.modules.terrainphysics@1.0.0","com.unity.modules.tilemap@1.0.0","com.unity.modules.ui@1.0.0","com.unity.modules.uielements@1.0.0","com.unity.modules.umbra@1.0.0","com.unity.modules.unityanalytics@1.0.0","com.unity.modules.unitywebrequest@1.0.0","com.unity.modules.unitywebrequestassetbundle@1.0.0","com.unity.modules.unitywebrequestaudio@1.0.0","com.unity.modules.unitywebrequesttexture@1.0.0","com.unity.modules.unitywebrequestwww@1.0.0","com.unity.modules.vehicles@1.0.0","com.unity.modules.video@1.0.0","com.unity.modules.vr@1.0.0","com.unity.modules.wind@1.0.0","com.unity.modules.xr@1.0.0","com.unity.modules.subsystems@1.0.0","com.unity.modules.hierarchycore@1.0.0","com.unity.render-pipelines.core@17.2.0","com.unity.shadergraph@17.2.0","com.unity.render-pipelines.universal-config@17.0.3","com.unity.test-framework@1.6.0","com.unity.ext.nunit@2.0.5","com.unity.2d.animation@12.0.2","com.unity.2d.pixel-perfect@5.1.0","com.unity.2d.psdimporter@11.0.1","com.unity.2d.tilemap@1.0.0","com.unity.2d.tilemap.extras@5.0.1","com.unity.2d.aseprite@2.0.1","com.unity.splines@2.8.2","com.unity.profiling.core@1.0.2","com.unity.scriptablebuildpipeline@2.4.2","com.unity.2d.common@11.0.1","com.unity.mathematics@1.3.2","com.unity.nuget.newtonsoft-json@3.2.1","com.unity.searcher@4.9.3","com.unity.burst@1.8.24","com.unity.collections@2.5.7","com.unity.rendering.light-transport@1.0.1","com.unity.settings-manager@2.1.0","com.unity.nuget.mono-cecil@1.11.5","com.unity.test-framework.performance@3.1.0"],"Results":[]}
|
||||
7
Assets/Resources/PerformanceTestRunInfo.json.meta
Normal file
7
Assets/Resources/PerformanceTestRunInfo.json.meta
Normal file
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: eef3e69d546eb3f49bba43db92477fa1
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
1
Assets/Resources/PerformanceTestRunSettings.json
Normal file
1
Assets/Resources/PerformanceTestRunSettings.json
Normal file
@@ -0,0 +1 @@
|
||||
{"MeasurementCount":-1}
|
||||
7
Assets/Resources/PerformanceTestRunSettings.json.meta
Normal file
7
Assets/Resources/PerformanceTestRunSettings.json.meta
Normal file
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1890da8c51b4fb44b9c7aa761a8f3b5a
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -631,6 +631,25 @@ namespace Data.CardSystem
|
||||
return _pendingRevealCards.Count;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a random card definition of the specified rarity.
|
||||
/// Used by minigames to spawn cards without affecting player's collection.
|
||||
/// </summary>
|
||||
public CardDefinition GetRandomCardDefinitionByRarity(CardRarity targetRarity)
|
||||
{
|
||||
// Filter available cards by rarity
|
||||
var matchingCards = availableCards.Where(c => c.Rarity == targetRarity).ToList();
|
||||
|
||||
if (matchingCards.Count == 0)
|
||||
{
|
||||
Debug.LogWarning($"[CardSystemManager] No card definitions found for rarity {targetRarity}");
|
||||
return null;
|
||||
}
|
||||
|
||||
// Return random card from matching rarity
|
||||
return matchingCards[UnityEngine.Random.Range(0, matchingCards.Count)];
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -401,6 +401,56 @@ namespace UI.CardSystem.StateMachine
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Color/Tint Animations
|
||||
|
||||
private TweenBase _activeBlinkTween;
|
||||
private Color _originalColor;
|
||||
|
||||
/// <summary>
|
||||
/// Blink an image red repeatedly (for fell-off-conveyor state)
|
||||
/// </summary>
|
||||
public void BlinkRed(UnityEngine.UI.Image image, float blinkSpeed = 0.25f)
|
||||
{
|
||||
if (image == null) return;
|
||||
|
||||
// Stop any existing blink
|
||||
StopBlinking();
|
||||
|
||||
// Store original color
|
||||
_originalColor = image.color;
|
||||
|
||||
// Start blinking red loop
|
||||
BlinkLoop(image, blinkSpeed);
|
||||
}
|
||||
|
||||
private void BlinkLoop(UnityEngine.UI.Image image, float blinkSpeed)
|
||||
{
|
||||
if (image == null) return;
|
||||
|
||||
// Tween to red
|
||||
_activeBlinkTween = Tween.Color(image, Color.red, blinkSpeed, 0f, Tween.EaseInOut,
|
||||
completeCallback: () =>
|
||||
{
|
||||
// Tween back to original
|
||||
_activeBlinkTween = Tween.Color(image, _originalColor, blinkSpeed, 0f, Tween.EaseInOut,
|
||||
completeCallback: () => BlinkLoop(image, blinkSpeed)); // Loop
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Stop blinking animation and restore original color
|
||||
/// </summary>
|
||||
public void StopBlinking()
|
||||
{
|
||||
if (_activeBlinkTween != null)
|
||||
{
|
||||
_activeBlinkTween.Stop();
|
||||
_activeBlinkTween = null;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -170,6 +170,7 @@ namespace Core
|
||||
var interactionSettings = SettingsProvider.Instance.LoadSettingsSynchronous<InteractionSettings>();
|
||||
var minigameSettings = SettingsProvider.Instance.LoadSettingsSynchronous<DivingMinigameSettings>();
|
||||
var cardSystemSettings = SettingsProvider.Instance.LoadSettingsSynchronous<CardSystemSettings>();
|
||||
var sortingGameSettings = SettingsProvider.Instance.LoadSettingsSynchronous<CardSortingSettings>();
|
||||
|
||||
// Register settings with service locator
|
||||
if (playerSettings != null)
|
||||
@@ -211,6 +212,16 @@ namespace Core
|
||||
{
|
||||
Debug.LogError("Failed to load CardSystemSettings");
|
||||
}
|
||||
|
||||
if (sortingGameSettings != null)
|
||||
{
|
||||
ServiceLocator.Register<ICardSortingSettings>(sortingGameSettings);
|
||||
Logging.Debug("CardSortingSettings registered successfully");
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError("Failed to load CardSystemSettings");
|
||||
}
|
||||
|
||||
// Log success
|
||||
_settingsLoaded = playerSettings != null && interactionSettings != null && minigameSettings != null && cardSystemSettings != null;
|
||||
|
||||
92
Assets/Scripts/Core/Settings/CardSortingSettings.cs
Normal file
92
Assets/Scripts/Core/Settings/CardSortingSettings.cs
Normal file
@@ -0,0 +1,92 @@
|
||||
using AppleHills.Core.Settings;
|
||||
using Minigames.CardSorting.Data;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Core.Settings
|
||||
{
|
||||
/// <summary>
|
||||
/// Settings for Card Sorting minigame.
|
||||
/// Follows DivingMinigameSettings pattern.
|
||||
/// </summary>
|
||||
[CreateAssetMenu(fileName = "CardSortingSettings", menuName = "AppleHills/Settings/CardSorting", order = 4)]
|
||||
public class CardSortingSettings : BaseSettings, ICardSortingSettings
|
||||
{
|
||||
[Header("Timing")]
|
||||
[Tooltip("Total game duration in seconds")]
|
||||
[SerializeField] private float gameDuration = 120f;
|
||||
|
||||
[Tooltip("Distance between item spawns (units)")]
|
||||
[SerializeField] private float spawnDistance = 50f;
|
||||
|
||||
[Header("Conveyor Speed")]
|
||||
[Tooltip("Initial belt movement speed")]
|
||||
[SerializeField] private float initialBeltSpeed = 1f;
|
||||
|
||||
[Tooltip("Maximum belt movement speed")]
|
||||
[SerializeField] private float maxBeltSpeed = 3f;
|
||||
|
||||
[Tooltip("Curve for difficulty progression (X=time%, Y=speed multiplier)")]
|
||||
[SerializeField] private AnimationCurve speedCurve = AnimationCurve.EaseInOut(0f, 0f, 1f, 1f);
|
||||
|
||||
[Header("Item Pools")]
|
||||
[Tooltip("Garbage items that can spawn (banana peels, cans, receipts, etc.)")]
|
||||
[SerializeField] private GarbageItemDefinition[] garbageItems = new GarbageItemDefinition[0];
|
||||
|
||||
[Header("Spawn Weights")]
|
||||
[Tooltip("Weight for spawning normal rarity cards")]
|
||||
[Range(0, 100)] [SerializeField] private float normalCardWeight = 40f;
|
||||
|
||||
[Tooltip("Weight for spawning rare rarity cards")]
|
||||
[Range(0, 100)] [SerializeField] private float rareCardWeight = 30f;
|
||||
|
||||
[Tooltip("Weight for spawning legendary rarity cards")]
|
||||
[Range(0, 100)] [SerializeField] private float legendCardWeight = 20f;
|
||||
|
||||
[Tooltip("Weight for spawning garbage items")]
|
||||
[Range(0, 100)] [SerializeField] private float garbageWeight = 10f;
|
||||
|
||||
[Header("Scoring")]
|
||||
[Tooltip("Points awarded for correct sort")]
|
||||
[SerializeField] private int correctSortPoints = 10;
|
||||
|
||||
[Tooltip("Points deducted for incorrect sort")]
|
||||
[SerializeField] private int incorrectSortPenalty = -5;
|
||||
|
||||
[Tooltip("Points deducted when item falls off belt")]
|
||||
[SerializeField] private int missedItemPenalty = -3;
|
||||
|
||||
[Header("Rewards")]
|
||||
[Tooltip("Booster packs awarded per correct sort")]
|
||||
[SerializeField] private int boosterPacksPerCorrectItem = 1;
|
||||
|
||||
// Interface implementation
|
||||
public float GameDuration => gameDuration;
|
||||
|
||||
public float SpawnDistance => spawnDistance;
|
||||
|
||||
public float InitialBeltSpeed => initialBeltSpeed;
|
||||
public float MaxBeltSpeed => maxBeltSpeed;
|
||||
public AnimationCurve SpeedCurve => speedCurve;
|
||||
public GarbageItemDefinition[] GarbageItems => garbageItems;
|
||||
public float NormalCardWeight => normalCardWeight;
|
||||
public float RareCardWeight => rareCardWeight;
|
||||
public float LegendCardWeight => legendCardWeight;
|
||||
public float GarbageWeight => garbageWeight;
|
||||
public int CorrectSortPoints => correctSortPoints;
|
||||
public int IncorrectSortPenalty => incorrectSortPenalty;
|
||||
public int MissedItemPenalty => missedItemPenalty;
|
||||
public int BoosterPacksPerCorrectItem => boosterPacksPerCorrectItem;
|
||||
|
||||
public override void OnValidate()
|
||||
{
|
||||
base.OnValidate();
|
||||
|
||||
gameDuration = Mathf.Max(1f, gameDuration);
|
||||
initialBeltSpeed = Mathf.Max(0.1f, initialBeltSpeed);
|
||||
maxBeltSpeed = Mathf.Max(initialBeltSpeed, maxBeltSpeed);
|
||||
correctSortPoints = Mathf.Max(0, correctSortPoints);
|
||||
boosterPacksPerCorrectItem = Mathf.Max(0, boosterPacksPerCorrectItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
3
Assets/Scripts/Core/Settings/CardSortingSettings.cs.meta
Normal file
3
Assets/Scripts/Core/Settings/CardSortingSettings.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a0fd5f8ab5d74b12968501dd4e3cc416
|
||||
timeCreated: 1763461789
|
||||
39
Assets/Scripts/Core/Settings/ICardSortingSettings.cs
Normal file
39
Assets/Scripts/Core/Settings/ICardSortingSettings.cs
Normal file
@@ -0,0 +1,39 @@
|
||||
using Minigames.CardSorting.Data;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Core.Settings
|
||||
{
|
||||
/// <summary>
|
||||
/// Settings interface for Card Sorting minigame.
|
||||
/// Accessed via GameManager.GetSettingsObject<ICardSortingSettings>()
|
||||
/// </summary>
|
||||
public interface ICardSortingSettings
|
||||
{
|
||||
// Timing
|
||||
float GameDuration { get; }
|
||||
float SpawnDistance { get; }
|
||||
|
||||
// Conveyor Speed
|
||||
float InitialBeltSpeed { get; }
|
||||
float MaxBeltSpeed { get; }
|
||||
AnimationCurve SpeedCurve { get; }
|
||||
|
||||
// Item Pools
|
||||
GarbageItemDefinition[] GarbageItems { get; }
|
||||
|
||||
// Spawn Weights
|
||||
float NormalCardWeight { get; }
|
||||
float RareCardWeight { get; }
|
||||
float LegendCardWeight { get; }
|
||||
float GarbageWeight { get; }
|
||||
|
||||
// Scoring
|
||||
int CorrectSortPoints { get; }
|
||||
int IncorrectSortPenalty { get; }
|
||||
int MissedItemPenalty { get; }
|
||||
|
||||
// Rewards
|
||||
int BoosterPacksPerCorrectItem { get; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 646b90dfa92640e59430f871037affea
|
||||
timeCreated: 1763461774
|
||||
3
Assets/Scripts/Minigames/CardSorting.meta
Normal file
3
Assets/Scripts/Minigames/CardSorting.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1f5c5963e2ff4b33a086f5b97e648914
|
||||
timeCreated: 1763461758
|
||||
3
Assets/Scripts/Minigames/CardSorting/Controllers.meta
Normal file
3
Assets/Scripts/Minigames/CardSorting/Controllers.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d35b6d1850b94234bbb54e77b202861b
|
||||
timeCreated: 1763469999
|
||||
@@ -0,0 +1,370 @@
|
||||
using AppleHills.Data.CardSystem;
|
||||
using Core.Settings;
|
||||
using Data.CardSystem;
|
||||
using Minigames.CardSorting.Core;
|
||||
using Minigames.CardSorting.Data;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Minigames.CardSorting.Controllers
|
||||
{
|
||||
/// <summary>
|
||||
/// Non-MonoBehaviour controller for conveyor belt logic.
|
||||
/// Handles spawning, speed, item lifecycle.
|
||||
/// Owns item tracking and emits events when items fall off or are sorted.
|
||||
/// Parallel to CornerCardManager in card system.
|
||||
/// </summary>
|
||||
public class ConveyorBeltController
|
||||
{
|
||||
private readonly Transform spawnPoint;
|
||||
private readonly Transform endPoint; // Visual end - scoring happens here
|
||||
private readonly Transform despawnPoint; // Off-screen - destruction happens here
|
||||
private readonly GameObject cardPrefab;
|
||||
private readonly GameObject garbagePrefab;
|
||||
private readonly ICardSortingSettings settings;
|
||||
|
||||
private List<SortableItem> activeItems = new List<SortableItem>();
|
||||
private HashSet<SortableItem> missedItems = new HashSet<SortableItem>(); // Items past visual end, moving to despawn
|
||||
private float currentSpeed;
|
||||
private SortableItem lastSpawnedItem; // Track last spawned item for distance-based spawning
|
||||
|
||||
// Events - conveyor owns item lifecycle
|
||||
public event System.Action<SortableItem> OnItemSpawned; // Fired when new item spawns
|
||||
public event System.Action<SortableItem> OnItemFellOffBelt; // Fired at visual end (endPoint)
|
||||
public event System.Action<SortableItem> OnItemDespawned; // Fired at despawn point (destruction)
|
||||
public event System.Action<SortableItem, SortingBox, bool> OnItemSorted; // item, box, correct
|
||||
public event System.Action<SortableItem> OnItemDroppedOnFloor; // Fired when dropped outside any box
|
||||
|
||||
public float CurrentSpeed => currentSpeed;
|
||||
public int ActiveItemCount => activeItems.Count;
|
||||
|
||||
public ConveyorBeltController(
|
||||
Transform spawnPoint,
|
||||
Transform endPoint,
|
||||
Transform despawnPoint,
|
||||
GameObject cardPrefab,
|
||||
GameObject garbagePrefab,
|
||||
ICardSortingSettings settings)
|
||||
{
|
||||
this.spawnPoint = spawnPoint;
|
||||
this.endPoint = endPoint;
|
||||
this.despawnPoint = despawnPoint;
|
||||
this.cardPrefab = cardPrefab;
|
||||
this.garbagePrefab = garbagePrefab;
|
||||
this.settings = settings;
|
||||
|
||||
this.currentSpeed = settings.InitialBeltSpeed;
|
||||
this.lastSpawnedItem = null; // No items spawned yet
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Update belt speed, check for items falling off, and handle distance-based spawning.
|
||||
/// </summary>
|
||||
public void Update(float deltaTime, float gameProgress)
|
||||
{
|
||||
UpdateBeltSpeed(gameProgress);
|
||||
CheckItemsOffBelt();
|
||||
CheckDistanceBasedSpawn(gameProgress);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check if we should spawn a new item based on distance from last spawn.
|
||||
/// Items spawn when last item has moved far enough from spawn point.
|
||||
/// </summary>
|
||||
private void CheckDistanceBasedSpawn(float gameProgress)
|
||||
{
|
||||
// If no items spawned yet, spawn immediately
|
||||
if (lastSpawnedItem == null)
|
||||
{
|
||||
SpawnNewItem(gameProgress);
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if last spawned item is far enough from spawn point
|
||||
float distanceFromSpawn = Mathf.Abs(lastSpawnedItem.transform.position.x - spawnPoint.position.x);
|
||||
|
||||
if (distanceFromSpawn >= settings.SpawnDistance) // Using InitialSpawnInterval as distance threshold
|
||||
{
|
||||
SpawnNewItem(gameProgress);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Spawn a new item at the spawn point.
|
||||
/// </summary>
|
||||
private SortableItem SpawnNewItem(float gameProgress)
|
||||
{
|
||||
// Weighted random: card or garbage?
|
||||
float totalWeight = settings.NormalCardWeight + settings.RareCardWeight +
|
||||
settings.LegendCardWeight + settings.GarbageWeight;
|
||||
|
||||
if (totalWeight <= 0f)
|
||||
{
|
||||
Debug.LogWarning("[ConveyorBeltController] Total spawn weight is 0, cannot spawn items!");
|
||||
return null;
|
||||
}
|
||||
|
||||
float roll = Random.Range(0f, totalWeight);
|
||||
|
||||
SortableItem item;
|
||||
|
||||
if (roll < settings.GarbageWeight)
|
||||
{
|
||||
// Spawn garbage
|
||||
item = SpawnGarbageItem();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Spawn card - determine rarity, get random card from CardSystemManager
|
||||
CardRarity rarity = DetermineRarity(roll);
|
||||
item = SpawnCardItem(rarity);
|
||||
}
|
||||
|
||||
if (item != null)
|
||||
{
|
||||
// Set conveyor speed on item
|
||||
item.Context.ConveyorSpeed = currentSpeed;
|
||||
|
||||
activeItems.Add(item);
|
||||
lastSpawnedItem = item; // Track for distance-based spawning
|
||||
|
||||
// Emit spawn event
|
||||
OnItemSpawned?.Invoke(item);
|
||||
}
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
private SortableItem SpawnGarbageItem()
|
||||
{
|
||||
if (settings.GarbageItems == null || settings.GarbageItems.Length == 0)
|
||||
{
|
||||
Debug.LogWarning("[ConveyorBeltController] No garbage items configured!");
|
||||
return null;
|
||||
}
|
||||
|
||||
GarbageItemDefinition garbage = SelectRandomGarbage();
|
||||
|
||||
GameObject obj = Object.Instantiate(garbagePrefab, spawnPoint.position, Quaternion.identity);
|
||||
SortableItem item = obj.GetComponent<SortableItem>();
|
||||
|
||||
if (item != null)
|
||||
{
|
||||
item.SetupAsGarbage(garbage);
|
||||
|
||||
// Subscribe to item events
|
||||
item.OnItemDroppedInBox += HandleItemDroppedInBox;
|
||||
item.OnItemReturnedToConveyor += HandleItemReturnedToConveyor;
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError("[ConveyorBeltController] Garbage prefab missing SortableItem component!");
|
||||
Object.Destroy(obj);
|
||||
return null;
|
||||
}
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
private SortableItem SpawnCardItem(CardRarity rarity)
|
||||
{
|
||||
// Get a random card of the specified rarity
|
||||
CardData cardData = GetRandomCardDataByRarity(rarity);
|
||||
|
||||
if (cardData == null)
|
||||
{
|
||||
Debug.LogWarning($"[ConveyorBeltController] No card data found for rarity {rarity}");
|
||||
return null;
|
||||
}
|
||||
|
||||
GameObject obj = Object.Instantiate(cardPrefab, spawnPoint.position, Quaternion.identity);
|
||||
SortableItem item = obj.GetComponent<SortableItem>();
|
||||
|
||||
if (item != null)
|
||||
{
|
||||
item.SetupAsCard(cardData);
|
||||
|
||||
// Subscribe to item events
|
||||
item.OnItemDroppedInBox += HandleItemDroppedInBox;
|
||||
item.OnItemReturnedToConveyor += HandleItemReturnedToConveyor;
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError("[ConveyorBeltController] Card prefab missing SortableItem component!");
|
||||
Object.Destroy(obj);
|
||||
return null;
|
||||
}
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Helper method to get a random card of a specific rarity.
|
||||
/// Gets a CardDefinition from CardSystemManager and converts to CardData.
|
||||
/// Does NOT affect player's collection or open boosters.
|
||||
/// </summary>
|
||||
private CardData GetRandomCardDataByRarity(CardRarity targetRarity)
|
||||
{
|
||||
// Get random card definition from manager
|
||||
var definition = CardSystemManager.Instance.GetRandomCardDefinitionByRarity(targetRarity);
|
||||
|
||||
if (definition == null)
|
||||
{
|
||||
Debug.LogWarning($"[ConveyorBeltController] No card definition found for rarity {targetRarity}");
|
||||
return null;
|
||||
}
|
||||
|
||||
// Create CardData from definition using constructor
|
||||
// This properly links the definition and sets all properties
|
||||
return new CardData(definition);
|
||||
}
|
||||
|
||||
private void UpdateBeltSpeed(float gameProgress)
|
||||
{
|
||||
// Evaluate speed curve
|
||||
float speedMultiplier = settings.SpeedCurve.Evaluate(gameProgress);
|
||||
currentSpeed = Mathf.Lerp(
|
||||
settings.InitialBeltSpeed,
|
||||
settings.MaxBeltSpeed,
|
||||
speedMultiplier
|
||||
);
|
||||
|
||||
// Update all active items (including missed items moving to despawn)
|
||||
foreach (var item in activeItems)
|
||||
{
|
||||
if (item != null && item.Context.IsOnConveyor)
|
||||
{
|
||||
item.Context.ConveyorSpeed = currentSpeed;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void CheckItemsOffBelt()
|
||||
{
|
||||
// Check active items for reaching visual end point
|
||||
for (int i = activeItems.Count - 1; i >= 0; i--)
|
||||
{
|
||||
var item = activeItems[i];
|
||||
if (item == null)
|
||||
{
|
||||
activeItems.RemoveAt(i);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Check if past visual end point (not yet scored as missed)
|
||||
if (item.transform.position.x > endPoint.position.x && !missedItems.Contains(item))
|
||||
{
|
||||
// Mark as missed and emit event for scoring
|
||||
missedItems.Add(item);
|
||||
|
||||
// Transition item to FellOffConveyorState (will blink red)
|
||||
item.ChangeState("FellOffConveyorState");
|
||||
|
||||
OnItemFellOffBelt?.Invoke(item);
|
||||
|
||||
// Item continues moving, stays in activeItems until despawn
|
||||
}
|
||||
}
|
||||
|
||||
// Check missed items for reaching despawn point
|
||||
for (int i = activeItems.Count - 1; i >= 0; i--)
|
||||
{
|
||||
var item = activeItems[i];
|
||||
if (item == null)
|
||||
{
|
||||
activeItems.RemoveAt(i);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Check if past despawn point (time to destroy)
|
||||
if (item.transform.position.x > despawnPoint.position.x && missedItems.Contains(item))
|
||||
{
|
||||
// Remove from tracking
|
||||
activeItems.RemoveAt(i);
|
||||
missedItems.Remove(item);
|
||||
|
||||
// Clear lastSpawnedItem reference if this was it
|
||||
if (lastSpawnedItem == item)
|
||||
{
|
||||
lastSpawnedItem = null;
|
||||
}
|
||||
|
||||
// Emit despawn event for destruction
|
||||
OnItemDespawned?.Invoke(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Handle when an item is dropped in a box (correct or incorrect).
|
||||
/// </summary>
|
||||
private void HandleItemDroppedInBox(SortableItem item, SortingBox box, bool correct)
|
||||
{
|
||||
// Remove from tracking and unsubscribe
|
||||
if (activeItems.Remove(item))
|
||||
{
|
||||
// Also remove from missed items if it was there
|
||||
missedItems.Remove(item);
|
||||
|
||||
// Clear lastSpawnedItem reference if this was it
|
||||
if (lastSpawnedItem == item)
|
||||
{
|
||||
lastSpawnedItem = null;
|
||||
}
|
||||
|
||||
item.OnItemDroppedInBox -= HandleItemDroppedInBox;
|
||||
item.OnItemReturnedToConveyor -= HandleItemReturnedToConveyor;
|
||||
|
||||
// Emit event for game manager to handle scoring, passing box and correctness
|
||||
OnItemSorted?.Invoke(item, box, correct);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handle when an item is returned to conveyor (dropped outside box).
|
||||
/// Item transitions to DroppedOnFloorState and gets destroyed.
|
||||
/// </summary>
|
||||
private void HandleItemReturnedToConveyor(SortableItem item)
|
||||
{
|
||||
// Remove from tracking and unsubscribe (item will be destroyed)
|
||||
if (activeItems.Remove(item))
|
||||
{
|
||||
missedItems.Remove(item);
|
||||
|
||||
if (lastSpawnedItem == item)
|
||||
{
|
||||
lastSpawnedItem = null;
|
||||
}
|
||||
|
||||
item.OnItemDroppedInBox -= HandleItemDroppedInBox;
|
||||
item.OnItemReturnedToConveyor -= HandleItemReturnedToConveyor;
|
||||
|
||||
// Emit event for scoring
|
||||
OnItemDroppedOnFloor?.Invoke(item);
|
||||
|
||||
Debug.Log($"[ConveyorBeltController] Item dropped on floor: {item.CardData?.Name ?? item.GarbageItem?.DisplayName}");
|
||||
}
|
||||
}
|
||||
|
||||
private CardRarity DetermineRarity(float roll)
|
||||
{
|
||||
// Adjust roll to be relative to card weights only (subtract garbage weight)
|
||||
float adjusted = roll - settings.GarbageWeight;
|
||||
|
||||
if (adjusted < settings.NormalCardWeight)
|
||||
return CardRarity.Normal;
|
||||
|
||||
if (adjusted < settings.NormalCardWeight + settings.RareCardWeight)
|
||||
return CardRarity.Rare;
|
||||
|
||||
return CardRarity.Legendary;
|
||||
}
|
||||
|
||||
private GarbageItemDefinition SelectRandomGarbage()
|
||||
{
|
||||
return settings.GarbageItems[Random.Range(0, settings.GarbageItems.Length)];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 681596c1ece04da18b2c3394441ebd4b
|
||||
timeCreated: 1763469999
|
||||
@@ -0,0 +1,88 @@
|
||||
using Core.Settings;
|
||||
using System;
|
||||
|
||||
namespace Minigames.CardSorting.Controllers
|
||||
{
|
||||
/// <summary>
|
||||
/// Non-MonoBehaviour controller for score tracking.
|
||||
/// Handles scoring, accuracy calculation, and reward calculation.
|
||||
/// </summary>
|
||||
public class SortingScoreController
|
||||
{
|
||||
private readonly ICardSortingSettings settings;
|
||||
|
||||
private int totalScore;
|
||||
private int correctSorts;
|
||||
private int incorrectSorts;
|
||||
private int missedItems;
|
||||
|
||||
public int TotalScore => totalScore;
|
||||
public int CorrectSorts => correctSorts;
|
||||
public int IncorrectSorts => incorrectSorts;
|
||||
public int MissedItems => missedItems;
|
||||
public int TotalAttempts => correctSorts + incorrectSorts;
|
||||
public float Accuracy => TotalAttempts > 0 ? (float)correctSorts / TotalAttempts : 0f;
|
||||
|
||||
public event Action<int> OnScoreChanged;
|
||||
public event Action<int> OnCorrectSort;
|
||||
public event Action<int> OnIncorrectSort;
|
||||
|
||||
public SortingScoreController(ICardSortingSettings settings)
|
||||
{
|
||||
this.settings = settings;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Record a correct sort.
|
||||
/// </summary>
|
||||
public void RecordCorrectSort()
|
||||
{
|
||||
correctSorts++;
|
||||
totalScore += settings.CorrectSortPoints;
|
||||
OnScoreChanged?.Invoke(totalScore);
|
||||
OnCorrectSort?.Invoke(correctSorts);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Record an incorrect sort.
|
||||
/// </summary>
|
||||
public void RecordIncorrectSort()
|
||||
{
|
||||
incorrectSorts++;
|
||||
totalScore += settings.IncorrectSortPenalty; // This is a negative value
|
||||
OnScoreChanged?.Invoke(totalScore);
|
||||
OnIncorrectSort?.Invoke(incorrectSorts);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Record a missed item (fell off belt).
|
||||
/// </summary>
|
||||
public void RecordMissedItem()
|
||||
{
|
||||
missedItems++;
|
||||
totalScore += settings.MissedItemPenalty; // This is a negative value
|
||||
OnScoreChanged?.Invoke(totalScore);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Calculate booster pack reward based on performance.
|
||||
/// </summary>
|
||||
public int CalculateBoosterReward()
|
||||
{
|
||||
// Simple: 1 booster per correct sort (or use settings multiplier)
|
||||
return correctSorts * settings.BoosterPacksPerCorrectItem;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Reset all scores (for restarting game).
|
||||
/// </summary>
|
||||
public void Reset()
|
||||
{
|
||||
totalScore = 0;
|
||||
correctSorts = 0;
|
||||
incorrectSorts = 0;
|
||||
missedItems = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 280957c6e5b24e91b9fdc49ec685ed2f
|
||||
timeCreated: 1763470011
|
||||
3
Assets/Scripts/Minigames/CardSorting/Core.meta
Normal file
3
Assets/Scripts/Minigames/CardSorting/Core.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fa35cf17256e403ab8bed2555352eaf5
|
||||
timeCreated: 1763461824
|
||||
36
Assets/Scripts/Minigames/CardSorting/Core/GarbageVisual.cs
Normal file
36
Assets/Scripts/Minigames/CardSorting/Core/GarbageVisual.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Minigames.CardSorting.Core
|
||||
{
|
||||
/// <summary>
|
||||
/// Simple sprite renderer for garbage items.
|
||||
/// Parallel to CardDisplay for cards.
|
||||
/// </summary>
|
||||
public class GarbageVisual : MonoBehaviour
|
||||
{
|
||||
[Header("Visual Components")]
|
||||
[SerializeField] private Image spriteRenderer;
|
||||
|
||||
/// <summary>
|
||||
/// Update the displayed sprite.
|
||||
/// </summary>
|
||||
public void UpdateDisplay(Sprite sprite)
|
||||
{
|
||||
if (spriteRenderer != null)
|
||||
{
|
||||
spriteRenderer.sprite = sprite;
|
||||
}
|
||||
}
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
// Auto-find Image component if not assigned
|
||||
if (spriteRenderer == null)
|
||||
{
|
||||
spriteRenderer = GetComponent<Image>();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b707770fc3a6448ea0dcd1b2fbf41e00
|
||||
timeCreated: 1763461824
|
||||
230
Assets/Scripts/Minigames/CardSorting/Core/SortableItem.cs
Normal file
230
Assets/Scripts/Minigames/CardSorting/Core/SortableItem.cs
Normal file
@@ -0,0 +1,230 @@
|
||||
using AppleHills.Data.CardSystem;
|
||||
using Core;
|
||||
using Core.SaveLoad;
|
||||
using Minigames.CardSorting.Data;
|
||||
using UI.DragAndDrop.Core;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Minigames.CardSorting.Core
|
||||
{
|
||||
/// <summary>
|
||||
/// Draggable sortable item on conveyor belt.
|
||||
/// Uses state machine for behavior (OnConveyor → BeingDragged → Sorted).
|
||||
/// Inherits from DraggableObject to reuse drag/drop system.
|
||||
/// </summary>
|
||||
public class SortableItem : DraggableObject
|
||||
{
|
||||
[Header("Components")]
|
||||
[SerializeField] private SortableItemContext context;
|
||||
[SerializeField] private AppleMachine stateMachine;
|
||||
|
||||
[Header("Configuration")]
|
||||
[SerializeField] private string initialState = "OnConveyorState";
|
||||
|
||||
// Data tracking
|
||||
private bool isGarbage;
|
||||
private CardData cardData;
|
||||
private GarbageItemDefinition garbageItem;
|
||||
|
||||
// Events - item emits notifications, conveyor subscribes
|
||||
public event System.Action<SortableItem, SortingBox, bool> OnItemDroppedInBox;
|
||||
public event System.Action<SortableItem> OnItemReturnedToConveyor;
|
||||
|
||||
// Public accessors
|
||||
public SortableItemContext Context => context;
|
||||
public AppleMachine StateMachine => stateMachine;
|
||||
public bool IsGarbage => isGarbage;
|
||||
public CardData CardData => cardData;
|
||||
public GarbageItemDefinition GarbageItem => garbageItem;
|
||||
|
||||
/// <summary>
|
||||
/// Get the correct box type for this item.
|
||||
/// </summary>
|
||||
public BoxType CorrectBox
|
||||
{
|
||||
get
|
||||
{
|
||||
if (isGarbage)
|
||||
return BoxType.Trash;
|
||||
|
||||
return cardData.Rarity switch
|
||||
{
|
||||
CardRarity.Normal => BoxType.Normal,
|
||||
CardRarity.Rare => BoxType.Rare,
|
||||
CardRarity.Legendary => BoxType.Legend,
|
||||
_ => BoxType.Trash
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
protected override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
// Auto-find components if not assigned
|
||||
if (context == null)
|
||||
context = GetComponent<SortableItemContext>();
|
||||
|
||||
if (stateMachine == null)
|
||||
stateMachine = GetComponentInChildren<AppleMachine>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Setup item as a card.
|
||||
/// </summary>
|
||||
public void SetupAsCard(CardData data)
|
||||
{
|
||||
isGarbage = false;
|
||||
cardData = data;
|
||||
garbageItem = null;
|
||||
|
||||
if (context != null)
|
||||
{
|
||||
context.SetupAsCard(data);
|
||||
}
|
||||
|
||||
if (stateMachine != null && !string.IsNullOrEmpty(initialState))
|
||||
{
|
||||
stateMachine.ChangeState(initialState);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Setup item as garbage.
|
||||
/// </summary>
|
||||
public void SetupAsGarbage(GarbageItemDefinition garbage)
|
||||
{
|
||||
isGarbage = true;
|
||||
cardData = default;
|
||||
garbageItem = garbage;
|
||||
|
||||
if (context != null)
|
||||
{
|
||||
context.SetupAsGarbage(garbage.Sprite);
|
||||
}
|
||||
|
||||
if (stateMachine != null && !string.IsNullOrEmpty(initialState))
|
||||
{
|
||||
stateMachine.ChangeState(initialState);
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnDragStartedHook()
|
||||
{
|
||||
base.OnDragStartedHook();
|
||||
|
||||
// Check if current state wants to handle drag behavior
|
||||
if (stateMachine?.currentState != null)
|
||||
{
|
||||
var dragHandler = stateMachine.currentState.GetComponent<ISortableItemDragHandler>();
|
||||
if (dragHandler != null && dragHandler.OnDragStarted(context))
|
||||
{
|
||||
return; // State handled it
|
||||
}
|
||||
}
|
||||
|
||||
// Default behavior if state doesn't handle
|
||||
Logging.Debug($"[SortableItem] Drag started on {(isGarbage ? garbageItem.DisplayName : cardData.Name)}");
|
||||
}
|
||||
|
||||
// TODO: Fixed when base slot/draggable reworked
|
||||
public override void OnDrag(UnityEngine.EventSystems.PointerEventData eventData)
|
||||
{
|
||||
base.OnDrag(eventData);
|
||||
|
||||
if (!IsDragging) return;
|
||||
|
||||
// Perform raycast to detect what's underneath the dragged card
|
||||
DetectSlotUnderPointer(eventData);
|
||||
}
|
||||
|
||||
protected override void OnDragEndedHook()
|
||||
{
|
||||
base.OnDragEndedHook();
|
||||
|
||||
// Validate drop on sorting box
|
||||
if (CurrentSlot is SortingBox box)
|
||||
{
|
||||
bool correctSort = box.ValidateItem(this);
|
||||
|
||||
// Fire event IMMEDIATELY when card is released over bin
|
||||
// This allows manager to update score/UI right away
|
||||
OnItemDroppedInBox?.Invoke(this, box, correctSort);
|
||||
|
||||
// Transition to appropriate state based on correctness
|
||||
// State will handle fall-into-bin animation and destruction
|
||||
if (correctSort)
|
||||
{
|
||||
ChangeState("SortedCorrectlyState");
|
||||
}
|
||||
else
|
||||
{
|
||||
ChangeState("SortedIncorrectlyState");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Dropped outside valid box - transition to dropped on floor state
|
||||
Logging.Debug("[SortableItem] Dropped outside box, transitioning to floor state");
|
||||
ChangeState("DroppedOnFloorState");
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Fixed when base slot/draggable reworked
|
||||
/// <summary>
|
||||
/// Detect which slot (if any) is under the pointer during drag.
|
||||
/// Updates CurrentSlot for drop detection.
|
||||
/// </summary>
|
||||
private void DetectSlotUnderPointer(UnityEngine.EventSystems.PointerEventData eventData)
|
||||
{
|
||||
// Perform raycast at pointer position to find slots
|
||||
var raycastResults = new System.Collections.Generic.List<UnityEngine.EventSystems.RaycastResult>();
|
||||
UnityEngine.EventSystems.EventSystem.current.RaycastAll(eventData, raycastResults);
|
||||
|
||||
SortingBox hoveredBox = null;
|
||||
|
||||
// Find first SortingBox in raycast results
|
||||
foreach (var result in raycastResults)
|
||||
{
|
||||
var box = result.gameObject.GetComponentInParent<SortingBox>();
|
||||
if (box != null)
|
||||
{
|
||||
hoveredBox = box;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Update current slot (used in OnDragEndedHook)
|
||||
if (hoveredBox != null && hoveredBox != CurrentSlot)
|
||||
{
|
||||
_currentSlot = hoveredBox;
|
||||
Logging.Debug($"[SortableItem] Now hovering over {hoveredBox.BoxType} box");
|
||||
}
|
||||
else if (hoveredBox == null && CurrentSlot != null)
|
||||
{
|
||||
_currentSlot = null;
|
||||
Logging.Debug("[SortableItem] No longer over any box");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Change to a specific state.
|
||||
/// </summary>
|
||||
public void ChangeState(string stateName)
|
||||
{
|
||||
if (stateMachine != null)
|
||||
{
|
||||
stateMachine.ChangeState(stateName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Interface for states that handle drag behavior.
|
||||
/// </summary>
|
||||
public interface ISortableItemDragHandler
|
||||
{
|
||||
bool OnDragStarted(SortableItemContext context);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9b3db9ce867c4df884411fb3da8fd80a
|
||||
timeCreated: 1763461867
|
||||
139
Assets/Scripts/Minigames/CardSorting/Core/SortableItemContext.cs
Normal file
139
Assets/Scripts/Minigames/CardSorting/Core/SortableItemContext.cs
Normal file
@@ -0,0 +1,139 @@
|
||||
using AppleHills.Data.CardSystem;
|
||||
using Core.SaveLoad;
|
||||
using UI.CardSystem;
|
||||
using UI.CardSystem.StateMachine;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Minigames.CardSorting.Core
|
||||
{
|
||||
/// <summary>
|
||||
/// Shared context for sortable item states.
|
||||
/// Provides access to common components and data that states need.
|
||||
/// Routes data to appropriate visual component (CardDisplay for cards, GarbageVisual for garbage).
|
||||
/// </summary>
|
||||
public class SortableItemContext : MonoBehaviour
|
||||
{
|
||||
[Header("Visual Components (one or the other)")]
|
||||
[SerializeField] private CardDisplay cardDisplay; // For cards
|
||||
[SerializeField] private GarbageVisual garbageVisual; // For garbage
|
||||
|
||||
[Header("Shared Components")]
|
||||
[SerializeField] private CardAnimator animator;
|
||||
[SerializeField] private Transform visualTransform; // "Visual" GameObject
|
||||
|
||||
private AppleMachine stateMachine;
|
||||
|
||||
// Public accessors
|
||||
public CardDisplay CardDisplay => cardDisplay;
|
||||
public GarbageVisual GarbageVisual => garbageVisual;
|
||||
public CardAnimator Animator => animator;
|
||||
public Transform VisualTransform => visualTransform;
|
||||
public AppleMachine StateMachine => stateMachine;
|
||||
public Transform RootTransform => transform;
|
||||
|
||||
// Conveyor state
|
||||
public bool IsOnConveyor { get; set; } = true;
|
||||
public float ConveyorSpeed { get; set; } = 1f;
|
||||
|
||||
// Original transform data (captured on spawn for drag animations)
|
||||
public Vector3 OriginalScale { get; private set; }
|
||||
public Vector3 OriginalPosition { get; private set; }
|
||||
public Quaternion OriginalRotation { get; private set; }
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
// Auto-find components if not assigned
|
||||
if (visualTransform == null)
|
||||
{
|
||||
visualTransform = transform.Find("Visual");
|
||||
if (visualTransform == null)
|
||||
{
|
||||
Debug.LogWarning($"[SortableItemContext] 'Visual' child GameObject not found on {name}");
|
||||
}
|
||||
}
|
||||
|
||||
if (animator == null)
|
||||
{
|
||||
// CardAnimator should be on root GameObject (animates root transform with Canvas scale)
|
||||
animator = GetComponent<CardAnimator>();
|
||||
|
||||
// Fallback: check Visual child (legacy setup)
|
||||
if (animator == null && visualTransform != null)
|
||||
{
|
||||
animator = visualTransform.GetComponent<CardAnimator>();
|
||||
}
|
||||
}
|
||||
|
||||
if (cardDisplay == null && visualTransform != null)
|
||||
{
|
||||
cardDisplay = visualTransform.GetComponentInChildren<CardDisplay>();
|
||||
}
|
||||
|
||||
if (garbageVisual == null && visualTransform != null)
|
||||
{
|
||||
garbageVisual = visualTransform.GetComponentInChildren<GarbageVisual>();
|
||||
}
|
||||
|
||||
stateMachine = GetComponentInChildren<AppleMachine>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Setup as card item - CardDisplay handles all rendering.
|
||||
/// </summary>
|
||||
public void SetupAsCard(CardData cardData)
|
||||
{
|
||||
// Capture original root transform for drag animations
|
||||
// This preserves the tiny world-space Canvas scale (e.g., 0.05)
|
||||
var currentScale = transform.localScale;
|
||||
if (currentScale.x < 0.01f && currentScale.y < 0.01f && currentScale.z < 0.01f)
|
||||
{
|
||||
OriginalScale = Vector3.one; // Fallback if scale is ~0
|
||||
}
|
||||
else
|
||||
{
|
||||
OriginalScale = currentScale;
|
||||
}
|
||||
OriginalPosition = transform.localPosition;
|
||||
OriginalRotation = transform.localRotation;
|
||||
|
||||
if (cardDisplay != null)
|
||||
{
|
||||
cardDisplay.SetupCard(cardData);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError($"[SortableItemContext] CardDisplay not found on {name}");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Setup as garbage item - simple sprite display.
|
||||
/// </summary>
|
||||
public void SetupAsGarbage(Sprite sprite)
|
||||
{
|
||||
// Capture original root transform for drag animations
|
||||
// This preserves the tiny world-space Canvas scale (e.g., 0.05)
|
||||
var currentScale = transform.localScale;
|
||||
if (currentScale.x < 0.01f && currentScale.y < 0.01f && currentScale.z < 0.01f)
|
||||
{
|
||||
OriginalScale = Vector3.one; // Fallback if scale is ~0
|
||||
}
|
||||
else
|
||||
{
|
||||
OriginalScale = currentScale;
|
||||
}
|
||||
OriginalPosition = transform.localPosition;
|
||||
OriginalRotation = transform.localRotation;
|
||||
|
||||
if (garbageVisual != null)
|
||||
{
|
||||
garbageVisual.UpdateDisplay(sprite);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError($"[SortableItemContext] GarbageVisual not found on {name}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9a9c60767eef4a3090d8bf70ee87340f
|
||||
timeCreated: 1763461839
|
||||
40
Assets/Scripts/Minigames/CardSorting/Core/SortingBox.cs
Normal file
40
Assets/Scripts/Minigames/CardSorting/Core/SortingBox.cs
Normal file
@@ -0,0 +1,40 @@
|
||||
using Minigames.CardSorting.Data;
|
||||
using UI.DragAndDrop.Core;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Minigames.CardSorting.Core
|
||||
{
|
||||
/// <summary>
|
||||
/// Drop target for sortable items.
|
||||
/// Validates if item belongs in this box.
|
||||
/// </summary>
|
||||
public class SortingBox : DraggableSlot
|
||||
{
|
||||
[Header("Box Configuration")]
|
||||
[SerializeField] private BoxType boxType;
|
||||
|
||||
public BoxType BoxType => boxType;
|
||||
|
||||
/// <summary>
|
||||
/// Check if item belongs in this box.
|
||||
/// </summary>
|
||||
public bool ValidateItem(SortableItem item)
|
||||
{
|
||||
if (item == null) return false;
|
||||
|
||||
BoxType correctBox = item.CorrectBox;
|
||||
return correctBox == boxType;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check if this slot can accept a specific draggable type.
|
||||
/// SortingBox accepts all SortableItems (validation happens on drop).
|
||||
/// </summary>
|
||||
public new bool CanAccept(DraggableObject draggable)
|
||||
{
|
||||
// Accept all sortable items (validation happens on drop)
|
||||
return draggable is SortableItem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a25b1c9a82b540c8ac0d6c016849f561
|
||||
timeCreated: 1763461875
|
||||
341
Assets/Scripts/Minigames/CardSorting/Core/SortingGameManager.cs
Normal file
341
Assets/Scripts/Minigames/CardSorting/Core/SortingGameManager.cs
Normal file
@@ -0,0 +1,341 @@
|
||||
using System;
|
||||
using Core;
|
||||
using Core.Lifecycle;
|
||||
using Core.Settings;
|
||||
using Data.CardSystem;
|
||||
using Input;
|
||||
using Minigames.CardSorting.Controllers;
|
||||
using Minigames.CardSorting.Core;
|
||||
using Unity.Cinemachine;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Minigames.CardSorting.Core
|
||||
{
|
||||
/// <summary>
|
||||
/// Main manager for card sorting minigame.
|
||||
/// Orchestrates game loop, timer, controllers, and integration with CardSystemManager.
|
||||
/// Parallel to DivingGameManager.
|
||||
/// </summary>
|
||||
public class SortingGameManager : ManagedBehaviour
|
||||
{
|
||||
[Header("Scene References")]
|
||||
[SerializeField] private Transform conveyorSpawnPoint;
|
||||
[SerializeField] private Transform conveyorEndPoint; // Visual end - items scored as missed here
|
||||
[SerializeField] private Transform conveyorDespawnPoint; // Off-screen - items destroyed here
|
||||
[SerializeField] private GameObject sortableCardPrefab;
|
||||
[SerializeField] private GameObject sortableGarbagePrefab;
|
||||
[SerializeField] private SortingBox[] sortingBoxes;
|
||||
|
||||
[Header("Effects")]
|
||||
[SerializeField] private CinemachineImpulseSource impulseSource; // Screen shake on incorrect sort
|
||||
|
||||
// Settings
|
||||
private ICardSortingSettings _settings;
|
||||
|
||||
// Controllers (lazy init)
|
||||
private ConveyorBeltController _conveyorController;
|
||||
private ConveyorBeltController Conveyor => _conveyorController ??= new ConveyorBeltController(
|
||||
conveyorSpawnPoint,
|
||||
conveyorEndPoint,
|
||||
conveyorDespawnPoint,
|
||||
sortableCardPrefab,
|
||||
sortableGarbagePrefab,
|
||||
_settings
|
||||
);
|
||||
|
||||
private SortingScoreController _scoreController;
|
||||
private SortingScoreController Score => _scoreController ??= new SortingScoreController(_settings);
|
||||
|
||||
// Game state
|
||||
private float gameTimer;
|
||||
private bool isGameActive;
|
||||
private bool isGameOver;
|
||||
|
||||
// Singleton
|
||||
private static SortingGameManager _instance;
|
||||
public static SortingGameManager Instance => _instance;
|
||||
|
||||
// Events
|
||||
public event Action OnGameStarted;
|
||||
public event Action OnGameEnded;
|
||||
public event Action<SortableItem> OnItemSpawned;
|
||||
public event Action<SortableItem, SortingBox, bool> OnItemSortedEvent;
|
||||
public event Action<float> OnTimerUpdated; // Remaining time
|
||||
|
||||
// Global effect events
|
||||
public event Action<SortableItem> OnItemSortedCorrectly;
|
||||
public event Action<SortableItem> OnItemSortedIncorrectly;
|
||||
public event Action<SortableItem> OnItemFellOffBelt;
|
||||
|
||||
internal override void OnManagedAwake()
|
||||
{
|
||||
_instance = this;
|
||||
|
||||
// Load settings
|
||||
_settings = GameManager.GetSettingsObject<ICardSortingSettings>();
|
||||
|
||||
if (_settings == null)
|
||||
{
|
||||
Debug.LogError("[SortingGameManager] Failed to load CardSortingSettings!");
|
||||
return;
|
||||
}
|
||||
|
||||
Logging.Debug("[SortingGameManager] Initialized with settings");
|
||||
}
|
||||
|
||||
internal override void OnManagedStart()
|
||||
{
|
||||
// Subscribe to score events
|
||||
Score.OnScoreChanged += OnScoreChanged;
|
||||
Score.OnCorrectSort += OnCorrectSort;
|
||||
Score.OnIncorrectSort += OnIncorrectSort;
|
||||
|
||||
// Subscribe to conveyor events
|
||||
Conveyor.OnItemSpawned += OnConveyorItemSpawned;
|
||||
Conveyor.OnItemFellOffBelt += OnConveyorItemFellOff;
|
||||
Conveyor.OnItemDespawned += OnConveyorItemDespawned;
|
||||
Conveyor.OnItemSorted += OnConveyorItemSorted;
|
||||
Conveyor.OnItemDroppedOnFloor += OnConveyorItemDroppedOnFloor;
|
||||
|
||||
// Start game automatically or wait for trigger
|
||||
// For now, auto-start
|
||||
StartGame();
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
if (_scoreController != null)
|
||||
{
|
||||
Score.OnScoreChanged -= OnScoreChanged;
|
||||
Score.OnCorrectSort -= OnCorrectSort;
|
||||
Score.OnIncorrectSort -= OnIncorrectSort;
|
||||
}
|
||||
|
||||
if (_conveyorController != null)
|
||||
{
|
||||
Conveyor.OnItemSpawned -= OnConveyorItemSpawned;
|
||||
Conveyor.OnItemFellOffBelt -= OnConveyorItemFellOff;
|
||||
Conveyor.OnItemDespawned -= OnConveyorItemDespawned;
|
||||
Conveyor.OnItemSorted -= OnConveyorItemSorted;
|
||||
Conveyor.OnItemDroppedOnFloor -= OnConveyorItemDroppedOnFloor;
|
||||
}
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (!isGameActive || isGameOver) return;
|
||||
|
||||
gameTimer += Time.deltaTime;
|
||||
float remainingTime = _settings.GameDuration - gameTimer;
|
||||
float gameProgress = gameTimer / _settings.GameDuration;
|
||||
|
||||
// Update timer
|
||||
OnTimerUpdated?.Invoke(remainingTime);
|
||||
|
||||
// Check game over
|
||||
if (remainingTime <= 0f)
|
||||
{
|
||||
EndGame();
|
||||
return;
|
||||
}
|
||||
|
||||
// Update conveyor (handles spawning, movement, and despawning internally)
|
||||
Conveyor.Update(Time.deltaTime, gameProgress);
|
||||
}
|
||||
|
||||
public void StartGame()
|
||||
{
|
||||
isGameActive = true;
|
||||
isGameOver = false;
|
||||
gameTimer = 0f;
|
||||
|
||||
// Reset score
|
||||
Score.Reset();
|
||||
|
||||
OnGameStarted?.Invoke();
|
||||
|
||||
// Set input mode to game
|
||||
if (InputManager.Instance != null)
|
||||
{
|
||||
InputManager.Instance.SetInputMode(InputMode.GameAndUI);
|
||||
}
|
||||
|
||||
Logging.Debug("[SortingGameManager] Game started!");
|
||||
}
|
||||
|
||||
public void EndGame()
|
||||
{
|
||||
if (isGameOver) return;
|
||||
|
||||
isGameOver = true;
|
||||
isGameActive = false;
|
||||
|
||||
// Calculate rewards
|
||||
int boosterReward = Score.CalculateBoosterReward();
|
||||
|
||||
Logging.Debug($"[SortingGameManager] Game ended! Score: {Score.TotalScore}, Boosters: {boosterReward}");
|
||||
|
||||
// Grant boosters
|
||||
if (CardSystemManager.Instance != null)
|
||||
{
|
||||
CardSystemManager.Instance.AddBoosterPack(boosterReward);
|
||||
}
|
||||
|
||||
OnGameEnded?.Invoke();
|
||||
|
||||
// Show results screen (handled by UI controller)
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called when conveyor spawns a new item.
|
||||
/// </summary>
|
||||
private void OnConveyorItemSpawned(SortableItem item)
|
||||
{
|
||||
// Forward to public event for UI/other systems
|
||||
OnItemSpawned?.Invoke(item);
|
||||
|
||||
Logging.Debug($"[SortingGameManager] Item spawned: {item.CardData?.Name ?? item.GarbageItem?.DisplayName}");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called when item reaches visual end of belt (via conveyor event).
|
||||
/// Item continues moving off-screen until despawn point.
|
||||
/// Scoring rules:
|
||||
/// - Trash fell off: Negative score (penalty)
|
||||
/// - Card fell off: Neutral (no score change)
|
||||
/// </summary>
|
||||
private void OnConveyorItemFellOff(SortableItem item)
|
||||
{
|
||||
// Only penalize TRASH items that fall off
|
||||
// Cards falling off are neutral (no score change)
|
||||
if (item.IsGarbage)
|
||||
{
|
||||
Score.RecordMissedItem();
|
||||
Logging.Debug($"[SortingGameManager] Trash fell off belt! {item.GarbageItem?.DisplayName} - PENALTY");
|
||||
}
|
||||
else
|
||||
{
|
||||
Logging.Debug($"[SortingGameManager] Card fell off belt: {item.CardData?.Name} - no penalty");
|
||||
}
|
||||
|
||||
// Fire global fell off belt event for effects
|
||||
OnItemFellOffBelt?.Invoke(item);
|
||||
|
||||
// Visual feedback could go here (e.g., "MISS!" popup)
|
||||
// Item will continue moving and be destroyed at despawn point
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called when item is dropped on floor (via conveyor event).
|
||||
/// Scoring rules:
|
||||
/// - Trash dropped on floor: Negative score (penalty)
|
||||
/// - Card dropped on floor: Neutral (no score change)
|
||||
/// </summary>
|
||||
private void OnConveyorItemDroppedOnFloor(SortableItem item)
|
||||
{
|
||||
// Only penalize TRASH items dropped on floor
|
||||
// Cards dropped on floor are neutral (no score change)
|
||||
if (item.IsGarbage)
|
||||
{
|
||||
Score.RecordIncorrectSort();
|
||||
Logging.Debug($"[SortingGameManager] Trash dropped on floor! {item.GarbageItem?.DisplayName} - PENALTY");
|
||||
|
||||
// Trigger screen shake for trash dropped on floor
|
||||
if (impulseSource != null)
|
||||
{
|
||||
impulseSource.GenerateImpulse();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Logging.Debug($"[SortingGameManager] Card dropped on floor: {item.CardData?.Name} - no penalty");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called when item reaches despawn point (via conveyor event).
|
||||
/// Actually destroys the item.
|
||||
/// </summary>
|
||||
private void OnConveyorItemDespawned(SortableItem item)
|
||||
{
|
||||
Logging.Debug($"[SortingGameManager] Item despawned: {item.CardData?.Name ?? item.GarbageItem?.DisplayName}");
|
||||
|
||||
// Destroy the item
|
||||
if (item != null)
|
||||
Destroy(item.gameObject);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called when conveyor confirms item was sorted (via event).
|
||||
/// Handles scoring only - the state (SortedCorrectlyState/SortedIncorrectlyState) handles animation and destruction.
|
||||
/// Scoring rules:
|
||||
/// - Correct sort: Positive score (cards or trash in correct box)
|
||||
/// - Incorrect trash: Negative score (trash in wrong box)
|
||||
/// - Incorrect card: Neutral (no score change)
|
||||
/// </summary>
|
||||
private void OnConveyorItemSorted(SortableItem item, SortingBox box, bool correct)
|
||||
{
|
||||
if (correct)
|
||||
{
|
||||
Score.RecordCorrectSort();
|
||||
Logging.Debug($"[SortingGameManager] Correct sort! {item.CardData?.Name ?? item.GarbageItem?.DisplayName}");
|
||||
|
||||
// Fire global correct sort event for effects
|
||||
OnItemSortedCorrectly?.Invoke(item);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Only penalize incorrect sorting for TRASH items
|
||||
// Cards incorrectly sorted are neutral (no score change)
|
||||
if (item.IsGarbage)
|
||||
{
|
||||
Score.RecordIncorrectSort();
|
||||
Logging.Debug($"[SortingGameManager] Incorrect trash sort! {item.GarbageItem?.DisplayName} - PENALTY");
|
||||
|
||||
// Fire global incorrect sort event for effects
|
||||
OnItemSortedIncorrectly?.Invoke(item);
|
||||
|
||||
// Trigger screen shake
|
||||
if (impulseSource != null)
|
||||
{
|
||||
impulseSource.GenerateImpulse();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Logging.Debug($"[SortingGameManager] Card sorted incorrectly: {item.CardData?.Name} - no penalty");
|
||||
}
|
||||
}
|
||||
|
||||
OnItemSortedEvent?.Invoke(item, box, correct);
|
||||
|
||||
// State handles animation and destruction - we just update score/UI here
|
||||
}
|
||||
|
||||
private void OnScoreChanged(int newScore)
|
||||
{
|
||||
// UI will subscribe to this event
|
||||
Logging.Debug($"[SortingGameManager] Score changed: {newScore}");
|
||||
}
|
||||
|
||||
private void OnCorrectSort(int totalCorrect)
|
||||
{
|
||||
// Could play effects, update combo, etc.
|
||||
}
|
||||
|
||||
private void OnIncorrectSort(int totalIncorrect)
|
||||
{
|
||||
// Could play error effects
|
||||
}
|
||||
|
||||
// Public accessors for UI
|
||||
public int CurrentScore => Score?.TotalScore ?? 0;
|
||||
public int CorrectSorts => Score?.CorrectSorts ?? 0;
|
||||
public int IncorrectSorts => Score?.IncorrectSorts ?? 0;
|
||||
public int MissedItems => Score?.MissedItems ?? 0;
|
||||
public float Accuracy => Score?.Accuracy ?? 0f;
|
||||
public float RemainingTime => Mathf.Max(0f, _settings.GameDuration - gameTimer);
|
||||
public bool IsGameActive => isGameActive && !isGameOver;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 20acac8b97ca4d6397612679b3bbde50
|
||||
timeCreated: 1763470372
|
||||
3
Assets/Scripts/Minigames/CardSorting/Data.meta
Normal file
3
Assets/Scripts/Minigames/CardSorting/Data.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a450e2687ce14a66b1495e1f2db7d403
|
||||
timeCreated: 1763461758
|
||||
14
Assets/Scripts/Minigames/CardSorting/Data/Enums.cs
Normal file
14
Assets/Scripts/Minigames/CardSorting/Data/Enums.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
namespace Minigames.CardSorting.Data
|
||||
{
|
||||
/// <summary>
|
||||
/// Types of sorting boxes in the minigame.
|
||||
/// </summary>
|
||||
public enum BoxType
|
||||
{
|
||||
Normal, // Copper-rimmed box for Normal rarity cards
|
||||
Rare, // Silver-rimmed box for Rare rarity cards
|
||||
Legend, // Gold-rimmed box for Legendary rarity cards
|
||||
Trash // Trash can for garbage items
|
||||
}
|
||||
}
|
||||
|
||||
3
Assets/Scripts/Minigames/CardSorting/Data/Enums.cs.meta
Normal file
3
Assets/Scripts/Minigames/CardSorting/Data/Enums.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7e238b51f7164867b519bf139fe22c01
|
||||
timeCreated: 1763461758
|
||||
@@ -0,0 +1,38 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Minigames.CardSorting.Data
|
||||
{
|
||||
/// <summary>
|
||||
/// Definition for garbage items (banana peels, cans, receipts, etc.).
|
||||
/// Cards use existing CardDefinition from CardSystemManager.
|
||||
/// </summary>
|
||||
[CreateAssetMenu(fileName = "GarbageItem", menuName = "Minigames/CardSorting/GarbageItem", order = 0)]
|
||||
public class GarbageItemDefinition : ScriptableObject
|
||||
{
|
||||
[Tooltip("Unique identifier for this garbage item")]
|
||||
[SerializeField] private string itemId;
|
||||
|
||||
[Tooltip("Display name for debugging")]
|
||||
[SerializeField] private string displayName;
|
||||
|
||||
[Tooltip("Sprite to display for this garbage item")]
|
||||
[SerializeField] private Sprite sprite;
|
||||
|
||||
// Public accessors
|
||||
public string ItemId => itemId;
|
||||
public string DisplayName => displayName;
|
||||
public Sprite Sprite => sprite;
|
||||
|
||||
#if UNITY_EDITOR
|
||||
private void OnValidate()
|
||||
{
|
||||
// Auto-generate itemId from asset name if empty
|
||||
if (string.IsNullOrEmpty(itemId))
|
||||
{
|
||||
itemId = name;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2e69a2167710437798b1980126d5a4f6
|
||||
timeCreated: 1763461765
|
||||
3
Assets/Scripts/Minigames/CardSorting/StateMachine.meta
Normal file
3
Assets/Scripts/Minigames/CardSorting/StateMachine.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0197a7c7c3174a5fbf1ddd5b1445f24c
|
||||
timeCreated: 1763461845
|
||||
@@ -0,0 +1,21 @@
|
||||
using Core.SaveLoad;
|
||||
|
||||
namespace Minigames.CardSorting.StateMachine
|
||||
{
|
||||
/// <summary>
|
||||
/// State machine for sortable items that opts out of save system.
|
||||
/// Sorting minigame is session-only and doesn't persist between loads.
|
||||
/// Follows CardStateMachine pattern.
|
||||
/// </summary>
|
||||
public class SortingStateMachine : AppleMachine
|
||||
{
|
||||
/// <summary>
|
||||
/// Opt out of save/load system - sortable items are transient minigame objects.
|
||||
/// </summary>
|
||||
public override bool ShouldParticipateInSave()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1b459f40574b45839aa32d5730627ca6
|
||||
timeCreated: 1763461845
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 24973c8bb25d493885224ac6f099492d
|
||||
timeCreated: 1763469762
|
||||
@@ -0,0 +1,49 @@
|
||||
using Core;
|
||||
using Core.SaveLoad;
|
||||
using Minigames.CardSorting.Core;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Minigames.CardSorting.StateMachine.States
|
||||
{
|
||||
/// <summary>
|
||||
/// Item is being dragged by the player.
|
||||
/// Provides visual feedback (scale up).
|
||||
/// Transitions to SortedState when dropped in box, or back to OnConveyorState if dropped elsewhere.
|
||||
/// </summary>
|
||||
public class BeingDraggedState : AppleState
|
||||
{
|
||||
private SortableItemContext _context;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
_context = GetComponentInParent<SortableItemContext>();
|
||||
}
|
||||
|
||||
public override void OnEnterState()
|
||||
{
|
||||
if (_context == null) return;
|
||||
|
||||
_context.IsOnConveyor = false;
|
||||
|
||||
// Visual feedback: scale up root transform by 10%
|
||||
// Use OriginalScale from context (captured at spawn, preserves world-space Canvas scale)
|
||||
if (_context.RootTransform != null && _context.Animator != null)
|
||||
{
|
||||
Vector3 targetScale = _context.OriginalScale * 1.1f;
|
||||
_context.Animator.AnimateScale(targetScale, 0.2f);
|
||||
}
|
||||
|
||||
Logging.Debug("[BeingDraggedState] Item being dragged, scaled up for feedback");
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
// Restore original root transform scale (e.g., 0.05 for world-space Canvas)
|
||||
if (_context != null && _context.Animator != null)
|
||||
{
|
||||
_context.Animator.AnimateScale(_context.OriginalScale, 0.2f);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 015c0740240748c8901c9304490cb80d
|
||||
timeCreated: 1763469770
|
||||
@@ -0,0 +1,86 @@
|
||||
using Core;
|
||||
using Core.SaveLoad;
|
||||
using Minigames.CardSorting.Core;
|
||||
|
||||
namespace Minigames.CardSorting.StateMachine.States
|
||||
{
|
||||
/// <summary>
|
||||
/// Item was dropped outside any bin (on the floor).
|
||||
/// Plays "disappear" animation then destroys the item.
|
||||
/// </summary>
|
||||
public class DroppedOnFloorState : AppleState
|
||||
{
|
||||
private SortableItemContext _context;
|
||||
private SortableItem _item;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
_context = GetComponentInParent<SortableItemContext>();
|
||||
_item = GetComponentInParent<SortableItem>();
|
||||
}
|
||||
|
||||
public override void OnEnterState()
|
||||
{
|
||||
if (_context == null) return;
|
||||
|
||||
_context.IsOnConveyor = false;
|
||||
|
||||
Logging.Debug("[DroppedOnFloorState] Item dropped on floor, blinking red then disappearing");
|
||||
|
||||
// Blink red briefly, then play disappear animation
|
||||
StartBlinkThenDisappear();
|
||||
}
|
||||
|
||||
private void StartBlinkThenDisappear()
|
||||
{
|
||||
if (_context.Animator == null || _item == null) return;
|
||||
|
||||
// Get the image to blink
|
||||
UnityEngine.UI.Image imageToBlink = null;
|
||||
|
||||
if (_context.CardDisplay != null)
|
||||
{
|
||||
imageToBlink = _context.CardDisplay.GetComponent<UnityEngine.UI.Image>();
|
||||
}
|
||||
else if (_context.GarbageVisual != null)
|
||||
{
|
||||
imageToBlink = _context.GarbageVisual.GetComponent<UnityEngine.UI.Image>();
|
||||
}
|
||||
|
||||
if (imageToBlink != null)
|
||||
{
|
||||
// Blink red briefly (2-3 times), then stop and disappear
|
||||
_context.Animator.BlinkRed(imageToBlink, 0.15f); // Fast blink
|
||||
|
||||
// After brief delay, stop blinking and play disappear animation
|
||||
_context.Animator.AnimateScale(_context.RootTransform.localScale, 0.5f, () =>
|
||||
{
|
||||
_context.Animator.StopBlinking();
|
||||
PlayDisappearAnimation();
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
// No image found, just disappear directly
|
||||
PlayDisappearAnimation();
|
||||
}
|
||||
}
|
||||
|
||||
private void PlayDisappearAnimation()
|
||||
{
|
||||
if (_context.Animator == null || _item == null) return;
|
||||
|
||||
// Tween scale down to 0 (disappear)
|
||||
// When complete, destroy the item
|
||||
_context.Animator.PopOut(0.4f, () =>
|
||||
{
|
||||
if (_item != null)
|
||||
{
|
||||
Logging.Debug("[DroppedOnFloorState] Animation complete, destroying item");
|
||||
Destroy(_item.gameObject);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b384e4988bf549f2b6e70d1ff0fa4bcd
|
||||
timeCreated: 1763557103
|
||||
@@ -0,0 +1,88 @@
|
||||
using Core;
|
||||
using Core.SaveLoad;
|
||||
using Minigames.CardSorting.Core;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Minigames.CardSorting.StateMachine.States
|
||||
{
|
||||
/// <summary>
|
||||
/// Item reached the visual end of conveyor without being sorted.
|
||||
/// Becomes non-clickable and blinks red until despawn point.
|
||||
/// </summary>
|
||||
public class FellOffConveyorState : AppleState
|
||||
{
|
||||
private SortableItemContext _context;
|
||||
private SortableItem _item;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
_context = GetComponentInParent<SortableItemContext>();
|
||||
_item = GetComponentInParent<SortableItem>();
|
||||
}
|
||||
|
||||
public override void OnEnterState()
|
||||
{
|
||||
if (_context == null) return;
|
||||
|
||||
// Keep IsOnConveyor = true so item continues moving to despawn point
|
||||
// Item is no longer sortable but must continue moving off-screen
|
||||
_context.IsOnConveyor = true;
|
||||
|
||||
Logging.Debug("[FellOffConveyorState] Item fell off conveyor, blinking red until despawn");
|
||||
|
||||
// Disable dragging - item can no longer be picked up
|
||||
if (_item != null)
|
||||
{
|
||||
_item.SetDraggingEnabled(false);
|
||||
}
|
||||
|
||||
// Start blinking red animation
|
||||
StartBlinkingRed();
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (_context == null || !_context.IsOnConveyor) return;
|
||||
|
||||
// Continue moving item toward despawn point (same logic as OnConveyorState)
|
||||
Vector3 movement = Vector3.right * _context.ConveyorSpeed * Time.deltaTime;
|
||||
_context.RootTransform.position += movement;
|
||||
}
|
||||
|
||||
private void StartBlinkingRed()
|
||||
{
|
||||
if (_context.Animator == null) return;
|
||||
|
||||
// Get the image to tint (CardDisplay or GarbageVisual)
|
||||
UnityEngine.UI.Image imageToBlink = null;
|
||||
|
||||
if (_context.CardDisplay != null)
|
||||
{
|
||||
imageToBlink =
|
||||
_context.CardDisplay.GetComponent<UnityEngine.UI.Image>()
|
||||
?? _context.CardDisplay.GetComponentInChildren<UnityEngine.UI.Image>();
|
||||
}
|
||||
else if (_context.GarbageVisual != null)
|
||||
{
|
||||
imageToBlink =
|
||||
_context.GarbageVisual.GetComponent<UnityEngine.UI.Image>()
|
||||
?? _context.GarbageVisual.GetComponentInChildren<UnityEngine.UI.Image>();
|
||||
}
|
||||
|
||||
if (imageToBlink != null)
|
||||
{
|
||||
_context.Animator.BlinkRed(imageToBlink);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
// Stop blinking when state exits (item despawned)
|
||||
if (_context?.Animator != null)
|
||||
{
|
||||
_context.Animator.StopBlinking();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 619a38624dcf48b19913bd4e1ac28625
|
||||
timeCreated: 1763557115
|
||||
@@ -0,0 +1,62 @@
|
||||
using Core;
|
||||
using Core.SaveLoad;
|
||||
using Minigames.CardSorting.Core;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Minigames.CardSorting.StateMachine.States
|
||||
{
|
||||
/// <summary>
|
||||
/// Item is moving along the conveyor belt.
|
||||
/// Transitions to BeingDraggedState when player drags the item.
|
||||
/// </summary>
|
||||
public class OnConveyorState : AppleState, ISortableItemDragHandler
|
||||
{
|
||||
private SortableItemContext _context;
|
||||
private SortableItem _item;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
_context = GetComponentInParent<SortableItemContext>();
|
||||
_item = GetComponentInParent<SortableItem>();
|
||||
}
|
||||
|
||||
public override void OnEnterState()
|
||||
{
|
||||
if (_context == null) return;
|
||||
|
||||
_context.IsOnConveyor = true;
|
||||
|
||||
Logging.Debug($"[OnConveyorState] Item entered conveyor state");
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
if (_context == null) return;
|
||||
|
||||
_context.IsOnConveyor = false;
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (_context == null || !_context.IsOnConveyor) return;
|
||||
|
||||
// Move item along conveyor (right direction)
|
||||
Vector3 movement = Vector3.right * _context.ConveyorSpeed * Time.deltaTime;
|
||||
_context.RootTransform.position += movement;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handle drag start - transition to BeingDraggedState.
|
||||
/// </summary>
|
||||
public bool OnDragStarted(SortableItemContext context)
|
||||
{
|
||||
Logging.Debug("[OnConveyorState] Drag started, transitioning to BeingDraggedState");
|
||||
|
||||
// Transition to dragging state
|
||||
_item?.ChangeState("BeingDraggedState");
|
||||
|
||||
return true; // We handled it
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 17d2ba6f5aec4b698247b082734cad8f
|
||||
timeCreated: 1763469762
|
||||
@@ -0,0 +1,73 @@
|
||||
using Core;
|
||||
using Core.SaveLoad;
|
||||
using Minigames.CardSorting.Core;
|
||||
|
||||
namespace Minigames.CardSorting.StateMachine.States
|
||||
{
|
||||
/// <summary>
|
||||
/// Item has been correctly sorted into the right box.
|
||||
/// Plays "fall into bin" animation then destroys the card.
|
||||
/// </summary>
|
||||
public class SortedCorrectlyState : AppleState
|
||||
{
|
||||
private SortableItemContext _context;
|
||||
private SortableItem _item;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
_context = GetComponentInParent<SortableItemContext>();
|
||||
_item = GetComponentInParent<SortableItem>();
|
||||
}
|
||||
|
||||
public override void OnEnterState()
|
||||
{
|
||||
if (_context == null) return;
|
||||
|
||||
_context.IsOnConveyor = false;
|
||||
|
||||
Logging.Debug("[SortedCorrectlyState] Item correctly sorted, tweening to box then falling in");
|
||||
|
||||
// First tween to box center, then play fall animation
|
||||
TweenToBoxThenFall();
|
||||
}
|
||||
|
||||
private void TweenToBoxThenFall()
|
||||
{
|
||||
if (_context.Animator == null || _item == null) return;
|
||||
|
||||
// Get the box position (if available from CurrentSlot)
|
||||
var box = _item.CurrentSlot as SortingBox;
|
||||
if (box != null)
|
||||
{
|
||||
// Tween position to box center
|
||||
_context.Animator.AnimateLocalPosition(box.transform.position, 0.2f, () =>
|
||||
{
|
||||
// After reaching box, play fall animation
|
||||
PlayFallIntoBinAnimation();
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
// No box found, just play fall animation
|
||||
PlayFallIntoBinAnimation();
|
||||
}
|
||||
}
|
||||
|
||||
private void PlayFallIntoBinAnimation()
|
||||
{
|
||||
if (_context.Animator == null || _item == null) return;
|
||||
|
||||
// Tween scale down to 0 (looks like falling into bin)
|
||||
// When complete, destroy the card
|
||||
_context.Animator.PopOut(0.4f, () =>
|
||||
{
|
||||
if (_item != null)
|
||||
{
|
||||
Logging.Debug("[SortedCorrectlyState] Animation complete, destroying item");
|
||||
Destroy(_item.gameObject);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f3ed2e6fb0814273926c33a178bdf42b
|
||||
timeCreated: 1763555977
|
||||
@@ -0,0 +1,109 @@
|
||||
using Core;
|
||||
using Core.SaveLoad;
|
||||
using Minigames.CardSorting.Core;
|
||||
|
||||
namespace Minigames.CardSorting.StateMachine.States
|
||||
{
|
||||
/// <summary>
|
||||
/// Item has been incorrectly sorted into the wrong box.
|
||||
/// Plays "fall into bin" animation then destroys the card.
|
||||
/// Same animation as correct sort, but different state for tracking/events.
|
||||
/// </summary>
|
||||
public class SortedIncorrectlyState : AppleState
|
||||
{
|
||||
private SortableItemContext _context;
|
||||
private SortableItem _item;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
_context = GetComponentInParent<SortableItemContext>();
|
||||
_item = GetComponentInParent<SortableItem>();
|
||||
}
|
||||
|
||||
public override void OnEnterState()
|
||||
{
|
||||
if (_context == null) return;
|
||||
|
||||
_context.IsOnConveyor = false;
|
||||
|
||||
Logging.Debug("[SortedIncorrectlyState] Item incorrectly sorted, blinking red then tweening to box");
|
||||
|
||||
// Start blinking red briefly, then tween to box
|
||||
StartBlinkThenTween();
|
||||
}
|
||||
|
||||
private void StartBlinkThenTween()
|
||||
{
|
||||
if (_context.Animator == null || _item == null) return;
|
||||
|
||||
// Get the image to blink
|
||||
UnityEngine.UI.Image imageToBlink = null;
|
||||
|
||||
if (_context.CardDisplay != null)
|
||||
{
|
||||
imageToBlink = _context.CardDisplay.GetComponent<UnityEngine.UI.Image>();
|
||||
}
|
||||
else if (_context.GarbageVisual != null)
|
||||
{
|
||||
imageToBlink = _context.GarbageVisual.GetComponent<UnityEngine.UI.Image>();
|
||||
}
|
||||
|
||||
if (imageToBlink != null)
|
||||
{
|
||||
// Blink red briefly (2-3 times), then stop and continue with tween
|
||||
_context.Animator.BlinkRed(imageToBlink, 0.15f); // Fast blink
|
||||
|
||||
// After brief delay, stop blinking and tween to box
|
||||
_context.Animator.AnimateScale(_context.RootTransform.localScale, 0.5f, () =>
|
||||
{
|
||||
_context.Animator.StopBlinking();
|
||||
TweenToBoxThenFall();
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
// No image found, just tween directly
|
||||
TweenToBoxThenFall();
|
||||
}
|
||||
}
|
||||
|
||||
private void TweenToBoxThenFall()
|
||||
{
|
||||
if (_context.Animator == null || _item == null) return;
|
||||
|
||||
// Get the box position (if available from CurrentSlot)
|
||||
var box = _item.CurrentSlot as SortingBox;
|
||||
if (box != null)
|
||||
{
|
||||
// Tween position to box center
|
||||
_context.Animator.AnimateLocalPosition(box.transform.position, 0.2f, () =>
|
||||
{
|
||||
// After reaching box, play fall animation
|
||||
PlayFallIntoBinAnimation();
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
// No box found, just play fall animation
|
||||
PlayFallIntoBinAnimation();
|
||||
}
|
||||
}
|
||||
|
||||
private void PlayFallIntoBinAnimation()
|
||||
{
|
||||
if (_context.Animator == null || _item == null) return;
|
||||
|
||||
// Tween scale down to 0 (looks like falling into bin)
|
||||
// When complete, destroy the card
|
||||
_context.Animator.PopOut(0.4f, () =>
|
||||
{
|
||||
if (_item != null)
|
||||
{
|
||||
Logging.Debug("[SortedIncorrectlyState] Animation complete, destroying item");
|
||||
Destroy(_item.gameObject);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: edef0fb846be4fd99d396ea27dca1e4f
|
||||
timeCreated: 1763555989
|
||||
3
Assets/Scripts/Minigames/CardSorting/UI.meta
Normal file
3
Assets/Scripts/Minigames/CardSorting/UI.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2194dbe8c2c4479f89f7307ce56cac5d
|
||||
timeCreated: 1763470403
|
||||
116
Assets/Scripts/Minigames/CardSorting/UI/SortingGameHUD.cs
Normal file
116
Assets/Scripts/Minigames/CardSorting/UI/SortingGameHUD.cs
Normal file
@@ -0,0 +1,116 @@
|
||||
using Core.Settings;
|
||||
using Minigames.CardSorting.Core;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Minigames.CardSorting.UI
|
||||
{
|
||||
/// <summary>
|
||||
/// HUD display for card sorting minigame.
|
||||
/// Shows timer and score during gameplay.
|
||||
/// </summary>
|
||||
public class SortingGameHUD : MonoBehaviour
|
||||
{
|
||||
[Header("UI Elements")]
|
||||
[SerializeField] private TextMeshProUGUI timerText;
|
||||
[SerializeField] private TextMeshProUGUI scoreText;
|
||||
[SerializeField] private TextMeshProUGUI accuracyText;
|
||||
|
||||
private SortingGameManager gameManager;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
gameManager = SortingGameManager.Instance;
|
||||
|
||||
if (gameManager == null)
|
||||
{
|
||||
Debug.LogError("[SortingGameHUD] SortingGameManager not found!");
|
||||
return;
|
||||
}
|
||||
|
||||
// Subscribe to events
|
||||
gameManager.OnTimerUpdated += UpdateTimer;
|
||||
|
||||
if (gameManager != null)
|
||||
{
|
||||
var scoreController = typeof(SortingGameManager)
|
||||
.GetProperty("Score", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)
|
||||
?.GetValue(gameManager);
|
||||
|
||||
if (scoreController != null)
|
||||
{
|
||||
var scoreChangedEvent = scoreController.GetType().GetEvent("OnScoreChanged");
|
||||
if (scoreChangedEvent != null)
|
||||
{
|
||||
scoreChangedEvent.AddEventHandler(scoreController,
|
||||
new System.Action<int>(UpdateScore));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Initial display
|
||||
UpdateScore(0);
|
||||
UpdateTimer(120f); // Default timer display
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
if (gameManager != null)
|
||||
{
|
||||
gameManager.OnTimerUpdated -= UpdateTimer;
|
||||
}
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
// Update accuracy every frame (could optimize to only update on score change)
|
||||
if (gameManager != null && accuracyText != null)
|
||||
{
|
||||
float accuracy = gameManager.Accuracy;
|
||||
accuracyText.text = $"Accuracy: {accuracy:P0}";
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateTimer(float remainingTime)
|
||||
{
|
||||
if (timerText == null) return;
|
||||
|
||||
int minutes = Mathf.FloorToInt(remainingTime / 60f);
|
||||
int seconds = Mathf.FloorToInt(remainingTime % 60f);
|
||||
|
||||
timerText.text = $"{minutes:00}:{seconds:00}";
|
||||
|
||||
// Change color if time running out
|
||||
if (remainingTime <= 10f)
|
||||
{
|
||||
timerText.color = Color.red;
|
||||
}
|
||||
else if (remainingTime <= 30f)
|
||||
{
|
||||
timerText.color = Color.yellow;
|
||||
}
|
||||
else
|
||||
{
|
||||
timerText.color = Color.white;
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateScore(int newScore)
|
||||
{
|
||||
if (scoreText == null) return;
|
||||
|
||||
scoreText.text = $"Score: {newScore}";
|
||||
|
||||
// Color based on positive/negative
|
||||
if (newScore >= 0)
|
||||
{
|
||||
scoreText.color = Color.white;
|
||||
}
|
||||
else
|
||||
{
|
||||
scoreText.color = new Color(1f, 0.5f, 0.5f); // Light red
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: aa656e03d5384a9eae31fab73b6fe5e2
|
||||
timeCreated: 1763470403
|
||||
126
Assets/Scripts/Minigames/CardSorting/UI/SortingResultsScreen.cs
Normal file
126
Assets/Scripts/Minigames/CardSorting/UI/SortingResultsScreen.cs
Normal file
@@ -0,0 +1,126 @@
|
||||
using Minigames.CardSorting.Core;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Minigames.CardSorting.UI
|
||||
{
|
||||
/// <summary>
|
||||
/// Results screen shown at end of card sorting minigame.
|
||||
/// Displays final score, accuracy, and boosters earned.
|
||||
/// </summary>
|
||||
public class SortingResultsScreen : MonoBehaviour
|
||||
{
|
||||
[Header("UI Elements")]
|
||||
[SerializeField] private TextMeshProUGUI finalScoreText;
|
||||
[SerializeField] private TextMeshProUGUI correctSortsText;
|
||||
[SerializeField] private TextMeshProUGUI incorrectSortsText;
|
||||
[SerializeField] private TextMeshProUGUI missedItemsText;
|
||||
[SerializeField] private TextMeshProUGUI accuracyText;
|
||||
[SerializeField] private TextMeshProUGUI boostersEarnedText;
|
||||
[SerializeField] private Button closeButton;
|
||||
|
||||
[Header("Screen")]
|
||||
[SerializeField] private CanvasGroup canvasGroup;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
// Hide initially
|
||||
if (canvasGroup != null)
|
||||
{
|
||||
canvasGroup.alpha = 0f;
|
||||
canvasGroup.interactable = false;
|
||||
canvasGroup.blocksRaycasts = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
// Setup close button
|
||||
if (closeButton != null)
|
||||
{
|
||||
closeButton.onClick.AddListener(OnCloseClicked);
|
||||
}
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
var gameManager = SortingGameManager.Instance;
|
||||
|
||||
if (gameManager != null)
|
||||
{
|
||||
gameManager.OnGameEnded += ShowResults;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
var gameManager = SortingGameManager.Instance;
|
||||
|
||||
if (gameManager != null)
|
||||
{
|
||||
gameManager.OnGameEnded -= ShowResults;
|
||||
}
|
||||
}
|
||||
|
||||
private void ShowResults()
|
||||
{
|
||||
var gameManager = SortingGameManager.Instance;
|
||||
|
||||
if (gameManager == null) return;
|
||||
|
||||
// Populate data
|
||||
if (finalScoreText != null)
|
||||
finalScoreText.text = $"Final Score: {gameManager.CurrentScore}";
|
||||
|
||||
if (correctSortsText != null)
|
||||
correctSortsText.text = $"Correct: {gameManager.CorrectSorts}";
|
||||
|
||||
if (incorrectSortsText != null)
|
||||
incorrectSortsText.text = $"Incorrect: {gameManager.IncorrectSorts}";
|
||||
|
||||
if (missedItemsText != null)
|
||||
missedItemsText.text = $"Missed: {gameManager.MissedItems}";
|
||||
|
||||
if (accuracyText != null)
|
||||
accuracyText.text = $"Accuracy: {gameManager.Accuracy:P0}";
|
||||
|
||||
// Calculate boosters (already granted by manager)
|
||||
int boosters = gameManager.CorrectSorts; // Simple 1:1 ratio
|
||||
if (boostersEarnedText != null)
|
||||
boostersEarnedText.text = $"Boosters Earned: {boosters}";
|
||||
|
||||
// Show screen
|
||||
if (canvasGroup != null)
|
||||
{
|
||||
canvasGroup.alpha = 1f;
|
||||
canvasGroup.interactable = true;
|
||||
canvasGroup.blocksRaycasts = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
gameObject.SetActive(true);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnCloseClicked()
|
||||
{
|
||||
// Hide screen
|
||||
if (canvasGroup != null)
|
||||
{
|
||||
canvasGroup.alpha = 0f;
|
||||
canvasGroup.interactable = false;
|
||||
canvasGroup.blocksRaycasts = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
// Could also trigger scene transition, return to menu, etc.
|
||||
Debug.Log("[SortingResultsScreen] Closed results screen");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 03823b5ad80b482086569050fbb8bb40
|
||||
timeCreated: 1763470418
|
||||
@@ -130,8 +130,9 @@ namespace UI.DragAndDrop.Core
|
||||
SmoothMoveTowardPointer();
|
||||
}
|
||||
|
||||
// Only clamp for non-overlay canvases (WorldSpace/ScreenSpaceCamera)
|
||||
if (_canvas != null && _canvas.renderMode != RenderMode.ScreenSpaceOverlay)
|
||||
// Only clamp when actively being dragged (prevent dragging off-screen)
|
||||
// Don't clamp when just sitting idle - allow objects to move freely off-screen
|
||||
if (_isDragging && _canvas != null && _canvas.renderMode != RenderMode.ScreenSpaceOverlay)
|
||||
{
|
||||
ClampToScreen();
|
||||
}
|
||||
|
||||
@@ -45,6 +45,10 @@ namespace UI.DragAndDrop.Core
|
||||
public Vector3 WorldPosition => transform.position;
|
||||
public RectTransform RectTransform => transform as RectTransform;
|
||||
|
||||
// Support for both UI and world-space slots
|
||||
public bool IsUISlot => transform is RectTransform;
|
||||
public Vector3 SlotPosition => transform.position; // Works for both Transform types
|
||||
|
||||
private void Start()
|
||||
{
|
||||
if (hideImageOnPlay)
|
||||
@@ -78,6 +82,7 @@ namespace UI.DragAndDrop.Core
|
||||
switch (occupantSizeMode)
|
||||
{
|
||||
case OccupantSizeMode.MatchSlotSize:
|
||||
// Only works for UI slots with RectTransform
|
||||
if (draggable.RectTransform != null && RectTransform != null)
|
||||
{
|
||||
Vector2 targetSize = RectTransform.sizeDelta;
|
||||
@@ -85,6 +90,7 @@ namespace UI.DragAndDrop.Core
|
||||
(val) => draggable.RectTransform.sizeDelta = val,
|
||||
scaleTransitionDuration, 0f, Tween.EaseOutBack);
|
||||
}
|
||||
// World-space slots (no RectTransform) skip size matching
|
||||
break;
|
||||
|
||||
case OccupantSizeMode.Scale:
|
||||
|
||||
@@ -157,19 +157,24 @@ namespace UI
|
||||
}
|
||||
}
|
||||
|
||||
// Subscribe to scene load events to adjust HUD based on scene
|
||||
if (SceneManagerService.Instance != null)
|
||||
{
|
||||
SceneManagerService.Instance.SceneLoadCompleted += NewSceneLoaded;
|
||||
}
|
||||
if (SceneManagerService.Instance.CurrentGameplayScene == "AppleHillsOverworld")
|
||||
{
|
||||
NewSceneLoaded("AppleHillsOverworld");
|
||||
}
|
||||
if (SceneManagerService.Instance.CurrentGameplayScene == "StartingScene")
|
||||
{
|
||||
// TODO: Hide all UI until cinematics have played
|
||||
NewSceneLoaded("AppleHillsOverworld");
|
||||
}
|
||||
|
||||
// If in editor - initialize HUD based on current scene
|
||||
#if UNITY_EDITOR
|
||||
if (SceneManagerService.Instance.CurrentGameplayScene == "StartingScene")
|
||||
{
|
||||
// TODO: Hide all UI until cinematics have played
|
||||
NewSceneLoaded("AppleHillsOverworld");
|
||||
}
|
||||
else if (SceneManagerService.Instance.CurrentGameplayScene != null)
|
||||
{
|
||||
NewSceneLoaded(SceneManagerService.Instance.CurrentGameplayScene);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
internal override void OnManagedDestroy()
|
||||
@@ -229,7 +234,7 @@ namespace UI
|
||||
case "Quarry":
|
||||
currentUIMode = UIMode.Puzzle;
|
||||
break;
|
||||
case "DivingForPictures":
|
||||
case "DivingForPictures" or "CardQualityControl":
|
||||
currentUIMode = UIMode.Minigame;
|
||||
break;
|
||||
}
|
||||
|
||||
52
Assets/Settings/CardSortingSettings.asset
Normal file
52
Assets/Settings/CardSortingSettings.asset
Normal file
@@ -0,0 +1,52 @@
|
||||
%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: a0fd5f8ab5d74b12968501dd4e3cc416, type: 3}
|
||||
m_Name: CardSortingSettings
|
||||
m_EditorClassIdentifier: AppleHillsScripts::Core.Settings.CardSortingSettings
|
||||
gameDuration: 120
|
||||
spawnDistance: 10
|
||||
initialBeltSpeed: 5
|
||||
maxBeltSpeed: 10
|
||||
speedCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0
|
||||
outWeight: 0
|
||||
- serializedVersion: 3
|
||||
time: 1
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0
|
||||
outWeight: 0
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
garbageItems:
|
||||
- {fileID: 11400000, guid: b9c54fbced64684419e983429fd27b34, type: 2}
|
||||
normalCardWeight: 40
|
||||
rareCardWeight: 30
|
||||
legendCardWeight: 20
|
||||
garbageWeight: 40
|
||||
correctSortPoints: 10
|
||||
incorrectSortPenalty: -5
|
||||
missedItemPenalty: -3
|
||||
boosterPacksPerCorrectItem: 1
|
||||
8
Assets/Settings/CardSortingSettings.asset.meta
Normal file
8
Assets/Settings/CardSortingSettings.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9d4a355954ae0a544a9c2a8281bc4bee
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -63,19 +63,7 @@ MonoBehaviour:
|
||||
- rid: 7785851992983994373
|
||||
- rid: 1219994508087787520
|
||||
m_RuntimeSettings:
|
||||
m_List:
|
||||
- rid: 7752762179098771456
|
||||
- rid: 7752762179098771457
|
||||
- rid: 7752762179098771459
|
||||
- rid: 7752762179098771461
|
||||
- rid: 7752762179098771462
|
||||
- rid: 7752762179098771464
|
||||
- rid: 7752762179098771466
|
||||
- rid: 7752762179098771468
|
||||
- rid: 7752762179098771472
|
||||
- rid: 7752762179098771476
|
||||
- rid: 7785851992983994372
|
||||
- rid: 7785851992983994373
|
||||
m_List: []
|
||||
m_AssetVersion: 8
|
||||
m_ObsoleteDefaultVolumeProfile: {fileID: 0}
|
||||
m_RenderingLayerNames:
|
||||
|
||||
Reference in New Issue
Block a user