No way, fireworks is now feature-complete???! he did da impossible PART 2 (#298)

* Started

* Added bomb

* Just need more explosion types ig

* Count ins :D

* Remix 5 background

* This was painful

* Shity particles

* particle adjustments

* stuff

---------

Co-authored-by: ev <85412919+evdial@users.noreply.github.com>
This commit is contained in:
Rapandrasmus 2023-02-20 20:22:50 +01:00 committed by GitHub
parent 8668122352
commit e11381bae8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 10028 additions and 4993 deletions

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 006eaf84a86259e48b408af0e4926e12
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,129 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1040251300904117319
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4643646746129784289}
- component: {fileID: 5427651764678403995}
- component: {fileID: 7261189633897651690}
- component: {fileID: 7411221809539012580}
m_Layer: 0
m_Name: Bomb
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4643646746129784289
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1040251300904117319}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.8, y: 0.8, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &5427651764678403995
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1040251300904117319}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_Sprite: {fileID: 8321705126144521246, guid: 106ee017e5083fb428d5c224afd8cb96, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 1.56, y: 1.32}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!114 &7261189633897651690
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1040251300904117319}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5d25335cea525ce4397a2f83a3050aef, type: 3}
m_Name:
m_EditorClassIdentifier:
inList: 0
state:
gameObject: {fileID: 0}
early: 0
perfect: 0
late: 0
createBeat: 0
eligibleHitsList: []
aceTimes: 0
isEligible: 0
triggersAutoplay: 1
curve: {fileID: 0}
--- !u!95 &7411221809539012580
Animator:
serializedVersion: 3
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1040251300904117319}
m_Enabled: 1
m_Avatar: {fileID: 0}
m_Controller: {fileID: 9100000, guid: 2ba86fffdc55cf741a25c12a7842a6d7, type: 2}
m_CullingMode: 0
m_UpdateMode: 0
m_ApplyRootMotion: 0
m_LinearVelocityBlending: 0
m_WarningMessage:
m_HasTransformHierarchy: 1
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorControllerStateOnDisable: 0

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: ee8233cab321ff84c9f139d288111d95
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 8a296700538af8b4cb1dd56a817bf298
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 2b7f3b3b11d182f48a2ef357c8e876fc
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View file

@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: edae45a80bd260b44914341795bace4a
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:

View file

@ -0,0 +1,101 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1102 &-5100615410821545032
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: IdleBomb
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: d7d7487545cfd0e47ba195dcdd6a5285, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Bomb
serializedVersion: 5
m_AnimatorParameters: []
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
m_StateMachine: {fileID: 6776942547505405022}
m_Mask: {fileID: 0}
m_Motions: []
m_Behaviours: []
m_BlendingMode: 0
m_SyncedLayerIndex: -1
m_DefaultWeight: 0
m_IKPass: 0
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}
--- !u!1102 &1659798832726232765
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ExplodeBomb
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: c2ed908cd01823b44ae996171a98e2e0, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1107 &6776942547505405022
AnimatorStateMachine:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Base Layer
m_ChildStates:
- serializedVersion: 1
m_State: {fileID: -5100615410821545032}
m_Position: {x: 200, y: 0, z: 0}
- serializedVersion: 1
m_State: {fileID: 1659798832726232765}
m_Position: {x: 235, y: 65, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions: []
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
m_AnyStatePosition: {x: 50, y: 20, z: 0}
m_EntryPosition: {x: 50, y: 120, z: 0}
m_ExitPosition: {x: 800, y: 120, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: -5100615410821545032}

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2ba86fffdc55cf741a25c12a7842a6d7
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 9100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,146 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!74 &7400000
AnimationClip:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ExplodeBomb
serializedVersion: 6
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves: []
m_ScaleCurves: []
m_FloatCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.1
value: 0
inSlope: Infinity
outSlope: 0
tangentMode: 7
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_Color.a
path:
classID: 212
script: {fileID: 0}
m_PPtrCurves:
- curve:
- time: 0
value: {fileID: 716307583850843487, guid: 106ee017e5083fb428d5c224afd8cb96, type: 3}
- time: 0.016666668
value: {fileID: -2930459412978812549, guid: 106ee017e5083fb428d5c224afd8cb96, type: 3}
- time: 0.033333335
value: {fileID: -7951060998399535959, guid: 106ee017e5083fb428d5c224afd8cb96, type: 3}
- time: 0.05
value: {fileID: 6521631765723925360, guid: 106ee017e5083fb428d5c224afd8cb96, type: 3}
- time: 0.06666667
value: {fileID: -3930173783671174140, guid: 106ee017e5083fb428d5c224afd8cb96, type: 3}
- time: 0.083333336
value: {fileID: 4630040311661182356, guid: 106ee017e5083fb428d5c224afd8cb96, type: 3}
attribute: m_Sprite
path:
classID: 212
script: {fileID: 0}
m_SampleRate: 60
m_WrapMode: 0
m_Bounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 0
attribute: 304273561
script: {fileID: 0}
typeID: 212
customType: 0
isPPtrCurve: 0
- serializedVersion: 2
path: 0
attribute: 0
script: {fileID: 0}
typeID: 212
customType: 23
isPPtrCurve: 1
pptrCurveMapping:
- {fileID: 716307583850843487, guid: 106ee017e5083fb428d5c224afd8cb96, type: 3}
- {fileID: -2930459412978812549, guid: 106ee017e5083fb428d5c224afd8cb96, type: 3}
- {fileID: -7951060998399535959, guid: 106ee017e5083fb428d5c224afd8cb96, type: 3}
- {fileID: 6521631765723925360, guid: 106ee017e5083fb428d5c224afd8cb96, type: 3}
- {fileID: -3930173783671174140, guid: 106ee017e5083fb428d5c224afd8cb96, type: 3}
- {fileID: 4630040311661182356, guid: 106ee017e5083fb428d5c224afd8cb96, type: 3}
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 0.1
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 0
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
m_LoopBlendPositionXZ: 0
m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 1
m_KeepOriginalPositionXZ: 0
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.1
value: 0
inSlope: Infinity
outSlope: 0
tangentMode: 7
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_Color.a
path:
classID: 212
script: {fileID: 0}
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c2ed908cd01823b44ae996171a98e2e0
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,53 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!74 &7400000
AnimationClip:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: IdleBomb
serializedVersion: 6
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves: []
m_ScaleCurves: []
m_FloatCurves: []
m_PPtrCurves: []
m_SampleRate: 60
m_WrapMode: 0
m_Bounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings: []
pptrCurveMapping: []
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 1
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 1
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
m_LoopBlendPositionXZ: 0
m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 1
m_KeepOriginalPositionXZ: 0
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves: []
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d7d7487545cfd0e47ba195dcdd6a5285
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -14,6 +14,9 @@ TextureImporter:
- first:
213: -3980211991217024205
second: face_1
- first:
213: -4113892033949338959
second: Stars
externalObjects: {}
serializedVersion: 11
mipmaps:
@ -109,7 +112,7 @@ TextureImporter:
x: 0
y: 572
width: 672
height: 452
height: 49
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
@ -153,7 +156,7 @@ TextureImporter:
width: 266
height: 376
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: []
@ -174,7 +177,7 @@ TextureImporter:
width: 394
height: 412
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: []
@ -186,6 +189,27 @@ TextureImporter:
indices:
edges: []
weights: []
- serializedVersion: 2
name: Stars
rect:
serializedVersion: 2
x: 0
y: 621
width: 672
height: 403
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 1b2f320ddf488e6c0800000000000000
internalID: -4113892033949338959
vertices: []
indices:
edges: []
weights: []
outline: []
physicsShape: []
bones: []

View file

@ -2,6 +2,8 @@ using HeavenStudio.Util;
using System;
using System.Collections.Generic;
using UnityEngine;
using NaughtyBezierCurves;
using DG.Tweening;
namespace HeavenStudio.Games.Loaders
{
@ -9,8 +11,57 @@ namespace HeavenStudio.Games.Loaders
public static class AgbFireworkLoader
{
public static Minigame AddGame(EventCaller eventCaller) {
return new Minigame("fireworks", "Fireworks \n<color=#eb5454>[INITIALIZATION ONLY]</color>", "0058CE", false, false, new List<GameAction>()
return new Minigame("fireworks", "Fireworks", "0058CE", false, false, new List<GameAction>()
{
new GameAction("firework", "Firework")
{
preFunction = delegate {var e = eventCaller.currentEntity; Fireworks.PreSpawnFirework(e.beat, false, e["whereToSpawn"], e["toggle"], e["explosionType"]); },
defaultLength = 4f,
parameters = new List<Param>()
{
new Param("whereToSpawn", Fireworks.WhereToSpawn.Middle, "Where to spawn?", "Where should the firework spawn?"),
new Param("explosionType", Fireworks.ExplosionType.MixedCircular, "Explosion Pattern", "What pattern should the firework explode with?"),
new Param("toggle", false, "Practice Count-In", "Should the count-in from the fireworks practice play?")
}
},
new GameAction("sparkler", "Sparkler")
{
preFunction = delegate {var e = eventCaller.currentEntity; Fireworks.PreSpawnFirework(e.beat, true, e["whereToSpawn"], e["toggle"], e["explosionType"]); },
defaultLength = 2f,
parameters = new List<Param>()
{
new Param("whereToSpawn", Fireworks.WhereToSpawn.Middle, "Where to spawn?", "Where should the firework spawn?"),
new Param("explosionType", Fireworks.ExplosionType.MixedCircular, "Explosion Pattern", "What pattern should the firework explode with?"),
new Param("toggle", false, "Practice Count-In", "Should the count-in from the fireworks practice play?")
}
},
new GameAction("bomb", "Bomb")
{
function = delegate {var e = eventCaller.currentEntity; Fireworks.instance.SpawnBomb(e.beat, e["toggle"]); },
defaultLength = 3f,
parameters = new List<Param>()
{
new Param("toggle", false, "Practice Count-In", "Should the count-in from the fireworks practice play?")
}
},
new GameAction("countIn", "Count-In")
{
preFunction = delegate {var e = eventCaller.currentEntity; Fireworks.CountIn(e.beat, e["count"]); },
defaultLength = 1f,
parameters = new List<Param>()
{
new Param("count", Fireworks.CountInType.CountOne, "Count", "Which count should be said?")
}
},
new GameAction("altBG", "Background Appearance")
{
function = delegate {var e = eventCaller.currentEntity; Fireworks.instance.ChangeBackgroundAppearance(e["toggle"]); },
defaultLength = 0.5f,
parameters = new List<Param>()
{
new Param("toggle", true, "Remix 5", "Should the background from Remix 5 tengoku appear?")
}
}
});
}
}
@ -21,16 +72,229 @@ namespace HeavenStudio.Games
using Scripts_Fireworks;
public class Fireworks : Minigame
{
// Start is called before the first frame update
void Awake()
public enum ExplosionType
{
UniformBig = 0,
UniformDonut = 1,
UniformSwirl = 2,
UniformSmile = 3,
MixedCircular = 4
}
public struct QueuedFirework
{
public float beat;
public bool isSparkler;
public int whereToSpawn;
public bool practice;
public int explosionType;
}
public enum WhereToSpawn
{
Left = 0,
Right = 1,
Middle = 2
}
public enum CountInType
{
CountOne = 0,
CountTwo = 1,
CountThree = 2,
CountHey = 3
}
[Header("Components")]
[SerializeField] Transform spawnLeft;
[SerializeField] Transform spawnRight;
[SerializeField] Transform spawnMiddle;
[SerializeField] Transform bombSpawn;
[SerializeField] Rocket firework;
[SerializeField] FireworksBomb bomb;
[SerializeField] BezierCurve3D bombCurve;
[SerializeField] SpriteRenderer flashWhite;
[SerializeField] GameObject faces;
[SerializeField] GameObject stars;
[Header("Properties")]
Tween flashTween;
public static List<QueuedFirework> queuedFireworks = new List<QueuedFirework>();
public static Fireworks instance;
void OnDestroy()
{
if (queuedFireworks.Count > 0) queuedFireworks.Clear();
}
void Awake()
{
instance = this;
}
// Update is called once per frame
void Update()
{
var cond = Conductor.instance;
if (cond.isPlaying && !cond.isPaused)
{
if (queuedFireworks.Count > 0)
{
foreach (var firework in queuedFireworks)
{
SpawnFirework(firework.beat, firework.isSparkler, firework.whereToSpawn, firework.practice, firework.explosionType);
}
queuedFireworks.Clear();
}
}
}
public void ChangeBackgroundAppearance(bool doIt)
{
faces.SetActive(doIt);
stars.SetActive(!doIt);
}
public static void CountIn(float beat, int count)
{
switch (count)
{
case (int)CountInType.CountOne:
MultiSound.Play(new MultiSound.Sound[]
{
new MultiSound.Sound("fireworks/count1", beat)
}, forcePlay: true);
break;
case (int)CountInType.CountTwo:
MultiSound.Play(new MultiSound.Sound[]
{
new MultiSound.Sound("fireworks/count2", beat)
}, forcePlay: true);
break;
case (int)CountInType.CountThree:
MultiSound.Play(new MultiSound.Sound[]
{
new MultiSound.Sound("fireworks/count3", beat)
}, forcePlay: true);
break;
case (int)CountInType.CountHey:
MultiSound.Play(new MultiSound.Sound[]
{
new MultiSound.Sound("fireworks/countHey", beat)
}, forcePlay: true);
break;
}
}
public static void PreSpawnFirework(float beat, bool isSparkler, int whereToSpawn, bool practice, int explosionType)
{
if (isSparkler)
{
MultiSound.Play(new MultiSound.Sound[]
{
new MultiSound.Sound("fireworks/sparkler", beat, 1, 1, false, 0.223f)
}, forcePlay: true);
}
else
{
MultiSound.Play(new MultiSound.Sound[]
{
new MultiSound.Sound("fireworks/rocket", beat)
}, forcePlay: true);
}
if (GameManager.instance.currentGame == "fireworks")
{
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
{
new BeatAction.Action(beat, delegate
{
Fireworks.instance.SpawnFirework(beat, isSparkler, whereToSpawn, practice, explosionType);
})
});
}
else
{
queuedFireworks.Add(new QueuedFirework { beat = beat, isSparkler = isSparkler, whereToSpawn = whereToSpawn, practice = practice, explosionType = explosionType });
}
}
void SpawnFirework(float beat, bool isSparkler, int whereToSpawn, bool practice, int explosionType)
{
if (isSparkler && practice)
{
MultiSound.Play(new MultiSound.Sound[]
{
new MultiSound.Sound("fireworks/practiceHai", beat + 1),
}, forcePlay: true);
}
else if (practice)
{
MultiSound.Play(new MultiSound.Sound[]
{
new MultiSound.Sound("fireworks/practice1", beat),
new MultiSound.Sound("fireworks/practice2", beat + 1),
new MultiSound.Sound("fireworks/practice3", beat + 2),
new MultiSound.Sound("fireworks/practiceHai", beat + 3),
}, forcePlay: true);
}
Transform spawnPoint = spawnMiddle;
switch (whereToSpawn)
{
case (int)WhereToSpawn.Left:
spawnPoint = spawnLeft;
break;
case (int)WhereToSpawn.Right:
spawnPoint = spawnRight;
break;
default:
spawnPoint = spawnMiddle;
break;
}
Rocket spawnedRocket = Instantiate(firework, spawnPoint, false);
spawnedRocket.isSparkler = isSparkler;
spawnedRocket.Init(beat, explosionType);
}
public void SpawnBomb(float beat, bool practice)
{
Jukebox.PlayOneShotGame("fireworks/bomb");
if (practice)
{
MultiSound.Play(new MultiSound.Sound[]
{
new MultiSound.Sound("fireworks/practiceHai", beat + 2),
}, forcePlay: true);
}
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
{
new BeatAction.Action(beat + 1, delegate
{
FireworksBomb spawnedBomb = Instantiate(bomb, bombSpawn, false);
spawnedBomb.curve = bombCurve;
spawnedBomb.Init(beat + 1);
})
});
}
public void ChangeFlashColor(Color color, float beats)
{
var seconds = Conductor.instance.secPerBeat * beats;
if (flashTween != null)
flashTween.Kill(true);
if (seconds == 0)
{
flashWhite.color = color;
}
else
{
flashTween = flashWhite.DOColor(color, seconds);
}
}
public void FadeFlashColor(Color start, Color end, float beats)
{
ChangeFlashColor(start, 0f);
ChangeFlashColor(end, beats);
}
}
}

View file

@ -0,0 +1,65 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using HeavenStudio.Util;
using NaughtyBezierCurves;
namespace HeavenStudio.Games.Scripts_Fireworks
{
public class FireworksBomb : PlayerActionObject
{
public BezierCurve3D curve;
private bool exploded;
private Fireworks game;
private float startBeat;
private Animator anim;
void Awake()
{
game = Fireworks.instance;
anim = GetComponent<Animator>();
}
public void Init(float beat)
{
game.ScheduleInput(beat, 1f, InputType.STANDARD_DOWN, Just, Out, Out);
startBeat = beat;
}
void Update()
{
var cond = Conductor.instance;
if (exploded) return;
float flyPos = cond.GetPositionFromBeat(startBeat, 1f);
transform.position = curve.GetPoint(flyPos);
if (flyPos > 2) Destroy(gameObject);
}
void Just(PlayerActionEvent caller, float state)
{
anim.DoScaledAnimationAsync("ExplodeBomb", 0.25f);
exploded = true;
BeatAction.New(game.gameObject, new List<BeatAction.Action>()
{
new BeatAction.Action(startBeat + 3f, delegate { Destroy(gameObject); })
});
if (state >= 1f || state <= -1f)
{
Jukebox.PlayOneShotGame("fireworks/miss");
return;
}
Success();
}
void Success()
{
Jukebox.PlayOneShotGame("fireworks/explodeBomb");
game.FadeFlashColor(Color.white, new Color(1, 1, 1, 0), 0.5f);
}
void Out(PlayerActionEvent caller) { }
}
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 5d25335cea525ce4397a2f83a3050aef
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -8,18 +8,62 @@ namespace HeavenStudio.Games.Scripts_Fireworks
{
public class Rocket : PlayerActionObject
{
[SerializeField] ParticleSystem particleBarelyEffect;
[SerializeField] private List<ParticleSystem> particleEffects = new List<ParticleSystem>();
[SerializeField] ParticleSystem selectedParticleEffect;
[SerializeField] Animator anim;
public bool isSparkler;
private Fireworks game;
public float startBeat;
private bool exploded;
private float startY;
// Start is called before the first frame update
void Awake()
{
game = Fireworks.instance;
startY = transform.position.y;
}
public void Init(float beat, int explosionToChoose)
{
startBeat = beat;
game.ScheduleInput(beat, isSparkler ? 1f : 3f, InputType.STANDARD_DOWN, Just, Out, Out);
anim.DoScaledAnimationAsync(isSparkler ? "Sparkler" : "Rocket", isSparkler ? 1f : 0.5f);
selectedParticleEffect = particleEffects[explosionToChoose];
}
// Update is called once per frame
void Update()
{
var cond = Conductor.instance;
float normalizedBeat = cond.GetPositionFromBeat(startBeat, isSparkler ? 1f : 3f);
if (!exploded && cond.isPlaying && !cond.isPaused)
{
EasingFunction.Function func = EasingFunction.GetEasingFunction(EasingFunction.Ease.Linear);
float newPosY = func(startY, 7f, normalizedBeat * (isSparkler ? 0.5f : 0.4f));
transform.position = new Vector3(transform.position.x, newPosY, transform.position.z);
}
if (normalizedBeat > 3f && !selectedParticleEffect.isPlaying) Destroy(gameObject);
}
void Just(PlayerActionEvent caller, float state)
{
if (state >= 1f || state <= -1f)
{
Jukebox.PlayOneShotGame("fireworks/miss");
particleBarelyEffect.Play();
anim.gameObject.SetActive(false);
return;
}
Success();
}
void Success()
{
Jukebox.PlayOneShotGame("fireworks/explodeRocket");
selectedParticleEffect.Play();
anim.gameObject.SetActive(false);
}
void Out(PlayerActionEvent caller) { }
}
}

View file

@ -1,52 +1,52 @@
ManifestFileVersion: 0
CRC: 353797687
CRC: 3431703811
AssetBundleManifest:
AssetBundleInfos:
Info_0:
Name: ntridol/common
Dependencies: {}
Info_1:
Name: karate/locale.en
Dependencies: {}
Info_2:
Name: ctrpillow/common
Dependencies: {}
Info_3:
Name: ntridol/locale.jp
Dependencies: {}
Info_4:
Name: ntrsamurai/common
Dependencies: {}
Info_5:
Info_1:
Name: karate/common
Dependencies: {}
Info_6:
Info_2:
Name: ntrsamurai/common
Dependencies: {}
Info_3:
Name: ctrpillow/locale.jp
Dependencies: {}
Info_4:
Name: ctrcatchy/common
Dependencies: {}
Info_5:
Name: ntrdj/common
Dependencies: {}
Info_6:
Name: ntridol/common
Dependencies: {}
Info_7:
Name: ctrpillow/locale.en
Name: ntridol/locale.jp
Dependencies: {}
Info_8:
Name: ntrcoin/common
Dependencies: {}
Info_9:
Name: ntrsamurai/locale.en
Name: karate/locale.en
Dependencies: {}
Info_10:
Name: ctrpillow/locale.ko
Dependencies: {}
Info_11:
Name: ctrpillow/locale.jp
Name: ctrpillow/locale.en
Dependencies: {}
Info_12:
Name: ctrcatchy/common
Name: ntrsamurai/locale.en
Dependencies: {}
Info_13:
Name: agbmarcher/locale.en
Dependencies: {}
Info_14:
Name: agbmarcher/locale.jp
Dependencies: {}
Info_15:
Name: agbmarcher/common
Dependencies: {}
Info_15:
Name: agbmarcher/locale.jp
Dependencies: {}

Binary file not shown.

View file

@ -1,9 +1,9 @@
ManifestFileVersion: 0
CRC: 267694931
CRC: 1703679742
Hashes:
AssetFileHash:
serializedVersion: 2
Hash: ac8dfc11a7dd479a544b25bc6e6b152a
Hash: cd675f415fa478e57341ee08736f551b
TypeTreeHash:
serializedVersion: 2
Hash: 98a6d4eb4172ec02b55d5f14afb2d5a8

View file

@ -1,9 +1,9 @@
ManifestFileVersion: 0
CRC: 3271251889
CRC: 3515263134
Hashes:
AssetFileHash:
serializedVersion: 2
Hash: fa8f6be17f9cb26e18d3027ce53d73da
Hash: ae8587d5871f6e87fe3ef335a91a5dd3
TypeTreeHash:
serializedVersion: 2
Hash: 6c542f6873f7e3067be67f888d87c947