mirror of
https://github.com/RHeavenStudioPlus/HeavenStudioPlus.git
synced 2024-11-10 03:35:10 +00:00
Catch of the Day (bugfixes) (#814)
* Freeze Frame Hey, I'm about done with Freeze Frame and I'm just gonna commit the game as it is right now, it's almost done thx -playinful * Freeze Frame - finishing touches before finalized assets Still waiting to implement the upscaled assets and the sound effects. Code-wise this is as much as I can do for now. * i fixed a couple bugs the dim screen is back and no input duplication when switching games. hallelujah * FreezeFrame randomness update hey AJ so i was cleaning my room when i was struck by an idea for how to make the randomization more consistent without seeding. *yes unfortunately* it requires a static variable but i promise u i used it responsibly. * initial commit * mar 13 * Updated cloud particles * 3/22 * First PR * corrected a mistake * forgot to change that goofy ahh icon * Bugfixes Fixed a bug where fishes could be reeled in before the bite animation played and get stuck in the bite animation. Fixed a bug where the count-in for the pausegill played at the incorrect time. Fixed a bug where the threefish would cause a scene transition at the incorrect time. * Crossfade close to done * The Long Awaited Crossfade Update * added sort key * one last quick bugfix (hopefully) --------- Co-authored-by: minenice55 <star.elementa@gmail.com>
This commit is contained in:
parent
45cbe1972b
commit
0894dc6efa
11 changed files with 58576 additions and 56674 deletions
|
@ -18,7 +18,7 @@
|
||||||
-<indent=5%>Bhaos</indent>
|
-<indent=5%>Bhaos</indent>
|
||||||
-<indent=5%>RaffyTaffy14</indent>
|
-<indent=5%>RaffyTaffy14</indent>
|
||||||
-<indent=5%>Thinedave</indent>
|
-<indent=5%>Thinedave</indent>
|
||||||
-<indent=5%>playinful</indent>
|
-<indent=5%>Yin</indent>
|
||||||
-<indent=5%>Marc / ThePurpleAnon</indent>
|
-<indent=5%>Marc / ThePurpleAnon</indent>
|
||||||
-<indent=5%>fu_majime</indent>
|
-<indent=5%>fu_majime</indent>
|
||||||
-<indent=5%>Streitixy</indent>
|
-<indent=5%>Streitixy</indent>
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -72,7 +72,7 @@ SpriteRenderer:
|
||||||
m_LightmapParameters: {fileID: 0}
|
m_LightmapParameters: {fileID: 0}
|
||||||
m_SortingLayerID: 0
|
m_SortingLayerID: 0
|
||||||
m_SortingLayer: 0
|
m_SortingLayer: 0
|
||||||
m_SortingOrder: 0
|
m_SortingOrder: -4
|
||||||
m_Sprite: {fileID: -1654869705, guid: 9dc0046d9c64c0845916b64d36e2fc7e, type: 3}
|
m_Sprite: {fileID: -1654869705, guid: 9dc0046d9c64c0845916b64d36e2fc7e, type: 3}
|
||||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
m_FlipX: 0
|
m_FlipX: 0
|
||||||
|
@ -133,6 +133,7 @@ MonoBehaviour:
|
||||||
_Animator: {fileID: 1962400969548684622}
|
_Animator: {fileID: 1962400969548684622}
|
||||||
_Sprite: {fileID: 8334324854123224507}
|
_Sprite: {fileID: 8334324854123224507}
|
||||||
FleeAnim: 0
|
FleeAnim: 0
|
||||||
|
FlipSprite: 0
|
||||||
--- !u!95 &1962400969548684622
|
--- !u!95 &1962400969548684622
|
||||||
Animator:
|
Animator:
|
||||||
serializedVersion: 5
|
serializedVersion: 5
|
||||||
|
|
|
@ -4781,7 +4781,7 @@ ParticleSystemRenderer:
|
||||||
m_LightmapParameters: {fileID: 0}
|
m_LightmapParameters: {fileID: 0}
|
||||||
m_SortingLayerID: 0
|
m_SortingLayerID: 0
|
||||||
m_SortingLayer: 0
|
m_SortingLayer: 0
|
||||||
m_SortingOrder: 0
|
m_SortingOrder: 600
|
||||||
m_RenderMode: 0
|
m_RenderMode: 0
|
||||||
m_MeshDistribution: 0
|
m_MeshDistribution: 0
|
||||||
m_SortMode: 0
|
m_SortMode: 0
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -178,7 +178,6 @@ GameObject:
|
||||||
m_Component:
|
m_Component:
|
||||||
- component: {fileID: 6818461398746758092}
|
- component: {fileID: 6818461398746758092}
|
||||||
- component: {fileID: 7532825851267565565}
|
- component: {fileID: 7532825851267565565}
|
||||||
- component: {fileID: 8842803494614929758}
|
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: SchoolFish
|
m_Name: SchoolFish
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
|
@ -225,17 +224,6 @@ Animator:
|
||||||
m_AllowConstantClipSamplingOptimization: 1
|
m_AllowConstantClipSamplingOptimization: 1
|
||||||
m_KeepAnimatorStateOnDisable: 0
|
m_KeepAnimatorStateOnDisable: 0
|
||||||
m_WriteDefaultValuesOnDisable: 0
|
m_WriteDefaultValuesOnDisable: 0
|
||||||
--- !u!210 &8842803494614929758
|
|
||||||
SortingGroup:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 6469500009000541928}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_SortingLayerID: 0
|
|
||||||
m_SortingLayer: 0
|
|
||||||
m_SortingOrder: 500
|
|
||||||
--- !u!1 &8946698474682847267
|
--- !u!1 &8946698474682847267
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
|
@ -165,9 +165,9 @@ AnimatorStateTransition:
|
||||||
m_Mute: 0
|
m_Mute: 0
|
||||||
m_IsExit: 0
|
m_IsExit: 0
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_TransitionDuration: 0.25
|
m_TransitionDuration: 0
|
||||||
m_TransitionOffset: 0
|
m_TransitionOffset: 0
|
||||||
m_ExitTime: 0
|
m_ExitTime: 1
|
||||||
m_HasExitTime: 1
|
m_HasExitTime: 1
|
||||||
m_HasFixedDuration: 1
|
m_HasFixedDuration: 1
|
||||||
m_InterruptionSource: 0
|
m_InterruptionSource: 0
|
||||||
|
@ -189,7 +189,7 @@ AnimatorStateTransition:
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_TransitionDuration: 0
|
m_TransitionDuration: 0
|
||||||
m_TransitionOffset: 0
|
m_TransitionOffset: 0
|
||||||
m_ExitTime: 0
|
m_ExitTime: 1
|
||||||
m_HasExitTime: 1
|
m_HasExitTime: 1
|
||||||
m_HasFixedDuration: 1
|
m_HasFixedDuration: 1
|
||||||
m_InterruptionSource: 0
|
m_InterruptionSource: 0
|
||||||
|
@ -264,7 +264,7 @@ AnimatorStateTransition:
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_TransitionDuration: 0
|
m_TransitionDuration: 0
|
||||||
m_TransitionOffset: 0
|
m_TransitionOffset: 0
|
||||||
m_ExitTime: 0
|
m_ExitTime: 1
|
||||||
m_HasExitTime: 1
|
m_HasExitTime: 1
|
||||||
m_HasFixedDuration: 1
|
m_HasFixedDuration: 1
|
||||||
m_InterruptionSource: 0
|
m_InterruptionSource: 0
|
||||||
|
@ -339,7 +339,7 @@ AnimatorStateTransition:
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_TransitionDuration: 0
|
m_TransitionDuration: 0
|
||||||
m_TransitionOffset: 0
|
m_TransitionOffset: 0
|
||||||
m_ExitTime: 0
|
m_ExitTime: 1
|
||||||
m_HasExitTime: 1
|
m_HasExitTime: 1
|
||||||
m_HasFixedDuration: 1
|
m_HasFixedDuration: 1
|
||||||
m_InterruptionSource: 0
|
m_InterruptionSource: 0
|
||||||
|
@ -414,7 +414,7 @@ AnimatorStateTransition:
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_TransitionDuration: 0
|
m_TransitionDuration: 0
|
||||||
m_TransitionOffset: 0
|
m_TransitionOffset: 0
|
||||||
m_ExitTime: 0
|
m_ExitTime: 1
|
||||||
m_HasExitTime: 1
|
m_HasExitTime: 1
|
||||||
m_HasFixedDuration: 1
|
m_HasFixedDuration: 1
|
||||||
m_InterruptionSource: 0
|
m_InterruptionSource: 0
|
||||||
|
@ -436,7 +436,7 @@ AnimatorStateTransition:
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_TransitionDuration: 0
|
m_TransitionDuration: 0
|
||||||
m_TransitionOffset: 0
|
m_TransitionOffset: 0
|
||||||
m_ExitTime: 0
|
m_ExitTime: 1
|
||||||
m_HasExitTime: 1
|
m_HasExitTime: 1
|
||||||
m_HasFixedDuration: 1
|
m_HasFixedDuration: 1
|
||||||
m_InterruptionSource: 0
|
m_InterruptionSource: 0
|
||||||
|
@ -458,7 +458,7 @@ AnimatorStateTransition:
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_TransitionDuration: 0
|
m_TransitionDuration: 0
|
||||||
m_TransitionOffset: 0
|
m_TransitionOffset: 0
|
||||||
m_ExitTime: 0
|
m_ExitTime: 1
|
||||||
m_HasExitTime: 1
|
m_HasExitTime: 1
|
||||||
m_HasFixedDuration: 1
|
m_HasFixedDuration: 1
|
||||||
m_InterruptionSource: 0
|
m_InterruptionSource: 0
|
||||||
|
@ -480,7 +480,7 @@ AnimatorStateTransition:
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_TransitionDuration: 0
|
m_TransitionDuration: 0
|
||||||
m_TransitionOffset: 0
|
m_TransitionOffset: 0
|
||||||
m_ExitTime: 0
|
m_ExitTime: 1
|
||||||
m_HasExitTime: 1
|
m_HasExitTime: 1
|
||||||
m_HasFixedDuration: 1
|
m_HasFixedDuration: 1
|
||||||
m_InterruptionSource: 0
|
m_InterruptionSource: 0
|
||||||
|
@ -634,7 +634,7 @@ AnimatorStateTransition:
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_TransitionDuration: 0
|
m_TransitionDuration: 0
|
||||||
m_TransitionOffset: 0
|
m_TransitionOffset: 0
|
||||||
m_ExitTime: 0
|
m_ExitTime: 1
|
||||||
m_HasExitTime: 1
|
m_HasExitTime: 1
|
||||||
m_HasFixedDuration: 1
|
m_HasFixedDuration: 1
|
||||||
m_InterruptionSource: 0
|
m_InterruptionSource: 0
|
||||||
|
@ -888,7 +888,7 @@ AnimatorStateTransition:
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_TransitionDuration: 0
|
m_TransitionDuration: 0
|
||||||
m_TransitionOffset: 0
|
m_TransitionOffset: 0
|
||||||
m_ExitTime: 0
|
m_ExitTime: 1
|
||||||
m_HasExitTime: 1
|
m_HasExitTime: 1
|
||||||
m_HasFixedDuration: 1
|
m_HasFixedDuration: 1
|
||||||
m_InterruptionSource: 0
|
m_InterruptionSource: 0
|
||||||
|
@ -1015,7 +1015,7 @@ AnimatorStateTransition:
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_TransitionDuration: 0
|
m_TransitionDuration: 0
|
||||||
m_TransitionOffset: 0
|
m_TransitionOffset: 0
|
||||||
m_ExitTime: 0
|
m_ExitTime: 1
|
||||||
m_HasExitTime: 1
|
m_HasExitTime: 1
|
||||||
m_HasFixedDuration: 1
|
m_HasFixedDuration: 1
|
||||||
m_InterruptionSource: 0
|
m_InterruptionSource: 0
|
||||||
|
@ -1035,9 +1035,9 @@ AnimatorStateTransition:
|
||||||
m_Mute: 0
|
m_Mute: 0
|
||||||
m_IsExit: 0
|
m_IsExit: 0
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_TransitionDuration: 0.25
|
m_TransitionDuration: 0
|
||||||
m_TransitionOffset: 0
|
m_TransitionOffset: 0
|
||||||
m_ExitTime: 0.28571427
|
m_ExitTime: 1
|
||||||
m_HasExitTime: 1
|
m_HasExitTime: 1
|
||||||
m_HasFixedDuration: 1
|
m_HasFixedDuration: 1
|
||||||
m_InterruptionSource: 0
|
m_InterruptionSource: 0
|
||||||
|
@ -1111,7 +1111,7 @@ AnimatorStateTransition:
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_TransitionDuration: 0
|
m_TransitionDuration: 0
|
||||||
m_TransitionOffset: 0
|
m_TransitionOffset: 0
|
||||||
m_ExitTime: 0
|
m_ExitTime: 1
|
||||||
m_HasExitTime: 1
|
m_HasExitTime: 1
|
||||||
m_HasFixedDuration: 1
|
m_HasFixedDuration: 1
|
||||||
m_InterruptionSource: 0
|
m_InterruptionSource: 0
|
||||||
|
@ -1346,7 +1346,7 @@ AnimatorStateTransition:
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_TransitionDuration: 0
|
m_TransitionDuration: 0
|
||||||
m_TransitionOffset: 0
|
m_TransitionOffset: 0
|
||||||
m_ExitTime: 0
|
m_ExitTime: 1
|
||||||
m_HasExitTime: 1
|
m_HasExitTime: 1
|
||||||
m_HasFixedDuration: 1
|
m_HasFixedDuration: 1
|
||||||
m_InterruptionSource: 0
|
m_InterruptionSource: 0
|
||||||
|
|
|
@ -4,6 +4,7 @@ using HeavenStudio;
|
||||||
using HeavenStudio.Games;
|
using HeavenStudio.Games;
|
||||||
using HeavenStudio.Util;
|
using HeavenStudio.Util;
|
||||||
using Jukebox;
|
using Jukebox;
|
||||||
|
using UnityEditor.Playables;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.Rendering;
|
using UnityEngine.Rendering;
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,13 @@
|
||||||
using System;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
using HeavenStudio.Util;
|
using HeavenStudio.Util;
|
||||||
using HeavenStudio.InputSystem;
|
|
||||||
|
|
||||||
using Jukebox;
|
using Jukebox;
|
||||||
using System.Runtime.CompilerServices;
|
|
||||||
|
|
||||||
using HeavenStudio.Games.Scripts_CatchOfTheDay;
|
using HeavenStudio.Games.Scripts_CatchOfTheDay;
|
||||||
using UnityEngine.AI;
|
using HeavenStudio.Common;
|
||||||
|
|
||||||
namespace HeavenStudio.Games.Loaders
|
namespace HeavenStudio.Games.Loaders
|
||||||
{
|
{
|
||||||
|
@ -37,7 +33,7 @@ namespace HeavenStudio.Games.Loaders
|
||||||
}),
|
}),
|
||||||
new Param("colorTop", new Color(0.7098039f, 0.8705882f, 0.8705882f), "Top Color", "The color for the top part of the background."),
|
new Param("colorTop", new Color(0.7098039f, 0.8705882f, 0.8705882f), "Top Color", "The color for the top part of the background."),
|
||||||
new Param("colorBottom", new Color(0.4666667f, 0.7372549f, 0.8196079f), "Bottom Color", "The color for the bottom part of the background."),
|
new Param("colorBottom", new Color(0.4666667f, 0.7372549f, 0.8196079f), "Bottom Color", "The color for the bottom part of the background."),
|
||||||
new Param("sceneDelay", new EntityTypes.Float(0f, 32f, 1f), "Scene Change Delay", "Amount of beats to wait before changing to the next scene."),
|
new Param("sceneDelay", new EntityTypes.Float(0f, 32f, 2f), "Scene Change Delay", "Amount of beats to wait before changing to the next scene."),
|
||||||
new Param("fgManta", false, "Foreground Stingray", "Spawn a stingray in the foreground of the scene."),
|
new Param("fgManta", false, "Foreground Stingray", "Spawn a stingray in the foreground of the scene."),
|
||||||
new Param("bgManta", false, "Background Stingray", "Spawn a stingray in the background of the scene."),
|
new Param("bgManta", false, "Background Stingray", "Spawn a stingray in the background of the scene."),
|
||||||
new Param("schoolFish", false, "School of Fish", "Spawn a school of fish to as a distraction.", new List<Param.CollapseParam>()
|
new Param("schoolFish", false, "School of Fish", "Spawn a school of fish to as a distraction.", new List<Param.CollapseParam>()
|
||||||
|
@ -62,7 +58,7 @@ namespace HeavenStudio.Games.Loaders
|
||||||
}),
|
}),
|
||||||
new Param("colorTop", new Color(0.7098039f, 0.8705882f, 0.8705882f), "Top Color", "The color for the top part of the background."),
|
new Param("colorTop", new Color(0.7098039f, 0.8705882f, 0.8705882f), "Top Color", "The color for the top part of the background."),
|
||||||
new Param("colorBottom", new Color(0.4666667f, 0.7372549f, 0.8196079f), "Bottom Color", "The color for the bottom part of the background."),
|
new Param("colorBottom", new Color(0.4666667f, 0.7372549f, 0.8196079f), "Bottom Color", "The color for the bottom part of the background."),
|
||||||
new Param("sceneDelay", new EntityTypes.Float(0f, 32f, 1f), "Scene Change Delay", "Amount of beats to wait before changing to the next scene."),
|
new Param("sceneDelay", new EntityTypes.Float(0f, 32f, 2f), "Scene Change Delay", "Amount of beats to wait before changing to the next scene."),
|
||||||
new Param("fgManta", false, "Foreground Stingray", "Spawn a stingray in the foreground of the scene."),
|
new Param("fgManta", false, "Foreground Stingray", "Spawn a stingray in the foreground of the scene."),
|
||||||
new Param("bgManta", false, "Background Stingray", "Spawn a stingray in the background of the scene."),
|
new Param("bgManta", false, "Background Stingray", "Spawn a stingray in the background of the scene."),
|
||||||
new Param("schoolFish", false, "School of Fish", "Spawn a school of fish to as a distraction.", new List<Param.CollapseParam>()
|
new Param("schoolFish", false, "School of Fish", "Spawn a school of fish to as a distraction.", new List<Param.CollapseParam>()
|
||||||
|
@ -88,7 +84,7 @@ namespace HeavenStudio.Games.Loaders
|
||||||
}),
|
}),
|
||||||
new Param("colorTop", new Color(0.7098039f, 0.8705882f, 0.8705882f), "Top Color", "The color for the top part of the background."),
|
new Param("colorTop", new Color(0.7098039f, 0.8705882f, 0.8705882f), "Top Color", "The color for the top part of the background."),
|
||||||
new Param("colorBottom", new Color(0.4666667f, 0.7372549f, 0.8196079f), "Bottom Color", "The color for the bottom part of the background."),
|
new Param("colorBottom", new Color(0.4666667f, 0.7372549f, 0.8196079f), "Bottom Color", "The color for the bottom part of the background."),
|
||||||
new Param("sceneDelay", new EntityTypes.Float(0f, 32f, 1f), "Scene Change Delay", "Amount of beats to wait before changing to the next scene."),
|
new Param("sceneDelay", new EntityTypes.Float(0f, 32f, 2f), "Scene Change Delay", "Amount of beats to wait before changing to the next scene."),
|
||||||
new Param("fgManta", false, "Foreground Stingray", "Spawn a stingray in the foreground of the scene."),
|
new Param("fgManta", false, "Foreground Stingray", "Spawn a stingray in the foreground of the scene."),
|
||||||
new Param("bgManta", false, "Background Stingray", "Spawn a stingray in the background of the scene."),
|
new Param("bgManta", false, "Background Stingray", "Spawn a stingray in the background of the scene."),
|
||||||
new Param("schoolFish", false, "School of Fish", "Spawn a school of fish to as a distraction.", new List<Param.CollapseParam>()
|
new Param("schoolFish", false, "School of Fish", "Spawn a school of fish to as a distraction.", new List<Param.CollapseParam>()
|
||||||
|
@ -98,10 +94,54 @@ namespace HeavenStudio.Games.Loaders
|
||||||
new Param("fishDensity", new EntityTypes.Float(0f, 1f, 1f), "Fish Density", "Set the density for the fish in the school."),
|
new Param("fishDensity", new EntityTypes.Float(0f, 1f, 1f), "Fish Density", "Set the density for the fish in the school."),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
new GameAction("moveAngler", "Move Angler")
|
||||||
|
{
|
||||||
|
function = delegate { var e = eventCaller.currentEntity; CatchOfTheDay.Instance.SetAnglerMovement(e); },
|
||||||
|
defaultLength = 1f,
|
||||||
|
resizable = true,
|
||||||
|
parameters = new List<Param>()
|
||||||
|
{
|
||||||
|
new Param("doMove", false, "Move", "Select this option if you want to move Ann.", new List<Param.CollapseParam>()
|
||||||
|
{
|
||||||
|
new Param.CollapseParam((x, _) => (bool)x, new string[] { "endMoveX", "endMoveY" } ),
|
||||||
|
new Param.CollapseParam((x, e) => (bool)x && (Util.EasingFunction.Ease)e["ease"] != Util.EasingFunction.Ease.Instant, new string[] { "startMoveX", "startMoveY" }),
|
||||||
|
new Param.CollapseParam((_, e) => (bool)e["doMove"] || (bool)e["doRotate"] || (bool)e["doScale"], new string[] { "ease" })
|
||||||
|
}),
|
||||||
|
new Param("startMoveX", new EntityTypes.Float(-20f, 20f, 0f), "Start X", "Set the X position from which to move."),
|
||||||
|
new Param("startMoveY", new EntityTypes.Float(-20f, 20f, 0f), "Start Y", "Set the Y position from which to move."),
|
||||||
|
new Param("endMoveX", new EntityTypes.Float(-20f, 20f, 0f), "End X", "Set the X position to which to move."),
|
||||||
|
new Param("endMoveY", new EntityTypes.Float(-20f, 20f, 0f), "End Y", "Set the Y position to which to move."),
|
||||||
|
new Param("doRotate", false, "Rotate", "Select this option if you want to rotate Ann.", new List<Param.CollapseParam>()
|
||||||
|
{
|
||||||
|
new Param.CollapseParam((x, _) => (bool)x, new string[] { "endRotDegrees" } ),
|
||||||
|
new Param.CollapseParam((x, e) => (bool)x && (Util.EasingFunction.Ease)e["ease"] != Util.EasingFunction.Ease.Instant, new string[] { "startRotDegrees" }),
|
||||||
|
new Param.CollapseParam((_, e) => (bool)e["doMove"] || (bool)e["doRotate"] || (bool)e["doScale"], new string[] { "ease" })
|
||||||
|
}),
|
||||||
|
new Param("startRotDegrees", new EntityTypes.Float(-360f, 360f, 0f), "Start Rotation", "Set the amount of degrees at which to begin rotating."),
|
||||||
|
new Param("endRotDegrees", new EntityTypes.Float(-360f, 360f, 0f), "End Rotation", "Set the amount of degrees at which to finish rotating."),
|
||||||
|
new Param("doScale", false, "Scale", "Select this option if you want to change Ann's scale.", new List<Param.CollapseParam>()
|
||||||
|
{
|
||||||
|
new Param.CollapseParam((x, _) => (bool)x, new string[] { "endScaleX", "endScaleY" } ),
|
||||||
|
new Param.CollapseParam((x, e) => (bool)x && (Util.EasingFunction.Ease)e["ease"] != Util.EasingFunction.Ease.Instant, new string[] { "startScaleX", "startScaleY" }),
|
||||||
|
new Param.CollapseParam((_, e) => (bool)e["doMove"] || (bool)e["doRotate"] || (bool)e["doScale"], new string[] { "ease" })
|
||||||
|
}),
|
||||||
|
new Param("startScaleX", new EntityTypes.Float(-5f, 5f, 1f), "Start Scale X", "Set the desired scale on the X axis at which to start."),
|
||||||
|
new Param("startScaleY", new EntityTypes.Float(-5f, 5f, 1f), "Start Scale Y", "Set the desired scale on the Y axis at which to start."),
|
||||||
|
new Param("endScaleX", new EntityTypes.Float(-5f, 5f, 1f), "End Scale X", "Set the desired scale on the X axis at which to end."),
|
||||||
|
new Param("endScaleY", new EntityTypes.Float(-5f, 5f, 1f), "End Scale Y", "Set the desired scale on the Y axis at which to end."),
|
||||||
|
new Param("ease", Util.EasingFunction.Ease.Linear, "Ease", "Set the easing for the action.", new List<Param.CollapseParam>()
|
||||||
|
{
|
||||||
|
new Param.CollapseParam((x, e) => (Util.EasingFunction.Ease)x != Util.EasingFunction.Ease.Instant && (bool)e["doMove"], new string[] { "startMoveX", "startMoveY" }),
|
||||||
|
new Param.CollapseParam((x, e) => (Util.EasingFunction.Ease)x != Util.EasingFunction.Ease.Instant && (bool)e["doRotate"], new string[] { "startRotDegrees" }),
|
||||||
|
new Param.CollapseParam((x, e) => (Util.EasingFunction.Ease)x != Util.EasingFunction.Ease.Instant && (bool)e["doScale"], new string[] { "startScaleX", "startScaleY" }),
|
||||||
|
}),
|
||||||
|
new Param("sticky", false, "Follow Camera", "Select this to make Ann follow the camera."),
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
new List<string>() {"rvl", "normal"},
|
new List<string>() {"rvl", "normal"},
|
||||||
"rvlfishing", "en"
|
"rvlfishing", "en"
|
||||||
//, chronologicalSortIndex: 21
|
, chronologicalSortKey: 21
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -113,11 +153,10 @@ namespace HeavenStudio.Games
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
BIG LIST OF TODOS
|
BIG LIST OF TODOS
|
||||||
- ping @hexiedecimal
|
|
||||||
- scene transitions
|
|
||||||
- wait for upscale
|
- wait for upscale
|
||||||
- make ann movable
|
|
||||||
*/
|
*/
|
||||||
|
protected const int MAX_LAKES = 50;
|
||||||
|
|
||||||
public static CatchOfTheDay Instance
|
public static CatchOfTheDay Instance
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -137,6 +176,28 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public static Dictionary<RiqEntity, MultiSound> FishSounds = new();
|
public static Dictionary<RiqEntity, MultiSound> FishSounds = new();
|
||||||
|
|
||||||
|
private List<RiqEntity> _AllFishes;
|
||||||
|
|
||||||
|
[SerializeField] Transform AnglerTransform;
|
||||||
|
private bool _AnglerIsMoving = false;
|
||||||
|
private AnglerMoveArgs _CurrentAnglerMoveArgs;
|
||||||
|
private bool _AnglerIsRotating = false;
|
||||||
|
private AnglerRotateArgs _CurrentAnglerRotateArgs;
|
||||||
|
private bool _AnglerIsScaling = false;
|
||||||
|
private AnglerScaleArgs _CurrentAnglerScaleArgs;
|
||||||
|
|
||||||
|
private Vector3 _AnglerBasePosition;
|
||||||
|
private Vector3 _AnglerBaseEulerAngles;
|
||||||
|
private Vector3 _AnglerBaseScale;
|
||||||
|
|
||||||
|
[SerializeField] StickyCanvas _StickyCanvas;
|
||||||
|
|
||||||
|
void Awake()
|
||||||
|
{
|
||||||
|
_AnglerBasePosition = AnglerTransform.localPosition;
|
||||||
|
_AnglerBaseEulerAngles = AnglerTransform.localEulerAngles;
|
||||||
|
_AnglerBaseScale = AnglerTransform.localScale;
|
||||||
|
}
|
||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
if (!conductor.isPlaying && !conductor.isPaused && ActiveLakes.Count <= 0)
|
if (!conductor.isPlaying && !conductor.isPaused && ActiveLakes.Count <= 0)
|
||||||
|
@ -147,6 +208,60 @@ namespace HeavenStudio.Games
|
||||||
else
|
else
|
||||||
SpawnNextFish(conductor.songPositionInBeatsAsDouble);
|
SpawnNextFish(conductor.songPositionInBeatsAsDouble);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Moving Ann
|
||||||
|
if (_AnglerIsMoving)
|
||||||
|
{
|
||||||
|
float normalizedBeat = Conductor.instance.GetPositionFromBeat(_CurrentAnglerMoveArgs.StartBeat, _CurrentAnglerMoveArgs.Length);
|
||||||
|
Util.EasingFunction.Function func = Util.EasingFunction.GetEasingFunction(_CurrentAnglerMoveArgs.Ease);
|
||||||
|
float newPos = func(0f, 1f, normalizedBeat);
|
||||||
|
Vector3 diff = _CurrentAnglerMoveArgs.EndPosition - _CurrentAnglerMoveArgs.StartPosition;
|
||||||
|
AnglerTransform.localPosition = _AnglerBasePosition + _CurrentAnglerMoveArgs.StartPosition + (diff * newPos);
|
||||||
|
|
||||||
|
if (normalizedBeat >= 1f)
|
||||||
|
{
|
||||||
|
AnglerTransform.localPosition = _AnglerBasePosition + _CurrentAnglerMoveArgs.EndPosition;
|
||||||
|
_AnglerIsMoving = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (_AnglerIsRotating)
|
||||||
|
{
|
||||||
|
float normalizedBeat = Conductor.instance.GetPositionFromBeat(_CurrentAnglerRotateArgs.StartBeat, _CurrentAnglerRotateArgs.Length);
|
||||||
|
Util.EasingFunction.Function func = Util.EasingFunction.GetEasingFunction(_CurrentAnglerRotateArgs.Ease);
|
||||||
|
float newPos = func(0f, 1f, normalizedBeat);
|
||||||
|
float diff = _CurrentAnglerRotateArgs.EndRotation - _CurrentAnglerRotateArgs.StartRotation;
|
||||||
|
AnglerTransform.localEulerAngles = _AnglerBaseEulerAngles + new Vector3(0, 0, _CurrentAnglerRotateArgs.StartRotation + (diff * newPos));
|
||||||
|
|
||||||
|
if (normalizedBeat >= 1f)
|
||||||
|
{
|
||||||
|
AnglerTransform.localEulerAngles = _AnglerBaseEulerAngles + new Vector3(0, 0, _CurrentAnglerRotateArgs.EndRotation);
|
||||||
|
_AnglerIsRotating = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (_AnglerIsScaling)
|
||||||
|
{
|
||||||
|
float normalizedBeat = Conductor.instance.GetPositionFromBeat(_CurrentAnglerScaleArgs.StartBeat, _CurrentAnglerScaleArgs.Length);
|
||||||
|
Util.EasingFunction.Function func = Util.EasingFunction.GetEasingFunction(_CurrentAnglerScaleArgs.Ease);
|
||||||
|
float newPos = func(0f, 1f, normalizedBeat);
|
||||||
|
Vector3 diff = _CurrentAnglerScaleArgs.EndScale - _CurrentAnglerScaleArgs.StartScale;
|
||||||
|
AnglerTransform.localScale = new Vector3
|
||||||
|
(
|
||||||
|
_AnglerBaseScale.x * (_CurrentAnglerScaleArgs.StartScale.x + (diff.x * newPos)),
|
||||||
|
_AnglerBaseScale.y * (_CurrentAnglerScaleArgs.StartScale.y + (diff.y * newPos)),
|
||||||
|
0
|
||||||
|
);
|
||||||
|
|
||||||
|
if (normalizedBeat >= 1f)
|
||||||
|
{
|
||||||
|
AnglerTransform.localScale = new Vector3
|
||||||
|
(
|
||||||
|
_AnglerBaseScale.x * _CurrentAnglerScaleArgs.EndScale.x,
|
||||||
|
_AnglerBaseScale.y * _CurrentAnglerScaleArgs.EndScale.y,
|
||||||
|
0
|
||||||
|
);
|
||||||
|
_AnglerIsScaling = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public override void OnPlay(double beat)
|
public override void OnPlay(double beat)
|
||||||
{
|
{
|
||||||
|
@ -156,6 +271,13 @@ namespace HeavenStudio.Games
|
||||||
{
|
{
|
||||||
DestroyOrphanedLakes();
|
DestroyOrphanedLakes();
|
||||||
CleanupFishSounds();
|
CleanupFishSounds();
|
||||||
|
|
||||||
|
// set ann movement
|
||||||
|
foreach (RiqEntity e in EventCaller.GetAllInGameManagerList("catchOfTheDay", new string[] { "moveAngler" }).Where(e => e.beat <= beat).OrderBy(e => e.beat))
|
||||||
|
{
|
||||||
|
SetAnglerMovement(e);
|
||||||
|
}
|
||||||
|
|
||||||
// get active fishes
|
// get active fishes
|
||||||
foreach (RiqEntity e in GetActiveFishes(beat))
|
foreach (RiqEntity e in GetActiveFishes(beat))
|
||||||
{
|
{
|
||||||
|
@ -198,7 +320,7 @@ namespace HeavenStudio.Games
|
||||||
{
|
{
|
||||||
MultiSound.Play(new MultiSound.Sound[]{
|
MultiSound.Play(new MultiSound.Sound[]{
|
||||||
new MultiSound.Sound("count-ins/and", beat + 2),
|
new MultiSound.Sound("count-ins/and", beat + 2),
|
||||||
new MultiSound.Sound(UnityEngine.Random.Range(0.0f, 1.0f) > 0.5 ? "count-ins/go1" : "count-ins/go2", beat + 2),
|
new MultiSound.Sound(UnityEngine.Random.Range(0.0f, 1.0f) > 0.5 ? "count-ins/go1" : "count-ins/go2", beat + 3),
|
||||||
}, forcePlay: true, game: false);
|
}, forcePlay: true, game: false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -232,6 +354,41 @@ namespace HeavenStudio.Games
|
||||||
Instance.ActiveLakes[e]._MultiSound = FishSounds[e];
|
Instance.ActiveLakes[e]._MultiSound = FishSounds[e];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetAnglerMovement(RiqEntity e)
|
||||||
|
{
|
||||||
|
if (e["doMove"])
|
||||||
|
{
|
||||||
|
_AnglerIsMoving = true;
|
||||||
|
_CurrentAnglerMoveArgs = new AnglerMoveArgs(
|
||||||
|
e.beat, e.length,
|
||||||
|
new Vector3(e["startMoveX"], e["startMoveY"], 0),
|
||||||
|
new Vector3(e["endMoveX"], e["endMoveY"], 0),
|
||||||
|
e["ease"]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (e["doRotate"])
|
||||||
|
{
|
||||||
|
_AnglerIsRotating = true;
|
||||||
|
_CurrentAnglerRotateArgs = new AnglerRotateArgs(
|
||||||
|
e.beat, e.length,
|
||||||
|
e["startRotDegrees"],
|
||||||
|
e["endRotDegrees"],
|
||||||
|
e["ease"]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (e["doScale"])
|
||||||
|
{
|
||||||
|
_AnglerIsScaling = true;
|
||||||
|
_CurrentAnglerScaleArgs = new AnglerScaleArgs(
|
||||||
|
e.beat, e.length,
|
||||||
|
new Vector3(e["startScaleX"], e["startScaleY"], 1),
|
||||||
|
new Vector3(e["endScaleX"], e["endScaleY"], 1),
|
||||||
|
e["ease"]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
_StickyCanvas.Sticky = (bool)e["sticky"];
|
||||||
|
}
|
||||||
|
|
||||||
public void DoPickAnim()
|
public void DoPickAnim()
|
||||||
{
|
{
|
||||||
Angler.DoScaledAnimationAsync("Pick", 0.5f);
|
Angler.DoScaledAnimationAsync("Pick", 0.5f);
|
||||||
|
@ -280,30 +437,36 @@ namespace HeavenStudio.Games
|
||||||
}
|
}
|
||||||
public List<RiqEntity> GetActiveFishes(double beat)
|
public List<RiqEntity> GetActiveFishes(double beat)
|
||||||
{
|
{
|
||||||
return EventCaller.GetAllInGameManagerList("catchOfTheDay", new string[] { "fish1", "fish2", "fish3" }).FindAll(e => e.beat <= beat && e.beat + e.length - 1 + e["sceneDelay"] >= beat);
|
return CacheFishes().FindAll(e => e.beat <= beat && e.beat + e.length - 1 + e["sceneDelay"] >= beat);
|
||||||
}
|
}
|
||||||
public RiqEntity GetNextFish(double beat)
|
public RiqEntity GetNextFish(double beat)
|
||||||
{
|
{
|
||||||
RiqEntity gameSwitch = GetNextGameSwitch(beat);
|
RiqEntity gameSwitch = GetNextGameSwitch(beat);
|
||||||
return EventCaller.GetAllInGameManagerList("catchOfTheDay", new string[] { "fish1", "fish2", "fish3" }).OrderBy(e => e.beat).FirstOrDefault(e => e.beat >= beat && (gameSwitch is null || e.beat < gameSwitch.beat));
|
return CacheFishes().FirstOrDefault(e => e.beat >= beat && (gameSwitch is null || e.beat < gameSwitch.beat));
|
||||||
}
|
}
|
||||||
public RiqEntity GetNextGameSwitch(double beat)
|
public RiqEntity GetNextGameSwitch(double beat)
|
||||||
{
|
{
|
||||||
return EventCaller.GetAllInGameManagerList("gameManager", new string[] { "switchGame" }).OrderBy(e => e.beat).FirstOrDefault(e => e.beat > beat && e.datamodel != "gameManager/switchGame/catchOfTheDay");
|
return EventCaller.GetAllInGameManagerList("gameManager", new string[] { "switchGame" }).OrderBy(e => e.beat).FirstOrDefault(e => e.beat > beat && e.datamodel != "gameManager/switchGame/catchOfTheDay");
|
||||||
}
|
}
|
||||||
|
|
||||||
public LakeScene NewLake(RiqEntity e)
|
public LakeScene NewLake(RiqEntity e)
|
||||||
{
|
{
|
||||||
if (ActiveLakes.ContainsKey(e))
|
if (ActiveLakes.ContainsKey(e))
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
int sort = EventCaller.GetAllInGameManagerList("catchOfTheDay", new string[] { "fish1", "fish2", "fish3" }).FindIndex(x => e == x);
|
if (ActiveLakes.Count >= MAX_LAKES)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
int sort = CacheFishes().FindIndex(x => e == x);
|
||||||
if (sort < 0)
|
if (sort < 0)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
CleanupFishSounds();
|
CleanupFishSounds();
|
||||||
|
|
||||||
|
Debug.Log($"Spawning Lake {sort}");
|
||||||
|
|
||||||
LakeScene lake = Instantiate(LakeScenePrefab, LakeSceneHolder).GetComponent<LakeScene>();
|
LakeScene lake = Instantiate(LakeScenePrefab, LakeSceneHolder).GetComponent<LakeScene>();
|
||||||
LastLayout = lake.Setup(e, this, LastLayout, int.MaxValue - sort);
|
LastLayout = lake.Setup(e, this, LastLayout, 0 - sort);
|
||||||
ActiveLakes.Add(e, lake);
|
ActiveLakes.Add(e, lake);
|
||||||
if (FishSounds.ContainsKey(e))
|
if (FishSounds.ContainsKey(e))
|
||||||
lake._MultiSound = FishSounds[e];
|
lake._MultiSound = FishSounds[e];
|
||||||
|
@ -319,17 +482,22 @@ namespace HeavenStudio.Games
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
public void DisposeLake(LakeScene lake)
|
public void DisposeLake(LakeScene lake, double beat)
|
||||||
{
|
{
|
||||||
ActiveLakes.Remove(lake.Entity);
|
ActiveLakes.Remove(lake.Entity);
|
||||||
|
|
||||||
if (ActiveLakes.Count <= 0)
|
if (ActiveLakes.Count <= 0)
|
||||||
{
|
{
|
||||||
if (SpawnNextFish(conductor.songPositionInBeatsAsDouble))
|
if (SpawnNextFish(conductor.songPositionInBeatsAsDouble))
|
||||||
Destroy(lake.gameObject);
|
lake.Crossfade(beat);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Destroy(lake.gameObject);
|
lake.Crossfade(beat);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<RiqEntity> CacheFishes()
|
||||||
|
{
|
||||||
|
return _AllFishes ??= EventCaller.GetAllInGameManagerList("catchOfTheDay", new string[] { "fish1", "fish2", "fish3" }).OrderBy(e => e.beat).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum FishLayout : int
|
public enum FishLayout : int
|
||||||
|
@ -339,7 +507,59 @@ namespace HeavenStudio.Games
|
||||||
LayoutB = 1,
|
LayoutB = 1,
|
||||||
LayoutC = 2
|
LayoutC = 2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private struct AnglerMoveArgs
|
||||||
|
{
|
||||||
|
public Vector3 StartPosition;
|
||||||
|
public Vector3 EndPosition;
|
||||||
|
public double StartBeat;
|
||||||
|
public double Length;
|
||||||
|
public Util.EasingFunction.Ease Ease;
|
||||||
|
|
||||||
|
public AnglerMoveArgs(double startBeat, double length, Vector3 startPosition, Vector3 endPosition, int ease)
|
||||||
|
{
|
||||||
|
StartPosition = startPosition;
|
||||||
|
EndPosition = endPosition;
|
||||||
|
StartBeat = startBeat;
|
||||||
|
Length = length;
|
||||||
|
Ease = (Util.EasingFunction.Ease)ease;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private struct AnglerRotateArgs
|
||||||
|
{
|
||||||
|
public float StartRotation;
|
||||||
|
public float EndRotation;
|
||||||
|
public double StartBeat;
|
||||||
|
public double Length;
|
||||||
|
public Util.EasingFunction.Ease Ease;
|
||||||
|
|
||||||
|
public AnglerRotateArgs(double startBeat, double length, float startRotation, float endRotation, int ease)
|
||||||
|
{
|
||||||
|
StartRotation = startRotation;
|
||||||
|
EndRotation = endRotation;
|
||||||
|
StartBeat = startBeat;
|
||||||
|
Length = length;
|
||||||
|
Ease = (Util.EasingFunction.Ease)ease;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private struct AnglerScaleArgs
|
||||||
|
{
|
||||||
|
public Vector3 StartScale;
|
||||||
|
public Vector3 EndScale;
|
||||||
|
public double StartBeat;
|
||||||
|
public double Length;
|
||||||
|
public Util.EasingFunction.Ease Ease;
|
||||||
|
|
||||||
|
public AnglerScaleArgs(double startBeat, double length, Vector3 startScale, Vector3 endScale, int ease)
|
||||||
|
{
|
||||||
|
StartScale = startScale;
|
||||||
|
EndScale = endScale;
|
||||||
|
StartBeat = startBeat;
|
||||||
|
Length = length;
|
||||||
|
Ease = (Util.EasingFunction.Ease)ease;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// This minigame ported by playinful. ☆
|
// This minigame ported by Yin. ☆
|
|
@ -1,8 +1,5 @@
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using HeavenStudio;
|
|
||||||
using HeavenStudio.Games;
|
|
||||||
using HeavenStudio.Util;
|
using HeavenStudio.Util;
|
||||||
using Jukebox;
|
using Jukebox;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
@ -37,6 +34,15 @@ namespace HeavenStudio.Games.Scripts_CatchOfTheDay
|
||||||
|
|
||||||
public MultiSound _MultiSound;
|
public MultiSound _MultiSound;
|
||||||
|
|
||||||
|
private RenderTexture _RenderTexture;
|
||||||
|
private Texture2D _DisplayTexture;
|
||||||
|
|
||||||
|
private double? _CrossfadeStartBeat;
|
||||||
|
[SerializeField] GameObject Renderer;
|
||||||
|
private bool _FirstUpdate = false;
|
||||||
|
|
||||||
|
[SerializeField] Animator CrossfadeAnimator;
|
||||||
|
|
||||||
void Update()
|
void Update()
|
||||||
{
|
{
|
||||||
if (FishSchool.activeSelf)
|
if (FishSchool.activeSelf)
|
||||||
|
@ -45,6 +51,23 @@ namespace HeavenStudio.Games.Scripts_CatchOfTheDay
|
||||||
BigManta.transform.localPosition = new Vector3((float)Entity.beat - Conductor.instance.songPositionInBeats + 4.5f, BigManta.transform.localPosition.y, BigManta.transform.localPosition.z);
|
BigManta.transform.localPosition = new Vector3((float)Entity.beat - Conductor.instance.songPositionInBeats + 4.5f, BigManta.transform.localPosition.y, BigManta.transform.localPosition.z);
|
||||||
if (SmallManta.activeSelf)
|
if (SmallManta.activeSelf)
|
||||||
SmallManta.transform.localPosition = new Vector3(1.25f + ((Conductor.instance.songPositionInBeats - (float)Entity.beat) * 0.13f), SmallManta.transform.localPosition.y, SmallManta.transform.localPosition.y);
|
SmallManta.transform.localPosition = new Vector3(1.25f + ((Conductor.instance.songPositionInBeats - (float)Entity.beat) * 0.13f), SmallManta.transform.localPosition.y, SmallManta.transform.localPosition.y);
|
||||||
|
|
||||||
|
if (!IsDummy)
|
||||||
|
RenderScene();
|
||||||
|
|
||||||
|
if (_CrossfadeStartBeat is double startBeat)
|
||||||
|
{
|
||||||
|
float normalizedBeat = Conductor.instance.GetPositionFromBeat(startBeat, 1);
|
||||||
|
DisplaySprite.color = new Color(1, 1, 1, 1 - normalizedBeat);
|
||||||
|
float scale = 1 + (float)(normalizedBeat * 0.875);// * 2);
|
||||||
|
transform.localScale = new Vector3(scale, scale, 1);
|
||||||
|
if (normalizedBeat >= 1f) Destroy(gameObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void OnDestroy()
|
||||||
|
{
|
||||||
|
if (ReelAction != null)
|
||||||
|
ReelAction.Disable();
|
||||||
}
|
}
|
||||||
|
|
||||||
public int Setup(RiqEntity e, CatchOfTheDay minigame, int? lastLayout = null, int sortingIndex = 0)
|
public int Setup(RiqEntity e, CatchOfTheDay minigame, int? lastLayout = null, int sortingIndex = 0)
|
||||||
|
@ -64,7 +87,7 @@ namespace HeavenStudio.Games.Scripts_CatchOfTheDay
|
||||||
new BeatAction.Action(e.beat, delegate { DoPickAnim(e.beat); }),
|
new BeatAction.Action(e.beat, delegate { DoPickAnim(e.beat); }),
|
||||||
new BeatAction.Action(e.beat + 1, delegate { DoPickAnim(e.beat + 1); }),
|
new BeatAction.Action(e.beat + 1, delegate { DoPickAnim(e.beat + 1); }),
|
||||||
new BeatAction.Action(e.beat + 2 - 0.1f, delegate { DoBiteAnim(e.beat + 2 - 0.1f); }),
|
new BeatAction.Action(e.beat + 2 - 0.1f, delegate { DoBiteAnim(e.beat + 2 - 0.1f); }),
|
||||||
new BeatAction.Action(e.beat + 2 + (float)e["sceneDelay"], delegate { minigame.DisposeLake(this); }),
|
new BeatAction.Action(e.beat + 2 + (float)e["sceneDelay"], delegate { minigame.DisposeLake(this, e.beat + 2 + (float)e["sceneDelay"]); }),
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case "catchOfTheDay/fish2":
|
case "catchOfTheDay/fish2":
|
||||||
|
@ -78,7 +101,7 @@ namespace HeavenStudio.Games.Scripts_CatchOfTheDay
|
||||||
new BeatAction.Action(e.beat + 0.5f, delegate { DoPickAnim(e.beat + 0.5f); }),
|
new BeatAction.Action(e.beat + 0.5f, delegate { DoPickAnim(e.beat + 0.5f); }),
|
||||||
new BeatAction.Action(e.beat + 1, delegate { DoPickAnim(e.beat + 1); }),
|
new BeatAction.Action(e.beat + 1, delegate { DoPickAnim(e.beat + 1); }),
|
||||||
new BeatAction.Action(e.beat + 3 - 0.1f, delegate { DoBiteAnim(e.beat + 3 - 0.1f); }),
|
new BeatAction.Action(e.beat + 3 - 0.1f, delegate { DoBiteAnim(e.beat + 3 - 0.1f); }),
|
||||||
new BeatAction.Action(e.beat + 3 + (float)e["sceneDelay"], delegate { minigame.DisposeLake(this); }),
|
new BeatAction.Action(e.beat + 3 + (float)e["sceneDelay"], delegate { minigame.DisposeLake(this, e.beat + 3 + (float)e["sceneDelay"]); }),
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case "catchOfTheDay/fish3":
|
case "catchOfTheDay/fish3":
|
||||||
|
@ -99,7 +122,7 @@ namespace HeavenStudio.Games.Scripts_CatchOfTheDay
|
||||||
new BeatAction.Action(e.beat + 0.5f, delegate { DoPickAnim(e.beat + 0.5f); }),
|
new BeatAction.Action(e.beat + 0.5f, delegate { DoPickAnim(e.beat + 0.5f); }),
|
||||||
new BeatAction.Action(e.beat + 1f, delegate { DoPickAnim(e.beat + 1f, down: true); }),
|
new BeatAction.Action(e.beat + 1f, delegate { DoPickAnim(e.beat + 1f, down: true); }),
|
||||||
new BeatAction.Action(e.beat + 4.5f - 0.1f, delegate { DoBiteAnim(e.beat + 4.5f - 0.1f); }),
|
new BeatAction.Action(e.beat + 4.5f - 0.1f, delegate { DoBiteAnim(e.beat + 4.5f - 0.1f); }),
|
||||||
new BeatAction.Action(e.beat + + (float)e["sceneDelay"], delegate { minigame.DisposeLake(this); }),
|
new BeatAction.Action(e.beat + 4.5f + (float)e["sceneDelay"], delegate { minigame.DisposeLake(this, e.beat + 4.5f + (float)e["sceneDelay"]); }),
|
||||||
});
|
});
|
||||||
BeatAction.New(this, beatActions);
|
BeatAction.New(this, beatActions);
|
||||||
break;
|
break;
|
||||||
|
@ -142,11 +165,9 @@ namespace HeavenStudio.Games.Scripts_CatchOfTheDay
|
||||||
SetBGColors(TopColors[layout], BottomColors[layout]);
|
SetBGColors(TopColors[layout], BottomColors[layout]);
|
||||||
}
|
}
|
||||||
|
|
||||||
_SortingGroup.sortingOrder = sortingIndex;
|
|
||||||
|
|
||||||
float xOffset = UnityEngine.Random.Range(-0.5f, 0.5f);
|
float xOffset = UnityEngine.Random.Range(-0.5f, 0.5f);
|
||||||
float yOffset = UnityEngine.Random.Range(-0.3f, 0.3f);
|
float yOffset = UnityEngine.Random.Range(-0.3f, 0.3f);
|
||||||
transform.position += new Vector3(xOffset, yOffset, 0);
|
Renderer.transform.position += new Vector3(xOffset, yOffset, 0);
|
||||||
|
|
||||||
if ((bool)e["schoolFish"])
|
if ((bool)e["schoolFish"])
|
||||||
{
|
{
|
||||||
|
@ -163,6 +184,10 @@ namespace HeavenStudio.Games.Scripts_CatchOfTheDay
|
||||||
foreach (ParticleSystem particle in Bubbles.OrderBy(_ => UnityEngine.Random.Range(0.0f, 1.0f)).ToArray()[0..bubbleCount])
|
foreach (ParticleSystem particle in Bubbles.OrderBy(_ => UnityEngine.Random.Range(0.0f, 1.0f)).ToArray()[0..bubbleCount])
|
||||||
particle.PlayScaledAsync(0.5f);
|
particle.PlayScaledAsync(0.5f);
|
||||||
|
|
||||||
|
DisplaySprite.sortingOrder = sortingIndex;
|
||||||
|
Renderer.transform.localPosition -= new Vector3(0, 0, sortingIndex);
|
||||||
|
RenderCamera.transform.localPosition -= new Vector3(0, 0, sortingIndex);
|
||||||
|
|
||||||
return layout; // returning this so we can catalogue the most recent layout so we don't double up
|
return layout; // returning this so we can catalogue the most recent layout so we don't double up
|
||||||
}
|
}
|
||||||
public void SetBGColors(Color topColor, Color bottomColor)
|
public void SetBGColors(Color topColor, Color bottomColor)
|
||||||
|
@ -227,6 +252,7 @@ namespace HeavenStudio.Games.Scripts_CatchOfTheDay
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
Minigame.DoJustAnim();
|
Minigame.DoJustAnim();
|
||||||
|
FishOut = true;
|
||||||
}
|
}
|
||||||
public void Miss()
|
public void Miss()
|
||||||
{
|
{
|
||||||
|
@ -251,6 +277,7 @@ namespace HeavenStudio.Games.Scripts_CatchOfTheDay
|
||||||
}
|
}
|
||||||
Minigame.DoMissAnim();
|
Minigame.DoMissAnim();
|
||||||
SoundByte.PlayOneShotGame("catchOfTheDay/nearMiss");
|
SoundByte.PlayOneShotGame("catchOfTheDay/nearMiss");
|
||||||
|
FishOut = true;
|
||||||
}
|
}
|
||||||
public void Through(PlayerActionEvent caller)
|
public void Through(PlayerActionEvent caller)
|
||||||
{
|
{
|
||||||
|
@ -358,11 +385,45 @@ namespace HeavenStudio.Games.Scripts_CatchOfTheDay
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[SerializeField] Camera RenderCamera;
|
||||||
|
[SerializeField] SpriteRenderer DisplaySprite;
|
||||||
|
public void RenderScene()
|
||||||
|
{
|
||||||
|
if (!DisplaySprite.enabled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Rect rect = new Rect(0, 0, 1024, 1024);
|
||||||
|
if (_RenderTexture == null)
|
||||||
|
{
|
||||||
|
_RenderTexture = new RenderTexture(1024, 1024, 32);
|
||||||
|
RenderCamera.targetTexture = _RenderTexture;
|
||||||
|
|
||||||
|
_DisplayTexture = new Texture2D(1024, 1024, TextureFormat.RGBA32, false);
|
||||||
|
Sprite sprite = Sprite.Create(_DisplayTexture, new Rect(0, 0, 1024, 1024), new Vector2(0.5f, 0.5f));
|
||||||
|
DisplaySprite.sprite = sprite;
|
||||||
|
}
|
||||||
|
|
||||||
|
RenderCamera.Render();
|
||||||
|
|
||||||
|
RenderTexture currentRenderTexture = RenderTexture.active;
|
||||||
|
RenderTexture.active = _RenderTexture;
|
||||||
|
_DisplayTexture.ReadPixels(rect, 0, 0);
|
||||||
|
_DisplayTexture.Apply();
|
||||||
|
|
||||||
|
RenderTexture.active = currentRenderTexture;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Crossfade(double beat)
|
||||||
|
{
|
||||||
|
_CrossfadeStartBeat = beat;
|
||||||
|
//CrossfadeAnimator.DoScaledAnimationAsync("Crossfade", 0.5f);
|
||||||
|
}
|
||||||
|
|
||||||
[SerializeField] GameObject SchoolFishPrefab;
|
[SerializeField] GameObject SchoolFishPrefab;
|
||||||
[ContextMenu("Spawn a bunch of fish")]
|
[ContextMenu("Spawn a bunch of fish")]
|
||||||
void SpawnABunchOfFish()
|
void SpawnABunchOfFish()
|
||||||
{
|
{
|
||||||
Transform container = transform.Find("FishSchool");
|
Transform container = transform.Find("Renderer/FishSchool");
|
||||||
|
|
||||||
List<Transform> toDestroy = new();
|
List<Transform> toDestroy = new();
|
||||||
for (int i = 0; i < container.childCount; i++)
|
for (int i = 0; i < container.childCount; i++)
|
||||||
|
@ -379,7 +440,11 @@ namespace HeavenStudio.Games.Scripts_CatchOfTheDay
|
||||||
container.eulerAngles = new Vector3(0, 0, randRot);
|
container.eulerAngles = new Vector3(0, 0, randRot);
|
||||||
|
|
||||||
GameObject fish = Instantiate(SchoolFishPrefab, container);
|
GameObject fish = Instantiate(SchoolFishPrefab, container);
|
||||||
fish.name = $"SchoolFish{i:D2}";
|
fish.name = $"SchoolFish{i:D3}";
|
||||||
|
|
||||||
|
fish.transform.Find("Body").GetComponent<SpriteRenderer>().sortingOrder = i * 2;
|
||||||
|
fish.transform.Find("Fin").GetComponent<SpriteRenderer>().sortingOrder = (i * 2) + 1;
|
||||||
|
fish.transform.Find("Eye").GetComponent<SpriteRenderer>().sortingOrder = (i * 2) + 1;
|
||||||
|
|
||||||
var yOffset = UnityEngine.Random.Range(3f, 11f);
|
var yOffset = UnityEngine.Random.Range(3f, 11f);
|
||||||
fish.transform.position += new Vector3(0, yOffset, 0);
|
fish.transform.position += new Vector3(0, yOffset, 0);
|
||||||
|
|
|
@ -374,7 +374,7 @@ namespace HeavenStudio
|
||||||
|
|
||||||
|
|
||||||
public uint? chronologicalSortKey;
|
public uint? chronologicalSortKey;
|
||||||
// playinful: basically i figure this should just be whatever index number the minigame is
|
// Yin: basically i figure this should just be whatever index number the minigame is
|
||||||
// in its game of origin. So, basically, like, if we're talking Rhythm Heaven DS, Built to
|
// in its game of origin. So, basically, like, if we're talking Rhythm Heaven DS, Built to
|
||||||
// Scale would be 1, then Fillbots would be 2, and so on. If it's an endless game, add 100.
|
// Scale would be 1, then Fillbots would be 2, and so on. If it's an endless game, add 100.
|
||||||
// If it's a rhythm toy, add 200. If it's a 2-Player endless game, add 300. If it's a credits
|
// If it's a rhythm toy, add 200. If it's a 2-Player endless game, add 300. If it's a credits
|
||||||
|
|
Loading…
Reference in a new issue