From f061ebcfeb00875b7fe4c65bde559033760c3330 Mon Sep 17 00:00:00 2001 From: fu-majime Date: Mon, 1 Apr 2024 15:22:59 +0900 Subject: [PATCH] Color event --- Assets/Resources/Games/fillbots.prefab | 120 +++---- .../Prefabs/Games/Fillbots/BotSmall.prefab | 8 +- ...rmRetraction2.wav => armRetractionPop.wav} | Bin ...on2.wav.meta => armRetractionPop.wav.meta} | 0 .../Fillbots/Animations/Small/Success.anim | 168 +++++++++- .../Games/Fillbots/Fillbots_main.png.meta | 13 +- Assets/Scripts/Games/Fillbots/Fillbots.cs | 297 ++++++++++++++---- Assets/Scripts/Games/Fillbots/FullBody.cs | 4 +- Assets/Scripts/Games/Fillbots/NtrFillbot.cs | 154 +++++---- 9 files changed, 558 insertions(+), 206 deletions(-) rename Assets/Resources/Sfx/games/fillbots/{armRetraction2.wav => armRetractionPop.wav} (100%) rename Assets/Resources/Sfx/games/fillbots/{armRetraction2.wav.meta => armRetractionPop.wav.meta} (100%) diff --git a/Assets/Resources/Games/fillbots.prefab b/Assets/Resources/Games/fillbots.prefab index 4c0fd34ec..b6689ba11 100644 --- a/Assets/Resources/Games/fillbots.prefab +++ b/Assets/Resources/Games/fillbots.prefab @@ -981,7 +981,7 @@ SpriteRenderer: m_SortingLayer: 0 m_SortingOrder: 3 m_Sprite: {fileID: 21300000, guid: 0f6862a559f12a84488f618e606bec2e, type: 3} - m_Color: {r: 1, g: 1, b: 1, a: 0.5411765} + m_Color: {r: 1, g: 1, b: 1, a: 0.41960785} m_FlipX: 0 m_FlipY: 0 m_DrawMode: 0 @@ -1191,7 +1191,6 @@ Transform: - {fileID: 1588626132168789274} - {fileID: 5118038246686077097} - {fileID: 1945548446059564651} - - {fileID: 7115372295053300498} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -1233,6 +1232,21 @@ MonoBehaviour: impactMaterial: {fileID: 2100000, guid: ab21c8af63622c646a685aa8b7c3c9a4, type: 2} conveyerBelt: {fileID: 9075535989594452730} blackout: {fileID: 3757292687665858054} + fillerRenderer: + - {fileID: 5394476682869087445} + - {fileID: 8336940640779813026} + - {fileID: 3164996977270515796} + - {fileID: 7828360752312686874} + otherRenderer: + - {fileID: 5193366646839469736} + - {fileID: 5660383285804467032} + - {fileID: 8778064963795826291} + - {fileID: 7995760259006827823} + - {fileID: 7154959971140400697} + - {fileID: 727036483507506023} + - {fileID: 68801378834844227} + - {fileID: 20845509605144322} + BGPlane: {fileID: 4596246901150042945} --- !u!1 &7022196375650281210 GameObject: m_ObjectHideFlags: 0 @@ -1803,7 +1817,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3} propertyPath: m_LocalPosition.x - value: -3.87 + value: -3.84 objectReference: {fileID: 0} - target: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3} propertyPath: m_LocalPosition.y @@ -1862,6 +1876,11 @@ SpriteRenderer: m_CorrespondingSourceObject: {fileID: 670297123598137949, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3} m_PrefabInstance: {fileID: 1298767332955391950} m_PrefabAsset: {fileID: 0} +--- !u!212 &5660383285804467032 stripped +SpriteRenderer: + m_CorrespondingSourceObject: {fileID: 6668598056782333078, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3} + m_PrefabInstance: {fileID: 1298767332955391950} + m_PrefabAsset: {fileID: 0} --- !u!1001 &1484241650340684350 PrefabInstance: m_ObjectHideFlags: 0 @@ -1875,7 +1894,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3} propertyPath: m_LocalPosition.x - value: -5.1 + value: -5.07 objectReference: {fileID: 0} - target: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3} propertyPath: m_LocalPosition.y @@ -1934,6 +1953,11 @@ SpriteRenderer: m_CorrespondingSourceObject: {fileID: 670297123598137949, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3} m_PrefabInstance: {fileID: 1484241650340684350} m_PrefabAsset: {fileID: 0} +--- !u!212 &5193366646839469736 stripped +SpriteRenderer: + m_CorrespondingSourceObject: {fileID: 6668598056782333078, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3} + m_PrefabInstance: {fileID: 1484241650340684350} + m_PrefabAsset: {fileID: 0} --- !u!1001 &2691583618534683365 PrefabInstance: m_ObjectHideFlags: 0 @@ -1947,7 +1971,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3} propertyPath: m_LocalPosition.x - value: -2.65 + value: -2.62 objectReference: {fileID: 0} - target: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3} propertyPath: m_LocalPosition.y @@ -2006,6 +2030,11 @@ Animator: m_CorrespondingSourceObject: {fileID: 1889225549270412632, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3} m_PrefabInstance: {fileID: 2691583618534683365} m_PrefabAsset: {fileID: 0} +--- !u!212 &8778064963795826291 stripped +SpriteRenderer: + m_CorrespondingSourceObject: {fileID: 6668598056782333078, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3} + m_PrefabInstance: {fileID: 2691583618534683365} + m_PrefabAsset: {fileID: 0} --- !u!1001 &3638129006627686841 PrefabInstance: m_ObjectHideFlags: 0 @@ -2019,7 +2048,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3} propertyPath: m_LocalPosition.x - value: 2.55 + value: 2.58 objectReference: {fileID: 0} - target: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3} propertyPath: m_LocalPosition.y @@ -2078,6 +2107,11 @@ SpriteRenderer: m_CorrespondingSourceObject: {fileID: 670297123598137949, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3} m_PrefabInstance: {fileID: 3638129006627686841} m_PrefabAsset: {fileID: 0} +--- !u!212 &7995760259006827823 stripped +SpriteRenderer: + m_CorrespondingSourceObject: {fileID: 6668598056782333078, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3} + m_PrefabInstance: {fileID: 3638129006627686841} + m_PrefabAsset: {fileID: 0} --- !u!1001 &4593698792861692591 PrefabInstance: m_ObjectHideFlags: 0 @@ -2091,7 +2125,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3} propertyPath: m_LocalPosition.x - value: 3.82 + value: 3.85 objectReference: {fileID: 0} - target: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3} propertyPath: m_LocalPosition.y @@ -2150,67 +2184,10 @@ SpriteRenderer: m_CorrespondingSourceObject: {fileID: 670297123598137949, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3} m_PrefabInstance: {fileID: 4593698792861692591} m_PrefabAsset: {fileID: 0} ---- !u!1001 &5998474256261010265 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 5681901217470064799} - m_Modifications: - - target: {fileID: 3566918977115226187, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 3566918977115226187, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3566918977115226187, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3} - propertyPath: m_LocalPosition.y - value: -4.52 - objectReference: {fileID: 0} - - target: {fileID: 3566918977115226187, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3566918977115226187, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 3566918977115226187, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3} - propertyPath: m_LocalRotation.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 3566918977115226187, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3} - propertyPath: m_LocalRotation.y - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 3566918977115226187, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 3566918977115226187, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3566918977115226187, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3566918977115226187, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7038732336128464859, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3} - propertyPath: m_Name - value: BotSmall - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3} ---- !u!4 &7115372295053300498 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 3566918977115226187, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3} - m_PrefabInstance: {fileID: 5998474256261010265} +--- !u!212 &7154959971140400697 stripped +SpriteRenderer: + m_CorrespondingSourceObject: {fileID: 6668598056782333078, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3} + m_PrefabInstance: {fileID: 4593698792861692591} m_PrefabAsset: {fileID: 0} --- !u!1001 &6241264839279890417 PrefabInstance: @@ -2225,7 +2202,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3} propertyPath: m_LocalPosition.x - value: 5.1 + value: 5.13 objectReference: {fileID: 0} - target: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3} propertyPath: m_LocalPosition.y @@ -2269,6 +2246,11 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3} +--- !u!212 &727036483507506023 stripped +SpriteRenderer: + m_CorrespondingSourceObject: {fileID: 6668598056782333078, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3} + m_PrefabInstance: {fileID: 6241264839279890417} + m_PrefabAsset: {fileID: 0} --- !u!4 &5170411475464246758 stripped Transform: m_CorrespondingSourceObject: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3} diff --git a/Assets/Resources/Prefabs/Games/Fillbots/BotSmall.prefab b/Assets/Resources/Prefabs/Games/Fillbots/BotSmall.prefab index 3a0771667..97be4262a 100644 --- a/Assets/Resources/Prefabs/Games/Fillbots/BotSmall.prefab +++ b/Assets/Resources/Prefabs/Games/Fillbots/BotSmall.prefab @@ -26,7 +26,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 630223578108791356} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0.78, z: 0} + m_LocalPosition: {x: 0, y: 0.79, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -133,7 +133,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1038822625059552157} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 1.66, z: 0} + m_LocalPosition: {x: 0, y: 1.67, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -914,7 +914,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7716400162364290482} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0.68, z: 0} + m_LocalPosition: {x: 0, y: 0.67, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -998,7 +998,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7983486945364815282} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 1.25, z: 0} + m_LocalPosition: {x: 0, y: 1.24, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] diff --git a/Assets/Resources/Sfx/games/fillbots/armRetraction2.wav b/Assets/Resources/Sfx/games/fillbots/armRetractionPop.wav similarity index 100% rename from Assets/Resources/Sfx/games/fillbots/armRetraction2.wav rename to Assets/Resources/Sfx/games/fillbots/armRetractionPop.wav diff --git a/Assets/Resources/Sfx/games/fillbots/armRetraction2.wav.meta b/Assets/Resources/Sfx/games/fillbots/armRetractionPop.wav.meta similarity index 100% rename from Assets/Resources/Sfx/games/fillbots/armRetraction2.wav.meta rename to Assets/Resources/Sfx/games/fillbots/armRetractionPop.wav.meta diff --git a/Assets/Resources/Sprites/Games/Fillbots/Animations/Small/Success.anim b/Assets/Resources/Sprites/Games/Fillbots/Animations/Small/Success.anim index 3d5dc9a4f..c3a6e8b94 100644 --- a/Assets/Resources/Sprites/Games/Fillbots/Animations/Small/Success.anim +++ b/Assets/Resources/Sprites/Games/Fillbots/Animations/Small/Success.anim @@ -15,7 +15,41 @@ AnimationClip: m_CompressedRotationCurves: [] m_EulerCurves: [] m_PositionCurves: [] - m_ScaleCurves: [] + m_ScaleCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 1, y: 1, z: 1} + inSlope: {x: Infinity, y: Infinity, z: Infinity} + outSlope: {x: Infinity, y: Infinity, z: Infinity} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.33333334 + value: {x: 1, y: 1, z: 1} + inSlope: {x: Infinity, y: Infinity, z: Infinity} + outSlope: {x: Infinity, y: Infinity, z: Infinity} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.41666666 + value: {x: -1, y: 1, z: 1} + inSlope: {x: Infinity, y: Infinity, z: Infinity} + outSlope: {x: Infinity, y: Infinity, z: Infinity} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: m_FloatCurves: - curve: serializedVersion: 2 @@ -44,6 +78,14 @@ AnimationClip: value: {fileID: -1887099881, guid: 4b169e5816c948044a7180609226f690, type: 3} - time: 0.16666667 value: {fileID: 1609464891, guid: 4b169e5816c948044a7180609226f690, type: 3} + - time: 0.25 + value: {fileID: -1887099881, guid: 4b169e5816c948044a7180609226f690, type: 3} + - time: 0.33333334 + value: {fileID: -262485002, guid: 4b169e5816c948044a7180609226f690, type: 3} + - time: 0.41666666 + value: {fileID: -1887099881, guid: 4b169e5816c948044a7180609226f690, type: 3} + - time: 0.5 + value: {fileID: 1609464891, guid: 4b169e5816c948044a7180609226f690, type: 3} attribute: m_Sprite path: classID: 212 @@ -55,6 +97,13 @@ AnimationClip: m_Extent: {x: 0, y: 0, z: 0} m_ClipBindingConstant: genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 3 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 - serializedVersion: 2 path: 3747441678 attribute: 2086281974 @@ -73,12 +122,16 @@ AnimationClip: - {fileID: -262485002, guid: 4b169e5816c948044a7180609226f690, type: 3} - {fileID: -1887099881, guid: 4b169e5816c948044a7180609226f690, type: 3} - {fileID: 1609464891, guid: 4b169e5816c948044a7180609226f690, type: 3} + - {fileID: -1887099881, guid: 4b169e5816c948044a7180609226f690, type: 3} + - {fileID: -262485002, guid: 4b169e5816c948044a7180609226f690, type: 3} + - {fileID: -1887099881, guid: 4b169e5816c948044a7180609226f690, type: 3} + - {fileID: 1609464891, guid: 4b169e5816c948044a7180609226f690, type: 3} m_AnimationClipSettings: serializedVersion: 2 m_AdditiveReferencePoseClip: {fileID: 0} m_AdditiveReferencePoseTime: 0 m_StartTime: 0 - m_StopTime: 0.18333334 + m_StopTime: 0.51666665 m_OrientationOffsetY: 0 m_Level: 0 m_CycleOffset: 0 @@ -113,6 +166,117 @@ AnimationClip: path: Mask classID: 1 script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.33333334 + value: 1 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.41666666 + value: -1 + 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_LocalScale.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.33333334 + value: 1 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.41666666 + value: 1 + 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_LocalScale.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.33333334 + value: 1 + inSlope: Infinity + outSlope: Infinity + tangentMode: 103 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.41666666 + value: 1 + 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_LocalScale.z + path: + classID: 4 + script: {fileID: 0} m_EulerEditorCurves: [] m_HasGenericRootTransform: 0 m_HasMotionFloatCurves: 0 diff --git a/Assets/Resources/Sprites/Games/Fillbots/Fillbots_main.png.meta b/Assets/Resources/Sprites/Games/Fillbots/Fillbots_main.png.meta index 7b427aa53..371182602 100644 --- a/Assets/Resources/Sprites/Games/Fillbots/Fillbots_main.png.meta +++ b/Assets/Resources/Sprites/Games/Fillbots/Fillbots_main.png.meta @@ -1394,7 +1394,7 @@ TextureImporter: width: 208 height: 228 alignment: 9 - pivot: {x: 0.5, y: 0.07017544} + pivot: {x: 0.5, y: 0.065789476} border: {x: 0, y: 0, z: 0, w: 0} outline: [] physicsShape: [] @@ -1415,7 +1415,7 @@ TextureImporter: width: 208 height: 228 alignment: 9 - pivot: {x: 0.5, y: 0.07017544} + pivot: {x: 0.5, y: 0.065789476} border: {x: 0, y: 0, z: 0, w: 0} outline: [] physicsShape: [] @@ -1436,7 +1436,7 @@ TextureImporter: width: 208 height: 262 alignment: 9 - pivot: {x: 0.5, y: 0.07017544} + pivot: {x: 0.5769231, y: 0.06870229} border: {x: 0, y: 0, z: 0, w: 0} outline: [] physicsShape: [] @@ -1457,7 +1457,7 @@ TextureImporter: width: 208 height: 262 alignment: 9 - pivot: {x: 0.5, y: 0.07017544} + pivot: {x: 0.53846157, y: 0.06870229} border: {x: 0, y: 0, z: 0, w: 0} outline: [] physicsShape: [] @@ -1688,7 +1688,7 @@ TextureImporter: width: 208 height: 228 alignment: 9 - pivot: {x: 0.5, y: 0.07017544} + pivot: {x: 0.5, y: 0.065789476} border: {x: 0, y: 0, z: 0, w: 0} outline: [] physicsShape: [] @@ -1982,7 +1982,7 @@ TextureImporter: width: 336 height: 336 alignment: 0 - pivot: {x: 0, y: 0} + pivot: {x: 0.5, y: 0.5} border: {x: 0, y: 0, z: 0, w: 0} outline: [] physicsShape: [] @@ -2005,6 +2005,7 @@ TextureImporter: weights: [] secondaryTextures: [] nameFileIdTable: + Fillbots_main_0: 1077949263 Fillbots_main_1: -1329567388 Fillbots_main_104: 44479687 Fillbots_main_105: 43587656 diff --git a/Assets/Scripts/Games/Fillbots/Fillbots.cs b/Assets/Scripts/Games/Fillbots/Fillbots.cs index bc21511f7..36a6c2bab 100644 --- a/Assets/Scripts/Games/Fillbots/Fillbots.cs +++ b/Assets/Scripts/Games/Fillbots/Fillbots.cs @@ -2,6 +2,7 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; using HeavenStudio.Util; +using Jukebox; namespace HeavenStudio.Games.Loaders { @@ -10,6 +11,25 @@ namespace HeavenStudio.Games.Loaders { public static Minigame AddGame(EventCaller eventCaller) { + var botParams = new List() + { + new Param("alt", false, "Alternate OK"), + new Param("type", Scripts_Fillbots.EndAnim.Both, "Success Reaction", "Set the reaction of the Robot."), + new Param("stop", false, "Stop Conveyer", "Toggle if the conveyer should be stopped when finished."), + new Param("color", false, "Custom Color", "Toggle if the robot color should be changed.", new List() + { + new Param.CollapseParam((x, _) => (bool)x, new string[] { "colorFuel", "colorLampOff", "colorLampOn" }), + }), + new Param("colorFuel", new Color(1f, 0.385f, 0.385f), "Fuel Color", "Set the color of the fuel."), + new Param("colorLampOff", new Color(0.635f, 0.635f, 0.185f), "Off Lamp Color", "Set the color of the off lamp."), + new Param("colorLampOn", new Color(1f, 1f, 0.42f), "On Lamp Color", "Set the color of the on lamp."), + }; + + var customBotParams = new List(botParams); + customBotParams.Insert(0, + new Param("size", Scripts_Fillbots.BotSize.Medium, "Size", "Set the size of the Robot.") + ); + return new Minigame("fillbots", "Fillbots", "FFFFFF", false, false, new List() { new("bop", "Bop") @@ -30,89 +50,97 @@ namespace HeavenStudio.Games.Loaders { preFunction = delegate { var e = eventCaller.currentEntity; - Fillbots.PreSpawnFillbot(e.beat, 3, (int)Scripts_Fillbots.BotSize.Medium, e["colorFuel"], e["colorLampOff"], e["colorLampOn"], e["type"], e["alt"]); + Fillbots.PreSpawnFillbot(e.beat, 3, (int)Scripts_Fillbots.BotSize.Medium, e["colorFuel"], e["colorLampOff"], e["colorLampOn"], e["type"], e["alt"], e["stop"], e["color"]); }, defaultLength = 8f, - parameters = new List() - { - new Param("alt", false, "Alternate OK"), - new Param("type", Scripts_Fillbots.EndAnim.Both, "Success Reaction", "Set the reaction of the Robot."), - new Param("colorFuel", new Color(1f, 0.385f, 0.385f), "Fuel Color", "Set the color of the fuel."), - new Param("colorLampOff", new Color(0.635f, 0.635f, 0.185f), "Off Lamp Color", "Set the color of the off lamp."), - new Param("colorLampOn", new Color(1f, 1f, 0.42f), "On Lamp Color", "Set the color of the on lamp."), - }, + parameters = botParams, }, new GameAction("large", "Large Bot") { preFunction = delegate { var e = eventCaller.currentEntity; - Fillbots.PreSpawnFillbot(e.beat, 7, (int)Scripts_Fillbots.BotSize.Large, e["colorFuel"], e["colorLampOff"], e["colorLampOn"], e["type"], e["alt"]); + Fillbots.PreSpawnFillbot(e.beat, 7, (int)Scripts_Fillbots.BotSize.Large, e["colorFuel"], e["colorLampOff"], e["colorLampOn"], e["type"], e["alt"], e["stop"], e["color"]); }, defaultLength = 12f, - parameters = new List() - { - new Param("alt", false, "Alternate OK"), - new Param("type", Scripts_Fillbots.EndAnim.Both, "Success Reaction", "Set the reaction of the Robot."), - new Param("colorFuel", new Color(1f, 0.385f, 0.385f), "Fuel Color", "Set the color of the fuel."), - new Param("colorLampOff", new Color(0.635f, 0.635f, 0.185f), "Off Lamp Color", "Set the color of the off lamp."), - new Param("colorLampOn", new Color(1f, 1f, 0.42f), "On Lamp Color", "Set the color of the on lamp."), - }, + parameters = botParams, }, new GameAction("small", "Small Bot") { preFunction = delegate { var e = eventCaller.currentEntity; - Fillbots.PreSpawnFillbot(e.beat, 1, (int)Scripts_Fillbots.BotSize.Small, e["colorFuel"], e["colorLampOff"], e["colorLampOn"], e["type"], e["alt"]); + Fillbots.PreSpawnFillbot(e.beat, 1, (int)Scripts_Fillbots.BotSize.Small, e["colorFuel"], e["colorLampOff"], e["colorLampOn"], e["type"], e["alt"], e["stop"], e["color"]); }, defaultLength = 6f, - parameters = new List() - { - new Param("alt", false, "Alternate OK"), - new Param("type", Scripts_Fillbots.EndAnim.Both, "Success Reaction", "Set the reaction of the Robot."), - new Param("colorFuel", new Color(1f, 0.385f, 0.385f), "Fuel Color", "Set the color of the fuel."), - new Param("colorLampOff", new Color(0.635f, 0.635f, 0.185f), "Off Lamp Color", "Set the color of the off lamp."), - new Param("colorLampOn", new Color(1f, 1f, 0.42f), "On Lamp Color", "Set the color of the on lamp."), - }, + parameters = botParams, }, new GameAction("custom", "Custom Bot") { preFunction = delegate { var e = eventCaller.currentEntity; - Fillbots.PreSpawnFillbot(e.beat, e.length-5, e["size"], e["colorFuel"], e["colorLampOff"], e["colorLampOn"], e["type"], e["alt"]); + Fillbots.PreSpawnFillbot(e.beat, e.length-5, e["size"], e["colorFuel"], e["colorLampOff"], e["colorLampOn"], e["type"], e["alt"], e["stop"], e["color"]); }, defaultLength = 6f, resizable = true, - parameters = new List() - { - new Param("size", Scripts_Fillbots.BotSize.Medium, "Size", "Set the size of the Robot."), - new Param("alt", false, "Alternate OK"), - new Param("type", Scripts_Fillbots.EndAnim.Both, "Success Reaction", "Set the reaction of the Robot."), - new Param("colorFuel", new Color(1f, 0.385f, 0.385f), "Fuel Color", "Set the color of the fuel."), - new Param("colorLampOff", new Color(0.635f, 0.635f, 0.185f), "Off Lamp Color", "Set the color of the off lamp."), - new Param("colorLampOn", new Color(1f, 1f, 0.42f), "On Lamp Color", "Set the color of the on lamp."), - }, + parameters = customBotParams, }, new GameAction("blackout", "Blackout") { function = delegate { Fillbots.instance.Blackout();}, defaultLength = 0.5f, }, - new GameAction("background", "Background Appearance") + new GameAction("background appearance", "Background Appearance") { function = delegate { var e = eventCaller.currentEntity; - Fillbots.instance.BackgroundColorSet(e["colorImpact"], e["colorMeter1"], e["colorMeter2"], e["colorMeter3"], e["colorMeter4"], e["colorMeter5"], e["colorMeter6"]); + Fillbots.instance.BackgroundColorSet(e.beat, e.length, e["colorBGStart"], e["colorBGEnd"], + e["colorMetersStart"], e["colorMeter1Start"], e["colorMeter2Start"], e["colorMeter3Start"], e["colorMeter4Start"], e["colorMeter5Start"], e["colorMeter6Start"], + e["colorMetersEnd"], e["colorMeter1End"], e["colorMeter2End"], e["colorMeter3End"], e["colorMeter4End"], e["colorMeter5End"], e["colorMeter6End"], + e["separate"], e["ease"]); + }, + defaultLength = 0.5f, + resizable = true, + parameters = new List() + { + new Param("colorBGStart", Color.white, "Start BG Color", "Set the color at the start of the event."), + new Param("colorBGEnd", Color.white, "End BG Color", "Set the color at the end of the event."), + new Param("ease", Util.EasingFunction.Ease.Instant, "Ease", "Set the easing of the action."), + new Param("separate", false, "Separate Meter Color", "Toggle if the robot color should be changed.", new List() + { + new Param.CollapseParam((x, _) => !(bool)x, new string[] { "colorMetersStart", "colorMetersEnd" }), + new Param.CollapseParam((x, _) => (bool)x, new string[] { "colorMeter1Start", "colorMeter2Start", "colorMeter3Start", "colorMeter4Start", "colorMeter5Start", "colorMeter6Start", + "colorMeter1End", "colorMeter2End", "colorMeter3End", "colorMeter4End", "colorMeter5End", "colorMeter6End" }), + }), + new Param("colorMetersStart", new Color(1f, 0.88f, 0.88f), "Start Meter Color", "Set the color at the start of the event."), + new Param("colorMetersEnd", new Color(1f, 0.88f, 0.88f), "End Meter Color", "Set the color at the end of the event."), + new Param("colorMeter1Start", new Color(1f, 0.88f, 0.88f), "Start 1st Meter Color", "Set the color at the start of the event."), + new Param("colorMeter1End", new Color(1f, 0.88f, 0.88f), "End 1st Meter Color", "Set the color at the end of the event."), + new Param("colorMeter2Start", new Color(1f, 0.88f, 0.88f), "Start 2nd Meter Color", "Set the color at the start of the event."), + new Param("colorMeter2End", new Color(1f, 0.88f, 0.88f), "End 2nd Meter Color", "Set the color at the end of the event."), + new Param("colorMeter3Start", new Color(1f, 0.88f, 0.88f), "Start 3rd Meter Color", "Set the color at the start of the event."), + new Param("colorMeter3End", new Color(1f, 0.88f, 0.88f), "End 3rd Meter Color", "Set the color at the end of the event."), + new Param("colorMeter4Start", new Color(1f, 0.88f, 0.88f), "Start 4th Meter Color", "Set the color at the start of the event."), + new Param("colorMeter4End", new Color(1f, 0.88f, 0.88f), "End 4th Meter Color", "Set the color at the end of the event."), + new Param("colorMeter5Start", new Color(1f, 0.88f, 0.88f), "Start 5th Meter Color", "Set the color at the start of the event."), + new Param("colorMeter5End", new Color(1f, 0.88f, 0.88f), "End 5th Meter Color", "Set the color at the end of the event."), + new Param("colorMeter6Start", new Color(1f, 0.88f, 0.88f), "Start 6th Meter Color", "Set the color at the start of the event."), + new Param("colorMeter6End", new Color(1f, 0.88f, 0.88f), "End 6th Meter Color", "Set the color at the end of the event."), + } + }, + new GameAction("object appearance", "Object Appearance") + { + function = delegate { + var e = eventCaller.currentEntity; + Fillbots.instance.ObjectColorSet(e["colorFuel"], e["colorLampOff"], e["colorLampOn"], e["colorImpact"], e["colorFiller"], e["colorConveyer"]); }, defaultLength = 0.5f, parameters = new List() { + new Param("colorFuel", new Color(1f, 0.385f, 0.385f), "Fuel Color", "Set the color of the fuel."), + new Param("colorLampOff", new Color(0.635f, 0.635f, 0.185f), "Off Lamp Color", "Set the color of the off lamp."), + new Param("colorLampOn", new Color(1f, 1f, 0.42f), "On Lamp Color", "Set the color of the on lamp."), new Param("colorImpact", new Color(1f, 0.59f, 0.01f), "Impact Color", "Set the color of the impact."), - new Param("colorMeter1", new Color(1f, 0.88f, 0.88f), "1st Meter Color", "Set the color of the fuel in the meter."), - new Param("colorMeter2", new Color(1f, 0.88f, 0.88f), "2nd Meter Color", "Set the color of the fuel in the meter."), - new Param("colorMeter3", new Color(1f, 0.88f, 0.88f), "3rd Meter Color", "Set the color of the fuel in the meter."), - new Param("colorMeter4", new Color(1f, 0.88f, 0.88f), "4th Meter Color", "Set the color of the fuel in the meter."), - new Param("colorMeter5", new Color(1f, 0.88f, 0.88f), "5th Meter Color", "Set the color of the fuel in the meter."), - new Param("colorMeter6", new Color(1f, 0.88f, 0.88f), "6th Meter Color", "Set the color of the fuel in the meter."), + new Param("colorFiller", Color.white, "Filler Color", "Set the color of the filler."), + new Param("colorConveyer", Color.white, "Conveyer Color", "Set the color of the conveyer."), } }, }, @@ -142,6 +170,8 @@ namespace HeavenStudio.Games public Color lampColorOn; public EndAnim endAnim; public bool altOK; + public bool stop; + public bool color; } private static List queuedBots = new List(); @@ -150,12 +180,16 @@ namespace HeavenStudio.Games [SerializeField] private NtrFillbot mediumBot; [SerializeField] private NtrFillbot largeBot; public Animator filler; + [System.NonSerialized] public bool fillerHolding; [SerializeField] private Transform[] gears; [SerializeField] private Animator[] meters; [SerializeField] private SpriteRenderer[] metersFuel; [SerializeField] private Material impactMaterial; [SerializeField] private Animator conveyerBelt; [SerializeField] private GameObject blackout; + [SerializeField] private SpriteRenderer[] fillerRenderer; + [SerializeField] private SpriteRenderer[] otherRenderer; + [SerializeField] private SpriteRenderer BGPlane; [System.NonSerialized] public BotSize fillerPosition = BotSize.Medium; @@ -165,7 +199,11 @@ namespace HeavenStudio.Games [NonSerialized] public float conveyerNormalizedOffset; + private ColorEase[] colorEases = new ColorEase[7]; private int toggleGlobal = 0; + private Color fuelColorGlobal = new Color(1f, 0.385f, 0.385f), + lampColorOffGlobal = new Color(0.635f, 0.635f, 0.185f), + lampColorOnGlobal = new Color(1f, 1f, 0.42f); public static Fillbots instance; @@ -173,6 +211,16 @@ namespace HeavenStudio.Games { instance = this; SetupBopRegion("fillbots", "bop", "auto"); + + colorEases = new ColorEase[] { + new(Color.white), + new(new Color(1f, 0.88f, 0.88f)), + new(new Color(1f, 0.88f, 0.88f)), + new(new Color(1f, 0.88f, 0.88f)), + new(new Color(1f, 0.88f, 0.88f)), + new(new Color(1f, 0.88f, 0.88f)), + new(new Color(1f, 0.88f, 0.88f)), + }; } public override void OnBeatPulse(double beat) @@ -183,6 +231,15 @@ namespace HeavenStudio.Games } } + public override void OnPlay(double beat) + { + if (queuedBots.Count > 0) queuedBots.Clear(); + foreach (var evt in scheduledInputs) + { + evt.Disable(); + } + } + private void OnDestroy() { if (queuedBots.Count > 0) queuedBots.Clear(); @@ -192,6 +249,34 @@ namespace HeavenStudio.Games } } + public override void OnStop(double beat) => EntityPreCheck(beat); + void EntityPreCheck(double beat) + { + if (gameManager == null) return; + List prevEntities = gameManager.Beatmap.Entities.FindAll(c => c.datamodel.Split(0) == "fillbots"); + + // init colors + RiqEntity bg = prevEntities.FindLast(c => c.beat <= beat && c.datamodel == "fillbots/background appearance"); + RiqEntity obj = prevEntities.FindLast(c => c.beat <= beat && c.datamodel == "fillbots/object appearance"); + + if (bg != null) + { + BackgroundColorSet(bg.beat, bg.length, bg["colorBGStart"], bg["colorBGEnd"], + bg["colorMetersStart"], bg["colorMeter1Start"], bg["colorMeter2Start"], bg["colorMeter3Start"], bg["colorMeter4Start"], bg["colorMeter5Start"], bg["colorMeter6Start"], + bg["colorMetersEnd"], bg["colorMeter1End"], bg["colorMeter2End"], bg["colorMeter3End"], bg["colorMeter4End"], bg["colorMeter5End"], bg["colorMeter6End"], + bg["separate"], bg["ease"]); + } + + if (obj != null) + { + ObjectColorSet(obj["colorFuel"], obj["colorLampOff"], obj["colorLampOn"], obj["colorImpact"], obj["colorFiller"], obj["colorConveyer"]); + } + else + { + ObjectColorSet(new Color(1f, 0.385f, 0.385f), new Color(0.635f, 0.635f, 0.185f), new Color(1f, 1f, 0.42f), new Color(1f, 0.59f, 0.01f), Color.white, Color.white); + } + } + private void Update() { var cond = Conductor.instance; @@ -201,7 +286,7 @@ namespace HeavenStudio.Games { foreach (var queuedBot in queuedBots) { - SpawnFillbot(queuedBot.beat, queuedBot.holdLength, queuedBot.size, queuedBot.fuelColor, queuedBot.lampColorOff, queuedBot.lampColorOn, queuedBot.endAnim, queuedBot.altOK); + SpawnFillbot(queuedBot.beat, queuedBot.holdLength, queuedBot.size, queuedBot.fuelColor, queuedBot.lampColorOff, queuedBot.lampColorOn, queuedBot.endAnim, queuedBot.altOK, queuedBot.stop, queuedBot.color); } queuedBots.Clear(); } @@ -228,17 +313,19 @@ namespace HeavenStudio.Games }; filler.DoScaledAnimationAsync("ReleaseWhiff" + sizeSuffix, 0.5f); SoundByte.PlayOneShotGame("fillbots/armRetractionWhiff"); + if (fillerHolding) SoundByte.PlayOneShotGame("fillbots/armRetractionPop"); } UpdateConveyerBelt(conveyerStartBeat, conveyerNormalizedOffset); + UpdateBackgroundColor(); } } - public static void PreSpawnFillbot(double beat, double holdLength, int size, Color fuelColor, Color lampColorOff, Color lampColorOn, int endAnim, bool altOK) + public static void PreSpawnFillbot(double beat, double holdLength, int size, Color fuelColor, Color lampColorOff, Color lampColorOn, int endAnim, bool altOK, bool stop, bool color) { if (GameManager.instance.currentGame == "fillbots") { - instance.SpawnFillbot(beat, holdLength, (BotSize)size, fuelColor, lampColorOff, lampColorOn, (EndAnim)endAnim, altOK); + instance.SpawnFillbot(beat, holdLength, (BotSize)size, fuelColor, lampColorOff, lampColorOn, (EndAnim)endAnim, altOK, stop, color); } else { @@ -252,11 +339,13 @@ namespace HeavenStudio.Games lampColorOn = lampColorOn, endAnim = (EndAnim)endAnim, altOK = altOK, + stop = stop, + color = color, }); } } - private void SpawnFillbot(double beat, double holdLength, BotSize size, Color fuelColor, Color lampColorOff, Color lampColorOn, EndAnim endAnim, bool altOK) + private void SpawnFillbot(double beat, double holdLength, BotSize size, Color fuelColor, Color lampColorOff, Color lampColorOn, EndAnim endAnim, bool altOK, bool stop, bool color) { NtrFillbot Bot = size switch { @@ -266,15 +355,11 @@ namespace HeavenStudio.Games _ => throw new System.NotImplementedException() }; NtrFillbot spawnedBot = Instantiate(Bot, transform); - if (holdLength > 0) - { - spawnedBot.holdLength = holdLength; - } + + if (holdLength > 0) spawnedBot.holdLength = holdLength; + if (stop) spawnedBot.conveyerRestartLength = -1; spawnedBot.startBeat = beat; - spawnedBot.fuelColor = fuelColor; - spawnedBot.lampColorOff = lampColorOff; - spawnedBot.lampColorOn = lampColorOn; spawnedBot.endAnim = endAnim; spawnedBot.altOK = altOK; @@ -282,13 +367,7 @@ namespace HeavenStudio.Games var actions = new List(); var fallingBots = currentBots.FindAll(x => x.startBeat < beat && x.startBeat + 3 >= beat); - if (fallingBots is null) { - actions.Add(new BeatAction.Action(beat - 0.5, delegate - { - if (conveyerStartBeat != -1) conveyerNormalizedOffset = Conductor.instance.GetPositionFromBeat(conveyerStartBeat, 1); - conveyerStartBeat = -2; - })); - } else { + if (fallingBots.Count > 0) { actions.Add(new BeatAction.Action(beat - 0.25, delegate { foreach (var bot in fallingBots) @@ -302,11 +381,27 @@ namespace HeavenStudio.Games if (conveyerStartBeat != -1) conveyerNormalizedOffset = Conductor.instance.GetPositionFromBeat(conveyerStartBeat, 1); conveyerStartBeat = -2; })); + } else { + actions.Add(new BeatAction.Action(beat - 0.5, delegate + { + if (conveyerStartBeat != -1) conveyerNormalizedOffset = Conductor.instance.GetPositionFromBeat(conveyerStartBeat, 1); + conveyerStartBeat = -2; + })); } + actions.Add(new BeatAction.Action(beat, delegate + { + if (!color) + { + fuelColor = fuelColorGlobal; + lampColorOff = lampColorOffGlobal; + lampColorOn = lampColorOnGlobal; + } + spawnedBot.InitColor(fuelColor, lampColorOff, lampColorOn); + })); actions.Add(new BeatAction.Action(beat + 3, delegate { - if (!PlayerInput.GetIsAction(InputAction_BasicPress)) filler.DoScaledAnimationAsync("FillerPrepare", 0.5f); + if (!PlayerInput.GetIsAction(InputAction_BasicPressing) && !fillerHolding) filler.DoScaledAnimationAsync("FillerPrepare", 0.5f); conveyerStartBeat = beat + 3; fillerPosition = size; })); @@ -341,6 +436,12 @@ namespace HeavenStudio.Games }, 0.5f); toggle ^= 1; } + + var danceBots = currentBots.FindAll(x => x.botState is BotState.Dance); + foreach (var bot in danceBots) + { + bot.SuccessDance(); + } } private void UpdateConveyerBelt(double startBeat, float offset) @@ -364,14 +465,74 @@ namespace HeavenStudio.Games blackout.SetActive(!blackout.activeSelf); } - public void BackgroundColorSet(Color impact, Color meter1, Color meter2, Color meter3, Color meter4, Color meter5, Color meter6) + public void BackgroundColorSet(double beat, float length, Color BGStart, Color BGEnd, + Color metersStart, Color meter1Start, Color meter2Start, Color meter3Start, Color meter4Start, Color meter5Start, Color meter6Start, + Color metersEnd, Color meter1End, Color meter2End, Color meter3End, Color meter4End, Color meter5End, Color meter6End, + bool separate, int colorEaseSet) { - impactMaterial.SetColor("_ColorAlpha", impact); + colorEases = new ColorEase[] { + new(beat, length, BGStart, BGEnd, colorEaseSet), + new(beat, length, meter1Start, meter1End, colorEaseSet), + new(beat, length, meter2Start, meter2End, colorEaseSet), + new(beat, length, meter3Start, meter3End, colorEaseSet), + new(beat, length, meter4Start, meter4End, colorEaseSet), + new(beat, length, meter5Start, meter5End, colorEaseSet), + new(beat, length, meter6Start, meter6End, colorEaseSet), + }; + if (!separate) + { + for (int i = 1; i < 7; i++) + { + colorEases[i] = new(beat, length, metersStart, metersEnd, colorEaseSet); + } + } + + UpdateBackgroundColor(); + + // this.bg.color = BG; + // foreach (var renderer in otherRenderer) + // { + // renderer.color = BG; + // } + // if (separate) + // { + // var colors = new Color[] {meter1, meter2, meter3, meter4, meter5, meter6}; + // for (int i = 0; i < metersFuel.Length; i++) + // { + // metersFuel[i].color = colors[i]; + // } + // } + // else + // { + // for (int i = 0; i < metersFuel.Length; i++) + // { + // metersFuel[i].color = meters; + // } + // } + } + public void ObjectColorSet(Color fuelColor, Color lampColorOff, Color lampColorOn, Color impact, Color filler, Color conveyer) + { + fuelColorGlobal = fuelColor; lampColorOffGlobal = lampColorOff; lampColorOnGlobal = lampColorOn; + + impactMaterial.SetColor("_ColorAlpha", impact); + this.conveyerBelt.GetComponent().color = conveyer; + foreach (var renderer in fillerRenderer) + { + renderer.color = filler; + } + } + + private void UpdateBackgroundColor() + { + BGPlane.color = colorEases[0].GetColor(); + foreach (var renderer in otherRenderer) + { + renderer.color = colorEases[0].GetColor(); + } - var colors = new Color[] {meter1, meter2, meter3, meter4, meter5, meter6}; for (int i = 0; i < metersFuel.Length; i++) { - metersFuel[i].color = colors[i]; + metersFuel[i].color = colorEases[i+1].GetColor(); } } } diff --git a/Assets/Scripts/Games/Fillbots/FullBody.cs b/Assets/Scripts/Games/Fillbots/FullBody.cs index 972718f4b..47891e5c2 100644 --- a/Assets/Scripts/Games/Fillbots/FullBody.cs +++ b/Assets/Scripts/Games/Fillbots/FullBody.cs @@ -11,8 +11,8 @@ namespace HeavenStudio.Games.Scripts_Fillbots [SerializeField] private Sprite[] sprites; [SerializeField] private SpriteRenderer fullBody; - [System.NonSerialized] public Color lampColorOff; - [System.NonSerialized] public Color lampColorOn; + [System.NonSerialized] public Color lampColorOff = new Color(0.635f, 0.635f, 0.185f); + [System.NonSerialized] public Color lampColorOn = new Color(1f, 1f, 0.42f); public enum LampState { diff --git a/Assets/Scripts/Games/Fillbots/NtrFillbot.cs b/Assets/Scripts/Games/Fillbots/NtrFillbot.cs index fdd5f0020..7e240236d 100644 --- a/Assets/Scripts/Games/Fillbots/NtrFillbot.cs +++ b/Assets/Scripts/Games/Fillbots/NtrFillbot.cs @@ -19,6 +19,7 @@ namespace HeavenStudio.Games.Scripts_Fillbots Ace, Just, Ng, + Dance, } public enum EndAnim @@ -34,10 +35,7 @@ namespace HeavenStudio.Games.Scripts_Fillbots [SerializeField] private BotSize size; public double holdLength = 4f; [SerializeField] private float limbFallHeight = 15f; - [System.NonSerialized] public Color fuelColor; - [System.NonSerialized] public Color lampColorOff; - [System.NonSerialized] public Color lampColorOn; - double conveyerRestartLength = 0.5; + [System.NonSerialized] public double conveyerRestartLength = 0.5; [System.NonSerialized] public double startBeat = -1; private double conveyerStartBeat = -1; @@ -79,7 +77,8 @@ namespace HeavenStudio.Games.Scripts_Fillbots private Sound fillSound; - private BotState botState = BotState.Idle; + private BotState _botState = BotState.Idle; + public BotState botState { get { return _botState; }} private bool isExplode = false; [System.NonSerialized] public bool isStack; private double stackBeat, stackLength; @@ -117,7 +116,7 @@ namespace HeavenStudio.Games.Scripts_Fillbots public void MoveConveyer(float normalized, float lerpDistance, float flyDistance = 0) { - if (botState is BotState.Holding) + if (_botState is BotState.Holding) { StopConveyer(); return; @@ -125,7 +124,7 @@ namespace HeavenStudio.Games.Scripts_Fillbots transform.position = new Vector3(Mathf.LerpUnclamped(startPos.x, startPos.x + lerpDistance, normalized), Mathf.LerpUnclamped(startPos.y, startPos.y + flyDistance, normalized)); - if (normalized >= 5) + if (normalized >= 8) { game.currentBots.Remove(this); Destroy(gameObject); @@ -152,21 +151,6 @@ namespace HeavenStudio.Games.Scripts_Fillbots { conveyerStartBeat = startBeat + 3; - fullBodyMaterial = fullBody.GetComponent().material; - fullBodyMaterial.SetColor("_ColorBravo", fuelColor); - fullBodyMaterial.SetColor("_ColorAlpha", lampColorOff); - - Material botMaterial; - - botMaterial = head.GetComponent().material; - botMaterial.SetColor("_ColorAlpha", lampColorOff); - - fuelFill.color = fuelColor; - - var full = fullBody.GetComponent(); - full.lampColorOff = lampColorOff; - full.lampColorOn = lampColorOn; - BeatAction.New(game, new List() { new BeatAction.Action(startBeat, delegate { legs.Play("Impact", 0, 0); legsHaveFallen = true; legsTrans.position = new Vector3(legsTrans.position.x, legsPosY); }), @@ -189,18 +173,38 @@ namespace HeavenStudio.Games.Scripts_Fillbots _ => throw new System.NotImplementedException() }; - MultiSound.Play(new MultiSound.Sound[] + List sounds = new(); + float normalizedBeat = Conductor.instance.GetPositionFromBeat(startBeat, 1); + Debug.Log(Mathf.Max(normalizedBeat-0.1f, 0)); + for (int i = (int)Mathf.Ceil(Mathf.Max(normalizedBeat-0.1f, 0)); i <= 2; i++) { - new MultiSound.Sound("fillbots/" + sizePrefix + "Fall", startBeat), - new MultiSound.Sound("fillbots/" + sizePrefix + "Fall", startBeat + 1), - new MultiSound.Sound("fillbots/" + sizePrefix + "Fall", startBeat + 2), - }); + sounds.Add(new("fillbots/" + sizePrefix + "Fall", startBeat + i)); + } + if (sounds.Count > 0) MultiSound.Play(sounds.ToArray(), true, true); game.ScheduleInput(startBeat, 4, Fillbots.InputAction_BasicPress, JustHold, Empty, Empty); game.currentBots.Add(this); } + public void InitColor(Color fuelColor, Color lampColorOff, Color lampColorOn) + { + fullBodyMaterial = fullBody.GetComponent().material; + fullBodyMaterial.SetColor("_ColorBravo", fuelColor); + fullBodyMaterial.SetColor("_ColorAlpha", lampColorOff); + + Material botMaterial; + + botMaterial = head.GetComponent().material; + botMaterial.SetColor("_ColorAlpha", lampColorOff); + + fuelFill.color = fuelColor; + + var full = fullBody.GetComponent(); + full.lampColorOff = lampColorOff; + full.lampColorOn = lampColorOn; + } + private void Update() { var cond = Conductor.instance; @@ -243,17 +247,24 @@ namespace HeavenStudio.Games.Scripts_Fillbots } if (headHasFallen && bodyHasFallen && legsHaveFallen) { - float normalizedBeat = cond.GetPositionFromBeat(this.conveyerStartBeat, conveyerLength); - if (normalizedBeat >= 0) + if (this.conveyerStartBeat >= 0) { - if (botState is BotState.Ace) MoveConveyer(normalizedBeat, lerpDistance, flyDistance); - else if (botState is BotState.Idle) MoveConveyer(normalizedBeat, lerpIdleDistance); - else MoveConveyer(normalizedBeat, lerpDistance); + float normalizedBeat = cond.GetPositionFromBeat(this.conveyerStartBeat, conveyerLength); + if (normalizedBeat >= 0) + { + if (_botState is BotState.Ace) MoveConveyer(normalizedBeat, lerpDistance, flyDistance); + else if (_botState is BotState.Idle) MoveConveyer(normalizedBeat, lerpIdleDistance); + else MoveConveyer(normalizedBeat, lerpDistance); + } + } + else + { + StopConveyer(); } } } - if (botState is BotState.Holding) + if (_botState is BotState.Holding) { float normalizedBeat = cond.GetPositionFromBeat(startBeat + 4, holdLength); float normalizedExplodeBeat = cond.GetPositionFromBeat(startBeat + 4, holdLength + 0.25); @@ -284,6 +295,7 @@ namespace HeavenStudio.Games.Scripts_Fillbots BeatAction.New(game, new List() { new BeatAction.Action(startBeat + holdLength + 5.5, delegate { + game.fillerHolding = false; SoundByte.PlayOneShotGame("fillbots/explosion"); game.currentBots.Remove(this); Destroy(gameObject); @@ -304,10 +316,19 @@ namespace HeavenStudio.Games.Scripts_Fillbots } fillSound.KillLoop(0); beepEvent.enabled = false; - botState = BotState.Ng; + _botState = BotState.Ng; + game.fillerHolding = false; normalizedFill = normalizedBeat; - this.conveyerStartBeat = cond.songPositionInBeats + conveyerRestartLength; - if (game.conveyerStartBeat == -1) game.conveyerStartBeat = this.conveyerStartBeat; + if (conveyerRestartLength >= 0) + { + this.conveyerStartBeat = cond.songPositionInBeats + conveyerRestartLength; + if (game.conveyerStartBeat == -1) game.conveyerStartBeat = this.conveyerStartBeat; + } + else + { + this.conveyerStartBeat = -1; + game.conveyerStartBeat = -1; + } releaseEvent.Disable(); } } @@ -339,7 +360,8 @@ namespace HeavenStudio.Games.Scripts_Fillbots game.conveyerStartBeat = -1; conveyerLength = 1; transform.position = new Vector3(0, transform.position.y, 0); - botState = BotState.Holding; + _botState = BotState.Holding; + game.fillerHolding = true; fullBody.DoScaledAnimationAsync("Hold", 1f); SoundByte.PlayOneShotGame("fillbots/beep"); fillSound = SoundByte.PlayOneShotGame("fillbots/water", -1, 1 / (float)(holdLength / 3), 1, true); @@ -357,8 +379,16 @@ namespace HeavenStudio.Games.Scripts_Fillbots { fillSound.KillLoop(0); beepEvent.enabled = false; - this.conveyerStartBeat = caller.timer + caller.startBeat + conveyerRestartLength; - if (game.conveyerStartBeat != -2) game.conveyerStartBeat = this.conveyerStartBeat; + if (conveyerRestartLength >= 0) + { + this.conveyerStartBeat = caller.timer + caller.startBeat + conveyerRestartLength; + if (game.conveyerStartBeat != -2) game.conveyerStartBeat = this.conveyerStartBeat; + } + else + { + this.conveyerStartBeat = -1; + game.conveyerStartBeat = -1; + } string sizeSuffix = game.fillerPosition switch { @@ -369,26 +399,26 @@ namespace HeavenStudio.Games.Scripts_Fillbots }; if (state >= 1f) { - botState = BotState.Ng; + _botState = BotState.Ng; SoundByte.PlayOneShotGame("fillbots/miss"); game.filler.DoScaledAnimationAsync("ReleaseWhiff" + sizeSuffix, 0.5f); - SoundByte.PlayOneShotGame("fillbots/armRetraction2"); + SoundByte.PlayOneShotGame("fillbots/armRetractionPop"); fullBody.DoScaledAnimationAsync("ReleaseLate", 0.5f); return; } else if (state <= -1f) { - botState = BotState.Ng; + _botState = BotState.Ng; SoundByte.PlayOneShotGame("fillbots/miss"); game.filler.DoScaledAnimationAsync("ReleaseWhiff" + sizeSuffix, 0.5f); - SoundByte.PlayOneShotGame("fillbots/armRetraction2"); + SoundByte.PlayOneShotGame("fillbots/armRetractionPop"); fullBody.DoScaledAnimationAsync("ReleaseEarly", 0.5f); return; } if ((endAnim is EndAnim.Both && state == 0) || endAnim is EndAnim.Ace) { - botState = BotState.Ace; + _botState = BotState.Ace; BeatAction.New(game, new List() { new BeatAction.Action(caller.startBeat + caller.timer + 0.5, delegate { @@ -398,19 +428,28 @@ namespace HeavenStudio.Games.Scripts_Fillbots } else { - botState = BotState.Just; - - // No, Sync to Bop - BeatAction.New(game, new List() + _botState = BotState.Just; + if (size is BotSize.Small) { - new BeatAction.Action(caller.startBeat + caller.timer + 1, delegate { - fullBody.DoScaledAnimationAsync("Success", 0.5f); - }), - new BeatAction.Action(caller.startBeat + caller.timer + 2, delegate { - fullBody.DoScaledAnimationAsync("Success", 0.5f); - }), - }); + BeatAction.New(game, new List() + { + new BeatAction.Action(caller.startBeat + caller.timer + 1, delegate { + fullBody.DoScaledAnimationAsync("Success", 0.5f); + }), + }); + } + else + { + BeatAction.New(game, new List() + { + new BeatAction.Action(caller.startBeat + caller.timer + 0.9, delegate { + _botState = BotState.Dance; + }), + }); + } + } + game.fillerHolding = false; game.filler.DoScaledAnimationAsync("Release" + sizeSuffix, 0.5f); SoundByte.PlayOneShotGame("fillbots/armRetraction"); fullBody.DoScaledAnimationAsync("Release", 1f); @@ -431,6 +470,11 @@ namespace HeavenStudio.Games.Scripts_Fillbots private void Empty(PlayerActionEvent caller) { } + public void SuccessDance() + { + fullBody.DoScaledAnimationAsync("Success", 0.5f); + } + public bool ReportBeat(ref double lastReportedBeat) { var cond = Conductor.instance;