diff --git a/Assets/Resources/Games/nailCarpenter.prefab b/Assets/Resources/Games/nailCarpenter.prefab index efb549ac3..9fea72d82 100644 --- a/Assets/Resources/Games/nailCarpenter.prefab +++ b/Assets/Resources/Games/nailCarpenter.prefab @@ -682,7 +682,7 @@ MonoBehaviour: baseLongNail: {fileID: 4122843866948130824} baseSweet: {fileID: 7846700753925185796} Carpenter: {fileID: 2757472879240741117} - EyeAnim: {fileID: 2857868484672891618} + EyeAnim: {fileID: 0} EffectExclamRed: {fileID: 5086085623578673087} EffectExclamBlue: {fileID: 7922870834249946850} scrollingHolder: {fileID: 5348239490659111460} @@ -1596,7 +1596,6 @@ GameObject: m_Component: - component: {fileID: 6501104041238814201} - component: {fileID: 3042055459301008586} - - component: {fileID: 2857868484672891618} m_Layer: 0 m_Name: eye m_TagString: Untagged @@ -1671,27 +1670,6 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 ---- !u!95 &2857868484672891618 -Animator: - serializedVersion: 5 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5887142951187249997} - m_Enabled: 1 - m_Avatar: {fileID: 0} - m_Controller: {fileID: 9100000, guid: 512906a2493039b4b8487da89d6a68de, 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 &6083823790040367567 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Resources/Sprites/Games/NailCarpenter/Animations/Carpenter.controller b/Assets/Resources/Sprites/Games/NailCarpenter/Animations/Carpenter.controller index c27ba59e7..ca2a54b70 100644 --- a/Assets/Resources/Sprites/Games/NailCarpenter/Animations/Carpenter.controller +++ b/Assets/Resources/Sprites/Games/NailCarpenter/Animations/Carpenter.controller @@ -1,5 +1,85 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1102 &-7121934739219216110 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: eyeBlink + 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: 06b1b3a4e8dcee547a9edc5dc3bf2548, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1107 &-1930493925547852623 +AnimatorStateMachine: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Eyes + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: -7121934739219216110} + m_Position: {x: 300, y: 40, z: 0} + - serializedVersion: 1 + m_State: {fileID: -925516020150419531} + m_Position: {x: 330, y: 100, z: 0} + - serializedVersion: 1 + m_State: {fileID: 7586799867838041638} + m_Position: {x: 370, y: 170, 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: -925516020150419531} +--- !u!1102 &-925516020150419531 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: eyeOpen + 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: aa83a522fc67ea645b2116a174ba1fca, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: --- !u!91 &9100000 AnimatorController: m_ObjectHideFlags: 0 @@ -22,6 +102,18 @@ AnimatorController: m_IKPass: 0 m_SyncedLayerAffectsTiming: 0 m_Controller: {fileID: 9100000} + - serializedVersion: 5 + m_Name: Eyes + m_StateMachine: {fileID: -1930493925547852623} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 1 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} --- !u!1107 &276946297870919793 AnimatorStateMachine: serializedVersion: 6 @@ -157,3 +249,29 @@ AnimatorState: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: +--- !u!1102 &7586799867838041638 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: eyeSmile + 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: f66b4c7a373cc7d43a24327564f0ae67, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: diff --git a/Assets/Resources/Sprites/Games/NailCarpenter/Animations/eyeBlink.anim b/Assets/Resources/Sprites/Games/NailCarpenter/Animations/eyeBlink.anim index 365fb0a8d..48baecced 100644 --- a/Assets/Resources/Sprites/Games/NailCarpenter/Animations/eyeBlink.anim +++ b/Assets/Resources/Sprites/Games/NailCarpenter/Animations/eyeBlink.anim @@ -24,7 +24,7 @@ AnimationClip: - time: 0.16666667 value: {fileID: 288899377, guid: 99d6a57b351ee2046b9af317c31f4a05, type: 3} attribute: m_Sprite - path: + path: Head/Face/eye classID: 212 script: {fileID: 0} m_SampleRate: 60 @@ -35,7 +35,7 @@ AnimationClip: m_ClipBindingConstant: genericBindings: - serializedVersion: 2 - path: 0 + path: 620517349 attribute: 0 script: {fileID: 0} typeID: 212 diff --git a/Assets/Resources/Sprites/Games/NailCarpenter/Animations/eyeOpen.anim b/Assets/Resources/Sprites/Games/NailCarpenter/Animations/eyeOpen.anim index 99c116771..2fefe2af1 100644 --- a/Assets/Resources/Sprites/Games/NailCarpenter/Animations/eyeOpen.anim +++ b/Assets/Resources/Sprites/Games/NailCarpenter/Animations/eyeOpen.anim @@ -17,21 +17,36 @@ AnimationClip: m_PositionCurves: [] m_ScaleCurves: [] m_FloatCurves: [] - m_PPtrCurves: [] + m_PPtrCurves: + - curve: + - time: 0 + value: {fileID: 288899377, guid: 99d6a57b351ee2046b9af317c31f4a05, type: 3} + attribute: m_Sprite + path: Head/Face/eye + 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: [] - pptrCurveMapping: [] + genericBindings: + - serializedVersion: 2 + path: 620517349 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + pptrCurveMapping: + - {fileID: 288899377, guid: 99d6a57b351ee2046b9af317c31f4a05, type: 3} m_AnimationClipSettings: serializedVersion: 2 m_AdditiveReferencePoseClip: {fileID: 0} m_AdditiveReferencePoseTime: 0 m_StartTime: 0 - m_StopTime: 1 + m_StopTime: 0.016666668 m_OrientationOffsetY: 0 m_Level: 0 m_CycleOffset: 0 diff --git a/Assets/Resources/Sprites/Games/NailCarpenter/Animations/eyeSmile.anim b/Assets/Resources/Sprites/Games/NailCarpenter/Animations/eyeSmile.anim index eff71c439..d49c3e184 100644 --- a/Assets/Resources/Sprites/Games/NailCarpenter/Animations/eyeSmile.anim +++ b/Assets/Resources/Sprites/Games/NailCarpenter/Animations/eyeSmile.anim @@ -26,7 +26,7 @@ AnimationClip: - time: 0.5 value: {fileID: 288899377, guid: 99d6a57b351ee2046b9af317c31f4a05, type: 3} attribute: m_Sprite - path: + path: Head/Face/eye classID: 212 script: {fileID: 0} m_SampleRate: 60 @@ -37,7 +37,7 @@ AnimationClip: m_ClipBindingConstant: genericBindings: - serializedVersion: 2 - path: 0 + path: 620517349 attribute: 0 script: {fileID: 0} typeID: 212 diff --git a/Assets/Scripts/Games/NailCarpenter/LongNail.cs b/Assets/Scripts/Games/NailCarpenter/LongNail.cs index aae2c5cec..f9eb595ca 100644 --- a/Assets/Scripts/Games/NailCarpenter/LongNail.cs +++ b/Assets/Scripts/Games/NailCarpenter/LongNail.cs @@ -44,7 +44,7 @@ namespace HeavenStudio.Games.Scripts_NailCarpenter } SoundByte.PlayOneShotGame("nailCarpenter/HammerStrong"); nailAnim.DoScaledAnimationAsync("longNailHammered", 0.25f); - game.EyeAnim.DoScaledAnimationAsync("eyeSmile", 0.25f); + game.Carpenter.DoScaledAnimationAsync("eyeSmile", 0.25f, animLayer: 1); } private void WeakHammmerJust(PlayerActionEvent caller, float state) @@ -64,7 +64,7 @@ namespace HeavenStudio.Games.Scripts_NailCarpenter private void HammmerMiss(PlayerActionEvent caller) { - game.EyeAnim.DoScaledAnimationAsync("eyeBlink", 0.25f); + game.Carpenter.DoScaledAnimationAsync("eyeBlink", 0.25f, animLayer: 1); } private void Update() diff --git a/Assets/Scripts/Games/NailCarpenter/Nail.cs b/Assets/Scripts/Games/NailCarpenter/Nail.cs index 6203d2e0b..f4837f49d 100644 --- a/Assets/Scripts/Games/NailCarpenter/Nail.cs +++ b/Assets/Scripts/Games/NailCarpenter/Nail.cs @@ -62,7 +62,7 @@ namespace HeavenStudio.Games.Scripts_NailCarpenter private void HammmerMiss(PlayerActionEvent caller) { - game.EyeAnim.DoScaledAnimationAsync("eyeBlink", 0.25f); + game.Carpenter.DoScaledAnimationAsync("eyeBlink", 0.25f, animLayer: 1); } private void Update() diff --git a/Assets/Scripts/Games/NailCarpenter/NailCarpenter.cs b/Assets/Scripts/Games/NailCarpenter/NailCarpenter.cs index 682047a1f..f89f1c021 100644 --- a/Assets/Scripts/Games/NailCarpenter/NailCarpenter.cs +++ b/Assets/Scripts/Games/NailCarpenter/NailCarpenter.cs @@ -118,7 +118,7 @@ namespace HeavenStudio.Games public GameObject baseLongNail; public GameObject baseSweet; public Animator Carpenter; - public Animator EyeAnim; + // public Animator EyeAnim; public Animator EffectExclamRed; public Animator EffectExclamBlue; @@ -193,7 +193,7 @@ namespace HeavenStudio.Games List scheduledPatterns = new List(); double patternStartBeat, gameStartBeat; PatternType patternType, lastPatternType; - int patternIndex; + int patternIndex, lastPatternIndex = -1; double slideBeat = double.MaxValue; double slideLength; @@ -259,20 +259,26 @@ namespace HeavenStudio.Games patternIndex = 0; foreach (var evt in events) { - var pattern = new ScheduledPattern + if (evt.length == 0) continue; + int patternDivisions = (int)Math.Ceiling(evt.length / PATTERN_SEEK_TIME); + PatternType patternType = evt.datamodel switch { - beat = evt.beat, - length = evt.length, - type = evt.datamodel switch - { - "nailCarpenter/puddingNail" => PatternType.Pudding, - "nailCarpenter/cherryNail" => PatternType.Cherry, - "nailCarpenter/cakeNail" => PatternType.Cake, - "nailCarpenter/cakeLongNail" => PatternType.CakeLong, - _ => throw new NotImplementedException() - } + "nailCarpenter/puddingNail" => PatternType.Pudding, + "nailCarpenter/cherryNail" => PatternType.Cherry, + "nailCarpenter/cakeNail" => PatternType.Cake, + "nailCarpenter/cakeLongNail" => PatternType.CakeLong, + _ => throw new NotImplementedException() }; - scheduledPatterns.Add(pattern); + for (int i = 0; i < patternDivisions; i++) + { + var pattern = new ScheduledPattern + { + beat = evt.beat + (PATTERN_SEEK_TIME * i), + length = Math.Min(evt.length - (PATTERN_SEEK_TIME * i), PATTERN_SEEK_TIME), + type = patternType + }; + scheduledPatterns.Add(pattern); + } } } @@ -289,9 +295,19 @@ namespace HeavenStudio.Games if (patternIndex < scheduledPatterns.Count) { var pattern = scheduledPatterns[patternIndex]; - if (pattern.beat + pattern.length < patternStartBeat) continue; + if (pattern.type == PatternType.None) + { + patternIndex++; + continue; + } + if (pattern.beat + pattern.length < patternStartBeat) + { + patternIndex++; + continue; + } SpawnPattern(pattern.beat, pattern.length, pattern.type); - patternStartBeat += pattern.length; + patternStartBeat = pattern.beat + pattern.length; + lastPatternIndex = patternIndex; patternIndex++; } else diff --git a/Assets/Scripts/Games/NailCarpenter/Sweet.cs b/Assets/Scripts/Games/NailCarpenter/Sweet.cs index 04764ce82..f6a984b1b 100644 --- a/Assets/Scripts/Games/NailCarpenter/Sweet.cs +++ b/Assets/Scripts/Games/NailCarpenter/Sweet.cs @@ -86,7 +86,7 @@ namespace HeavenStudio.Games.Scripts_NailCarpenter { game.ScoreMiss(); BreakAnim(); - game.EyeAnim.DoScaledAnimationAsync("eyeBlink", 0.25f); + game.Carpenter.DoScaledAnimationAsync("eyeBlink", 0.25f, animLayer: 1); } private void Update()