diff --git a/Assets/Resources/Games/frogHop.prefab b/Assets/Resources/Games/frogHop.prefab index 0922a4baa..9548c99b4 100644 --- a/Assets/Resources/Games/frogHop.prefab +++ b/Assets/Resources/Games/frogHop.prefab @@ -110,7 +110,7 @@ RectTransform: m_GameObject: {fileID: 1957333825293202123} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 60, y: 32, z: 1} + m_LocalScale: {x: 20, y: 11, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 643350981976857931} @@ -161,9 +161,9 @@ SpriteRenderer: m_LightmapParameters: {fileID: 0} m_SortingLayerID: 0 m_SortingLayer: 0 - m_SortingOrder: 100 - m_Sprite: {fileID: 1033727535, guid: 3c49c0fa809689d448ee90b3c1143d9f, type: 3} - m_Color: {r: 1, g: 1, b: 1, a: 0.5019608} + m_SortingOrder: 14 + m_Sprite: {fileID: 7482667652216324306, guid: ef2fa2a75dc283e40b9d4fe1f20dc6fb, type: 3} + m_Color: {r: 0, g: 0, b: 0, a: 0.5019608} m_FlipX: 0 m_FlipY: 0 m_DrawMode: 0 @@ -214,6 +214,7 @@ Transform: - {fileID: 7700878117837970640} - {fileID: 6107407590447943001} - {fileID: 665267706566016202} + - {fileID: 3672416108430647415} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -238,9 +239,9 @@ MonoBehaviour: - {fileID: 2180206873882652162} LeaderFrog: {fileID: 6344731858817934525} SingerFrog: {fileID: 5555782273197061281} - AllFrogs: [] - FrontFrogs: [] - BackFrogs: [] + Darkness: {fileID: 1957333825293202123} + SpotlightFront: {fileID: 8406258651058782659} + SpotlightBack: {fileID: 6260846628814890155} --- !u!1 &3684072535637705111 GameObject: m_ObjectHideFlags: 0 @@ -409,6 +410,89 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &6260846628814890155 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3672416108430647415} + - component: {fileID: 845326127449394562} + m_Layer: 0 + m_Name: SpotlightsBack + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &3672416108430647415 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6260846628814890155} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 4.33, z: 0} + m_LocalScale: {x: 0.48, y: 0.48, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 643350981976857931} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!331 &845326127449394562 +SpriteMask: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6260846628814890155} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + 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: 10758, 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: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 1119035408, guid: 3c49c0fa809689d448ee90b3c1143d9f, type: 3} + m_MaskAlphaCutoff: 0.106 + m_FrontSortingLayerID: 0 + m_BackSortingLayerID: 0 + m_FrontSortingLayer: 0 + m_BackSortingLayer: 0 + m_FrontSortingOrder: 0 + m_BackSortingOrder: 0 + m_IsCustomRangeActive: 0 + m_SpriteSortPoint: 0 --- !u!1 &7294692287861866293 GameObject: m_ObjectHideFlags: 0 @@ -434,7 +518,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7294692287861866293} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: -1.7069999, z: 0} + m_LocalPosition: {x: 0, y: -1.91, z: 0} m_LocalScale: {x: 0.5, y: 0.5, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -567,7 +651,7 @@ SpriteMask: m_SortingLayer: 0 m_SortingOrder: 0 m_Sprite: {fileID: 1188383036, guid: 3c49c0fa809689d448ee90b3c1143d9f, type: 3} - m_MaskAlphaCutoff: 0.2 + m_MaskAlphaCutoff: 0.106 m_FrontSortingLayerID: 0 m_BackSortingLayerID: 0 m_FrontSortingLayer: 0 diff --git a/Assets/Resources/Prefabs/Games/FrogHop/ntrFrogBackup.prefab b/Assets/Resources/Prefabs/Games/FrogHop/ntrFrogBackup.prefab index 74bc19296..d6176ebf6 100644 --- a/Assets/Resources/Prefabs/Games/FrogHop/ntrFrogBackup.prefab +++ b/Assets/Resources/Prefabs/Games/FrogHop/ntrFrogBackup.prefab @@ -237,3 +237,6 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: FrogAnim: {fileID: 626886743113828963} + SpriteParts: + - {fileID: 4338800780392838371} + - {fileID: 406877900976759553} diff --git a/Assets/Resources/Prefabs/Games/FrogHop/ntrFrogLeader.prefab b/Assets/Resources/Prefabs/Games/FrogHop/ntrFrogLeader.prefab index c2f3d954e..be8783d4a 100644 --- a/Assets/Resources/Prefabs/Games/FrogHop/ntrFrogLeader.prefab +++ b/Assets/Resources/Prefabs/Games/FrogHop/ntrFrogLeader.prefab @@ -322,3 +322,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: FrogAnim: {fileID: 1884999672794132025} + SpriteParts: + - {fileID: 4338800780392838371} + - {fileID: 406877900976759553} + - {fileID: 4128693103407085196} diff --git a/Assets/Resources/Prefabs/Games/FrogHop/ntrFrogSinger.prefab b/Assets/Resources/Prefabs/Games/FrogHop/ntrFrogSinger.prefab index 4b5579b7c..b3973bb1d 100644 --- a/Assets/Resources/Prefabs/Games/FrogHop/ntrFrogSinger.prefab +++ b/Assets/Resources/Prefabs/Games/FrogHop/ntrFrogSinger.prefab @@ -322,3 +322,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: FrogAnim: {fileID: 6299897575248826339} + SpriteParts: + - {fileID: 5007591078639621851} + - {fileID: 4042941232235986953} + - {fileID: 1307665614508407357} diff --git a/Assets/Resources/Sfx/games/frogHop/SE_NTR_FROG_EN_E_BEAT.wav b/Assets/Resources/Sfx/games/frogHop/SE_NTR_FROG_EN_E_BEAT.wav new file mode 100644 index 000000000..94a354525 Binary files /dev/null and b/Assets/Resources/Sfx/games/frogHop/SE_NTR_FROG_EN_E_BEAT.wav differ diff --git a/Assets/Resources/Sfx/games/frogHop/SE_NTR_FROG_EN_E_BEAT.wav.meta b/Assets/Resources/Sfx/games/frogHop/SE_NTR_FROG_EN_E_BEAT.wav.meta new file mode 100644 index 000000000..1287e87ab --- /dev/null +++ b/Assets/Resources/Sfx/games/frogHop/SE_NTR_FROG_EN_E_BEAT.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 83d91cbf81e0d374d93dca165c420bb7 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Games/FrogHop/FrogHop.cs b/Assets/Scripts/Games/FrogHop/FrogHop.cs index b2ca1cda3..ee14d1ff6 100644 --- a/Assets/Scripts/Games/FrogHop/FrogHop.cs +++ b/Assets/Scripts/Games/FrogHop/FrogHop.cs @@ -60,9 +60,13 @@ namespace HeavenStudio.Games.Loaders function = delegate { var e = eventCaller.currentEntity; if (eventCaller.gameManager.minigameObj.TryGetComponent(out FrogHop instance)) { - instance.TwoHop(e.beat); + instance.TwoHop(e.beat, e["spotlights"]); } }, + parameters = new List() + { + new Param("spotlights", true, "Automatic Spotlights", "Handles spotlight switching automatically."), + }, defaultLength = 4.0f, }, new GameAction("threeshake", "Yeah yeah yeah!") @@ -70,19 +74,45 @@ namespace HeavenStudio.Games.Loaders function = delegate { var e = eventCaller.currentEntity; if (eventCaller.gameManager.minigameObj.TryGetComponent(out FrogHop instance)) { - instance.ThreeHop(e.beat); + instance.ThreeHop(e.beat, e["spotlights"]); } }, + parameters = new List() + { + new Param("spotlights", true, "Automatic Spotlights", "Handles spotlight switching automatically."), + }, defaultLength = 4.0f, }, + new GameAction("spotlights", "Spotlights") + { + function = delegate { + var e = eventCaller.currentEntity; + if (eventCaller.gameManager.minigameObj.TryGetComponent(out FrogHop instance)) { + instance.Spotlights(e["front"], e["back"], e["dark"]); + } + }, + parameters = new List() + { + new Param("front", true, "Front Lights", "Enables the spotlights on the front frogs."), + new Param("back", false, "Back Lights", "Enables the spotlights on the back frogs."), + new Param("dark", true, "Darken Stage", "Darkens the stage, allowing the spotlights to be seen."), + }, + defaultLength = 0.5f, + }, new GameAction("mouthwide", "Open Mouth (Wide)") { function = delegate { var e = eventCaller.currentEntity; if (eventCaller.gameManager.minigameObj.TryGetComponent(out FrogHop instance)) { - instance.Sing(0, "Wide", e.beat + e.length - 0.5); + instance.Sing("Wide", e.beat + e.length - 0.5, e["blue"], e["orange"], e["greens"]); } }, + parameters = new List() + { + new Param("blue", true, "Blue Sings", "Make Blue Frog sing during this event."), + new Param("orange", false, "Orange Sings", "Make Orange Frog sing during this event."), + new Param("greens", false, "Group Sings", "Make the frogs in the back sing during this event."), + }, defaultLength = 0.5f, resizable = true, }, @@ -91,9 +121,15 @@ namespace HeavenStudio.Games.Loaders function = delegate { var e = eventCaller.currentEntity; if (eventCaller.gameManager.minigameObj.TryGetComponent(out FrogHop instance)) { - instance.Sing(0, "Narrow", e.beat + e.length - 0.5); + instance.Sing("Narrow", e.beat + e.length - 0.5, e["blue"], e["orange"], e["greens"]); } }, + parameters = new List() + { + new Param("blue", true, "Blue Sings", "Make Blue Frog sing during this event."), + new Param("orange", false, "Orange Sings", "Make Orange Frog sing during this event."), + new Param("greens", false, "Group Sings", "Make the frogs in the back sing during this event."), + }, defaultLength = 0.5f, resizable = true, }, @@ -116,19 +152,22 @@ namespace HeavenStudio.Games [SerializeField] public List OtherFrogs = new List(); [SerializeField] public ntrFrog LeaderFrog; [SerializeField] public ntrFrog SingerFrog; - public List AllFrogs = new(); - public List FrontFrogs = new(); - public List BackFrogs = new(); - public List whoToInputKTB = new(); + [SerializeField] public GameObject Darkness; + [SerializeField] public GameObject SpotlightFront; + [SerializeField] public GameObject SpotlightBack; + List AllFrogs = new(); + List FrontFrogs = new(); + List BackFrogs = new(); + List whoToInputKTB = new(); - public int globalAnimSide = -1; + int globalAnimSide = -1; - public double wantHop = double.MinValue; - public List queuedHops = new(); - public bool keepHopping; - public double startBackHop = double.MinValue; - public double startNoHop = double.MinValue; - public double startRegularHop = double.MinValue; + double wantHop = double.MinValue; + List queuedHops = new(); + bool keepHopping; + double startBackHop = double.MinValue; + double startNoHop = double.MinValue; + double startRegularHop = double.MinValue; public enum WhoBops @@ -264,18 +303,16 @@ namespace HeavenStudio.Games wantHop = beat - 1; } - public void TwoHop (double beat) + public void TwoHop (double beat, bool spotlights) { - startBackHop = beat; - startNoHop = beat + 2; - startRegularHop = beat + 4; + CueCommon(beat, spotlights); var actions = new List(); var sounds = new List(); //call actions.Add(new(beat + 0.0, delegate { NPCHop(FrontFrogs); Talk(new List() { LeaderFrog }, "Wide", beat); })); - actions.Add(new(beat + 0.5, delegate { NPCHop(FrontFrogs, true); Talk(new List() { LeaderFrog }, "Narrow", beat + 1.0); })); + actions.Add(new(beat + 0.5, delegate { NPCHop(FrontFrogs, true); Talk(new List() { LeaderFrog }, "Narrow", beat + 1.5); })); sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_T_HA", beat)); sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_POP_DEFAULT", beat)); sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_T_HAAI", beat + 0.5)); @@ -283,7 +320,7 @@ namespace HeavenStudio.Games //response actions.Add(new(beat + 2.0, delegate { NPCHop(BackFrogs); Talk(BackFrogs, "Wide", beat); })); - actions.Add(new(beat + 2.5, delegate { NPCHop(BackFrogs, true); Talk(BackFrogs, "Narrow", beat + 3.0); })); + actions.Add(new(beat + 2.5, delegate { NPCHop(BackFrogs, true); Talk(BackFrogs, "Narrow", beat + 3.5); })); sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_E_HA", beat + 2.0)); sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_E_HAAI", beat + 2.5)); @@ -295,11 +332,9 @@ namespace HeavenStudio.Games MultiSound.Play(sounds.ToArray()); } - public void ThreeHop (double beat) + public void ThreeHop (double beat, bool spotlights) { - startBackHop = beat; - startNoHop = beat + 2; - startRegularHop = beat + 4; + CueCommon(beat, spotlights); var actions = new List(); var sounds = new List(); @@ -332,6 +367,30 @@ namespace HeavenStudio.Games MultiSound.Play(sounds.ToArray()); } + public void CueCommon(double beat, bool spotlights = true) + { + startBackHop = beat; + startNoHop = beat + 2; + startRegularHop = beat + 4; + + if (!spotlights) return; + + var actions = new List(); + + actions.Add(new(beat + 1.5, delegate { Spotlights(false, true); })); + actions.Add(new(beat + 3.5, delegate { Spotlights(true, false); })); + + BeatAction.New(this, actions); + } + + public void Spotlights(bool front, bool back, bool dark = true) + { + foreach (var a in FrontFrogs) { a.Darken(front || !dark); } + Darkness.SetActive(dark); + SpotlightFront.SetActive(front); + SpotlightBack.SetActive(back); + } + public void NPCHop(List FrogsToHop, bool isThisLong = false) { foreach (var a in FrogsToHop) { if (a != PlayerFrog) a.Hop(isLong: isThisLong); } @@ -389,9 +448,14 @@ namespace HeavenStudio.Games foreach (var a in FrogsToTalk) { a.Talk(syllable, animEnd); } } - public void Sing(int whichFrog, string syllable, double animEnd) + public void Sing(string syllable, double animEnd, bool blue, bool orange, bool greens) { - var FrogsToTalk = new List() { SingerFrog }; //TO DO: make this customizeable + var FrogsToTalk = new List(); + + if (blue) FrogsToTalk.Add(SingerFrog); + if (orange) FrogsToTalk.Add(LeaderFrog); + if (greens) FrogsToTalk.AddRange(BackFrogs); + Talk(FrogsToTalk, syllable, animEnd); } diff --git a/Assets/Scripts/Games/FrogHop/ntrFrog.cs b/Assets/Scripts/Games/FrogHop/ntrFrog.cs index f70a00447..6af128e62 100644 --- a/Assets/Scripts/Games/FrogHop/ntrFrog.cs +++ b/Assets/Scripts/Games/FrogHop/ntrFrog.cs @@ -13,6 +13,7 @@ namespace HeavenStudio.Games.Scripts_FrogHop #region Definitions [SerializeField] public Animator FrogAnim; + [SerializeField] public List SpriteParts = new(); [NonSerialized] public int animSide = -1; [NonSerialized] public float scaleConstant = 1; @@ -64,6 +65,12 @@ namespace HeavenStudio.Games.Scripts_FrogHop else animSide *= -1; } + public void Darken(bool reverse = false) + { + if (!reverse) foreach (var a in SpriteParts) { a.color = new Color(0.5f, 0.5f, 0.5f, 1); } + else foreach (var a in SpriteParts) { a.color = new Color(1, 1, 1, 1); } + } + #endregion } } \ No newline at end of file