mirror of
https://github.com/RHeavenStudioPlus/HeavenStudioPlus.git
synced 2024-11-10 11:45:09 +00:00
Lots of tweaks, fixes and small additions + bop fixes and bop parity across almost all games with bops. (#331)
* Rhythm rally and cheer readers improvements * Autobop for fan club * Implemented new bop parity for fan club, rhythm rally and ssds * Air rally easing improvements * Fixed drumming practice stuff * Tap trial has been unjankified yet again * Cheer readers and catchy tune bops * More bop parity * MORE!!!! * That should be all of them except space dance and dj school --------- Co-authored-by: minenice55 <star.elementa@gmail.com>
This commit is contained in:
parent
f590bd8ff9
commit
182d9fc88c
26 changed files with 814 additions and 250 deletions
|
@ -100,7 +100,7 @@ AnimationClip:
|
||||||
m_Level: 0
|
m_Level: 0
|
||||||
m_CycleOffset: 0
|
m_CycleOffset: 0
|
||||||
m_HasAdditiveReferencePose: 0
|
m_HasAdditiveReferencePose: 0
|
||||||
m_LoopTime: 1
|
m_LoopTime: 0
|
||||||
m_LoopBlend: 0
|
m_LoopBlend: 0
|
||||||
m_LoopBlendOrientation: 0
|
m_LoopBlendOrientation: 0
|
||||||
m_LoopBlendPositionY: 0
|
m_LoopBlendPositionY: 0
|
||||||
|
|
|
@ -100,7 +100,7 @@ AnimationClip:
|
||||||
m_Level: 0
|
m_Level: 0
|
||||||
m_CycleOffset: 0
|
m_CycleOffset: 0
|
||||||
m_HasAdditiveReferencePose: 0
|
m_HasAdditiveReferencePose: 0
|
||||||
m_LoopTime: 1
|
m_LoopTime: 0
|
||||||
m_LoopBlend: 0
|
m_LoopBlend: 0
|
||||||
m_LoopBlendOrientation: 0
|
m_LoopBlendOrientation: 0
|
||||||
m_LoopBlendPositionY: 0
|
m_LoopBlendPositionY: 0
|
||||||
|
|
|
@ -26,6 +26,28 @@ AnimatorState:
|
||||||
m_MirrorParameter:
|
m_MirrorParameter:
|
||||||
m_CycleOffsetParameter:
|
m_CycleOffsetParameter:
|
||||||
m_TimeParameter:
|
m_TimeParameter:
|
||||||
|
--- !u!1101 &-8536575254723551366
|
||||||
|
AnimatorStateTransition:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name:
|
||||||
|
m_Conditions: []
|
||||||
|
m_DstStateMachine: {fileID: 0}
|
||||||
|
m_DstState: {fileID: 1566214250506738524}
|
||||||
|
m_Solo: 0
|
||||||
|
m_Mute: 0
|
||||||
|
m_IsExit: 0
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransitionDuration: 0
|
||||||
|
m_TransitionOffset: 0
|
||||||
|
m_ExitTime: 1
|
||||||
|
m_HasExitTime: 1
|
||||||
|
m_HasFixedDuration: 1
|
||||||
|
m_InterruptionSource: 0
|
||||||
|
m_OrderedInterruption: 1
|
||||||
|
m_CanTransitionToSelf: 1
|
||||||
--- !u!1102 &-8227018334659877927
|
--- !u!1102 &-8227018334659877927
|
||||||
AnimatorState:
|
AnimatorState:
|
||||||
serializedVersion: 6
|
serializedVersion: 6
|
||||||
|
@ -118,7 +140,7 @@ AnimatorStateMachine:
|
||||||
m_Position: {x: 200, y: 0, z: 0}
|
m_Position: {x: 200, y: 0, z: 0}
|
||||||
- serializedVersion: 1
|
- serializedVersion: 1
|
||||||
m_State: {fileID: 3296953716140674633}
|
m_State: {fileID: 3296953716140674633}
|
||||||
m_Position: {x: 235, y: 65, z: 0}
|
m_Position: {x: 200, y: -130, z: 0}
|
||||||
- serializedVersion: 1
|
- serializedVersion: 1
|
||||||
m_State: {fileID: 7743056096870309842}
|
m_State: {fileID: 7743056096870309842}
|
||||||
m_Position: {x: 270, y: 130, z: 0}
|
m_Position: {x: 270, y: 130, z: 0}
|
||||||
|
@ -130,7 +152,7 @@ AnimatorStateMachine:
|
||||||
m_Position: {x: 340, y: 260, z: 0}
|
m_Position: {x: 340, y: 260, z: 0}
|
||||||
- serializedVersion: 1
|
- serializedVersion: 1
|
||||||
m_State: {fileID: -2055505054754996262}
|
m_State: {fileID: -2055505054754996262}
|
||||||
m_Position: {x: 375, y: 325, z: 0}
|
m_Position: {x: 420, y: 30, z: 0}
|
||||||
- serializedVersion: 1
|
- serializedVersion: 1
|
||||||
m_State: {fileID: 7506107921285827103}
|
m_State: {fileID: 7506107921285827103}
|
||||||
m_Position: {x: 410, y: 390, z: 0}
|
m_Position: {x: 410, y: 390, z: 0}
|
||||||
|
@ -171,6 +193,28 @@ AnimatorStateMachine:
|
||||||
m_ExitPosition: {x: 800, y: 120, z: 0}
|
m_ExitPosition: {x: 800, y: 120, z: 0}
|
||||||
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
|
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
|
||||||
m_DefaultState: {fileID: 1566214250506738524}
|
m_DefaultState: {fileID: 1566214250506738524}
|
||||||
|
--- !u!1101 &-4614138539304857086
|
||||||
|
AnimatorStateTransition:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name:
|
||||||
|
m_Conditions: []
|
||||||
|
m_DstStateMachine: {fileID: 0}
|
||||||
|
m_DstState: {fileID: 1566214250506738524}
|
||||||
|
m_Solo: 0
|
||||||
|
m_Mute: 0
|
||||||
|
m_IsExit: 0
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransitionDuration: 0
|
||||||
|
m_TransitionOffset: 0
|
||||||
|
m_ExitTime: 1
|
||||||
|
m_HasExitTime: 1
|
||||||
|
m_HasFixedDuration: 1
|
||||||
|
m_InterruptionSource: 0
|
||||||
|
m_OrderedInterruption: 1
|
||||||
|
m_CanTransitionToSelf: 1
|
||||||
--- !u!1102 &-3055481183117655903
|
--- !u!1102 &-3055481183117655903
|
||||||
AnimatorState:
|
AnimatorState:
|
||||||
serializedVersion: 6
|
serializedVersion: 6
|
||||||
|
@ -233,7 +277,8 @@ AnimatorState:
|
||||||
m_Name: DoubleTap
|
m_Name: DoubleTap
|
||||||
m_Speed: 1
|
m_Speed: 1
|
||||||
m_CycleOffset: 0
|
m_CycleOffset: 0
|
||||||
m_Transitions: []
|
m_Transitions:
|
||||||
|
- {fileID: -4614138539304857086}
|
||||||
m_StateMachineBehaviours: []
|
m_StateMachineBehaviours: []
|
||||||
m_Position: {x: 50, y: 50, z: 0}
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
m_IKOnFeet: 0
|
m_IKOnFeet: 0
|
||||||
|
@ -249,6 +294,28 @@ AnimatorState:
|
||||||
m_MirrorParameter:
|
m_MirrorParameter:
|
||||||
m_CycleOffsetParameter:
|
m_CycleOffsetParameter:
|
||||||
m_TimeParameter:
|
m_TimeParameter:
|
||||||
|
--- !u!1101 &-1208883606983524581
|
||||||
|
AnimatorStateTransition:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name:
|
||||||
|
m_Conditions: []
|
||||||
|
m_DstStateMachine: {fileID: 0}
|
||||||
|
m_DstState: {fileID: 1566214250506738524}
|
||||||
|
m_Solo: 0
|
||||||
|
m_Mute: 0
|
||||||
|
m_IsExit: 0
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransitionDuration: 0
|
||||||
|
m_TransitionOffset: 0
|
||||||
|
m_ExitTime: 1
|
||||||
|
m_HasExitTime: 1
|
||||||
|
m_HasFixedDuration: 1
|
||||||
|
m_InterruptionSource: 0
|
||||||
|
m_OrderedInterruption: 1
|
||||||
|
m_CanTransitionToSelf: 1
|
||||||
--- !u!1102 &-778023667584081209
|
--- !u!1102 &-778023667584081209
|
||||||
AnimatorState:
|
AnimatorState:
|
||||||
serializedVersion: 6
|
serializedVersion: 6
|
||||||
|
@ -359,7 +426,8 @@ AnimatorState:
|
||||||
m_Name: Tap
|
m_Name: Tap
|
||||||
m_Speed: 1
|
m_Speed: 1
|
||||||
m_CycleOffset: 0
|
m_CycleOffset: 0
|
||||||
m_Transitions: []
|
m_Transitions:
|
||||||
|
- {fileID: -8536575254723551366}
|
||||||
m_StateMachineBehaviours: []
|
m_StateMachineBehaviours: []
|
||||||
m_Position: {x: 50, y: 50, z: 0}
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
m_IKOnFeet: 0
|
m_IKOnFeet: 0
|
||||||
|
@ -463,7 +531,8 @@ AnimatorState:
|
||||||
m_Name: Bop
|
m_Name: Bop
|
||||||
m_Speed: 1
|
m_Speed: 1
|
||||||
m_CycleOffset: 0
|
m_CycleOffset: 0
|
||||||
m_Transitions: []
|
m_Transitions:
|
||||||
|
- {fileID: -1208883606983524581}
|
||||||
m_StateMachineBehaviours: []
|
m_StateMachineBehaviours: []
|
||||||
m_Position: {x: 50, y: 50, z: 0}
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
m_IKOnFeet: 0
|
m_IKOnFeet: 0
|
||||||
|
|
|
@ -252,6 +252,28 @@ AnimatorStateTransition:
|
||||||
m_InterruptionSource: 0
|
m_InterruptionSource: 0
|
||||||
m_OrderedInterruption: 1
|
m_OrderedInterruption: 1
|
||||||
m_CanTransitionToSelf: 1
|
m_CanTransitionToSelf: 1
|
||||||
|
--- !u!1101 &-1969844649597885357
|
||||||
|
AnimatorStateTransition:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name:
|
||||||
|
m_Conditions: []
|
||||||
|
m_DstStateMachine: {fileID: 0}
|
||||||
|
m_DstState: {fileID: 7840951289603236239}
|
||||||
|
m_Solo: 0
|
||||||
|
m_Mute: 0
|
||||||
|
m_IsExit: 0
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransitionDuration: 0
|
||||||
|
m_TransitionOffset: 0
|
||||||
|
m_ExitTime: 1
|
||||||
|
m_HasExitTime: 1
|
||||||
|
m_HasFixedDuration: 1
|
||||||
|
m_InterruptionSource: 0
|
||||||
|
m_OrderedInterruption: 1
|
||||||
|
m_CanTransitionToSelf: 1
|
||||||
--- !u!1102 &-1428195464489766086
|
--- !u!1102 &-1428195464489766086
|
||||||
AnimatorState:
|
AnimatorState:
|
||||||
serializedVersion: 6
|
serializedVersion: 6
|
||||||
|
@ -337,7 +359,8 @@ AnimatorState:
|
||||||
m_Name: Bop
|
m_Name: Bop
|
||||||
m_Speed: 1
|
m_Speed: 1
|
||||||
m_CycleOffset: 0
|
m_CycleOffset: 0
|
||||||
m_Transitions: []
|
m_Transitions:
|
||||||
|
- {fileID: -1969844649597885357}
|
||||||
m_StateMachineBehaviours: []
|
m_StateMachineBehaviours: []
|
||||||
m_Position: {x: 50, y: 50, z: 0}
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
m_IKOnFeet: 0
|
m_IKOnFeet: 0
|
||||||
|
@ -424,7 +447,7 @@ AnimatorStateMachine:
|
||||||
m_Position: {x: 485, y: 275, z: 0}
|
m_Position: {x: 485, y: 275, z: 0}
|
||||||
- serializedVersion: 1
|
- serializedVersion: 1
|
||||||
m_State: {fileID: 1339875481458272543}
|
m_State: {fileID: 1339875481458272543}
|
||||||
m_Position: {x: 520, y: 340, z: 0}
|
m_Position: {x: 10, y: -110, z: 0}
|
||||||
- serializedVersion: 1
|
- serializedVersion: 1
|
||||||
m_State: {fileID: -7296182608361541101}
|
m_State: {fileID: -7296182608361541101}
|
||||||
m_Position: {x: 555, y: 405, z: 0}
|
m_Position: {x: 555, y: 405, z: 0}
|
||||||
|
|
|
@ -294,7 +294,7 @@ namespace HeavenStudio.Games
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tweenForForth = Forthington.gameObject.transform.DOMoveZ(wayPointZForForth, .15f).SetEase(Ease.InOutCubic);
|
tweenForForth = Forthington.gameObject.transform.DOMoveZ(wayPointZForForth, .7f).SetEase(Ease.OutQuad);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,12 +40,12 @@ namespace HeavenStudio.Games.Loaders
|
||||||
|
|
||||||
new GameAction("bop", "Bop")
|
new GameAction("bop", "Bop")
|
||||||
{
|
{
|
||||||
function = delegate {var e = eventCaller.currentEntity; CatchyTune.instance.Bop(e.beat, e["left"], e["right"]); },
|
function = delegate {var e = eventCaller.currentEntity; CatchyTune.instance.Bop(e.beat, e.length, e["bop"], e["bopAuto"]); },
|
||||||
defaultLength = 1f,
|
resizable = true,
|
||||||
parameters = new List<Param>()
|
parameters = new List<Param>()
|
||||||
{
|
{
|
||||||
new Param("left" , true, "Left", "Plalin bops head"),
|
new Param("bop", CatchyTune.WhoBops.Both, "Bop", "Should Plalin and Alalin bop?"),
|
||||||
new Param("right", true, "Right", "Alalin bops head")
|
new Param("bopAuto", CatchyTune.WhoBops.None, "Bop", "Should Plalin and Alalin auto bop?"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
new GameAction("background", "Background")
|
new GameAction("background", "Background")
|
||||||
|
@ -80,6 +80,14 @@ namespace HeavenStudio.Games
|
||||||
Both
|
Both
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum WhoBops
|
||||||
|
{
|
||||||
|
Alalin,
|
||||||
|
Plalin,
|
||||||
|
Both,
|
||||||
|
None
|
||||||
|
}
|
||||||
|
|
||||||
public enum Background
|
public enum Background
|
||||||
{
|
{
|
||||||
Short,
|
Short,
|
||||||
|
@ -265,10 +273,51 @@ namespace HeavenStudio.Games
|
||||||
newFruit.SetActive(true);
|
newFruit.SetActive(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Bop(float beat, bool left, bool right)
|
public void Bop(float beat, float length, int whoBops, int whoBopsAuto)
|
||||||
{
|
{
|
||||||
bopLeft = left;
|
bopLeft = whoBopsAuto == (int)WhoBops.Plalin || whoBopsAuto == (int)WhoBops.Both;
|
||||||
bopRight = right;
|
bopRight = whoBopsAuto == (int)WhoBops.Alalin || whoBopsAuto == (int)WhoBops.Both;
|
||||||
|
for (int i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
||||||
|
{
|
||||||
|
new BeatAction.Action(beat + i, delegate
|
||||||
|
{
|
||||||
|
BopSingle(whoBops);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BopSingle(int whoBops)
|
||||||
|
{
|
||||||
|
switch (whoBops)
|
||||||
|
{
|
||||||
|
case (int)WhoBops.Plalin:
|
||||||
|
if (stopCatchLeft == 0)
|
||||||
|
{
|
||||||
|
plalinAnim.Play("bop", 0, 0);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case (int)WhoBops.Alalin:
|
||||||
|
if (stopCatchRight == 0)
|
||||||
|
{
|
||||||
|
alalinAnim.Play("bop", 0, 0);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case (int)WhoBops.Both:
|
||||||
|
if (stopCatchRight == 0)
|
||||||
|
{
|
||||||
|
alalinAnim.Play("bop", 0, 0);
|
||||||
|
}
|
||||||
|
if (stopCatchLeft == 0)
|
||||||
|
{
|
||||||
|
plalinAnim.Play("bop", 0, 0);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void changeBG(int bg)
|
public void changeBG(int bg)
|
||||||
|
|
|
@ -45,7 +45,7 @@ namespace HeavenStudio.Games.Loaders
|
||||||
new Param("solo", CheerReaders.WhoSpeaks.Both, "Who Speaks", "Who should say the voice line?")
|
new Param("solo", CheerReaders.WhoSpeaks.Both, "Who Speaks", "Who should say the voice line?")
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
new GameAction("rahRahSisBoomBaBoom", "Rah Rah Sis Boom Ba Boom!")
|
new GameAction("rahRahSisBoomBaBoom", "Rah-Rah Sis Boom Bah-Boom!")
|
||||||
{
|
{
|
||||||
function = delegate {var e = eventCaller.currentEntity; CheerReaders.instance.RahRahSisBoomBaBoom(e.beat, e["solo"], e["consecutive"]); CheerReaders.instance.SetIsDoingCue(e.beat, e.length);},
|
function = delegate {var e = eventCaller.currentEntity; CheerReaders.instance.RahRahSisBoomBaBoom(e.beat, e["solo"], e["consecutive"]); CheerReaders.instance.SetIsDoingCue(e.beat, e.length);},
|
||||||
defaultLength = 4f,
|
defaultLength = 4f,
|
||||||
|
@ -82,16 +82,21 @@ namespace HeavenStudio.Games.Loaders
|
||||||
},
|
},
|
||||||
new GameAction("yay", "Yay")
|
new GameAction("yay", "Yay")
|
||||||
{
|
{
|
||||||
function = delegate {CheerReaders.instance.Yay(); },
|
function = delegate {CheerReaders.instance.Yay(eventCaller.currentEntity["solo"]); },
|
||||||
defaultLength = 0.5f
|
|
||||||
},
|
|
||||||
new GameAction("bop", "Bop")
|
|
||||||
{
|
|
||||||
function = delegate {var e = eventCaller.currentEntity; CheerReaders.instance.BopToggle(e["toggle"]); },
|
|
||||||
defaultLength = 0.5f,
|
defaultLength = 0.5f,
|
||||||
parameters = new List<Param>()
|
parameters = new List<Param>()
|
||||||
{
|
{
|
||||||
new Param("toggle", false, "Should bop?", "Should the nerds bop?")
|
new Param("solo", CheerReaders.WhoSpeaks.Both, "Who Speaks", "Who should say the voice line?"),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
new GameAction("bop", "Bop")
|
||||||
|
{
|
||||||
|
function = delegate {var e = eventCaller.currentEntity; CheerReaders.instance.BopToggle(e.beat, e.length, e["toggle"], e["toggle2"]); },
|
||||||
|
resizable = true,
|
||||||
|
parameters = new List<Param>()
|
||||||
|
{
|
||||||
|
new Param("toggle", true, "Should bop?", "Should the nerds bop?"),
|
||||||
|
new Param("toggle2", false, "Should auto bop?", "Should the nerds auto bop?")
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
new GameAction("resetPose", "Reset Pose")
|
new GameAction("resetPose", "Reset Pose")
|
||||||
|
@ -214,21 +219,9 @@ namespace HeavenStudio.Games
|
||||||
void Update()
|
void Update()
|
||||||
{
|
{
|
||||||
var cond = Conductor.instance;
|
var cond = Conductor.instance;
|
||||||
if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1) && shouldBop && canBop)
|
if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1) && shouldBop)
|
||||||
{
|
{
|
||||||
foreach (var nerd in firstRow)
|
BopSingle();
|
||||||
{
|
|
||||||
nerd.Bop();
|
|
||||||
}
|
|
||||||
foreach (var nerd in secondRow)
|
|
||||||
{
|
|
||||||
nerd.Bop();
|
|
||||||
}
|
|
||||||
foreach (var nerd in thirdRow)
|
|
||||||
{
|
|
||||||
nerd.Bop();
|
|
||||||
}
|
|
||||||
player.Bop();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cond.isPlaying && !cond.isPaused)
|
if (cond.isPlaying && !cond.isPaused)
|
||||||
|
@ -370,7 +363,7 @@ namespace HeavenStudio.Games
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Yay()
|
public void Yay(int whoSpeaks)
|
||||||
{
|
{
|
||||||
if (!shouldYay) return;
|
if (!shouldYay) return;
|
||||||
if (shouldBeBlack)
|
if (shouldBeBlack)
|
||||||
|
@ -381,11 +374,6 @@ namespace HeavenStudio.Games
|
||||||
{
|
{
|
||||||
whiteYayParticle.Play();
|
whiteYayParticle.Play();
|
||||||
}
|
}
|
||||||
foreach (var nerd in allGirls)
|
|
||||||
{
|
|
||||||
nerd.Yay();
|
|
||||||
}
|
|
||||||
player.Yay();
|
|
||||||
playerMask.SetActive(false);
|
playerMask.SetActive(false);
|
||||||
missPoster.SetActive(false);
|
missPoster.SetActive(false);
|
||||||
foreach (var mask in topMasks)
|
foreach (var mask in topMasks)
|
||||||
|
@ -400,12 +388,71 @@ namespace HeavenStudio.Games
|
||||||
{
|
{
|
||||||
mask.SetActive(false);
|
mask.SetActive(false);
|
||||||
}
|
}
|
||||||
Jukebox.PlayOneShotGame("cheerReaders/All/yay");
|
switch (whoSpeaks)
|
||||||
|
{
|
||||||
|
case (int)WhoSpeaks.Solo:
|
||||||
|
Jukebox.PlayOneShotGame("cheerReaders/Solo/yayS");
|
||||||
|
player.Yay(true);
|
||||||
|
foreach (var nerd in allGirls)
|
||||||
|
{
|
||||||
|
nerd.Yay(true);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case (int)WhoSpeaks.Girls:
|
||||||
|
Jukebox.PlayOneShotGame("cheerReaders/Girls/yayGirls");
|
||||||
|
foreach (var nerd in allGirls)
|
||||||
|
{
|
||||||
|
nerd.Yay(true);
|
||||||
|
}
|
||||||
|
player.Yay(false);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Jukebox.PlayOneShotGame("cheerReaders/All/yay");
|
||||||
|
foreach (var nerd in allGirls)
|
||||||
|
{
|
||||||
|
nerd.Yay(true);
|
||||||
|
}
|
||||||
|
player.Yay(true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void BopToggle(bool startBop)
|
public void BopToggle(float beat, float length, bool startBop, bool bopAuto)
|
||||||
{
|
{
|
||||||
shouldBop = startBop;
|
shouldBop = bopAuto;
|
||||||
|
if (startBop)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
||||||
|
{
|
||||||
|
new BeatAction.Action(beat + i, delegate
|
||||||
|
{
|
||||||
|
BopSingle();
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BopSingle()
|
||||||
|
{
|
||||||
|
if (canBop)
|
||||||
|
{
|
||||||
|
foreach (var nerd in firstRow)
|
||||||
|
{
|
||||||
|
nerd.Bop();
|
||||||
|
}
|
||||||
|
foreach (var nerd in secondRow)
|
||||||
|
{
|
||||||
|
nerd.Bop();
|
||||||
|
}
|
||||||
|
foreach (var nerd in thirdRow)
|
||||||
|
{
|
||||||
|
nerd.Bop();
|
||||||
|
}
|
||||||
|
player.Bop();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetIsDoingCue(float beat, float length, bool shouldSwitchColor = true)
|
public void SetIsDoingCue(float beat, float length, bool shouldSwitchColor = true)
|
||||||
|
@ -418,7 +465,7 @@ namespace HeavenStudio.Games
|
||||||
player.ResetFace();
|
player.ResetFace();
|
||||||
doingCue = true;
|
doingCue = true;
|
||||||
cueBeat = beat;
|
cueBeat = beat;
|
||||||
cueLength = length;
|
cueLength = length - 1f;
|
||||||
if (!shouldSwitchColor) return;
|
if (!shouldSwitchColor) return;
|
||||||
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
||||||
{
|
{
|
||||||
|
@ -547,7 +594,7 @@ namespace HeavenStudio.Games
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
new BeatAction.Action(beat + 2.99f, delegate
|
new BeatAction.Action(beat + 2.5f, delegate
|
||||||
{
|
{
|
||||||
if (!doingCue) canBop = true;
|
if (!doingCue) canBop = true;
|
||||||
})
|
})
|
||||||
|
@ -705,7 +752,7 @@ namespace HeavenStudio.Games
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
new BeatAction.Action(beat + 2.99f, delegate
|
new BeatAction.Action(beat + 2.5f, delegate
|
||||||
{
|
{
|
||||||
if (!doingCue) canBop = true;
|
if (!doingCue) canBop = true;
|
||||||
})
|
})
|
||||||
|
@ -891,7 +938,7 @@ namespace HeavenStudio.Games
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
new BeatAction.Action(beat + 2.99f, delegate
|
new BeatAction.Action(beat + 2.5f, delegate
|
||||||
{
|
{
|
||||||
if (!doingCue) canBop = true;
|
if (!doingCue) canBop = true;
|
||||||
})
|
})
|
||||||
|
@ -1101,7 +1148,7 @@ namespace HeavenStudio.Games
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
new BeatAction.Action(beat + 2.99f, delegate
|
new BeatAction.Action(beat + 3.5f, delegate
|
||||||
{
|
{
|
||||||
if (!doingCue) canBop = true;
|
if (!doingCue) canBop = true;
|
||||||
})
|
})
|
||||||
|
|
|
@ -52,9 +52,9 @@ namespace HeavenStudio.Games.Scripts_CheerReaders
|
||||||
faceAnim.Play(player ? "FaceItsOnHappy" : "FaceItsOnNPC", 0, 0);
|
faceAnim.Play(player ? "FaceItsOnHappy" : "FaceItsOnNPC", 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Yay()
|
public void Yay(bool speak)
|
||||||
{
|
{
|
||||||
faceAnim.DoScaledAnimationAsync("FaceYay", 0.5f);
|
if (speak) faceAnim.DoScaledAnimationAsync("FaceYay", 0.5f);
|
||||||
BaseAnim.DoScaledAnimationAsync(bookIsWhite ? "WhiteYay" : "BlackYay", 0.5f);
|
BaseAnim.DoScaledAnimationAsync(bookIsWhite ? "WhiteYay" : "BlackYay", 0.5f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,13 @@ namespace HeavenStudio.Games.Loaders
|
||||||
},
|
},
|
||||||
new GameAction("bop", "Bop")
|
new GameAction("bop", "Bop")
|
||||||
{
|
{
|
||||||
function = delegate { ClappyTrio.instance.Bop(eventCaller.currentEntity.beat); }
|
function = delegate { var e = eventCaller.currentEntity; ClappyTrio.instance.BopToggle(e.beat, e.length, e["bop"], e["autoBop"]); },
|
||||||
|
resizable = true,
|
||||||
|
parameters = new List<Param>()
|
||||||
|
{
|
||||||
|
new Param("bop", true, "Bop", "Should the lions bop?"),
|
||||||
|
new Param("autoBop", false, "Bop (Auto)", "Should the lions auto bop?")
|
||||||
|
}
|
||||||
},
|
},
|
||||||
new GameAction("prepare", "Prepare Stance")
|
new GameAction("prepare", "Prepare Stance")
|
||||||
{
|
{
|
||||||
|
@ -69,6 +75,9 @@ namespace HeavenStudio.Games
|
||||||
private ClappyTrioPlayer ClappyTrioPlayer;
|
private ClappyTrioPlayer ClappyTrioPlayer;
|
||||||
|
|
||||||
public bool playerHitLast = false;
|
public bool playerHitLast = false;
|
||||||
|
bool shouldBop;
|
||||||
|
|
||||||
|
public GameEvent bop = new GameEvent();
|
||||||
|
|
||||||
public static ClappyTrio instance { get; set; }
|
public static ClappyTrio instance { get; set; }
|
||||||
|
|
||||||
|
@ -90,6 +99,15 @@ namespace HeavenStudio.Games
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Update()
|
||||||
|
{
|
||||||
|
var cond = Conductor.instance;
|
||||||
|
if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1))
|
||||||
|
{
|
||||||
|
if (shouldBop) Bop(cond.songPositionInBeats);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void InitLions()
|
private void InitLions()
|
||||||
{
|
{
|
||||||
float startPos = -3.066667f;
|
float startPos = -3.066667f;
|
||||||
|
@ -119,11 +137,6 @@ namespace HeavenStudio.Games
|
||||||
clapAction.Delete();
|
clapAction.Delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Update()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Clap(float beat, float length)
|
public void Clap(float beat, float length)
|
||||||
{
|
{
|
||||||
ClappyTrioPlayer.clapStarted = true;
|
ClappyTrioPlayer.clapStarted = true;
|
||||||
|
@ -158,6 +171,22 @@ namespace HeavenStudio.Games
|
||||||
Jukebox.PlayOneShotGame("clappyTrio/ready");
|
Jukebox.PlayOneShotGame("clappyTrio/ready");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void BopToggle(float beat, float length, bool startBop, bool autoBop)
|
||||||
|
{
|
||||||
|
shouldBop = autoBop;
|
||||||
|
if (startBop)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
float spawnBeat = beat + i;
|
||||||
|
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
||||||
|
{
|
||||||
|
new BeatAction.Action(spawnBeat, delegate { Bop(spawnBeat); })
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void Bop(float beat)
|
public void Bop(float beat)
|
||||||
{
|
{
|
||||||
if (playerHitLast)
|
if (playerHitLast)
|
||||||
|
|
|
@ -24,6 +24,8 @@ namespace HeavenStudio.Games.Scripts_DrummingPractice
|
||||||
|
|
||||||
private bool hitting = false;
|
private bool hitting = false;
|
||||||
|
|
||||||
|
private float canBopBeat = -2f;
|
||||||
|
|
||||||
// in the future: use the MiiStudio API to render any mii from a nintendo account / MNMS / Mii Studio code?
|
// in the future: use the MiiStudio API to render any mii from a nintendo account / MNMS / Mii Studio code?
|
||||||
// figure out how to call the API from unity?
|
// figure out how to call the API from unity?
|
||||||
// used expressions: "normal", "smile", "sorrow"
|
// used expressions: "normal", "smile", "sorrow"
|
||||||
|
@ -53,12 +55,13 @@ namespace HeavenStudio.Games.Scripts_DrummingPractice
|
||||||
|
|
||||||
public void Bop()
|
public void Bop()
|
||||||
{
|
{
|
||||||
if (animator.IsAnimationNotPlaying())
|
if (Conductor.instance.GetPositionFromBeat(canBopBeat, 2f) > 1f)
|
||||||
animator.Play("Bop", 0, 0);
|
animator.Play("Bop", 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Prepare(int type)
|
public void Prepare(float beat, int type)
|
||||||
{
|
{
|
||||||
|
canBopBeat = beat;
|
||||||
count = type;
|
count = type;
|
||||||
if (count % 2 == 0)
|
if (count % 2 == 0)
|
||||||
animator.Play("PrepareLeft", 0, 0);
|
animator.Play("PrepareLeft", 0, 0);
|
||||||
|
|
|
@ -16,9 +16,13 @@ namespace HeavenStudio.Games.Loaders
|
||||||
{
|
{
|
||||||
new GameAction("bop", "Bop")
|
new GameAction("bop", "Bop")
|
||||||
{
|
{
|
||||||
function = delegate { var e = eventCaller.currentEntity; DrummingPractice.instance.SetBop(e.beat, e.length); },
|
function = delegate { var e = eventCaller.currentEntity; DrummingPractice.instance.SetBop(e.beat, e.length, e["bop"], e["autoBop"]); },
|
||||||
defaultLength = 1f,
|
resizable = true,
|
||||||
resizable = true
|
parameters = new List<Param>()
|
||||||
|
{
|
||||||
|
new Param("bop", true, "Bop", "Should the drummers bop?"),
|
||||||
|
new Param("autoBop", true, "Bop (Auto)", "Should the drummers auto bop?")
|
||||||
|
}
|
||||||
},
|
},
|
||||||
new GameAction("drum", "Hit Drum")
|
new GameAction("drum", "Hit Drum")
|
||||||
{
|
{
|
||||||
|
@ -105,6 +109,7 @@ namespace HeavenStudio.Games
|
||||||
bool isMoving;
|
bool isMoving;
|
||||||
string moveAnim;
|
string moveAnim;
|
||||||
EasingFunction.Ease lastEase;
|
EasingFunction.Ease lastEase;
|
||||||
|
bool goBop = true;
|
||||||
|
|
||||||
public GameEvent bop = new GameEvent();
|
public GameEvent bop = new GameEvent();
|
||||||
public int count = 0;
|
public int count = 0;
|
||||||
|
@ -131,7 +136,7 @@ namespace HeavenStudio.Games
|
||||||
var cond = Conductor.instance;
|
var cond = Conductor.instance;
|
||||||
if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1))
|
if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1))
|
||||||
{
|
{
|
||||||
if (cond.songPositionInBeats >= bop.startBeat && Conductor.instance.songPositionInBeats < bop.startBeat + bop.length)
|
if (goBop)
|
||||||
{
|
{
|
||||||
Bop();
|
Bop();
|
||||||
}
|
}
|
||||||
|
@ -140,9 +145,12 @@ namespace HeavenStudio.Games
|
||||||
if (isMoving && cond.isPlaying && !cond.isPaused)
|
if (isMoving && cond.isPlaying && !cond.isPaused)
|
||||||
{
|
{
|
||||||
float normalizedBeat = cond.GetPositionFromBeat(movingStartBeat, movingLength);
|
float normalizedBeat = cond.GetPositionFromBeat(movingStartBeat, movingLength);
|
||||||
EasingFunction.Function func = EasingFunction.GetEasingFunction(lastEase);
|
if (normalizedBeat >= 0 && normalizedBeat <= 1f)
|
||||||
float newPos = func(0f, 1f, normalizedBeat);
|
{
|
||||||
NPCDrummers.DoNormalizedAnimation(moveAnim, newPos);
|
EasingFunction.Function func = EasingFunction.GetEasingFunction(lastEase);
|
||||||
|
float newPos = func(0f, 1f, normalizedBeat);
|
||||||
|
NPCDrummers.DoNormalizedAnimation(moveAnim, newPos);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (SpriteRenderer streak in streaks)
|
foreach (SpriteRenderer streak in streaks)
|
||||||
|
@ -165,10 +173,19 @@ namespace HeavenStudio.Games
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetBop(float beat, float length)
|
public void SetBop(float beat, float length, bool shouldBop, bool autoBop)
|
||||||
{
|
{
|
||||||
bop.startBeat = beat;
|
goBop = autoBop;
|
||||||
bop.length = length;
|
if (shouldBop)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
||||||
|
{
|
||||||
|
new BeatAction.Action(beat + i, delegate { Bop(); })
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Bop()
|
public void Bop()
|
||||||
|
@ -181,9 +198,9 @@ namespace HeavenStudio.Games
|
||||||
public void Prepare(float beat, bool applause)
|
public void Prepare(float beat, bool applause)
|
||||||
{
|
{
|
||||||
int type = count % 2;
|
int type = count % 2;
|
||||||
player.Prepare(type);
|
player.Prepare(beat, type);
|
||||||
leftDrummer.Prepare(type);
|
leftDrummer.Prepare(beat, type);
|
||||||
rightDrummer.Prepare(type);
|
rightDrummer.Prepare(beat, type);
|
||||||
count++;
|
count++;
|
||||||
|
|
||||||
SetFaces(0);
|
SetFaces(0);
|
||||||
|
|
|
@ -15,12 +15,12 @@ namespace HeavenStudio.Games.Loaders
|
||||||
{
|
{
|
||||||
new GameAction("bop", "Bop")
|
new GameAction("bop", "Bop")
|
||||||
{
|
{
|
||||||
function = delegate { var e = eventCaller.currentEntity; FanClub.instance.Bop(e.beat, e.length, e["type"]); },
|
function = delegate { var e = eventCaller.currentEntity; FanClub.instance.Bop(e.beat, e.length, e["type"], e["type2"]); },
|
||||||
defaultLength = 0.5f,
|
|
||||||
resizable = true,
|
resizable = true,
|
||||||
parameters = new List<Param>()
|
parameters = new List<Param>()
|
||||||
{
|
{
|
||||||
new Param("type", FanClub.IdolBopType.Both, "Bop target", "Who to make bop"),
|
new Param("type", FanClub.IdolBopType.Both, "Bop target", "Who to make bop"),
|
||||||
|
new Param("type2", FanClub.IdolBopType.None, "Bop target (Auto)", "Who to make auto bop"),
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
new GameAction("yeah, yeah, yeah", "Yeah, Yeah, Yeah!")
|
new GameAction("yeah, yeah, yeah", "Yeah, Yeah, Yeah!")
|
||||||
|
@ -105,7 +105,8 @@ namespace HeavenStudio.Games
|
||||||
public enum IdolBopType {
|
public enum IdolBopType {
|
||||||
Both,
|
Both,
|
||||||
Idol,
|
Idol,
|
||||||
Spectators
|
Spectators,
|
||||||
|
None
|
||||||
}
|
}
|
||||||
public enum IdolAnimations {
|
public enum IdolAnimations {
|
||||||
Bop,
|
Bop,
|
||||||
|
@ -178,6 +179,8 @@ namespace HeavenStudio.Games
|
||||||
private static float wantBigReady = Single.MinValue;
|
private static float wantBigReady = Single.MinValue;
|
||||||
public float idolJumpStartTime = Single.MinValue;
|
public float idolJumpStartTime = Single.MinValue;
|
||||||
private bool hasJumped = false;
|
private bool hasJumped = false;
|
||||||
|
private bool goBopIdol = true;
|
||||||
|
private bool goBopSpec = true;
|
||||||
|
|
||||||
//game scene
|
//game scene
|
||||||
public static FanClub instance;
|
public static FanClub instance;
|
||||||
|
@ -282,7 +285,7 @@ namespace HeavenStudio.Games
|
||||||
var cond = Conductor.instance;
|
var cond = Conductor.instance;
|
||||||
if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1))
|
if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1))
|
||||||
{
|
{
|
||||||
if (cond.songPositionInBeats >= bop.startBeat && cond.songPositionInBeats < bop.startBeat + bop.length)
|
if (goBopIdol)
|
||||||
{
|
{
|
||||||
if (!(cond.songPositionInBeats >= noBop.startBeat && cond.songPositionInBeats < noBop.startBeat + noBop.length))
|
if (!(cond.songPositionInBeats >= noBop.startBeat && cond.songPositionInBeats < noBop.startBeat + noBop.length))
|
||||||
idolAnimator.Play("IdolBeat" + GetPerformanceSuffix(), 0, 0);
|
idolAnimator.Play("IdolBeat" + GetPerformanceSuffix(), 0, 0);
|
||||||
|
@ -291,7 +294,7 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
if (cond.ReportBeat(ref specBop.lastReportedBeat, specBop.startBeat % 1))
|
if (cond.ReportBeat(ref specBop.lastReportedBeat, specBop.startBeat % 1))
|
||||||
{
|
{
|
||||||
if (cond.songPositionInBeats >= specBop.startBeat && cond.songPositionInBeats < specBop.startBeat + specBop.length)
|
if (goBopSpec)
|
||||||
{
|
{
|
||||||
if (!(cond.songPositionInBeats >= noSpecBop.startBeat && cond.songPositionInBeats < noSpecBop.startBeat + noSpecBop.length))
|
if (!(cond.songPositionInBeats >= noSpecBop.startBeat && cond.songPositionInBeats < noSpecBop.startBeat + noSpecBop.length))
|
||||||
BopAll();
|
BopAll();
|
||||||
|
@ -324,22 +327,36 @@ namespace HeavenStudio.Games
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Bop(float beat, float length, int target = (int) IdolBopType.Both)
|
public void Bop(float beat, float length, int target = (int) IdolBopType.Both, int targetAuto = (int)IdolBopType.Both)
|
||||||
{
|
{
|
||||||
if (target == (int) IdolBopType.Both || target == (int) IdolBopType.Idol)
|
goBopIdol = targetAuto == (int)IdolBopType.Both || targetAuto == (int)IdolBopType.Idol;
|
||||||
|
goBopSpec = targetAuto == (int)IdolBopType.Both || targetAuto == (int)IdolBopType.Spectators;
|
||||||
|
for (int i = 0; i < length; i++)
|
||||||
{
|
{
|
||||||
bop.length = length;
|
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
||||||
bop.startBeat = beat;
|
{
|
||||||
|
new BeatAction.Action(beat + i, delegate { BopSingle(target); })
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (target == (int) IdolBopType.Both || target == (int) IdolBopType.Spectators)
|
|
||||||
SpecBop(beat, length);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SpecBop(float beat, float length)
|
void BopSingle(int target)
|
||||||
{
|
{
|
||||||
specBop.length = length;
|
switch (target)
|
||||||
specBop.startBeat = beat;
|
{
|
||||||
|
case (int)IdolBopType.Idol:
|
||||||
|
idolAnimator.Play("IdolBeat" + GetPerformanceSuffix(), 0, 0);
|
||||||
|
break;
|
||||||
|
case (int)IdolBopType.Spectators:
|
||||||
|
BopAll();
|
||||||
|
break;
|
||||||
|
case (int)IdolBopType.Both:
|
||||||
|
idolAnimator.Play("IdolBeat" + GetPerformanceSuffix(), 0, 0);
|
||||||
|
BopAll();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DisableBop(float beat, float length)
|
private void DisableBop(float beat, float length)
|
||||||
|
|
|
@ -15,11 +15,12 @@ namespace HeavenStudio.Games.Loaders
|
||||||
{
|
{
|
||||||
new GameAction("bop", "Bop")
|
new GameAction("bop", "Bop")
|
||||||
{
|
{
|
||||||
function = delegate { KarateMan.instance.ToggleBop(eventCaller.currentEntity["toggle"]); },
|
function = delegate { var e = eventCaller.currentEntity; KarateMan.instance.ToggleBop(e.beat, e.length, e["toggle2"], e["toggle"]); },
|
||||||
defaultLength = 0.5f,
|
resizable = true,
|
||||||
parameters = new List<Param>()
|
parameters = new List<Param>()
|
||||||
{
|
{
|
||||||
new Param("toggle", true, "Bop", "Whether to bop to the beat or not")
|
new Param("toggle2", true, "Bop", "Whether to bop to the beat or not"),
|
||||||
|
new Param("toggle", false, "Bop (Auto)", "Whether to auto bop to the beat or not")
|
||||||
},
|
},
|
||||||
inactiveFunction = delegate { KarateMan.ToggleBopUnloaded(eventCaller.currentEntity["toggle"]); }
|
inactiveFunction = delegate { KarateMan.ToggleBopUnloaded(eventCaller.currentEntity["toggle"]); }
|
||||||
},
|
},
|
||||||
|
@ -476,7 +477,7 @@ namespace HeavenStudio.Games
|
||||||
SetBgAndShadowCol(WantBgChangeStart, WantBgChangeLength, bgType, (int) currentShadowType, bgColour, customShadowColour, (int)currentBgEffect);
|
SetBgAndShadowCol(WantBgChangeStart, WantBgChangeLength, bgType, (int) currentShadowType, bgColour, customShadowColour, (int)currentBgEffect);
|
||||||
SetBgTexture(textureType, textureFilterType, filterColour, filterColour);
|
SetBgTexture(textureType, textureFilterType, filterColour, filterColour);
|
||||||
UpdateMaterialColour(BodyColor, HighlightColor, ItemColor);
|
UpdateMaterialColour(BodyColor, HighlightColor, ItemColor);
|
||||||
ToggleBop(WantBop);
|
ToggleBop(0, 0, false, WantBop);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Update()
|
private void Update()
|
||||||
|
@ -1033,12 +1034,22 @@ namespace HeavenStudio.Games
|
||||||
Wind.windMain = windStrength;
|
Wind.windMain = windStrength;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ToggleBop(bool toggle)
|
public void ToggleBop(float beat, float length, bool toggle, bool autoBop)
|
||||||
{
|
{
|
||||||
|
Joe.shouldBop = autoBop;
|
||||||
if (toggle)
|
if (toggle)
|
||||||
Joe.bop.length = Single.MaxValue;
|
{
|
||||||
else
|
for (int i = 0; i < length; i++)
|
||||||
Joe.bop.length = 0;
|
{
|
||||||
|
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
||||||
|
{
|
||||||
|
new BeatAction.Action(beat + i, delegate
|
||||||
|
{
|
||||||
|
Joe.Bop();
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ToggleBopUnloaded(bool toggle)
|
public static void ToggleBopUnloaded(bool toggle)
|
||||||
|
|
|
@ -13,6 +13,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||||
public Animator anim;
|
public Animator anim;
|
||||||
public Animator FaceAnim;
|
public Animator FaceAnim;
|
||||||
public GameEvent bop = new GameEvent();
|
public GameEvent bop = new GameEvent();
|
||||||
|
public bool shouldBop = true;
|
||||||
public SpriteRenderer[] Shadows;
|
public SpriteRenderer[] Shadows;
|
||||||
|
|
||||||
public Color BombGlowTint;
|
public Color BombGlowTint;
|
||||||
|
@ -94,11 +95,9 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||||
anim.Play("Beat", -1, 0);
|
anim.Play("Beat", -1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1, false) && cond.songPositionInBeats > bop.startBeat && cond.songPositionInBeats < bop.startBeat + bop.length && cond.songPositionInBeats >= unPrepareTime && !inCombo)
|
if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1, false) && shouldBop && cond.songPositionInBeats >= unPrepareTime && !inCombo)
|
||||||
{
|
{
|
||||||
anim.speed = 1f;
|
Bop();
|
||||||
anim.Play("Beat", -1, 0);
|
|
||||||
lastChargeTime = Single.MinValue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (inCombo && shouldComboId == -2)
|
if (inCombo && shouldComboId == -2)
|
||||||
|
@ -182,6 +181,13 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Bop()
|
||||||
|
{
|
||||||
|
anim.speed = 1f;
|
||||||
|
anim.Play("Beat", -1, 0);
|
||||||
|
lastChargeTime = Single.MinValue;
|
||||||
|
}
|
||||||
|
|
||||||
public bool Punch(int forceHand = 0)
|
public bool Punch(int forceHand = 0)
|
||||||
{
|
{
|
||||||
if (GameManager.instance.currentGame != "karateman") return false;
|
if (GameManager.instance.currentGame != "karateman") return false;
|
||||||
|
|
|
@ -19,12 +19,13 @@ namespace HeavenStudio.Games.Loaders
|
||||||
{
|
{
|
||||||
new GameAction("bop", "Bop")
|
new GameAction("bop", "Bop")
|
||||||
{
|
{
|
||||||
function = delegate { var e = eventCaller.currentEntity; Lockstep.instance.Bop(e.beat, e["toggle"]); },
|
function = delegate { var e = eventCaller.currentEntity; Lockstep.instance.Bop(e.beat, e.length, e["toggle"], e["toggle2"]); },
|
||||||
|
resizable = true,
|
||||||
parameters = new List<Param>()
|
parameters = new List<Param>()
|
||||||
{
|
{
|
||||||
new Param("toggle", false, "Reset Pose", "Resets to idle pose.")
|
new Param("toggle", true, "Bop", "Should the stepswitchers bop?"),
|
||||||
|
new Param("toggle2", false, "Bop (Auto)", "Should the stepswitchers auto bop?"),
|
||||||
},
|
},
|
||||||
defaultLength = 1f,
|
|
||||||
},
|
},
|
||||||
new GameAction("marching", "Stepping")
|
new GameAction("marching", "Stepping")
|
||||||
{
|
{
|
||||||
|
@ -115,6 +116,8 @@ namespace HeavenStudio.Games
|
||||||
MissedOn = 2
|
MissedOn = 2
|
||||||
}
|
}
|
||||||
bool offColorActive;
|
bool offColorActive;
|
||||||
|
bool goBop;
|
||||||
|
public GameEvent bop = new GameEvent();
|
||||||
|
|
||||||
public static Lockstep instance;
|
public static Lockstep instance;
|
||||||
|
|
||||||
|
@ -135,6 +138,15 @@ namespace HeavenStudio.Games
|
||||||
var cond = Conductor.instance;
|
var cond = Conductor.instance;
|
||||||
if (cond.isPlaying && !cond.isPaused)
|
if (cond.isPlaying && !cond.isPaused)
|
||||||
{
|
{
|
||||||
|
if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1))
|
||||||
|
{
|
||||||
|
if (goBop)
|
||||||
|
{
|
||||||
|
stepswitcher0.DoScaledAnimationAsync("Bop", 0.5f);
|
||||||
|
stepswitcher1.DoScaledAnimationAsync("Bop", 0.5f);
|
||||||
|
stepswitcherP.DoScaledAnimationAsync("Bop", 0.5f);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (queuedInputs.Count > 0)
|
if (queuedInputs.Count > 0)
|
||||||
{
|
{
|
||||||
foreach (var input in queuedInputs)
|
foreach (var input in queuedInputs)
|
||||||
|
@ -160,21 +172,23 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Bop(float beat, bool reset)
|
public void Bop(float beat, float length, bool shouldBop, bool autoBop)
|
||||||
{
|
{
|
||||||
if (reset)
|
goBop = autoBop;
|
||||||
|
if (shouldBop)
|
||||||
{
|
{
|
||||||
stepswitcher0.DoScaledAnimationAsync("BopReset", 0.5f);
|
for (int i = 0; i < length; i++)
|
||||||
stepswitcher1.DoScaledAnimationAsync("BopReset", 0.5f);
|
{
|
||||||
stepswitcherP.DoScaledAnimationAsync("BopReset", 0.5f);
|
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
||||||
|
{
|
||||||
}
|
new BeatAction.Action(beat + i, delegate
|
||||||
else
|
{
|
||||||
{
|
stepswitcher0.DoScaledAnimationAsync("Bop", 0.5f);
|
||||||
stepswitcher0.DoScaledAnimationAsync("Bop", 0.5f);
|
stepswitcher1.DoScaledAnimationAsync("Bop", 0.5f);
|
||||||
stepswitcher1.DoScaledAnimationAsync("Bop", 0.5f);
|
stepswitcherP.DoScaledAnimationAsync("Bop", 0.5f);
|
||||||
stepswitcherP.DoScaledAnimationAsync("Bop", 0.5f);
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,9 +27,14 @@ namespace HeavenStudio.Games.Loaders
|
||||||
{
|
{
|
||||||
new GameAction("bop", "Bop")
|
new GameAction("bop", "Bop")
|
||||||
{
|
{
|
||||||
function = delegate { var e = eventCaller.currentEntity; MarchingOrders.instance.BopAction(e.beat, e.length); },
|
function = delegate { var e = eventCaller.currentEntity; MarchingOrders.instance.BopAction(e.beat, e.length, e["bop"], e["autoBop"]); },
|
||||||
defaultLength = 1f,
|
defaultLength = 1f,
|
||||||
resizable = true
|
resizable = true,
|
||||||
|
parameters = new List<Param>()
|
||||||
|
{
|
||||||
|
new Param("bop", true, "Bop", "Should the cadets bop?"),
|
||||||
|
new Param("autoBop", false, "Bop (Auto)", "Should the cadets auto bop?")
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
new GameAction("marching", "Cadets March")
|
new GameAction("marching", "Cadets March")
|
||||||
|
@ -138,6 +143,7 @@ namespace HeavenStudio.Games
|
||||||
public static Color fillColor;
|
public static Color fillColor;
|
||||||
|
|
||||||
[Header("Game Events")]
|
[Header("Game Events")]
|
||||||
|
bool goBop;
|
||||||
public GameEvent bop = new GameEvent();
|
public GameEvent bop = new GameEvent();
|
||||||
public GameEvent noBop = new GameEvent();
|
public GameEvent noBop = new GameEvent();
|
||||||
public GameEvent marching = new GameEvent();
|
public GameEvent marching = new GameEvent();
|
||||||
|
@ -252,7 +258,7 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1, true))
|
if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1, true))
|
||||||
{
|
{
|
||||||
if (currBeat >= bop.startBeat && currBeat < bop.startBeat + bop.length)
|
if (goBop)
|
||||||
{
|
{
|
||||||
Cadet1.DoScaledAnimationAsync("Bop", 0.5f);
|
Cadet1.DoScaledAnimationAsync("Bop", 0.5f);
|
||||||
Cadet2.DoScaledAnimationAsync("Bop", 0.5f);
|
Cadet2.DoScaledAnimationAsync("Bop", 0.5f);
|
||||||
|
@ -310,10 +316,25 @@ namespace HeavenStudio.Games
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void BopAction(float beat, float length)
|
public void BopAction(float beat, float length, bool shouldBop, bool autoBop)
|
||||||
{
|
{
|
||||||
bop.length = length;
|
goBop = autoBop;
|
||||||
bop.startBeat = beat;
|
if (shouldBop)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
||||||
|
{
|
||||||
|
new BeatAction.Action(beat + i, delegate
|
||||||
|
{
|
||||||
|
Cadet1.DoScaledAnimationAsync("Bop", 0.5f);
|
||||||
|
Cadet2.DoScaledAnimationAsync("Bop", 0.5f);
|
||||||
|
Cadet3.DoScaledAnimationAsync("Bop", 0.5f);
|
||||||
|
CadetPlayer.DoScaledAnimationAsync("Bop", 0.5f);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void PreMarch(float beat, float length)
|
public static void PreMarch(float beat, float length)
|
||||||
|
|
|
@ -49,13 +49,14 @@ namespace HeavenStudio.Games.Loaders
|
||||||
{
|
{
|
||||||
function = delegate {
|
function = delegate {
|
||||||
var e = eventCaller.currentEntity;
|
var e = eventCaller.currentEntity;
|
||||||
MeatGrinder.instance.Bop(e.beat, e["bossBop"]);
|
MeatGrinder.instance.Bop(e.beat, e.length, e["bop"], e["bossBop"]);
|
||||||
},
|
},
|
||||||
parameters = new List<Param>()
|
parameters = new List<Param>()
|
||||||
{
|
{
|
||||||
new Param("bossBop", false, "Boss Bops?", "Does Boss bop?"),
|
new Param("bop", true, "Boss Bops?", "Does Boss bop?"),
|
||||||
|
new Param("bossBop", false, "Boss Bops? (Auto)", "Does Boss Auto bop?"),
|
||||||
},
|
},
|
||||||
defaultLength = 0.5f,
|
resizable = true,
|
||||||
priority = 4,
|
priority = 4,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -144,9 +145,25 @@ namespace HeavenStudio.Games
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Bop(float beat, bool doesBop)
|
public void Bop(float beat, float length, bool doesBop, bool autoBop)
|
||||||
{
|
{
|
||||||
bossBop = doesBop;
|
bossBop = autoBop;
|
||||||
|
if (doesBop)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
||||||
|
{
|
||||||
|
new BeatAction.Action(beat + i, delegate
|
||||||
|
{
|
||||||
|
if (!BossAnim.IsPlayingAnimationName("BossCall") && !BossAnim.IsPlayingAnimationName("BossSignal"))
|
||||||
|
{
|
||||||
|
BossAnim.DoScaledAnimationAsync(bossAnnoyed ? "BossMiss" : "Bop", 0.5f);
|
||||||
|
};
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void PreInterval(float beat, float interval)
|
public static void PreInterval(float beat, float interval)
|
||||||
|
|
|
@ -16,9 +16,13 @@ namespace HeavenStudio.Games.Loaders
|
||||||
{
|
{
|
||||||
new GameAction("bop", "Bop")
|
new GameAction("bop", "Bop")
|
||||||
{
|
{
|
||||||
function = delegate { RhythmRally.instance.Bop(eventCaller.currentEntity.beat, eventCaller.currentEntity.length); },
|
function = delegate {var e = eventCaller.currentEntity; RhythmRally.instance.Bop(e.beat, e.length, e["bop"], e["bopAuto"]); },
|
||||||
defaultLength = 0.5f,
|
resizable = true,
|
||||||
resizable = true
|
parameters = new List<Param>()
|
||||||
|
{
|
||||||
|
new Param("bop", true, "Bop", "Will the paddlers bop?"),
|
||||||
|
new Param("bopAuto", false, "Bop (Auto)", "Will the paddlers auto bop?")
|
||||||
|
}
|
||||||
},
|
},
|
||||||
new GameAction("whistle", "Whistle")
|
new GameAction("whistle", "Whistle")
|
||||||
{
|
{
|
||||||
|
@ -61,6 +65,18 @@ namespace HeavenStudio.Games.Loaders
|
||||||
new Param("muteAudio", false, "Mute Cowbell", "Whether the cowbell sound should play or not.")
|
new Param("muteAudio", false, "Mute Cowbell", "Whether the cowbell sound should play or not.")
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
new GameAction("tonktinktonk", "Tonk-Tink-Tonk (Stretchable)")
|
||||||
|
{
|
||||||
|
preFunction = delegate {var e = eventCaller.currentEntity; RhythmRally.TonkTinkTonkStretchable(e.beat, e.length); },
|
||||||
|
defaultLength = 4f,
|
||||||
|
resizable = true
|
||||||
|
},
|
||||||
|
new GameAction("superfast stretchable", "Superfast Rally (Stretchable)")
|
||||||
|
{
|
||||||
|
function = delegate { var e = eventCaller.currentEntity; RhythmRally.instance.SuperFastRallyStretchable(e.beat, e.length); },
|
||||||
|
defaultLength = 8f,
|
||||||
|
resizable = true
|
||||||
|
},
|
||||||
new GameAction("pose", "End Pose")
|
new GameAction("pose", "End Pose")
|
||||||
{
|
{
|
||||||
function = delegate { RhythmRally.instance.Pose(); },
|
function = delegate { RhythmRally.instance.Pose(); },
|
||||||
|
@ -131,6 +147,7 @@ namespace HeavenStudio.Games
|
||||||
public Paddlers paddlers;
|
public Paddlers paddlers;
|
||||||
|
|
||||||
public GameEvent bop = new GameEvent();
|
public GameEvent bop = new GameEvent();
|
||||||
|
private bool goBop = true;
|
||||||
|
|
||||||
public static RhythmRally instance;
|
public static RhythmRally instance;
|
||||||
|
|
||||||
|
@ -343,23 +360,45 @@ namespace HeavenStudio.Games
|
||||||
// Paddler bop animation.
|
// Paddler bop animation.
|
||||||
if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1))
|
if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1))
|
||||||
{
|
{
|
||||||
if (currentBeat >= bop.startBeat && currentBeat < bop.startBeat + bop.length && !inPose)
|
if (goBop && !inPose)
|
||||||
{
|
{
|
||||||
if (!playerPrepping && (playerAnim.IsAnimationNotPlaying() || playerState.IsName("Idle") || playerState.IsName("Beat")))
|
BopSingle();
|
||||||
playerAnim.DoScaledAnimationAsync("Beat", 0.5f);
|
|
||||||
|
|
||||||
if (!opponentPrepping && !opponentServing && !tossing && (opponentAnim.IsAnimationNotPlaying() || opponentState.IsName("Idle") || opponentState.IsName("Beat")))
|
|
||||||
opponentAnim.DoScaledAnimationAsync("Beat", 0.5f);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
opponentServing = false;
|
opponentServing = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Bop(float beat, float length)
|
public void Bop(float beat, float length, bool bop, bool bopAuto)
|
||||||
{
|
{
|
||||||
bop.length = length;
|
goBop = bopAuto;
|
||||||
bop.startBeat = beat;
|
if (bop)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
||||||
|
{
|
||||||
|
new BeatAction.Action(beat + i, delegate
|
||||||
|
{
|
||||||
|
BopSingle();
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BopSingle()
|
||||||
|
{
|
||||||
|
var playerState = playerAnim.GetCurrentAnimatorStateInfo(0);
|
||||||
|
var opponentState = opponentAnim.GetCurrentAnimatorStateInfo(0);
|
||||||
|
|
||||||
|
bool playerPrepping = false; // Player using prep animation?
|
||||||
|
bool opponentPrepping = false; // Opponent using prep animation?
|
||||||
|
if (!playerPrepping && (playerAnim.IsAnimationNotPlaying() || playerState.IsName("Idle") || playerState.IsName("Beat")))
|
||||||
|
playerAnim.DoScaledAnimationAsync("Beat", 0.5f);
|
||||||
|
|
||||||
|
if (!opponentPrepping && !opponentServing && !tossing && (opponentAnim.IsAnimationNotPlaying() || opponentState.IsName("Idle") || opponentState.IsName("Beat")))
|
||||||
|
opponentAnim.DoScaledAnimationAsync("Beat", 0.5f);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Serve(float beat, RallySpeed speed)
|
public void Serve(float beat, RallySpeed speed)
|
||||||
|
@ -469,36 +508,39 @@ namespace HeavenStudio.Games
|
||||||
});
|
});
|
||||||
|
|
||||||
if (muteAudio) return;
|
if (muteAudio) return;
|
||||||
MultiSound.Play(new MultiSound.Sound[]
|
TonkTinkTonkStretchable(beat, 1.5f);
|
||||||
{
|
|
||||||
new MultiSound.Sound("rhythmRally/Tonk", beat),
|
|
||||||
new MultiSound.Sound("rhythmRally/Tink", beat + 0.5f),
|
|
||||||
new MultiSound.Sound("rhythmRally/Tonk", beat + 1f)
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
else if (speedChange == RallySpeed.SuperFast)
|
else if (speedChange == RallySpeed.SuperFast)
|
||||||
{
|
{
|
||||||
BeatAction.New(gameObject, new List<BeatAction.Action>()
|
SuperFastRallyStretchable(beat + 4f, 8f);
|
||||||
{
|
|
||||||
new BeatAction.Action(beat + 4f, delegate { Serve(beat + 4f, RallySpeed.SuperFast); }),
|
|
||||||
new BeatAction.Action(beat + 6f, delegate { Serve(beat + 6f, RallySpeed.SuperFast); }),
|
|
||||||
new BeatAction.Action(beat + 8f, delegate { Serve(beat + 8f, RallySpeed.SuperFast); }),
|
|
||||||
new BeatAction.Action(beat + 10f, delegate { Serve(beat + 10f, RallySpeed.SuperFast); })
|
|
||||||
});
|
|
||||||
|
|
||||||
if (muteAudio) return;
|
if (muteAudio) return;
|
||||||
MultiSound.Play(new MultiSound.Sound[]
|
TonkTinkTonkStretchable(beat, 4f);
|
||||||
{
|
|
||||||
new MultiSound.Sound("rhythmRally/Tonk", beat),
|
|
||||||
new MultiSound.Sound("rhythmRally/Tink", beat + 0.5f),
|
|
||||||
new MultiSound.Sound("rhythmRally/Tonk", beat + 1f),
|
|
||||||
new MultiSound.Sound("rhythmRally/Tink", beat + 1.5f),
|
|
||||||
new MultiSound.Sound("rhythmRally/Tonk", beat + 2f),
|
|
||||||
new MultiSound.Sound("rhythmRally/Tink", beat + 2.5f),
|
|
||||||
new MultiSound.Sound("rhythmRally/Tonk", beat + 3f),
|
|
||||||
new MultiSound.Sound("rhythmRally/Tink", beat + 3.5f)
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void TonkTinkTonkStretchable(float beat, float length)
|
||||||
|
{
|
||||||
|
List<MultiSound.Sound> soundsToPlay = new List<MultiSound.Sound>();
|
||||||
|
bool tink = false;
|
||||||
|
for (float i = 0; i < length; i += 0.5f)
|
||||||
|
{
|
||||||
|
soundsToPlay.Add(new MultiSound.Sound(tink ? "rhythmRally/Tink" : "rhythmRally/Tonk", beat + i));
|
||||||
|
tink = !tink;
|
||||||
|
}
|
||||||
|
MultiSound.Play(soundsToPlay.ToArray(), forcePlay: true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SuperFastRallyStretchable(float beat, float length)
|
||||||
|
{
|
||||||
|
List<BeatAction.Action> servesToPerform = new List<BeatAction.Action>();
|
||||||
|
|
||||||
|
for (int i = 0; i < length; i += 2)
|
||||||
|
{
|
||||||
|
float beatToSpawn = beat + i;
|
||||||
|
servesToPerform.Add( new BeatAction.Action(beatToSpawn, delegate { Serve(beatToSpawn, RallySpeed.SuperFast); }) );
|
||||||
|
}
|
||||||
|
BeatAction.New(gameObject, servesToPerform);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -33,11 +33,12 @@ namespace HeavenStudio.Games.Loaders
|
||||||
},
|
},
|
||||||
new GameAction("bop", "Bop")
|
new GameAction("bop", "Bop")
|
||||||
{
|
{
|
||||||
function = delegate { var e = eventCaller.currentEntity; RhythmSomen.instance.ToggleBop(e["toggle"]); },
|
function = delegate { var e = eventCaller.currentEntity; RhythmSomen.instance.ToggleBop(e.beat, e.length, e["toggle2"], e["toggle"]); },
|
||||||
defaultLength = 0.5f,
|
resizable = true,
|
||||||
parameters = new List<Param>()
|
parameters = new List<Param>()
|
||||||
{
|
{
|
||||||
new Param("toggle", false, "Bop?", "Should the somen man bop or not?")
|
new Param("toggle2", true, "Bop", "Should the somen man bop?"),
|
||||||
|
new Param("toggle", false, "Bop (Auto)", "Should the somen man bop automatically?")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -90,9 +91,22 @@ namespace HeavenStudio.Games
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ToggleBop(bool bopOrNah)
|
public void ToggleBop(float beat, float length, bool bopOrNah, bool autoBop)
|
||||||
{
|
{
|
||||||
shouldBop = bopOrNah;
|
shouldBop = autoBop;
|
||||||
|
if (bopOrNah)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
||||||
|
{
|
||||||
|
new BeatAction.Action(beat + i, delegate
|
||||||
|
{
|
||||||
|
SomenPlayer.Play("HeadBob", -1, 0);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DoFarCrane(float beat)
|
public void DoFarCrane(float beat)
|
||||||
|
|
|
@ -45,14 +45,15 @@ namespace HeavenStudio.Games.Loaders
|
||||||
},
|
},
|
||||||
defaultLength = 4f
|
defaultLength = 4f
|
||||||
},
|
},
|
||||||
new GameAction("toggleBop", "Toggle Bop")
|
new GameAction("toggleBop", "Bop")
|
||||||
{
|
{
|
||||||
function = delegate {var e = eventCaller.currentEntity; Ringside.instance.ToggleBop(e["bop"]); },
|
function = delegate {var e = eventCaller.currentEntity; Ringside.instance.ToggleBop(e.beat, e.length, e["bop2"], e["bop"]); },
|
||||||
parameters = new List<Param>()
|
parameters = new List<Param>()
|
||||||
{
|
{
|
||||||
new Param("bop", false, "Bop?", "Whether the wrestler should bop or not."),
|
new Param("bop2", true, "Bop?", "Whether the wrestler should bop or not."),
|
||||||
|
new Param("bop", false, "Bop? (Auto)", "Whether the wrestler should bop automatically or not."),
|
||||||
},
|
},
|
||||||
defaultLength = 0.5f
|
resizable = true,
|
||||||
},
|
},
|
||||||
new GameAction("toggleSweat", "Toggle Sweat")
|
new GameAction("toggleSweat", "Toggle Sweat")
|
||||||
{
|
{
|
||||||
|
@ -181,9 +182,6 @@ namespace HeavenStudio.Games
|
||||||
allCameraEvents = tempEvents;
|
allCameraEvents = tempEvents;
|
||||||
|
|
||||||
UpdateCameraZoom();
|
UpdateCameraZoom();
|
||||||
|
|
||||||
wrestlerAnim.Play("Idle", 0, 0);
|
|
||||||
reporterAnim.Play("IdleReporter", 0, 0);
|
|
||||||
shouldNotInput = false;
|
shouldNotInput = false;
|
||||||
shouldBop = true;
|
shouldBop = true;
|
||||||
}
|
}
|
||||||
|
@ -196,7 +194,7 @@ namespace HeavenStudio.Games
|
||||||
{
|
{
|
||||||
if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1))
|
if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1))
|
||||||
{
|
{
|
||||||
if (wrestlerAnim.IsPlayingAnimationName("Idle") && shouldBop)
|
if ((wrestlerAnim.IsPlayingAnimationName("Idle") || wrestlerAnim.IsPlayingAnimationName("BopPec") || wrestlerAnim.IsPlayingAnimationName("Bop")) && shouldBop)
|
||||||
{
|
{
|
||||||
if (UnityEngine.Random.Range(1, 18) == 1)
|
if (UnityEngine.Random.Range(1, 18) == 1)
|
||||||
{
|
{
|
||||||
|
@ -286,9 +284,32 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ToggleBop(bool startBopping)
|
public void ToggleBop(float beat, float length, bool startBopping, bool autoBop)
|
||||||
{
|
{
|
||||||
shouldBop = startBopping;
|
shouldBop = autoBop;
|
||||||
|
if (startBopping)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
||||||
|
{
|
||||||
|
new BeatAction.Action(beat + i, delegate
|
||||||
|
{
|
||||||
|
if ((wrestlerAnim.IsPlayingAnimationName("Idle") || wrestlerAnim.IsPlayingAnimationName("BopPec") || wrestlerAnim.IsPlayingAnimationName("Bop")))
|
||||||
|
{
|
||||||
|
if (UnityEngine.Random.Range(1, 18) == 1)
|
||||||
|
{
|
||||||
|
wrestlerAnim.DoScaledAnimationAsync("BopPec");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
wrestlerAnim.DoScaledAnimationAsync("Bop");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ToggleSweat(bool shouldSweat)
|
public void ToggleSweat(bool shouldSweat)
|
||||||
|
|
|
@ -15,6 +15,16 @@ namespace HeavenStudio.Games.Loaders
|
||||||
public static Minigame AddGame(EventCaller eventCaller) {
|
public static Minigame AddGame(EventCaller eventCaller) {
|
||||||
return new Minigame("samuraiSliceNtr", "Samurai Slice (DS)", "00165D", false, false, new List<GameAction>()
|
return new Minigame("samuraiSliceNtr", "Samurai Slice (DS)", "00165D", false, false, new List<GameAction>()
|
||||||
{
|
{
|
||||||
|
new GameAction("bop", "Bop")
|
||||||
|
{
|
||||||
|
function = delegate {var e = eventCaller.currentEntity; SamuraiSliceNtr.instance.Bop(e.beat, e.length, e["whoBops"], e["whoBopsAuto"]); },
|
||||||
|
resizable = true,
|
||||||
|
parameters = new List<Param>()
|
||||||
|
{
|
||||||
|
new Param("whoBops", SamuraiSliceNtr.WhoBops.Both, "Who Bops?", "Who will bop?"),
|
||||||
|
new Param("whoBopsAuto", SamuraiSliceNtr.WhoBops.None, "Who Bops? (Auto)", "Who will automatically begin bopping?")
|
||||||
|
}
|
||||||
|
},
|
||||||
new GameAction("melon", "Melon")
|
new GameAction("melon", "Melon")
|
||||||
{
|
{
|
||||||
function = delegate
|
function = delegate
|
||||||
|
@ -89,6 +99,17 @@ namespace HeavenStudio.Games
|
||||||
Melon2B2T,
|
Melon2B2T,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum WhoBops
|
||||||
|
{
|
||||||
|
Samurai = 0,
|
||||||
|
Children = 1,
|
||||||
|
Both = 2,
|
||||||
|
None = 3
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool goBopSamurai = true;
|
||||||
|
private bool goBopChild = true;
|
||||||
|
|
||||||
[Header("References")]
|
[Header("References")]
|
||||||
public NtrSamurai player;
|
public NtrSamurai player;
|
||||||
public GameObject launcher;
|
public GameObject launcher;
|
||||||
|
@ -121,8 +142,8 @@ namespace HeavenStudio.Games
|
||||||
var cond = Conductor.instance;
|
var cond = Conductor.instance;
|
||||||
if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1))
|
if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1))
|
||||||
{
|
{
|
||||||
player.Bop();
|
if (goBopSamurai) player.Bop();
|
||||||
childParent.GetComponent<NtrSamuraiChild>().Bop();
|
if (goBopChild) childParent.GetComponent<NtrSamuraiChild>().Bop();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PlayerInput.AltPressed())
|
if (PlayerInput.AltPressed())
|
||||||
|
@ -133,6 +154,38 @@ namespace HeavenStudio.Games
|
||||||
DoSlice();
|
DoSlice();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Bop(float beat, float length, int whoBops, int whoBopsAuto)
|
||||||
|
{
|
||||||
|
goBopSamurai = whoBopsAuto == (int)WhoBops.Samurai || whoBopsAuto == (int)WhoBops.Both;
|
||||||
|
goBopChild = whoBopsAuto == (int)WhoBops.Children || whoBopsAuto == (int)WhoBops.Both;
|
||||||
|
for (int i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
||||||
|
{
|
||||||
|
new BeatAction.Action(beat + i, delegate { BopSingle(whoBops); })
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BopSingle(int whoBops)
|
||||||
|
{
|
||||||
|
switch (whoBops)
|
||||||
|
{
|
||||||
|
case (int)WhoBops.Samurai:
|
||||||
|
player.Bop();
|
||||||
|
break;
|
||||||
|
case (int)WhoBops.Children:
|
||||||
|
childParent.GetComponent<NtrSamuraiChild>().Bop();
|
||||||
|
break;
|
||||||
|
case (int)WhoBops.Both:
|
||||||
|
player.Bop();
|
||||||
|
childParent.GetComponent<NtrSamuraiChild>().Bop();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void DoStep()
|
public void DoStep()
|
||||||
{
|
{
|
||||||
Jukebox.PlayOneShotGame("samuraiSliceNtr/ntrSamurai_launchThrough");
|
Jukebox.PlayOneShotGame("samuraiSliceNtr/ntrSamurai_launchThrough");
|
||||||
|
|
|
@ -41,12 +41,13 @@ namespace HeavenStudio.Games.Loaders
|
||||||
},
|
},
|
||||||
new GameAction("bop", "Bop")
|
new GameAction("bop", "Bop")
|
||||||
{
|
{
|
||||||
function = delegate {var e = eventCaller.currentEntity; Tambourine.instance.Bop(e.beat, e["whoBops"]); },
|
function = delegate {var e = eventCaller.currentEntity; Tambourine.instance.Bop(e.beat, e.length, e["whoBops"], e["whoBopsAuto"]); },
|
||||||
parameters = new List<Param>()
|
parameters = new List<Param>()
|
||||||
{
|
{
|
||||||
new Param("whoBops", Tambourine.WhoBops.Both, "Who Bops", "Who will bop."),
|
new Param("whoBops", Tambourine.WhoBops.Both, "Who Bops", "Who will bop."),
|
||||||
|
new Param("whoBopsAuto", Tambourine.WhoBops.None, "Who Bops (Auto)", "Who will auto bop."),
|
||||||
},
|
},
|
||||||
defaultLength = 1f,
|
resizable = true,
|
||||||
priority = 4
|
priority = 4
|
||||||
},
|
},
|
||||||
new GameAction("success", "Success")
|
new GameAction("success", "Success")
|
||||||
|
@ -110,14 +111,18 @@ namespace HeavenStudio.Games
|
||||||
float beatInterval = 8f;
|
float beatInterval = 8f;
|
||||||
float misses;
|
float misses;
|
||||||
bool frogPresent;
|
bool frogPresent;
|
||||||
|
bool monkeyGoBop;
|
||||||
|
bool handsGoBop;
|
||||||
|
|
||||||
Tween bgColorTween;
|
Tween bgColorTween;
|
||||||
|
public GameEvent bop = new GameEvent();
|
||||||
|
|
||||||
public enum WhoBops
|
public enum WhoBops
|
||||||
{
|
{
|
||||||
Monkey,
|
Monkey,
|
||||||
Player,
|
Player,
|
||||||
Both
|
Both,
|
||||||
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
static List<QueuedTambourineInput> queuedInputs = new List<QueuedTambourineInput>();
|
static List<QueuedTambourineInput> queuedInputs = new List<QueuedTambourineInput>();
|
||||||
|
@ -148,6 +153,17 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
void Update()
|
void Update()
|
||||||
{
|
{
|
||||||
|
if (Conductor.instance.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1))
|
||||||
|
{
|
||||||
|
if (monkeyGoBop)
|
||||||
|
{
|
||||||
|
monkeyAnimator.Play("MonkeyBop", 0, 0);
|
||||||
|
}
|
||||||
|
if (handsGoBop)
|
||||||
|
{
|
||||||
|
handsAnimator.Play("Bop", 0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (!Conductor.instance.isPlaying || Conductor.instance.isPaused)
|
if (!Conductor.instance.isPlaying || Conductor.instance.isPaused)
|
||||||
{
|
{
|
||||||
if (queuedInputs.Count > 0) queuedInputs.Clear();
|
if (queuedInputs.Count > 0) queuedInputs.Clear();
|
||||||
|
@ -242,27 +258,41 @@ namespace HeavenStudio.Games
|
||||||
}
|
}
|
||||||
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
||||||
{
|
{
|
||||||
new BeatAction.Action(beat + length + input.beatAwayFromStart, delegate { Bop(beat + length + input.beatAwayFromStart, (int)WhoBops.Monkey); })
|
new BeatAction.Action(beat + length + input.beatAwayFromStart, delegate { Bop(beat + length + input.beatAwayFromStart, 1, (int)WhoBops.Monkey, (int)WhoBops.None); })
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
queuedInputs.Clear();
|
queuedInputs.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Bop(float beat, int whoBops)
|
public void Bop(float beat, float length, int whoBops, int whoBopsAuto)
|
||||||
{
|
{
|
||||||
switch (whoBops)
|
monkeyGoBop = whoBopsAuto == (int)WhoBops.Monkey || whoBopsAuto == (int)WhoBops.Both;
|
||||||
|
handsGoBop = whoBopsAuto == (int)WhoBops.Player || whoBopsAuto == (int)WhoBops.Both;
|
||||||
|
for (int i = 0; i < length; i++)
|
||||||
{
|
{
|
||||||
case (int) WhoBops.Monkey:
|
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
||||||
monkeyAnimator.Play("MonkeyBop", 0, 0);
|
{
|
||||||
break;
|
new BeatAction.Action(beat + i, delegate
|
||||||
case (int) WhoBops.Player:
|
{
|
||||||
handsAnimator.Play("Bop", 0, 0);
|
switch (whoBops)
|
||||||
break;
|
{
|
||||||
case (int) WhoBops.Both:
|
case (int) WhoBops.Monkey:
|
||||||
monkeyAnimator.Play("MonkeyBop", 0, 0);
|
monkeyAnimator.Play("MonkeyBop", 0, 0);
|
||||||
handsAnimator.Play("Bop", 0, 0);
|
break;
|
||||||
break;
|
case (int) WhoBops.Player:
|
||||||
|
handsAnimator.Play("Bop", 0, 0);
|
||||||
|
break;
|
||||||
|
case (int) WhoBops.Both:
|
||||||
|
monkeyAnimator.Play("MonkeyBop", 0, 0);
|
||||||
|
handsAnimator.Play("Bop", 0, 0);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SuccessFace(float beat)
|
public void SuccessFace(float beat)
|
||||||
|
|
|
@ -16,11 +16,12 @@ namespace HeavenStudio.Games.Loaders
|
||||||
{
|
{
|
||||||
new GameAction("bop", "Bop")
|
new GameAction("bop", "Bop")
|
||||||
{
|
{
|
||||||
function = delegate { TapTrial.instance.Bop(eventCaller.currentEntity["toggle"]); },
|
function = delegate { var e = eventCaller.currentEntity; TapTrial.instance.Bop(e.beat, e.length, e["toggle"], e["toggle2"]); },
|
||||||
defaultLength = .5f,
|
resizable = true,
|
||||||
parameters = new List<Param>()
|
parameters = new List<Param>()
|
||||||
{
|
{
|
||||||
new Param("toggle", false, "Bop", "Whether both will bop to the beat or not")
|
new Param("toggle", true, "Bop", "Whether both will bop to the beat or not"),
|
||||||
|
new Param("toggle2", false, "Bop (Auto)", "Whether both will bop automatically to the beat or not")
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
new GameAction("tap", "Tap")
|
new GameAction("tap", "Tap")
|
||||||
|
@ -106,7 +107,6 @@ namespace HeavenStudio.Games
|
||||||
[SerializeField] ScrollForTap scroll;
|
[SerializeField] ScrollForTap scroll;
|
||||||
[SerializeField] GameObject giraffe;
|
[SerializeField] GameObject giraffe;
|
||||||
bool goBop = true, isPrep;
|
bool goBop = true, isPrep;
|
||||||
float lastReportedBeat = 0f;
|
|
||||||
bool hasJumped, isFinalJump;
|
bool hasJumped, isFinalJump;
|
||||||
public float jumpStartTime = Single.MinValue;
|
public float jumpStartTime = Single.MinValue;
|
||||||
float jumpPos;
|
float jumpPos;
|
||||||
|
@ -116,6 +116,8 @@ namespace HeavenStudio.Games
|
||||||
[SerializeField] GameObject bg;
|
[SerializeField] GameObject bg;
|
||||||
bool giraffeIsIn;
|
bool giraffeIsIn;
|
||||||
|
|
||||||
|
public GameEvent bop = new GameEvent();
|
||||||
|
|
||||||
public static TapTrial instance { get; set; }
|
public static TapTrial instance { get; set; }
|
||||||
|
|
||||||
private void Awake()
|
private void Awake()
|
||||||
|
@ -125,18 +127,9 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
if (goBop && !isPrep)
|
if (Conductor.instance.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1))
|
||||||
{
|
{
|
||||||
if (Conductor.instance.ReportBeat(ref lastReportedBeat))
|
if (goBop) SingleBop();
|
||||||
{
|
|
||||||
if (monkeys[0].IsPlayingAnimationName("Idle")) monkeys[0].DoScaledAnimationAsync("Bop", 0.5f);
|
|
||||||
if (monkeys[1].IsPlayingAnimationName("Idle")) monkeys[1].DoScaledAnimationAsync("Bop", 0.5f);
|
|
||||||
if (player.anim.IsPlayingAnimationName("Idle")) player.anim.DoScaledAnimationAsync("Bop", 0.5f);
|
|
||||||
}
|
|
||||||
else if (Conductor.instance.songPositionInBeats < lastReportedBeat)
|
|
||||||
{
|
|
||||||
lastReportedBeat = Mathf.Round(Conductor.instance.songPositionInBeats);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
jumpPos = Conductor.instance.GetPositionFromBeat(jumpStartTime, 1f);
|
jumpPos = Conductor.instance.GetPositionFromBeat(jumpStartTime, 1f);
|
||||||
|
@ -174,9 +167,29 @@ namespace HeavenStudio.Games
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Bop(bool isBopping)
|
void SingleBop()
|
||||||
{
|
{
|
||||||
goBop = isBopping;
|
if (!isPrep)
|
||||||
|
{
|
||||||
|
if (monkeys[0].GetCurrentAnimatorStateInfo(0).IsName("Idle")) monkeys[0].DoScaledAnimationAsync("Bop", 0.5f);
|
||||||
|
if (monkeys[1].GetCurrentAnimatorStateInfo(0).IsName("Idle")) monkeys[1].DoScaledAnimationAsync("Bop", 0.5f);
|
||||||
|
if (player.anim.GetCurrentAnimatorStateInfo(0).IsName("Idle")) player.anim.DoScaledAnimationAsync("Bop", 0.5f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Bop(float beat, float length, bool isBopping, bool autoBop)
|
||||||
|
{
|
||||||
|
goBop = autoBop;
|
||||||
|
if (isBopping)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
||||||
|
{
|
||||||
|
new BeatAction.Action(beat + i, delegate { SingleBop(); })
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Tap(float beat)
|
public void Tap(float beat)
|
||||||
|
|
|
@ -39,9 +39,13 @@ namespace HeavenStudio.Games.Loaders
|
||||||
},
|
},
|
||||||
new GameAction("bop", "Bop")
|
new GameAction("bop", "Bop")
|
||||||
{
|
{
|
||||||
function = delegate {TapTroupe.instance.Bop(); },
|
function = delegate {var e = eventCaller.currentEntity; TapTroupe.instance.Bop(e.beat, e.length, e["bop"], e["bopAuto"]); },
|
||||||
defaultLength = 1f,
|
resizable = true,
|
||||||
|
parameters = new List<Param>()
|
||||||
|
{
|
||||||
|
new Param("bop", true, "Bop", "Should the tappers bop?"),
|
||||||
|
new Param("bopAuto", false, "Bop (Auto)", "Should the tappers auto bop?")
|
||||||
|
}
|
||||||
},
|
},
|
||||||
new GameAction("spotlights", "Toggle Spotlights")
|
new GameAction("spotlights", "Toggle Spotlights")
|
||||||
{
|
{
|
||||||
|
@ -114,8 +118,10 @@ namespace HeavenStudio.Games
|
||||||
private bool shouldDoSecondBam;
|
private bool shouldDoSecondBam;
|
||||||
private bool missedTaps;
|
private bool missedTaps;
|
||||||
private bool canSpit = true;
|
private bool canSpit = true;
|
||||||
|
private bool goBop;
|
||||||
private bool useTutorialMissFace;
|
private bool useTutorialMissFace;
|
||||||
private TapTroupeTapper.TapAnim currentTapAnim;
|
private TapTroupeTapper.TapAnim currentTapAnim;
|
||||||
|
public GameEvent bop = new GameEvent();
|
||||||
public struct QueuedSteps
|
public struct QueuedSteps
|
||||||
{
|
{
|
||||||
public float beat;
|
public float beat;
|
||||||
|
@ -186,6 +192,10 @@ namespace HeavenStudio.Games
|
||||||
var cond = Conductor.instance;
|
var cond = Conductor.instance;
|
||||||
if (cond.isPlaying && !cond.isPaused)
|
if (cond.isPlaying && !cond.isPaused)
|
||||||
{
|
{
|
||||||
|
if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1) && goBop)
|
||||||
|
{
|
||||||
|
BopSingle();
|
||||||
|
}
|
||||||
if (queuedSteps.Count > 0)
|
if (queuedSteps.Count > 0)
|
||||||
{
|
{
|
||||||
foreach (var step in queuedSteps)
|
foreach (var step in queuedSteps)
|
||||||
|
@ -563,7 +573,25 @@ namespace HeavenStudio.Games
|
||||||
MultiSound.Play(soundsToPlay.ToArray(), forcePlay: true);
|
MultiSound.Play(soundsToPlay.ToArray(), forcePlay: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Bop()
|
public void Bop(float beat, float length, bool shouldBop, bool autoBop)
|
||||||
|
{
|
||||||
|
goBop = autoBop;
|
||||||
|
if (shouldBop)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
||||||
|
{
|
||||||
|
new BeatAction.Action(beat + i, delegate
|
||||||
|
{
|
||||||
|
BopSingle();
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void BopSingle()
|
||||||
{
|
{
|
||||||
playerTapper.Bop();
|
playerTapper.Bop();
|
||||||
playerCorner.Bop();
|
playerCorner.Bop();
|
||||||
|
|
|
@ -101,11 +101,12 @@ namespace HeavenStudio.Games.Loaders
|
||||||
},
|
},
|
||||||
new GameAction("bop", "Bop")
|
new GameAction("bop", "Bop")
|
||||||
{
|
{
|
||||||
function = delegate { TheDazzles.instance.shouldBop = eventCaller.currentEntity["toggle"]; },
|
function = delegate { var e = eventCaller.currentEntity; TheDazzles.instance.Bop(e.beat, e.length, e["toggle2"], e["toggle"]); },
|
||||||
defaultLength = 0.5f,
|
resizable = true,
|
||||||
parameters = new List<Param>()
|
parameters = new List<Param>()
|
||||||
{
|
{
|
||||||
new Param("toggle", false, "Should bop?", "Should the dazzles bop?")
|
new Param("toggle2", true, "Should bop?", "Should the dazzles bop?"),
|
||||||
|
new Param("toggle", false, "Should auto bop?", "Should the dazzles auto bop?")
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -295,6 +296,28 @@ namespace HeavenStudio.Games
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Bop(float beat, float length, bool goBop, bool autoBop)
|
||||||
|
{
|
||||||
|
shouldBop = autoBop;
|
||||||
|
if (goBop)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
||||||
|
{
|
||||||
|
new BeatAction.Action(beat + i, delegate
|
||||||
|
{
|
||||||
|
foreach (var girl in npcGirls)
|
||||||
|
{
|
||||||
|
girl.Bop();
|
||||||
|
}
|
||||||
|
player.Bop();
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void ForceHold()
|
public void ForceHold()
|
||||||
{
|
{
|
||||||
shouldHold = true;
|
shouldHold = true;
|
||||||
|
|
|
@ -31,17 +31,16 @@ namespace HeavenStudio.Games.Loaders
|
||||||
},
|
},
|
||||||
defaultLength = 3,
|
defaultLength = 3,
|
||||||
},
|
},
|
||||||
new GameAction("toggleBubble", "Toggle Speech Bubble")
|
new GameAction("bop", "Bop")
|
||||||
{
|
{
|
||||||
function = delegate { TrickClass.instance.BubbleToggle(); },
|
function = delegate { var e = eventCaller.currentEntity; TrickClass.instance.Bop(e.beat, e.length, e["bop"], e["autoBop"]); },
|
||||||
defaultLength = 1,
|
|
||||||
},
|
|
||||||
new GameAction("bop", "")
|
|
||||||
{
|
|
||||||
function = delegate { var e = eventCaller.currentEntity; TrickClass.instance.Bop(e.beat, e.length); },
|
|
||||||
resizable = true,
|
resizable = true,
|
||||||
hidden = true
|
parameters = new List<Param>()
|
||||||
}
|
{
|
||||||
|
new Param("bop", true, "Bop", "Should the girl and boy bop?"),
|
||||||
|
new Param("autoBop", false, "Bop (Auto)", "Should the girl and boy auto bop?")
|
||||||
|
}
|
||||||
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -87,6 +86,7 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public static TrickClass instance;
|
public static TrickClass instance;
|
||||||
public GameEvent bop = new GameEvent();
|
public GameEvent bop = new GameEvent();
|
||||||
|
bool goBop = true;
|
||||||
|
|
||||||
public float playerCanDodge = Single.MinValue;
|
public float playerCanDodge = Single.MinValue;
|
||||||
float playerBopStart = Single.MinValue;
|
float playerBopStart = Single.MinValue;
|
||||||
|
@ -107,7 +107,7 @@ namespace HeavenStudio.Games
|
||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
var cond = Conductor.instance;
|
var cond = Conductor.instance;
|
||||||
if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1))
|
if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1) && goBop)
|
||||||
{
|
{
|
||||||
if (cond.songPositionInBeats > playerBopStart)
|
if (cond.songPositionInBeats > playerBopStart)
|
||||||
playerAnim.DoScaledAnimationAsync("Bop");
|
playerAnim.DoScaledAnimationAsync("Bop");
|
||||||
|
@ -154,10 +154,27 @@ namespace HeavenStudio.Games
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Bop(float beat, float length)
|
public void Bop(float beat, float length, bool shouldBop, bool autoBop)
|
||||||
{
|
{
|
||||||
bop.startBeat = beat;
|
var cond = Conductor.instance;
|
||||||
bop.length = length;
|
goBop = autoBop;
|
||||||
|
if (shouldBop)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
BeatAction.New(instance.gameObject, new List<BeatAction.Action>()
|
||||||
|
{
|
||||||
|
new BeatAction.Action(beat + i, delegate
|
||||||
|
{
|
||||||
|
if (cond.songPositionInBeats > playerBopStart)
|
||||||
|
playerAnim.DoScaledAnimationAsync("Bop");
|
||||||
|
|
||||||
|
if (cond.songPositionInBeats > girlBopStart)
|
||||||
|
girlAnim.DoScaledAnimationAsync("Bop");
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void BubbleToggle()
|
public void BubbleToggle()
|
||||||
|
|
Loading…
Reference in a new issue