From f280e593142f59992cabf580eb2790e566346a5f Mon Sep 17 00:00:00 2001 From: wookywok <62037083+wookywok@users.noreply.github.com> Date: Mon, 29 Apr 2024 10:10:34 -0500 Subject: [PATCH] Rhythm Test Text Update!!! (#898) Rhythm Test GBA now has customizable text! This can only go well! (Also it's fuckin audible now) --- Assets/Resources/Games/rhythmTestGBA.prefab | 361 +++++++++++----- .../Animation/Number BG/BG.controller | 2 +- .../Animation/Number BG/FlashBG.anim | 16 +- .../Animation/Number BG/FlashHit.anim | 96 ++--- .../Games/RhythmTestGBA/Animation/Text.meta | 8 + .../Animation/Text/Text (TMP).controller | 101 +++++ .../Animation/Text/Text (TMP).controller.meta | 8 + .../Animation/Text/TextFlash.anim | 377 ++++++++++++++++ .../Animation/Text/TextFlash.anim.meta | 8 + .../Animation/Text/TextGone.anim | 53 +++ .../Animation/Text/TextGone.anim.meta | 8 + .../Animation/Text/TextIdle.anim | 188 ++++++++ .../Animation/Text/TextIdle.anim.meta | 8 + .../Games/RhythmTestGBA/RhythmTestGBA.cs | 402 +++++++++++++++--- 14 files changed, 1409 insertions(+), 227 deletions(-) create mode 100644 Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text.meta create mode 100644 Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/Text (TMP).controller create mode 100644 Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/Text (TMP).controller.meta create mode 100644 Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/TextFlash.anim create mode 100644 Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/TextFlash.anim.meta create mode 100644 Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/TextGone.anim create mode 100644 Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/TextGone.anim.meta create mode 100644 Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/TextIdle.anim create mode 100644 Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/TextIdle.anim.meta diff --git a/Assets/Resources/Games/rhythmTestGBA.prefab b/Assets/Resources/Games/rhythmTestGBA.prefab index f419de14..80870add 100644 --- a/Assets/Resources/Games/rhythmTestGBA.prefab +++ b/Assets/Resources/Games/rhythmTestGBA.prefab @@ -1,5 +1,201 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1 &499224256258785193 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6155477923636244418} + - component: {fileID: 2256808814853800604} + - component: {fileID: 5133068036934783988} + - component: {fileID: 3027704026893852167} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6155477923636244418 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 499224256258785193} + 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: 6652878496978862639} + m_RootOrder: 5 + 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.11083, y: 1.4} + m_SizeDelta: {x: 19.88917, y: 5} + m_Pivot: {x: 0, y: 0} +--- !u!23 &2256808814853800604 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 499224256258785193} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 0 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 1618155055176292627, guid: e5f3069ff426f2546b8168857ad6e0d4, 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: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 15 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &5133068036934783988 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 499224256258785193} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + 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: Testing in progress... + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: e5f3069ff426f2546b8168857ad6e0d4, type: 2} + m_sharedMaterial: {fileID: 1618155055176292627, guid: e5f3069ff426f2546b8168857ad6e0d4, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278216952 + m_fontColor: {r: 0.97255, g: 0.40784317, b: 0, 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: 7 + m_fontSizeBase: 7 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 1 + m_fontSizeMax: 7 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + 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: 0 + 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: 0 + 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: -4.6306386, y: 4.6619124, z: 15.48065, w: -0.8415551} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 2256808814853800604} + m_maskType: 0 +--- !u!95 &3027704026893852167 +Animator: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 499224256258785193} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: 4e7127cc6b4a1c2448e334306954c9d8, 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 &600217526339359680 GameObject: m_ObjectHideFlags: 0 @@ -34,7 +230,7 @@ Transform: - {fileID: 4178580677966809696} - {fileID: 2421602207971768573} m_Father: {fileID: 6652878496978862639} - m_RootOrder: 5 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &787369447362708790 GameObject: @@ -318,8 +514,8 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 6652878496978862639} - m_RootOrder: 4 + m_Father: {fileID: 7141769990670215559} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!212 &491387273021883555 SpriteRenderer: @@ -394,6 +590,39 @@ Animator: m_AllowConstantClipSamplingOptimization: 1 m_KeepAnimatorStateOnDisable: 0 m_WriteDefaultValuesOnDisable: 0 +--- !u!1 &1506994282361560807 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7141769990670215559} + m_Layer: 0 + m_Name: Countdown + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7141769990670215559 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1506994282361560807} + 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: 1230118230611380377} + - {fileID: 3088883937212924141} + m_Father: {fileID: 6652878496978862639} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1730902299297412491 GameObject: m_ObjectHideFlags: 0 @@ -419,7 +648,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1730902299297412491} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 1.804, y: 0.61300004, z: -4.09} + m_LocalPosition: {x: 1.804, y: 0.61300004, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -503,7 +732,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1990977082314958150} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -1.804, y: 0.613, z: -4.09} + m_LocalPosition: {x: -1.804, y: 0.613, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -588,7 +817,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2069064452885481355} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.7, y: 0.3288985, z: -4.085526} + m_LocalPosition: {x: -0.7, y: 0.3288985, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -693,7 +922,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2097296857581379271} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 1.0651015, z: 4.09} + m_LocalPosition: {x: 0, y: 1.0651015, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -701,8 +930,8 @@ Transform: - {fileID: 8123355065386149364} - {fileID: 4285687258972027434} - {fileID: 6053325067073802629} - m_Father: {fileID: 6652878496978862639} - m_RootOrder: 3 + m_Father: {fileID: 7141769990670215559} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!95 &3131245519608349835 Animator: @@ -737,7 +966,7 @@ GameObject: - component: {fileID: 8993181217126341735} - component: {fileID: 7814860204980886555} m_Layer: 0 - m_Name: Flash + m_Name: Note m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -751,12 +980,12 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 3530055773997019990} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.081, y: 1.404, z: 0} - m_LocalScale: {x: 0.8851, y: 0.8851, z: 0.8851} - m_ConstrainProportionsScale: 0 + m_LocalPosition: {x: 0, y: 1.4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 1 m_Children: [] m_Father: {fileID: 6652878496978862639} - m_RootOrder: 2 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!212 &8993181217126341735 SpriteRenderer: @@ -799,7 +1028,7 @@ SpriteRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 4 - m_Sprite: {fileID: 909642824, guid: 76d9b1445caeb484f9254a9dc75c0d8a, type: 3} + m_Sprite: {fileID: -322805595, guid: 4b553aa26f4c3464b8eb213d2c89ecea, type: 3} m_Color: {r: 1, g: 1, b: 1, a: 1} m_FlipX: 0 m_FlipY: 0 @@ -842,7 +1071,7 @@ GameObject: - component: {fileID: 7034237823165530222} - component: {fileID: 3773822188720579104} m_Layer: 0 - m_Name: RhythmTest_2 + m_Name: Background m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -861,7 +1090,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 6652878496978862639} - m_RootOrder: 6 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!212 &3773822188720579104 SpriteRenderer: @@ -941,7 +1170,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4766465362782487485} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: -1.407, z: 0} + m_LocalPosition: {x: 0, y: -1.5, z: 0} m_LocalScale: {x: 0.726, y: 0.726, z: 0.726} m_ConstrainProportionsScale: 0 m_Children: [] @@ -989,7 +1218,7 @@ SpriteRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 3 - m_Sprite: {fileID: 1608426803, guid: 76d9b1445caeb484f9254a9dc75c0d8a, type: 3} + m_Sprite: {fileID: -1229422663, guid: 4b553aa26f4c3464b8eb213d2c89ecea, type: 3} m_Color: {r: 1, g: 1, b: 1, a: 1} m_FlipX: 0 m_FlipY: 0 @@ -1105,90 +1334,6 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 ---- !u!1 &5566258577491883246 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4460373311749401884} - - component: {fileID: 3128082092558731024} - m_Layer: 0 - m_Name: Background - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4460373311749401884 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5566258577491883246} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: -0.73, z: 0} - m_LocalScale: {x: 40.2019, y: 0.8792758, z: 0.8792758} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6652878496978862639} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!212 &3128082092558731024 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5566258577491883246} - 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_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} - 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_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: -20 - m_Sprite: {fileID: 544945474, guid: 76d9b1445caeb484f9254a9dc75c0d8a, type: 3} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 1.51, y: 14.02} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 --- !u!1 &5985063182856050203 GameObject: m_ObjectHideFlags: 0 @@ -1214,7 +1359,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 5985063182856050203} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.7, y: 0.32889855, z: -4.0855255} + m_LocalPosition: {x: 0.7, y: 0.32889855, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -1387,12 +1532,11 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 8087579337852636042} - - {fileID: 4460373311749401884} - {fileID: 1970370886109334539} - - {fileID: 1230118230611380377} - - {fileID: 3088883937212924141} + - {fileID: 7141769990670215559} - {fileID: 5322568188370051010} - {fileID: 7034237823165530222} + - {fileID: 6155477923636244418} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -1410,7 +1554,10 @@ MonoBehaviour: m_EditorClassIdentifier: SoundSequences: [] scheduledInputs: [] + noteFlash: {fileID: 3530055773997019990} + screenText: {fileID: 5133068036934783988} buttonAnimator: {fileID: 3702318791696650226} flashAnimator: {fileID: 7814860204980886555} numberBGAnimator: {fileID: 3131245519608349835} numberAnimator: {fileID: 4403813855415779181} + textAnimator: {fileID: 3027704026893852167} diff --git a/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Number BG/BG.controller b/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Number BG/BG.controller index 5d8e5185..c8c18f77 100644 --- a/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Number BG/BG.controller +++ b/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Number BG/BG.controller @@ -148,7 +148,7 @@ AnimatorStateTransition: m_TransitionDuration: 0.25 m_TransitionOffset: 0 m_ExitTime: 0 - m_HasExitTime: 0 + m_HasExitTime: 1 m_HasFixedDuration: 0 m_InterruptionSource: 0 m_OrderedInterruption: 1 diff --git a/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Number BG/FlashBG.anim b/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Number BG/FlashBG.anim index bef8e7ad..2de9c27d 100644 --- a/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Number BG/FlashBG.anim +++ b/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Number BG/FlashBG.anim @@ -20,7 +20,7 @@ AnimationClip: m_Curve: - serializedVersion: 3 time: 0 - value: {x: -0.695, y: 0.3288985, z: -4.085526} + value: {x: -0.695, y: 0.3288985, z: 0} inSlope: {x: Infinity, y: 0, z: 0} outSlope: {x: Infinity, y: 0, z: 0} tangentMode: 0 @@ -29,7 +29,7 @@ AnimationClip: outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} - serializedVersion: 3 time: 0.06666667 - value: {x: -0.55, y: 0.3288985, z: -4.085526} + value: {x: -0.55, y: 0.3288985, z: 0} inSlope: {x: Infinity, y: 0, z: 0} outSlope: {x: Infinity, y: 0, z: 0} tangentMode: 0 @@ -38,7 +38,7 @@ AnimationClip: outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} - serializedVersion: 3 time: 0.15 - value: {x: -0.55, y: 0.3288985, z: -4.085526} + value: {x: -0.55, y: 0.3288985, z: 0} inSlope: {x: Infinity, y: 0, z: 0} outSlope: {x: Infinity, y: 0, z: 0} tangentMode: 0 @@ -54,7 +54,7 @@ AnimationClip: m_Curve: - serializedVersion: 3 time: 0 - value: {x: 0.695, y: 0.32889855, z: -4.0855255} + value: {x: 0.695, y: 0.32889855, z: 0} inSlope: {x: Infinity, y: 0, z: 0} outSlope: {x: Infinity, y: 0, z: 0} tangentMode: 0 @@ -63,7 +63,7 @@ AnimationClip: outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} - serializedVersion: 3 time: 0.06666667 - value: {x: 0.57, y: 0.32889855, z: -4.0855255} + value: {x: 0.57, y: 0.32889855, z: 0} inSlope: {x: Infinity, y: 0, z: 0} outSlope: {x: Infinity, y: 0, z: 0} tangentMode: 0 @@ -72,7 +72,7 @@ AnimationClip: outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} - serializedVersion: 3 time: 0.15 - value: {x: 0.55, y: 0.32889855, z: -4.0855255} + value: {x: 0.55, y: 0.32889855, z: 0} inSlope: {x: Infinity, y: 0, z: 0} outSlope: {x: Infinity, y: 0, z: 0} tangentMode: 0 @@ -354,7 +354,7 @@ AnimationClip: m_Curve: - serializedVersion: 3 time: 0 - value: -4.085526 + value: 0 inSlope: Infinity outSlope: Infinity tangentMode: 103 @@ -429,7 +429,7 @@ AnimationClip: m_Curve: - serializedVersion: 3 time: 0 - value: -4.0855255 + value: 0 inSlope: Infinity outSlope: Infinity tangentMode: 103 diff --git a/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Number BG/FlashHit.anim b/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Number BG/FlashHit.anim index 4aa49beb..e4517dc4 100644 --- a/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Number BG/FlashHit.anim +++ b/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Number BG/FlashHit.anim @@ -20,7 +20,7 @@ AnimationClip: m_Curve: - serializedVersion: 3 time: 0 - value: {x: -0.695, y: 0.3288985, z: -4.085526} + value: {x: -0.695, y: 0.3288985, z: 0} inSlope: {x: Infinity, y: 0, z: 0} outSlope: {x: Infinity, y: 0, z: 0} tangentMode: 0 @@ -29,7 +29,7 @@ AnimationClip: outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} - serializedVersion: 3 time: 0.06666667 - value: {x: -0.55, y: 0.3288985, z: -4.085526} + value: {x: -0.55, y: 0.3288985, z: 0} inSlope: {x: Infinity, y: 0, z: 0} outSlope: {x: Infinity, y: 0, z: 0} tangentMode: 0 @@ -38,7 +38,7 @@ AnimationClip: outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} - serializedVersion: 3 time: 0.15 - value: {x: -0.55, y: 0.3288985, z: -4.085526} + value: {x: -0.55, y: 0.3288985, z: 0} inSlope: {x: Infinity, y: 0, z: 0} outSlope: {x: Infinity, y: 0, z: 0} tangentMode: 0 @@ -54,7 +54,7 @@ AnimationClip: m_Curve: - serializedVersion: 3 time: 0 - value: {x: 0.695, y: 0.32889855, z: -4.0855255} + value: {x: 0.695, y: 0.32889855, z: 0} inSlope: {x: Infinity, y: 0, z: 0} outSlope: {x: Infinity, y: 0, z: 0} tangentMode: 0 @@ -63,7 +63,7 @@ AnimationClip: outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} - serializedVersion: 3 time: 0.06666667 - value: {x: 0.55, y: 0.32889855, z: -4.0855255} + value: {x: 0.55, y: 0.32889855, z: 0} inSlope: {x: Infinity, y: 0, z: 0} outSlope: {x: Infinity, y: 0, z: 0} tangentMode: 0 @@ -72,7 +72,7 @@ AnimationClip: outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} - serializedVersion: 3 time: 0.15 - value: {x: 0.55, y: 0.32889855, z: -4.0855255} + value: {x: 0.55, y: 0.32889855, z: 0} inSlope: {x: Infinity, y: 0, z: 0} outSlope: {x: Infinity, y: 0, z: 0} tangentMode: 0 @@ -88,7 +88,7 @@ AnimationClip: m_Curve: - serializedVersion: 3 time: 0 - value: {x: -1.804, y: 0.613, z: -4.09} + value: {x: -1.804, y: 0.613, z: 0} inSlope: {x: 0, y: 0, z: 0} outSlope: {x: 0, y: 0, z: 0} tangentMode: 0 @@ -113,7 +113,7 @@ AnimationClip: m_Curve: - serializedVersion: 3 time: 0 - value: {x: 1.804, y: 0.61300004, z: -4.09} + value: {x: 1.804, y: 0.61300004, z: 0} inSlope: {x: 0, y: 0, z: 0} outSlope: {x: 0, y: 0, z: 0} tangentMode: 0 @@ -293,60 +293,60 @@ AnimationClip: isPPtrCurve: 0 - serializedVersion: 2 path: 1403651259 - attribute: 1 + attribute: 3305885265 script: {fileID: 0} - typeID: 4 + typeID: 212 customType: 0 isPPtrCurve: 0 - serializedVersion: 2 path: 2872654745 - attribute: 1 + attribute: 3305885265 script: {fileID: 0} - typeID: 4 + typeID: 212 customType: 0 isPPtrCurve: 0 + - serializedVersion: 2 + path: 3663022166 + attribute: 3305885265 + script: {fileID: 0} + typeID: 212 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1963678224 + attribute: 3305885265 + script: {fileID: 0} + typeID: 212 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 3663022166 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + - serializedVersion: 2 + path: 1963678224 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 - serializedVersion: 2 path: 1403651259 - attribute: 3305885265 + attribute: 1 script: {fileID: 0} - typeID: 212 + typeID: 4 customType: 0 isPPtrCurve: 0 - serializedVersion: 2 path: 2872654745 - attribute: 3305885265 + attribute: 1 script: {fileID: 0} - typeID: 212 + typeID: 4 customType: 0 isPPtrCurve: 0 - - serializedVersion: 2 - path: 3663022166 - attribute: 3305885265 - script: {fileID: 0} - typeID: 212 - customType: 0 - isPPtrCurve: 0 - - serializedVersion: 2 - path: 1963678224 - attribute: 3305885265 - script: {fileID: 0} - typeID: 212 - customType: 0 - isPPtrCurve: 0 - - serializedVersion: 2 - path: 3663022166 - attribute: 0 - script: {fileID: 0} - typeID: 212 - customType: 23 - isPPtrCurve: 1 - - serializedVersion: 2 - path: 1963678224 - attribute: 0 - script: {fileID: 0} - typeID: 212 - customType: 23 - isPPtrCurve: 1 pptrCurveMapping: - {fileID: 399106758, guid: 76d9b1445caeb484f9254a9dc75c0d8a, type: 3} - {fileID: -437616401, guid: 76d9b1445caeb484f9254a9dc75c0d8a, type: 3} @@ -436,7 +436,7 @@ AnimationClip: m_Curve: - serializedVersion: 3 time: 0 - value: -4.085526 + value: 0 inSlope: Infinity outSlope: Infinity tangentMode: 103 @@ -511,7 +511,7 @@ AnimationClip: m_Curve: - serializedVersion: 3 time: 0 - value: -4.0855255 + value: 0 inSlope: Infinity outSlope: Infinity tangentMode: 103 @@ -698,7 +698,7 @@ AnimationClip: m_Curve: - serializedVersion: 3 time: 0 - value: -4.09 + value: 0 inSlope: 0 outSlope: 0 tangentMode: 136 @@ -782,7 +782,7 @@ AnimationClip: m_Curve: - serializedVersion: 3 time: 0 - value: -4.09 + value: 0 inSlope: 0 outSlope: 0 tangentMode: 136 diff --git a/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text.meta b/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text.meta new file mode 100644 index 00000000..098bc0d0 --- /dev/null +++ b/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ea23a56f302dcca4ca7b30839e958b36 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/Text (TMP).controller b/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/Text (TMP).controller new file mode 100644 index 00000000..c47035c9 --- /dev/null +++ b/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/Text (TMP).controller @@ -0,0 +1,101 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1102 &-4096736772628457868 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: TextFlash + 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: 3ef21493912d35d48a088ee8c15c48f4, 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: Text (TMP) + serializedVersion: 5 + m_AnimatorParameters: [] + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 7258395906433341195} + 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 &6981283610964809230 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: TextIdle + 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: 7a0d49a32be3bef4ab304ca710a511a4, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1107 &7258395906433341195 +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: -4096736772628457868} + m_Position: {x: 240, y: 190, z: 0} + - serializedVersion: 1 + m_State: {fileID: 6981283610964809230} + m_Position: {x: 235, y: 65, 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: 6981283610964809230} diff --git a/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/Text (TMP).controller.meta b/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/Text (TMP).controller.meta new file mode 100644 index 00000000..234320d3 --- /dev/null +++ b/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/Text (TMP).controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4e7127cc6b4a1c2448e334306954c9d8 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/TextFlash.anim b/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/TextFlash.anim new file mode 100644 index 00000000..79106851 --- /dev/null +++ b/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/TextFlash.anim @@ -0,0 +1,377 @@ +%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: TextFlash + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.9725491 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.11666667 + value: 0.4862745 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.23333333 + value: 0.4862745 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_fontColor.r + path: + classID: 114 + script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.4078432 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.11666667 + value: 0.1568628 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.23333333 + value: 0.1568628 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_fontColor.g + path: + classID: 114 + script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.11666667 + value: 0 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.23333333 + value: 0 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_fontColor.b + path: + classID: 114 + script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.11666667 + value: 0 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.23333333 + value: 0 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._OutlineWidth + path: + classID: 23 + script: {fileID: 0} + m_PPtrCurves: [] + 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: 2110649717 + script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 269488542 + script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 1618666769 + script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 2383718995 + script: {fileID: 0} + typeID: 23 + customType: 22 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.23333333 + 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: 0.9725491 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.11666667 + value: 0.4862745 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.23333333 + value: 0.4862745 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_fontColor.r + path: + classID: 114 + script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.4078432 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.11666667 + value: 0.1568628 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.23333333 + value: 0.1568628 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_fontColor.g + path: + classID: 114 + script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.11666667 + value: 0 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.23333333 + value: 0 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_fontColor.b + path: + classID: 114 + script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.11666667 + value: 0 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.23333333 + value: 0 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._OutlineWidth + path: + classID: 23 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/TextFlash.anim.meta b/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/TextFlash.anim.meta new file mode 100644 index 00000000..86e33723 --- /dev/null +++ b/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/TextFlash.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3ef21493912d35d48a088ee8c15c48f4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/TextGone.anim b/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/TextGone.anim new file mode 100644 index 00000000..6e47cc44 --- /dev/null +++ b/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/TextGone.anim @@ -0,0 +1,53 @@ +%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: TextGone + 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: [] + 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: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 1 + 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/RhythmTestGBA/Animation/Text/TextGone.anim.meta b/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/TextGone.anim.meta new file mode 100644 index 00000000..35bffefb --- /dev/null +++ b/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/TextGone.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c2512185cbeeb4d438899f86af72910a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/TextIdle.anim b/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/TextIdle.anim new file mode 100644 index 00000000..34224e12 --- /dev/null +++ b/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/TextIdle.anim @@ -0,0 +1,188 @@ +%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: TextIdle + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.97255 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_fontColor.r + path: + classID: 114 + script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.40784 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_fontColor.g + path: + classID: 114 + script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_fontColor.b + path: + classID: 114 + script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_PPtrCurves: [] + 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: 2110649717 + script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 269488542 + script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 1618666769 + script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0 + 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: 0.97255 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_fontColor.r + path: + classID: 114 + script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.40784 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_fontColor.g + path: + classID: 114 + script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_fontColor.b + path: + classID: 114 + script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/TextIdle.anim.meta b/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/TextIdle.anim.meta new file mode 100644 index 00000000..34339acd --- /dev/null +++ b/Assets/Resources/Sprites/Games/RhythmTestGBA/Animation/Text/TextIdle.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7a0d49a32be3bef4ab304ca710a511a4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Games/RhythmTestGBA/RhythmTestGBA.cs b/Assets/Scripts/Games/RhythmTestGBA/RhythmTestGBA.cs index 68aa7e82..83dcdc1c 100644 --- a/Assets/Scripts/Games/RhythmTestGBA/RhythmTestGBA.cs +++ b/Assets/Scripts/Games/RhythmTestGBA/RhythmTestGBA.cs @@ -1,8 +1,10 @@ using System; +using System.Text; using System.Linq; using System.Collections; using System.Collections.Generic; using UnityEngine; +using TMPro; using HeavenStudio.Util; using HeavenStudio.InputSystem; @@ -37,21 +39,31 @@ namespace HeavenStudio.Games.Loaders return new Minigame("rhythmTestGBA", "Rhythm Test (GBA) \n(Rhythm-kan Check)", "2DD816", false, false, new List() { - new GameAction("countin", "Start Beeping") + new GameAction("countin", "Change Screen Beeping Properties") { - function = delegate { RhythmTestGBA.instance.KeepTheBeep(eventCaller.currentEntity.beat, eventCaller.currentEntity.length, eventCaller.currentEntity["toggle"], eventCaller.currentEntity["auto"]); }, + function = delegate { RhythmTestGBA.instance.KTBPrep(eventCaller.currentEntity.beat, eventCaller.currentEntity.length, eventCaller.currentEntity["toggle"], eventCaller.currentEntity["auto"], + eventCaller.currentEntity["image"], + eventCaller.currentEntity["textFlash"], eventCaller.currentEntity["textDisplay"], eventCaller.currentEntity["hasSound"]); }, defaultLength = 1f, resizable = true, parameters = new List() { - new Param("toggle", true, "Toggle", "Toggle the automatic beeping on or off."), + new Param("toggle", true, "Toggle", "Toggle the beeping on or off."), new Param("auto", false, "Auto", "Toggle if the machine should beep automatically."), + new Param("image", RhythmTestGBA.PulseOption.Note, "Screen Image", "Set what appears on the machine's screen.", new List() + { + new Param.CollapseParam((x, _) => (int)x == (int)RhythmTestGBA.PulseOption.Text, new string[] { "textFlash", "textDisplay" }), + }), + new Param("textDisplay", "Get ready...", "Text to Display", "Changes the text displayed on the screen."), + new Param("textFlash", true, "Text Flash", "Toggle if the text on the screen pulses to the beat."), + new Param("hasSound", true, "Has Sound", "Toggle if the beeping plays sound or not.") + }, }, new GameAction("button", "Start Keep-the-Beat") { - function = delegate { var e = eventCaller.currentEntity; RhythmTestGBA.StartKeepbeat(e.beat); }, + preFunction = delegate { var e = eventCaller.currentEntity; RhythmTestGBA.PreStartKeepbeat(e.beat, e.length); }, defaultLength = 1f, resizable = false, @@ -59,12 +71,17 @@ namespace HeavenStudio.Games.Loaders new GameAction("stopktb", "Stop Keep-the-Beat") { - preFunction = delegate { RhythmTestGBA.instance.PreStopKeepbeat(eventCaller.currentEntity.beat, eventCaller.currentEntity.length, eventCaller.currentEntity["mutecue"]); }, + preFunction = delegate { RhythmTestGBA.instance.PreStopKeepbeat(eventCaller.currentEntity.beat, eventCaller.currentEntity.length, eventCaller.currentEntity["mutecue"], eventCaller.currentEntity["finishText"], eventCaller.currentEntity["textDisplay"]); }, defaultLength = 4f, resizable = false, parameters = new List() { new Param("mutecue", false, "Mute Cue", "Mute the sound cue signifying the end of the keep-the-beat section."), + new Param("finishText", true, "Finish Text", "Set if text appears once the keep-the-bet section is finished.", new List() + { + new Param.CollapseParam((x, _) => (bool)x, new string[] { "textDisplay" }), + }), + new Param("textDisplay", "Test complete!", "Text to Display", "Changes the text displayed on the screen."), } }, @@ -105,25 +122,40 @@ namespace HeavenStudio.Games { /// This class handles the minigame logic. /// Minigame inherits directly from MonoBehaviour, and adds Heaven Studio specific methods to override. + using Scripts_RhythmTestGBA; public class RhythmTestGBA : Minigame { public static RhythmTestGBA instance; static List queuedButton = new(); bool goBeep; - //bool stopBeep; Unused value - Marc + bool stopAutoBeep; bool keepPressing; bool shouldmute; bool disableCount; + bool beatPulseTextFlash = false; + bool beepHasSound; + bool canBeep = false; + //bool isBeeping = false; + + int screenFXType; private double numberSelect; private float countLength; + [NonSerialized] public List noBopIntervals = new(), + noBeepIntervals = new(); + + [Header("Objects")] + [SerializeField] GameObject noteFlash; + [SerializeField] TMP_Text screenText; + [Header("Animators")] [SerializeField] Animator buttonAnimator; [SerializeField] Animator flashAnimator; [SerializeField] Animator numberBGAnimator; [SerializeField] Animator numberAnimator; + [SerializeField] Animator textAnimator; [Header("Properties")] //private static double startBlippingBeat = double.MaxValue; Unused value - Marc @@ -136,18 +168,36 @@ namespace HeavenStudio.Games GameEvent button = new GameEvent(); double lastButton = double.MaxValue; - - // public struct QueuedButton - // { -// public double beat; -// public float length; - // } -// static List queuedButton = new List(); + + public enum PulseOption + { + Note, + Text + } + + public enum BeepNoise: int + { + defaultBeep = 0, + highBeep = 1, + dingBeep = 2 + } + + public int beepType = 0; + //public struct QueuedButton + //{ + // public double beat; + // public float length; + //} + //static List queuedButton = new List(); private void Awake() { instance = this; - + screenText.text = ""; + SetupBopRegion("rhythmTestGBA", "countin", "auto"); + var currentBeat = Conductor.instance.unswungSongPositionInBeatsAsDouble; + KeepTheBeep(currentBeat, 1f, false, false, 0, true); + HandleBeeps(); } void OnDestroy() @@ -208,36 +258,202 @@ namespace HeavenStudio.Games } } - public void KeepTheBeep(double beat, float length, bool shouldBeep, bool autoBeep) + //public override void OnGameSwitch (double beat) + //{ + + // var actions = GameManager.instance.Beatmap.Entities.FindAll(e => e.datamodel.Split('/')[0] == "rhythmTestGBA"); + // var tempStops = actions.FindAll(e => e.datamodel == "rhythmTestGBA/stopktb"); + + // foreach (var e in tempStops.FindAll(e => e.beat < beat && e.beat + 2 > beat)) { + // PreStopKeepbeat(e.beat, e.length, e["mutecue"], e["textFlash"]); + // } + //} + + private void HandleBeeps() { - //stopBeep = false; Unused value - Marc - if (!shouldBeep) { goBeep = false; return;} - goBeep = autoBeep; - if (shouldBeep) + List events = EventCaller.GetAllInGameManagerList("rhythmTestGBA", new string[] { "countin" }); + + foreach (var e in events) { - for (int i = 0; i < length; i++) - { - BeatAction.New(instance, new List() - { - new BeatAction.Action(beat + i, delegate - { - PlayFlashFX(); - SoundByte.PlayOneShotGame("rhythmTestGBA/blip"); - - }) - }); - - } + noBopIntervals.Add(new Interval(e.beat, e.beat + 1)); + } + + foreach (var v in events) + { + noBeepIntervals.Add(new Interval(v.beat, v.beat + v.length)); } } + public void KTBPrep(double beat, float length, bool shouldBeep, bool autoBeep, int type, bool textFlash, string textDisplay, bool hasSound) + { + canBeep = true; + if (type == 1) + { + screenText.text = textDisplay; + } + beepType = 0; + screenFXType = type; + beepHasSound = hasSound; + KeepTheBeep(beat, length, shouldBeep, autoBeep, type, textFlash); + } + + public void KeepTheBeep(double beat, float length, bool shouldBeep, bool autoBeep, int type, bool textFlash) + { + + beatPulseTextFlash = textFlash; + if (beepHasSound) + { + switch (beepType) + { + case (int)BeepNoise.defaultBeep: + SoundByte.PlayOneShotGame("rhythmTestGBA/blip"); + break; + case (int)BeepNoise.highBeep: + SoundByte.PlayOneShotGame("rhythmTestGBA/blip2"); + break; + case (int)BeepNoise.dingBeep: + SoundByte.PlayOneShotGame("rhythmTestGBA/end_ding"); + break; + }} + + if (shouldBeep) + { + PlayFakeFlashFX(type, textFlash); + List beeps = new List(); + for (int i = 0; i < length; i++) + { + beeps.Add(new BeatAction.Action(beat + i, delegate { + PlayFlashFX();} + + )); + } + BeatAction.New(instance, beeps); + } + } + + + //goBeep = autoBeep; + //if (autoBeep) + //{ + // PlayFlashFX(beatPulseTextFlash, type); + // SoundByte.PlayOneShotGame("rhythmTestGBA/blip"); + //} + + // if (shouldBeep && !autoBeep) + // { + + //if (!isBeeping) + // { + // PlayFlashFX(beatPulseTextFlash, type); + // SoundByte.PlayOneShotGame("rhythmTestGBA/blip"); + // isBeeping = true; + // } + // for (int i = 0; i < length; i++) + // { + // BeatAction.New(instance, new List() + // { + // new BeatAction.Action(beat + i, delegate + // { + // PlayFlashFX(beatPulseTextFlash, type); + + // SoundByte.PlayOneShotGame("rhythmTestGBA/blip"); + // }) + // }); + + // } + // } + // } + public void PlayFlashFX() { numberAnimator.Play("Idle"); numberBGAnimator.Play("Idle"); - flashAnimator.Play("KTBPulse", 0 ,0); + var currentBeat = Conductor.instance.songPositionInBeatsAsDouble; + if (!noBopIntervals.Any(x => x.Contains(currentBeat))) + + if (beepHasSound){ + if(!noBeepIntervals.Any(x => x.Contains(currentBeat))) + { + { + switch (beepType) + { + case (int)BeepNoise.defaultBeep: + SoundByte.PlayOneShotGame("rhythmTestGBA/blip"); + break; + case (int)BeepNoise.highBeep: + SoundByte.PlayOneShotGame("rhythmTestGBA/blip2"); + break; + case (int)BeepNoise.dingBeep: + SoundByte.PlayOneShotGame("rhythmTestGBA/end_ding"); + break; + } + } + }} + if (screenFXType == 0) + { + + noteFlash.SetActive(true); + flashAnimator.DoScaledAnimationAsync("KTBPulse", 0.5f); + screenText.text = ""; + } + else if (beatPulseTextFlash){ + + noteFlash.SetActive(false); + textAnimator.DoScaledAnimationAsync("TextFlash", 0.5f); + } + else + { + + noteFlash.SetActive(false); + textAnimator.DoScaledAnimationAsync("TextIdle", 0.5f); + } + + BeatAction.New(instance, new List() + { + new BeatAction.Action(currentBeat+0.9f, delegate {noteFlash.SetActive(false);}) + }); } + public void PlayFakeFlashFX(int fakeFXType, bool textFlash) + { + numberAnimator.Play("Idle"); + numberBGAnimator.Play("Idle"); + + var currentBeat = Conductor.instance.songPositionInBeatsAsDouble; + if (fakeFXType == 0) + { + + noteFlash.SetActive(true); + flashAnimator.DoScaledAnimationAsync("KTBPulse", 0.5f); + screenText.text = ""; + + + } + else if (textFlash){ + + noteFlash.SetActive(false); + textAnimator.DoScaledAnimationAsync("TextFlash", 0.5f); + } + else + { + + noteFlash.SetActive(false); + textAnimator.DoScaledAnimationAsync("TextIdle", 0.5f); + } + + BeatAction.New(instance, new List() + { + //new BeatAction.Action(beat-1, delegate {KillBeeps(beat);}), + new BeatAction.Action(currentBeat+0.9f, delegate {noteFlash.SetActive(false);}) + }); + } + + + public void ChangeText(double beat, string newText, bool newTextFlash) + { + screenText.text = newText; + beatPulseTextFlash = newTextFlash; + } public void PressButton() @@ -248,79 +464,112 @@ namespace HeavenStudio.Games } - public void PreStopKeepbeat(double beat, float length, bool muted) + public void PreStopKeepbeat(double beat, float length, bool muted, bool hasFinish, string finishText) { + noBeepIntervals.Add(new Interval(beat, beat + length)); + + shouldmute = muted; + noBeepIntervals.Add(new Interval(beat, beat + length)); + + noBeepIntervals.Add(new Interval(beat, beat + length)); BeatAction.New(instance, new List() { - new BeatAction.Action(beat-1, delegate {killBeeps(beat);}), - new BeatAction.Action(beat, delegate {StopKeepbeat(beat, shouldmute);}) + + new BeatAction.Action(beat, delegate {StopKeepbeat(beat, length, shouldmute, hasFinish, finishText); + canBeep = false; + }) + }); + } - public void StopKeepbeat(double beat, bool shouldmute) + public void StopKeepbeat(double beat, float length, bool shouldmute, bool hasFinish, string finishText) { - - keepPressing = false; + ScheduleInput(beat, 1f, InputAction_BasicPress, ButtonSuccess, ButtonFailure, ButtonEmpty); ScheduleInput(beat, 2f, InputAction_BasicPress, ButtonSuccess, ButtonFailure, ButtonEmpty); ScheduleInput(beat, 3f, InputAction_BasicPress, ButtonSuccess, ButtonFailure, ButtonEmpty); + - - BeatAction.New(instance, new List() { new BeatAction.Action(beat, delegate {PlayFlashFX();}), - new BeatAction.Action(beat+1, delegate {PlayFlashFX();}), + new BeatAction.Action(beat+1, delegate {PlayFlashFX();}), - new BeatAction.Action(beat+2, delegate {PlayFlashFX();}), + new BeatAction.Action(beat+2, delegate {PlayFlashFX();}), - new BeatAction.Action(beat+3, delegate { SoundByte.PlayOneShotGame("rhythmTestGBA/end_ding", beat: beat, forcePlay: true);}) + + + new BeatAction.Action(beat+3, delegate { SoundByte.PlayOneShotGame("rhythmTestGBA/end_ding", beat: beat, forcePlay: true); + + if (hasFinish) + { + screenText.text = finishText; + textAnimator.DoScaledAnimationAsync("TextIdle", 0.5f); + } + + }) }); + if (!shouldmute) { - SoundByte.PlayOneShotGame("rhythmTestGBA/blip2"); - BeatAction.New(instance, new List() - { - new BeatAction.Action(beat+1, delegate { SoundByte.PlayOneShotGame("rhythmTestGBA/blip2", beat: beat);}), - new BeatAction.Action(beat+2, delegate { SoundByte.PlayOneShotGame("rhythmTestGBA/blip2", beat: beat);}) - }); - + MultiSound.Play(new MultiSound.Sound[] { + new MultiSound.Sound("rhythmTestGBA/blip2", beat), + new MultiSound.Sound("rhythmTestGBA/blip2", beat+1), + new MultiSound.Sound("rhythmTestGBA/blip2", beat+2), + + }); } - } - - - public void StopKeepbeatInput(double beat) - { - ScheduleInput(beat, 0f, InputAction_BasicPress, ButtonSuccess, ButtonFailure, ButtonEmpty); - PlayFlashFX(); + + + } public override void OnBeatPulse(double beat) { - if (goBeep) + if (BeatIsInBopRegion(beat) && canBeep) { PlayFlashFX(); - SoundByte.PlayOneShotGame("rhythmTestGBA/blip"); } } - public void killBeeps(double beat) + //public void KillBeeps(double beat) + //{ + // goBeep = false; + //isBeeping = false; + //} + + public static void PreStartKeepbeat(double beat, float length) { - goBeep = false; + if (GameManager.instance.currentGame == "rhythmTestGBA") + { + StartKeepbeat(beat, length); + } + else + { + BeatAction.New(instance, new List() + { + + new BeatAction.Action(beat, delegate {queuedButton.Add(wantButton);}), + } + ); + } } + + - public static void StartKeepbeat(double beat) + public static void StartKeepbeat(double beat, float length) { RhythmTestGBA.wantButton = beat-1; @@ -328,6 +577,7 @@ namespace HeavenStudio.Games } + public void PreCountDown(double startBeat, float length, int countdownNumber) { if (keepPressing) return; @@ -667,3 +917,29 @@ namespace HeavenStudio.Games } } + +namespace HeavenStudio.Games.Scripts_RhythmTestGBA +{ + public class Interval + { + private readonly double _start; + private readonly double _end; + private readonly Func _leftComparer; + private readonly Func _rightComparer; + + public double Start => _start; + public double End => _end; + + public Interval(double start, double end, bool isLeftClosed = true, bool isRightClosed = false) + { + _start = start; + _end = end; + + _leftComparer = isLeftClosed ? (value, boundary) => value >= boundary : (value, boundary) => value > boundary; + _rightComparer = isRightClosed ? (value, boundary) => value <= boundary : (value, boundary) => value < boundary; + } + + public bool Contains(double value) => _leftComparer(value, _start) && _rightComparer(value, _end); + } +} +