diff --git a/Assets/Resources/Games/dressYourBest.prefab b/Assets/Resources/Games/dressYourBest.prefab
index 1ea331ff..e589761f 100644
--- a/Assets/Resources/Games/dressYourBest.prefab
+++ b/Assets/Resources/Games/dressYourBest.prefab
@@ -289,7 +289,7 @@ Transform:
- {fileID: 8226260808373746563}
- {fileID: 5878401426804739814}
m_Father: {fileID: 5715047164748654698}
- m_RootOrder: 5
+ m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!95 &6037582727269570347
Animator:
@@ -512,7 +512,7 @@ Transform:
- {fileID: 3448463463127742291}
- {fileID: 8796473988025086322}
m_Father: {fileID: 5715047164748654698}
- m_RootOrder: 4
+ m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!95 &2937590231589242979
Animator:
@@ -852,6 +852,7 @@ Transform:
- {fileID: 7509207802279435211}
- {fileID: 8336220536032857166}
- {fileID: 1503179506244560240}
+ - {fileID: 5883637438837570447}
- {fileID: 8769701094702201794}
- {fileID: 3256309863007746927}
- {fileID: 3350458927318833813}
@@ -874,6 +875,7 @@ MonoBehaviour:
girlAnim: {fileID: 2937590231589242979}
monkeyAnim: {fileID: 3536726533992943518}
sewingAnim: {fileID: 6037582727269570347}
+ reactionAnim: {fileID: 7081272534623568140}
bgSpriteRenderer: {fileID: 2629062112903974991}
lightRenderer: {fileID: 1403303695239245045}
lightMaterialTemplate: {fileID: 2100000, guid: 42b863c88a7a9c4428440728fee737bb, type: 2}
@@ -1400,13 +1402,14 @@ GameObject:
m_Component:
- component: {fileID: 5883637438837570447}
- component: {fileID: 2012344898042423413}
+ - component: {fileID: 7081272534623568140}
m_Layer: 0
m_Name: Reaction
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 0
+ m_IsActive: 1
--- !u!4 &5883637438837570447
Transform:
m_ObjectHideFlags: 0
@@ -1415,12 +1418,12 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5555175038130275063}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalPosition: {x: -0.66, y: -0.02, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
- m_Father: {fileID: 8769701094702201794}
- m_RootOrder: 6
+ m_Father: {fileID: 5715047164748654698}
+ m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &2012344898042423413
SpriteRenderer:
@@ -1464,7 +1467,7 @@ SpriteRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_Sprite: {fileID: 455743163, guid: 91eefdf066035514b82191a67d108b89, type: 3}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_Color: {r: 1, g: 1, b: 1, a: 0}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
@@ -1474,6 +1477,27 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
+--- !u!95 &7081272534623568140
+Animator:
+ serializedVersion: 5
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5555175038130275063}
+ m_Enabled: 1
+ m_Avatar: {fileID: 0}
+ m_Controller: {fileID: 9100000, guid: a90105ef6315a114fb02eb8a6bf15f42, type: 2}
+ m_CullingMode: 0
+ m_UpdateMode: 0
+ m_ApplyRootMotion: 0
+ m_LinearVelocityBlending: 0
+ m_StabilizeFeet: 0
+ m_WarningMessage:
+ m_HasTransformHierarchy: 1
+ m_AllowConstantClipSamplingOptimization: 1
+ m_KeepAnimatorStateOnDisable: 0
+ m_WriteDefaultValuesOnDisable: 0
--- !u!1 &5831123814062995111
GameObject:
m_ObjectHideFlags: 0
@@ -1677,9 +1701,8 @@ Transform:
- {fileID: 2680789703424563267}
- {fileID: 5792578720703545176}
- {fileID: 4233767558195956804}
- - {fileID: 5883637438837570447}
m_Father: {fileID: 5715047164748654698}
- m_RootOrder: 3
+ m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!95 &3536726533992943518
Animator:
diff --git a/Assets/Resources/Sprites/Games/DressYourBest/Animations/Monkey/Faces/MonkeyCallFace.anim b/Assets/Resources/Sprites/Games/DressYourBest/Animations/Monkey/Faces/MonkeyCallFace.anim
new file mode 100644
index 00000000..cb45616e
--- /dev/null
+++ b/Assets/Resources/Sprites/Games/DressYourBest/Animations/Monkey/Faces/MonkeyCallFace.anim
@@ -0,0 +1,71 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!74 &7400000
+AnimationClip:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: MonkeyCallFace
+ serializedVersion: 6
+ m_Legacy: 0
+ m_Compressed: 0
+ m_UseHighQualityCurve: 1
+ m_RotationCurves: []
+ m_CompressedRotationCurves: []
+ m_EulerCurves: []
+ m_PositionCurves: []
+ m_ScaleCurves: []
+ m_FloatCurves: []
+ m_PPtrCurves:
+ - curve:
+ - time: 0
+ value: {fileID: -1983626645, guid: 91eefdf066035514b82191a67d108b89, type: 3}
+ - time: 0.13333334
+ value: {fileID: -2055584907, guid: 91eefdf066035514b82191a67d108b89, type: 3}
+ attribute: m_Sprite
+ path: Head
+ classID: 212
+ script: {fileID: 0}
+ m_SampleRate: 60
+ m_WrapMode: 0
+ m_Bounds:
+ m_Center: {x: 0, y: 0, z: 0}
+ m_Extent: {x: 0, y: 0, z: 0}
+ m_ClipBindingConstant:
+ genericBindings:
+ - serializedVersion: 2
+ path: 130111906
+ attribute: 0
+ script: {fileID: 0}
+ typeID: 212
+ customType: 23
+ isPPtrCurve: 1
+ pptrCurveMapping:
+ - {fileID: -1983626645, guid: 91eefdf066035514b82191a67d108b89, type: 3}
+ - {fileID: -2055584907, guid: 91eefdf066035514b82191a67d108b89, type: 3}
+ m_AnimationClipSettings:
+ serializedVersion: 2
+ m_AdditiveReferencePoseClip: {fileID: 0}
+ m_AdditiveReferencePoseTime: 0
+ m_StartTime: 0
+ m_StopTime: 0.15
+ m_OrientationOffsetY: 0
+ m_Level: 0
+ m_CycleOffset: 0
+ m_HasAdditiveReferencePose: 0
+ m_LoopTime: 0
+ m_LoopBlend: 0
+ m_LoopBlendOrientation: 0
+ m_LoopBlendPositionY: 0
+ m_LoopBlendPositionXZ: 0
+ m_KeepOriginalOrientation: 0
+ m_KeepOriginalPositionY: 1
+ m_KeepOriginalPositionXZ: 0
+ m_HeightFromFeet: 0
+ m_Mirror: 0
+ m_EditorCurves: []
+ m_EulerEditorCurves: []
+ m_HasGenericRootTransform: 0
+ m_HasMotionFloatCurves: 0
+ m_Events: []
diff --git a/Assets/Resources/Sprites/Games/DressYourBest/Animations/Monkey/Faces/MonkeyCallFace.anim.meta b/Assets/Resources/Sprites/Games/DressYourBest/Animations/Monkey/Faces/MonkeyCallFace.anim.meta
new file mode 100644
index 00000000..4363f749
--- /dev/null
+++ b/Assets/Resources/Sprites/Games/DressYourBest/Animations/Monkey/Faces/MonkeyCallFace.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1090d8c79dc86f149af8c4811c6299bc
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Sprites/Games/DressYourBest/Animations/Monkey/Faces/MonkeyCorrect.anim b/Assets/Resources/Sprites/Games/DressYourBest/Animations/Monkey/Faces/MonkeyCorrect.anim
index aabc6cb4..bff11eac 100644
--- a/Assets/Resources/Sprites/Games/DressYourBest/Animations/Monkey/Faces/MonkeyCorrect.anim
+++ b/Assets/Resources/Sprites/Games/DressYourBest/Animations/Monkey/Faces/MonkeyCorrect.anim
@@ -20,7 +20,7 @@ AnimationClip:
m_PPtrCurves:
- curve:
- time: 0
- value: {fileID: -2055584907, guid: 91eefdf066035514b82191a67d108b89, type: 3}
+ value: {fileID: -1270103365, guid: 91eefdf066035514b82191a67d108b89, type: 3}
attribute: m_Sprite
path: Head
classID: 212
@@ -40,7 +40,7 @@ AnimationClip:
customType: 23
isPPtrCurve: 1
pptrCurveMapping:
- - {fileID: -2055584907, guid: 91eefdf066035514b82191a67d108b89, type: 3}
+ - {fileID: -1270103365, guid: 91eefdf066035514b82191a67d108b89, type: 3}
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
diff --git a/Assets/Resources/Sprites/Games/DressYourBest/Animations/Monkey/Faces/MonkeyIncorrect.anim b/Assets/Resources/Sprites/Games/DressYourBest/Animations/Monkey/Faces/MonkeyIncorrect.anim
index 8410c419..b65c1987 100644
--- a/Assets/Resources/Sprites/Games/DressYourBest/Animations/Monkey/Faces/MonkeyIncorrect.anim
+++ b/Assets/Resources/Sprites/Games/DressYourBest/Animations/Monkey/Faces/MonkeyIncorrect.anim
@@ -20,7 +20,7 @@ AnimationClip:
m_PPtrCurves:
- curve:
- time: 0
- value: {fileID: -2055584907, guid: 91eefdf066035514b82191a67d108b89, type: 3}
+ value: {fileID: -578941528, guid: 91eefdf066035514b82191a67d108b89, type: 3}
attribute: m_Sprite
path: Head
classID: 212
@@ -40,7 +40,7 @@ AnimationClip:
customType: 23
isPPtrCurve: 1
pptrCurveMapping:
- - {fileID: -2055584907, guid: 91eefdf066035514b82191a67d108b89, type: 3}
+ - {fileID: -578941528, guid: 91eefdf066035514b82191a67d108b89, type: 3}
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
diff --git a/Assets/Resources/Sprites/Games/DressYourBest/Animations/Monkey/MonkeyAnim.controller b/Assets/Resources/Sprites/Games/DressYourBest/Animations/Monkey/MonkeyAnim.controller
index 3353b462..7c9d1093 100644
--- a/Assets/Resources/Sprites/Games/DressYourBest/Animations/Monkey/MonkeyAnim.controller
+++ b/Assets/Resources/Sprites/Games/DressYourBest/Animations/Monkey/MonkeyAnim.controller
@@ -1,5 +1,57 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
+--- !u!1102 &-4333161336659600000
+AnimatorState:
+ serializedVersion: 6
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Sad
+ m_Speed: 1
+ m_CycleOffset: 0
+ m_Transitions: []
+ m_StateMachineBehaviours: []
+ m_Position: {x: 50, y: 50, z: 0}
+ m_IKOnFeet: 0
+ m_WriteDefaultValues: 1
+ m_Mirror: 0
+ m_SpeedParameterActive: 0
+ m_MirrorParameterActive: 0
+ m_CycleOffsetParameterActive: 0
+ m_TimeParameterActive: 0
+ m_Motion: {fileID: 7400000, guid: 1e0250de52541f54b8137ca93a43b7a8, type: 2}
+ m_Tag:
+ m_SpeedParameter:
+ m_MirrorParameter:
+ m_CycleOffsetParameter:
+ m_TimeParameter:
+--- !u!1102 &-1677676648488995382
+AnimatorState:
+ serializedVersion: 6
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Happy
+ m_Speed: 1
+ m_CycleOffset: 0
+ m_Transitions: []
+ m_StateMachineBehaviours: []
+ m_Position: {x: 50, y: 50, z: 0}
+ m_IKOnFeet: 0
+ m_WriteDefaultValues: 1
+ m_Mirror: 0
+ m_SpeedParameterActive: 0
+ m_MirrorParameterActive: 0
+ m_CycleOffsetParameterActive: 0
+ m_TimeParameterActive: 0
+ m_Motion: {fileID: 7400000, guid: cfd96695df349724791682c162ceb9c1, type: 2}
+ m_Tag:
+ m_SpeedParameter:
+ m_MirrorParameter:
+ m_CycleOffsetParameter:
+ m_TimeParameter:
--- !u!1102 &-1409298229096361948
AnimatorState:
serializedVersion: 6
@@ -20,7 +72,7 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
- m_Motion: {fileID: 0}
+ m_Motion: {fileID: 7400000, guid: 3c83387d343c1e144a9f1bc8de6941c9, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
@@ -40,7 +92,7 @@ AnimatorState:
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
- m_WriteDefaultValues: 0
+ m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
@@ -80,9 +132,9 @@ AnimatorController:
m_Mask: {fileID: 0}
m_Motions: []
m_Behaviours: []
- m_BlendingMode: 0
+ m_BlendingMode: 1
m_SyncedLayerIndex: -1
- m_DefaultWeight: 0
+ m_DefaultWeight: 1
m_IKPass: 0
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}
@@ -140,6 +192,32 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
+--- !u!1102 &4226119145841885105
+AnimatorState:
+ serializedVersion: 6
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: CallFace
+ m_Speed: 1
+ m_CycleOffset: 0
+ m_Transitions: []
+ m_StateMachineBehaviours: []
+ m_Position: {x: 50, y: 50, z: 0}
+ m_IKOnFeet: 0
+ m_WriteDefaultValues: 1
+ m_Mirror: 0
+ m_SpeedParameterActive: 0
+ m_MirrorParameterActive: 0
+ m_CycleOffsetParameterActive: 0
+ m_TimeParameterActive: 0
+ m_Motion: {fileID: 7400000, guid: 1090d8c79dc86f149af8c4811c6299bc, type: 2}
+ m_Tag:
+ m_SpeedParameter:
+ m_MirrorParameter:
+ m_CycleOffsetParameter:
+ m_TimeParameter:
--- !u!1107 &4650706990511529687
AnimatorStateMachine:
serializedVersion: 6
@@ -152,6 +230,15 @@ AnimatorStateMachine:
- serializedVersion: 1
m_State: {fileID: 8118728865878460043}
m_Position: {x: 370, y: 150, z: 0}
+ - serializedVersion: 1
+ m_State: {fileID: -1677676648488995382}
+ m_Position: {x: 280, y: -30, z: 0}
+ - serializedVersion: 1
+ m_State: {fileID: -4333161336659600000}
+ m_Position: {x: 370, y: 60, z: 0}
+ - serializedVersion: 1
+ m_State: {fileID: 4226119145841885105}
+ m_Position: {x: 570, y: -30, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions: []
m_EntryTransitions: []
diff --git a/Assets/Resources/Sprites/Games/DressYourBest/Animations/Reaction.meta b/Assets/Resources/Sprites/Games/DressYourBest/Animations/Reaction.meta
new file mode 100644
index 00000000..e9e5e8b2
--- /dev/null
+++ b/Assets/Resources/Sprites/Games/DressYourBest/Animations/Reaction.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 59150cc8be823cb46bb55e377206eac4
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Sprites/Games/DressYourBest/Animations/Reaction/ReactionAnim.controller b/Assets/Resources/Sprites/Games/DressYourBest/Animations/Reaction/ReactionAnim.controller
new file mode 100644
index 00000000..bc1fc106
--- /dev/null
+++ b/Assets/Resources/Sprites/Games/DressYourBest/Animations/Reaction/ReactionAnim.controller
@@ -0,0 +1,130 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1102 &-1133403523855269911
+AnimatorState:
+ serializedVersion: 6
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Incorrect
+ m_Speed: 1
+ m_CycleOffset: 0
+ m_Transitions: []
+ m_StateMachineBehaviours: []
+ m_Position: {x: 50, y: 50, z: 0}
+ m_IKOnFeet: 0
+ m_WriteDefaultValues: 1
+ m_Mirror: 0
+ m_SpeedParameterActive: 0
+ m_MirrorParameterActive: 0
+ m_CycleOffsetParameterActive: 0
+ m_TimeParameterActive: 0
+ m_Motion: {fileID: 7400000, guid: 93d2c53ea2a98a94581181a583838fb8, type: 2}
+ m_Tag:
+ m_SpeedParameter:
+ m_MirrorParameter:
+ m_CycleOffsetParameter:
+ m_TimeParameter:
+--- !u!91 &9100000
+AnimatorController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: ReactionAnim
+ serializedVersion: 5
+ m_AnimatorParameters: []
+ m_AnimatorLayers:
+ - serializedVersion: 5
+ m_Name: Base Layer
+ m_StateMachine: {fileID: 3908481374778911780}
+ m_Mask: {fileID: 0}
+ m_Motions: []
+ m_Behaviours: []
+ m_BlendingMode: 0
+ m_SyncedLayerIndex: -1
+ m_DefaultWeight: 0
+ m_IKPass: 0
+ m_SyncedLayerAffectsTiming: 0
+ m_Controller: {fileID: 9100000}
+--- !u!1102 &343592015237330692
+AnimatorState:
+ serializedVersion: 6
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Idle
+ m_Speed: 1
+ m_CycleOffset: 0
+ m_Transitions: []
+ m_StateMachineBehaviours: []
+ m_Position: {x: 50, y: 50, z: 0}
+ m_IKOnFeet: 0
+ m_WriteDefaultValues: 1
+ m_Mirror: 0
+ m_SpeedParameterActive: 0
+ m_MirrorParameterActive: 0
+ m_CycleOffsetParameterActive: 0
+ m_TimeParameterActive: 0
+ m_Motion: {fileID: 0}
+ m_Tag:
+ m_SpeedParameter:
+ m_MirrorParameter:
+ m_CycleOffsetParameter:
+ m_TimeParameter:
+--- !u!1102 &2747063380849003634
+AnimatorState:
+ serializedVersion: 6
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Correct
+ m_Speed: 1
+ m_CycleOffset: 0
+ m_Transitions: []
+ m_StateMachineBehaviours: []
+ m_Position: {x: 50, y: 50, z: 0}
+ m_IKOnFeet: 0
+ m_WriteDefaultValues: 1
+ m_Mirror: 0
+ m_SpeedParameterActive: 0
+ m_MirrorParameterActive: 0
+ m_CycleOffsetParameterActive: 0
+ m_TimeParameterActive: 0
+ m_Motion: {fileID: 7400000, guid: 35e5172c77cae3e43a081e67e50557fa, type: 2}
+ m_Tag:
+ m_SpeedParameter:
+ m_MirrorParameter:
+ m_CycleOffsetParameter:
+ m_TimeParameter:
+--- !u!1107 &3908481374778911780
+AnimatorStateMachine:
+ serializedVersion: 6
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Base Layer
+ m_ChildStates:
+ - serializedVersion: 1
+ m_State: {fileID: 343592015237330692}
+ m_Position: {x: 370, y: 100, z: 0}
+ - serializedVersion: 1
+ m_State: {fileID: 2747063380849003634}
+ m_Position: {x: 330, y: -20, z: 0}
+ - serializedVersion: 1
+ m_State: {fileID: -1133403523855269911}
+ m_Position: {x: 350, y: 40, z: 0}
+ m_ChildStateMachines: []
+ m_AnyStateTransitions: []
+ m_EntryTransitions: []
+ m_StateMachineTransitions: {}
+ m_StateMachineBehaviours: []
+ m_AnyStatePosition: {x: 50, y: 20, z: 0}
+ m_EntryPosition: {x: 50, y: 120, z: 0}
+ m_ExitPosition: {x: 800, y: 120, z: 0}
+ m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
+ m_DefaultState: {fileID: 343592015237330692}
diff --git a/Assets/Resources/Sprites/Games/DressYourBest/Animations/Reaction/ReactionAnim.controller.meta b/Assets/Resources/Sprites/Games/DressYourBest/Animations/Reaction/ReactionAnim.controller.meta
new file mode 100644
index 00000000..9af4b505
--- /dev/null
+++ b/Assets/Resources/Sprites/Games/DressYourBest/Animations/Reaction/ReactionAnim.controller.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a90105ef6315a114fb02eb8a6bf15f42
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 9100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Sprites/Games/DressYourBest/Animations/Reaction/ReactionCorrect.anim b/Assets/Resources/Sprites/Games/DressYourBest/Animations/Reaction/ReactionCorrect.anim
new file mode 100644
index 00000000..158a43d3
--- /dev/null
+++ b/Assets/Resources/Sprites/Games/DressYourBest/Animations/Reaction/ReactionCorrect.anim
@@ -0,0 +1,193 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!74 &7400000
+AnimationClip:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: ReactionCorrect
+ serializedVersion: 6
+ m_Legacy: 0
+ m_Compressed: 0
+ m_UseHighQualityCurve: 1
+ m_RotationCurves: []
+ m_CompressedRotationCurves: []
+ m_EulerCurves: []
+ m_PositionCurves:
+ - curve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: {x: -0.68, y: 0.21, z: 0}
+ inSlope: {x: 0, y: 0, z: 0}
+ outSlope: {x: 0, y: 0, z: 0}
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: {x: 0, y: 0.33333334, z: 0.33333334}
+ outWeight: {x: 0, y: 0.33333334, z: 0.33333334}
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ path:
+ m_ScaleCurves: []
+ m_FloatCurves:
+ - curve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 1
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 136
+ weightedMode: 0
+ inWeight: 0
+ outWeight: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ attribute: m_Color.a
+ path:
+ classID: 212
+ script: {fileID: 0}
+ m_PPtrCurves:
+ - curve:
+ - time: 0
+ value: {fileID: 455743163, guid: 91eefdf066035514b82191a67d108b89, type: 3}
+ attribute: m_Sprite
+ path:
+ classID: 212
+ script: {fileID: 0}
+ m_SampleRate: 60
+ m_WrapMode: 0
+ m_Bounds:
+ m_Center: {x: 0, y: 0, z: 0}
+ m_Extent: {x: 0, y: 0, z: 0}
+ m_ClipBindingConstant:
+ genericBindings:
+ - serializedVersion: 2
+ path: 0
+ attribute: 0
+ script: {fileID: 0}
+ typeID: 212
+ customType: 23
+ isPPtrCurve: 1
+ - serializedVersion: 2
+ path: 0
+ attribute: 1
+ script: {fileID: 0}
+ typeID: 4
+ customType: 0
+ isPPtrCurve: 0
+ - serializedVersion: 2
+ path: 0
+ attribute: 304273561
+ script: {fileID: 0}
+ typeID: 212
+ customType: 0
+ isPPtrCurve: 0
+ pptrCurveMapping:
+ - {fileID: 455743163, guid: 91eefdf066035514b82191a67d108b89, type: 3}
+ m_AnimationClipSettings:
+ serializedVersion: 2
+ m_AdditiveReferencePoseClip: {fileID: 0}
+ m_AdditiveReferencePoseTime: 0
+ m_StartTime: 0
+ m_StopTime: 0.016666668
+ m_OrientationOffsetY: 0
+ m_Level: 0
+ m_CycleOffset: 0
+ m_HasAdditiveReferencePose: 0
+ m_LoopTime: 0
+ m_LoopBlend: 0
+ m_LoopBlendOrientation: 0
+ m_LoopBlendPositionY: 0
+ m_LoopBlendPositionXZ: 0
+ m_KeepOriginalOrientation: 0
+ m_KeepOriginalPositionY: 1
+ m_KeepOriginalPositionXZ: 0
+ m_HeightFromFeet: 0
+ m_Mirror: 0
+ m_EditorCurves:
+ - curve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 1
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 136
+ weightedMode: 0
+ inWeight: 0
+ outWeight: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ attribute: m_Color.a
+ path:
+ classID: 212
+ script: {fileID: 0}
+ - curve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: -0.68
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 136
+ weightedMode: 0
+ inWeight: 0
+ outWeight: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ attribute: m_LocalPosition.x
+ path:
+ classID: 4
+ script: {fileID: 0}
+ - curve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 0.21
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 136
+ weightedMode: 0
+ inWeight: 0
+ outWeight: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ attribute: m_LocalPosition.y
+ path:
+ classID: 4
+ script: {fileID: 0}
+ - curve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 136
+ weightedMode: 0
+ inWeight: 0
+ outWeight: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ attribute: m_LocalPosition.z
+ path:
+ classID: 4
+ script: {fileID: 0}
+ m_EulerEditorCurves: []
+ m_HasGenericRootTransform: 1
+ m_HasMotionFloatCurves: 0
+ m_Events: []
diff --git a/Assets/Resources/Sprites/Games/DressYourBest/Animations/Reaction/ReactionCorrect.anim.meta b/Assets/Resources/Sprites/Games/DressYourBest/Animations/Reaction/ReactionCorrect.anim.meta
new file mode 100644
index 00000000..87c9e0b0
--- /dev/null
+++ b/Assets/Resources/Sprites/Games/DressYourBest/Animations/Reaction/ReactionCorrect.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 35e5172c77cae3e43a081e67e50557fa
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Sprites/Games/DressYourBest/Animations/Reaction/ReactionIncorrect.anim b/Assets/Resources/Sprites/Games/DressYourBest/Animations/Reaction/ReactionIncorrect.anim
new file mode 100644
index 00000000..9ae21279
--- /dev/null
+++ b/Assets/Resources/Sprites/Games/DressYourBest/Animations/Reaction/ReactionIncorrect.anim
@@ -0,0 +1,193 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!74 &7400000
+AnimationClip:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: ReactionIncorrect
+ serializedVersion: 6
+ m_Legacy: 0
+ m_Compressed: 0
+ m_UseHighQualityCurve: 1
+ m_RotationCurves: []
+ m_CompressedRotationCurves: []
+ m_EulerCurves: []
+ m_PositionCurves:
+ - curve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: {x: -0.75, y: 0.69, z: 0}
+ inSlope: {x: 0, y: 0, z: 0}
+ outSlope: {x: 0, y: 0, z: 0}
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: {x: 0, y: 0.33333334, z: 0.33333334}
+ outWeight: {x: 0, y: 0.33333334, z: 0.33333334}
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ path:
+ m_ScaleCurves: []
+ m_FloatCurves:
+ - curve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 1
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 136
+ weightedMode: 0
+ inWeight: 0
+ outWeight: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ attribute: m_Color.a
+ path:
+ classID: 212
+ script: {fileID: 0}
+ m_PPtrCurves:
+ - curve:
+ - time: 0
+ value: {fileID: -591490588, guid: 91eefdf066035514b82191a67d108b89, type: 3}
+ attribute: m_Sprite
+ path:
+ classID: 212
+ script: {fileID: 0}
+ m_SampleRate: 60
+ m_WrapMode: 0
+ m_Bounds:
+ m_Center: {x: 0, y: 0, z: 0}
+ m_Extent: {x: 0, y: 0, z: 0}
+ m_ClipBindingConstant:
+ genericBindings:
+ - serializedVersion: 2
+ path: 0
+ attribute: 0
+ script: {fileID: 0}
+ typeID: 212
+ customType: 23
+ isPPtrCurve: 1
+ - serializedVersion: 2
+ path: 0
+ attribute: 1
+ script: {fileID: 0}
+ typeID: 4
+ customType: 0
+ isPPtrCurve: 0
+ - serializedVersion: 2
+ path: 0
+ attribute: 304273561
+ script: {fileID: 0}
+ typeID: 212
+ customType: 0
+ isPPtrCurve: 0
+ pptrCurveMapping:
+ - {fileID: -591490588, guid: 91eefdf066035514b82191a67d108b89, type: 3}
+ m_AnimationClipSettings:
+ serializedVersion: 2
+ m_AdditiveReferencePoseClip: {fileID: 0}
+ m_AdditiveReferencePoseTime: 0
+ m_StartTime: 0
+ m_StopTime: 0.016666668
+ m_OrientationOffsetY: 0
+ m_Level: 0
+ m_CycleOffset: 0
+ m_HasAdditiveReferencePose: 0
+ m_LoopTime: 0
+ m_LoopBlend: 0
+ m_LoopBlendOrientation: 0
+ m_LoopBlendPositionY: 0
+ m_LoopBlendPositionXZ: 0
+ m_KeepOriginalOrientation: 0
+ m_KeepOriginalPositionY: 1
+ m_KeepOriginalPositionXZ: 0
+ m_HeightFromFeet: 0
+ m_Mirror: 0
+ m_EditorCurves:
+ - curve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 1
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 136
+ weightedMode: 0
+ inWeight: 0
+ outWeight: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ attribute: m_Color.a
+ path:
+ classID: 212
+ script: {fileID: 0}
+ - curve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: -0.75
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 136
+ weightedMode: 0
+ inWeight: 0
+ outWeight: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ attribute: m_LocalPosition.x
+ path:
+ classID: 4
+ script: {fileID: 0}
+ - curve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 0.69
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 136
+ weightedMode: 0
+ inWeight: 0
+ outWeight: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ attribute: m_LocalPosition.y
+ path:
+ classID: 4
+ script: {fileID: 0}
+ - curve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 136
+ weightedMode: 0
+ inWeight: 0
+ outWeight: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ attribute: m_LocalPosition.z
+ path:
+ classID: 4
+ script: {fileID: 0}
+ m_EulerEditorCurves: []
+ m_HasGenericRootTransform: 1
+ m_HasMotionFloatCurves: 0
+ m_Events: []
diff --git a/Assets/Resources/Sprites/Games/DressYourBest/Animations/Reaction/ReactionIncorrect.anim.meta b/Assets/Resources/Sprites/Games/DressYourBest/Animations/Reaction/ReactionIncorrect.anim.meta
new file mode 100644
index 00000000..74fc5495
--- /dev/null
+++ b/Assets/Resources/Sprites/Games/DressYourBest/Animations/Reaction/ReactionIncorrect.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 93d2c53ea2a98a94581181a583838fb8
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Games/DressYourBest/DressYourBest.cs b/Assets/Scripts/Games/DressYourBest/DressYourBest.cs
index ab26a88e..3904ffa0 100644
--- a/Assets/Scripts/Games/DressYourBest/DressYourBest.cs
+++ b/Assets/Scripts/Games/DressYourBest/DressYourBest.cs
@@ -24,8 +24,8 @@ namespace HeavenStudio.Games.Loaders
var e = eventCaller.currentEntity;
if (eventCaller.gameManager.TryGetMinigame(out DressYourBest instance)) {
DressYourBest.Characters characters = (DressYourBest.Characters)e["characters"];
- instance.ToggleBopping(characters, e["bop"]);
- if (e["auto"]) instance.DoBopping(e.beat, e.length, characters);
+ instance.ToggleBopping(characters, e["auto"]);
+ if (e["bop"]) instance.DoBopping(e.beat, e.length, characters);
}
},
defaultLength = 1f,
@@ -33,8 +33,8 @@ namespace HeavenStudio.Games.Loaders
parameters = new List()
{
new("characters", DressYourBest.Characters.Both, "Characters", "Choose the characters to toggle bopping."),
- new("bop", true, "Bop", "Toggle if the selected characters should bop for the duration of this event."),
new("auto", true, "Bop (Auto)", "Toggle if the selected characters should automatically bop until another Bop event is reached."),
+ new("bop", true, "Bop", "Toggle if the selected characters should bop for the duration of this event."),
}
},
new GameAction("start interval", "Start Interval", "Cues")
@@ -176,6 +176,7 @@ namespace HeavenStudio.Games
[SerializeField] private Animator girlAnim;
[SerializeField] private Animator monkeyAnim;
[SerializeField] private Animator sewingAnim;
+ [SerializeField] private Animator reactionAnim;
[Header("Renderers")]
[SerializeField] private SpriteRenderer bgSpriteRenderer;
@@ -201,10 +202,16 @@ namespace HeavenStudio.Games
private Sound whirringSfx = null;
private List callEntities;
+ private double startIntervalEndBeat;
+
// if characters should bop automatically
private bool girlBop = true;
private bool monkeyBop = true;
+ private Faces girlFaceCurrent;
+ private Faces monkeyFaceCurrent;
+
+
private void Awake()
{
// instantiate the material so it doesn't persist between game switches
@@ -215,15 +222,24 @@ namespace HeavenStudio.Games
private void Update()
{
bgSpriteRenderer.color = bgColorEase.GetColor();
+
+ if (PlayerInput.GetIsAction(InputAction_BasicPress) && !IsExpectingInputNow(InputAction_BasicPress)) {
+ ChangeEmotion(Characters.Girl, Faces.Sad);
+ sewingAnim.DoScaledAnimationAsync("Miss", 0.5f);
+ SoundByte.PlayOneShotGame("dressYourBest/hit_1", volume: 2);
+ SoundByte.PlayOneShot("miss");
+ }
}
public override void OnLateBeatPulse(double beat)
{
- if (girlBop && !girlAnim.IsPlayingAnimationNames()) {
+ // if (girlBop && !girlAnim.IsPlayingAnimationNames()) {
+ if (girlBop) {
girlAnim.DoScaledAnimationAsync("Bop", 0.5f, animLayer: 0);
}
- if (monkeyBop && !monkeyAnim.IsPlayingAnimationNames("Call")) {
- monkeyAnim.DoScaledAnimationAsync("Bop", 0.5f);
+ // if (monkeyBop && beat >= startIntervalEndBeat && !monkeyAnim.IsPlayingAnimationNames("Call")) {
+ if (monkeyBop && beat >= startIntervalEndBeat) {
+ monkeyAnim.DoScaledAnimationAsync("Bop", 0.5f, animLayer: 0);
}
}
@@ -231,13 +247,13 @@ namespace HeavenStudio.Games
public override void OnGameSwitch(double beat)
{
StoreAllCallEntities();
- PersistBackgroundAppearance(beat);
+ PersistPreviousEntities(beat);
}
public override void OnPlay(double beat)
{
StoreAllCallEntities();
- PersistBackgroundAppearance(beat);
+ PersistPreviousEntities(beat);
}
private void StoreAllCallEntities()
@@ -246,7 +262,7 @@ namespace HeavenStudio.Games
callEntities = gameManager.Beatmap.Entities.FindAll(e => e.datamodel == "dressYourBest/monkey call");
}
- private void PersistBackgroundAppearance(double beat)
+ private void PersistPreviousEntities(double beat)
{
// find the last background appearance from the current beat
// this uses only beat, not length. earlier events will be completely ignored
@@ -255,13 +271,25 @@ namespace HeavenStudio.Games
RiqEntity e = bgEntity;
ChangeBackgroundAppearance(e.beat, e.length, e["startColor"], e["endColor"], e["ease"]);
}
+
+ RiqEntity bopEntity = gameManager.Beatmap.Entities.FindLast(e => e.beat <= beat && e.datamodel == "dressYourBest/bop");
+ if (bopEntity != null) {
+ RiqEntity e = bopEntity;
+ Characters characters = (Characters)e["characters"];
+ ToggleBopping(characters, e["auto"]);
+ if (e["bop"] && beat > e.beat && beat < e.beat + e.length) { // if it is switched to or played in the middle of a bop event
+ DoBopping(e.beat, e.length, characters);
+ }
+ }
}
private void SetLightFromState(LightState state)
{
ColorPair colorPair = lightStates[(int)state];
- lightRenderer.material.SetColor("_ColorAlpha", colorPair.outside);
- lightRenderer.material.SetColor("_ColorBravo", colorPair.inside);
+ // lightRenderer.material.SetColor("_ColorAlpha", colorPair.outside);
+ // lightRenderer.material.SetColor("_ColorBravo", colorPair.inside);
+ lightRenderer.material.SetColor("_ColorAlpha", colorPair.inside);
+ lightRenderer.material.SetColor("_ColorBravo", colorPair.outside);
}
public void ChangeBackgroundAppearance(double beat, float length, Color startColor, Color endColor, int ease)
@@ -287,7 +315,7 @@ namespace HeavenStudio.Games
bopAction += () => girlAnim.DoScaledAnimationAsync("Bop", 0.5f, animLayer: 0);
}
if (characters is Characters.Monkey or Characters.Both) {
- bopAction += () => monkeyAnim.DoScaledAnimationAsync("Bop", 0.5f);
+ bopAction += () => monkeyAnim.DoScaledAnimationAsync("Bop", 0.5f, animLayer: 0);
}
List actions = new();
@@ -299,20 +327,19 @@ namespace HeavenStudio.Games
public void ChangeEmotion(Characters character, Faces emotion)
{
+ string emotionStr = emotion.ToString();
+
if (character is Characters.Girl or Characters.Both) {
- ChangeEmotion(girlAnim, emotion);
+ girlFaceCurrent = emotion;
+ girlAnim.DoScaledAnimationAsync(emotionStr, 0.5f, animLayer: 1);
}
if (character is Characters.Monkey or Characters.Both) {
- ChangeEmotion(monkeyAnim, emotion);
+ Debug.Log("monkey emotionStr : " + emotionStr);
+ monkeyFaceCurrent = emotion;
+ monkeyAnim.DoScaledAnimationAsync(emotionStr, 0.5f, animLayer: 1);
}
}
- private void ChangeEmotion(Animator anim, Faces emotion)
- {
- Debug.Log("emotion : " + emotion);
- anim.DoScaledAnimationAsync(emotion.ToString(), 0.5f, animLayer: 1);
- }
-
// startBeat exists so actions that happened when inactive aren't done again. that would suck
public void QueueStartInterval(double beat, float length, bool autoPass, bool autoReact, double startBeat = double.MinValue)
{
@@ -322,14 +349,25 @@ namespace HeavenStudio.Games
if (startBeat < beat + length) {
List sounds = new();
List actions = new() {
- new(beat, () => ChangeEmotion(girlAnim, Faces.Looking))
+ new(beat, delegate {
+ startIntervalEndBeat = beat + length;
+ if (neededCalls[^1].beat == beat + length) { // if there's a block at the end, extend the bop one beat
+ startIntervalEndBeat++;
+ }
+ ChangeEmotion(Characters.Girl, Faces.Looking);
+ })
};
foreach (RiqEntity call in neededCalls)
{
// Debug.Log("call.beat : " + call.beat);
if (call.beat < startBeat) continue;
sounds.Add(new("dressYourBest/monkey_call_" + (call["callSfx"] + 1), call.beat));
- actions.Add(new(call.beat, () => monkeyAnim.DoScaledAnimationAsync("Call", 0.5f)));
+ actions.Add(new(call.beat, () => {
+ monkeyAnim.DoScaledAnimationAsync("Call", 0.5f, animLayer: 0);
+ // this is janky but unity animation Sucks Balls so it's really the best way to do it
+ monkeyFaceCurrent = Faces.Idle;
+ monkeyAnim.DoScaledAnimationAsync("CallFace", 0.5f, animLayer: 1);
+ }));
}
if (autoPass) {
// have to add this after all the other actions as actions are done in order of beat
@@ -355,12 +393,13 @@ namespace HeavenStudio.Games
neededCalls ??= GetNeededCalls(startIntervalBeat, startIntervalLength);
if (neededCalls.Count <= 0) return; // do the actual stuff under here
- ChangeEmotion(girlAnim, Faces.Idle);
+ ChangeEmotion(Characters.Girl, Faces.Idle);
SetLightFromState(LightState.Repeating);
// "Any" check instead of just checking the last one?
- if (neededCalls[^1].beat != beat) {
- monkeyAnim.DoScaledAnimationAsync("Idle", 0.5f);
- }
+ // if (neededCalls[^1].beat != beat) {
+ // monkeyAnim.DoScaledAnimationAsync("Idle", 0.5f, animLayer: 0);
+ // // ChangeEmotion(Characters.Monkey, Faces.Idle);
+ // }
hitCount = 0;
foreach (RiqEntity call in neededCalls)
{
@@ -382,21 +421,29 @@ namespace HeavenStudio.Games
public void IntervalReact(double beat, float length)
{
+ hasMissed = false;
+
Faces reaction = HasMissed ? Faces.Sad : Faces.Happy;
- ChangeEmotion(monkeyAnim, reaction);
- ChangeEmotion(girlAnim, reaction);
+ ChangeEmotion(Characters.Monkey, reaction);
+ ChangeEmotion(Characters.Girl, reaction);
LightState lightState = (LightState)reaction;
SetLightFromState(lightState);
+ string lightStateStr = lightState.ToString();
+ reactionAnim.DoScaledAnimationAsync(lightStateStr, 0.5f);
+
// there's not a good way to schedule this afaik.
// there might be some way to like, schedule the sound then change the sound source when missed? that could work maybe
- SoundByte.PlayOneShotGame("dressYourBest/" + lightState.ToString().ToLower());
+ SoundByte.PlayOneShotGame("dressYourBest/" + lightStateStr.ToLower());
// maybe wanna use a beat value that's checked in the update loop
- // that would let people specify
+ // made this comment before adding this "current face" check
_ = BeatAction.New(this, new() {
new(beat + length, delegate {
- ChangeEmotion(monkeyAnim, Faces.Idle);
- ChangeEmotion(girlAnim, Faces.Idle);
+ reactionAnim.DoScaledAnimationAsync("Idle", 0.5f);
+ // makes sure it's not overriding new faces (really just the looking face.)
+ if (girlFaceCurrent == reaction) ChangeEmotion(Characters.Girl, Faces.Idle);
+ if (monkeyFaceCurrent == reaction) ChangeEmotion(Characters.Monkey, Faces.Idle);
+ // ChangeEmotion(Characters.Monkey, Faces.Idle);
SetLightFromState(LightState.IdleOrListening);
})
});
@@ -408,14 +455,14 @@ namespace HeavenStudio.Games
private void OnHit(PlayerActionEvent caller, float state)
{
hitCount++;
- SoundByte.PlayOneShotGame("dressYourBest/hit_1");
+ SoundByte.PlayOneShotGame("dressYourBest/hit_1", volume: 2);
SoundByte.PlayOneShotGame("dressYourBest/hit_2", pitch: SoundByte.GetPitchFromSemiTones(hitCount, false));
if (state is >= 1f or <= (-1f)) // barely
{
sewingAnim.DoScaledAnimationAsync("Miss", 0.5f);
hasMissed = true;
}
- else // just
+ else // just
{
sewingAnim.DoScaledAnimationAsync("Hit", 0.5f);
}