mirror of
https://github.com/RHeavenStudioPlus/HeavenStudioPlus.git
synced 2024-11-10 03:35:10 +00:00
Merge branch 'release_1'
This commit is contained in:
commit
76bd91a444
35 changed files with 768 additions and 699 deletions
File diff suppressed because it is too large
Load diff
|
@ -20,17 +20,17 @@ AnimationClip:
|
||||||
m_Curve:
|
m_Curve:
|
||||||
- serializedVersion: 3
|
- serializedVersion: 3
|
||||||
time: 0
|
time: 0
|
||||||
value: {x: 1.258, y: 0.542, z: 0}
|
value: {x: 1.4, y: 0.68, z: 0}
|
||||||
inSlope: {x: -1.4679999, y: -0, z: -0}
|
inSlope: {x: -1.184, y: -0, z: -0}
|
||||||
outSlope: {x: 0, y: 0.17200005, z: 0}
|
outSlope: {x: 0, y: 0, z: 0}
|
||||||
tangentMode: 0
|
tangentMode: 0
|
||||||
weightedMode: 0
|
weightedMode: 0
|
||||||
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
|
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
|
||||||
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
|
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
|
||||||
- serializedVersion: 3
|
- serializedVersion: 3
|
||||||
time: 0.5
|
time: 0.5
|
||||||
value: {x: 1.258, y: 0.628, z: 0}
|
value: {x: 1.4, y: 0.89, z: 0}
|
||||||
inSlope: {x: -0, y: 0.17200005, z: -0}
|
inSlope: {x: -0, y: 0.41999996, z: -0}
|
||||||
outSlope: {x: 0, y: 0, z: 0}
|
outSlope: {x: 0, y: 0, z: 0}
|
||||||
tangentMode: 0
|
tangentMode: 0
|
||||||
weightedMode: 0
|
weightedMode: 0
|
||||||
|
@ -49,8 +49,8 @@ AnimationClip:
|
||||||
time: 0
|
time: 0
|
||||||
value: 1
|
value: 1
|
||||||
inSlope: 2
|
inSlope: 2
|
||||||
outSlope: -2
|
outSlope: 0
|
||||||
tangentMode: 69
|
tangentMode: 5
|
||||||
weightedMode: 0
|
weightedMode: 0
|
||||||
inWeight: 0.33333334
|
inWeight: 0.33333334
|
||||||
outWeight: 0.33333334
|
outWeight: 0.33333334
|
||||||
|
@ -134,16 +134,16 @@ AnimationClip:
|
||||||
m_Curve:
|
m_Curve:
|
||||||
- serializedVersion: 3
|
- serializedVersion: 3
|
||||||
time: 0
|
time: 0
|
||||||
value: 1.258
|
value: 1.4
|
||||||
inSlope: -1.4679999
|
inSlope: -1.184
|
||||||
outSlope: 0
|
outSlope: 0
|
||||||
tangentMode: 69
|
tangentMode: 5
|
||||||
weightedMode: 0
|
weightedMode: 0
|
||||||
inWeight: 0.33333334
|
inWeight: 0.33333334
|
||||||
outWeight: 0.33333334
|
outWeight: 0.33333334
|
||||||
- serializedVersion: 3
|
- serializedVersion: 3
|
||||||
time: 0.5
|
time: 0.5
|
||||||
value: 1.258
|
value: 1.4
|
||||||
inSlope: -0
|
inSlope: -0
|
||||||
outSlope: 0
|
outSlope: 0
|
||||||
tangentMode: 69
|
tangentMode: 69
|
||||||
|
@ -162,17 +162,17 @@ AnimationClip:
|
||||||
m_Curve:
|
m_Curve:
|
||||||
- serializedVersion: 3
|
- serializedVersion: 3
|
||||||
time: 0
|
time: 0
|
||||||
value: 0.542
|
value: 0.68
|
||||||
inSlope: -0
|
inSlope: -0
|
||||||
outSlope: 0.17200005
|
outSlope: 0
|
||||||
tangentMode: 69
|
tangentMode: 5
|
||||||
weightedMode: 0
|
weightedMode: 0
|
||||||
inWeight: 0.33333334
|
inWeight: 0.33333334
|
||||||
outWeight: 0.33333334
|
outWeight: 0.33333334
|
||||||
- serializedVersion: 3
|
- serializedVersion: 3
|
||||||
time: 0.5
|
time: 0.5
|
||||||
value: 0.628
|
value: 0.89
|
||||||
inSlope: 0.17200005
|
inSlope: 0.41999996
|
||||||
outSlope: 0
|
outSlope: 0
|
||||||
tangentMode: 69
|
tangentMode: 69
|
||||||
weightedMode: 0
|
weightedMode: 0
|
||||||
|
@ -193,7 +193,7 @@ AnimationClip:
|
||||||
value: 0
|
value: 0
|
||||||
inSlope: -0
|
inSlope: -0
|
||||||
outSlope: 0
|
outSlope: 0
|
||||||
tangentMode: 69
|
tangentMode: 5
|
||||||
weightedMode: 0
|
weightedMode: 0
|
||||||
inWeight: 0.33333334
|
inWeight: 0.33333334
|
||||||
outWeight: 0.33333334
|
outWeight: 0.33333334
|
||||||
|
@ -220,8 +220,8 @@ AnimationClip:
|
||||||
time: 0
|
time: 0
|
||||||
value: 1
|
value: 1
|
||||||
inSlope: 2
|
inSlope: 2
|
||||||
outSlope: -2
|
outSlope: 0
|
||||||
tangentMode: 69
|
tangentMode: 5
|
||||||
weightedMode: 0
|
weightedMode: 0
|
||||||
inWeight: 0.33333334
|
inWeight: 0.33333334
|
||||||
outWeight: 0.33333334
|
outWeight: 0.33333334
|
||||||
|
|
|
@ -98,6 +98,15 @@ AnimationClip:
|
||||||
- serializedVersion: 3
|
- serializedVersion: 3
|
||||||
time: 0.35
|
time: 0.35
|
||||||
value: {x: 0.017, y: 0.261, z: 74.52776}
|
value: {x: 0.017, y: 0.261, z: 74.52776}
|
||||||
|
inSlope: {x: 2.7443511, y: -2.188788, z: 0}
|
||||||
|
outSlope: {x: 2.7443511, y: -2.188788, z: 0}
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
|
||||||
|
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0.4
|
||||||
|
value: {x: 0.1744351, y: 0.1891212, z: 74.52776}
|
||||||
inSlope: {x: 0, y: 0, z: 0}
|
inSlope: {x: 0, y: 0, z: 0}
|
||||||
outSlope: {x: 0, y: 0, z: 0}
|
outSlope: {x: 0, y: 0, z: 0}
|
||||||
tangentMode: 0
|
tangentMode: 0
|
||||||
|
@ -192,59 +201,6 @@ AnimationClip:
|
||||||
classID: 1
|
classID: 1
|
||||||
script: {fileID: 0}
|
script: {fileID: 0}
|
||||||
m_PPtrCurves:
|
m_PPtrCurves:
|
||||||
- curve:
|
|
||||||
- time: 0
|
|
||||||
value: {fileID: 0}
|
|
||||||
- time: 0.016666668
|
|
||||||
value: {fileID: 0}
|
|
||||||
- time: 0.033333335
|
|
||||||
value: {fileID: 0}
|
|
||||||
- time: 0.05
|
|
||||||
value: {fileID: 0}
|
|
||||||
- time: 0.06666667
|
|
||||||
value: {fileID: 0}
|
|
||||||
- time: 0.083333336
|
|
||||||
value: {fileID: 0}
|
|
||||||
- time: 0.1
|
|
||||||
value: {fileID: 0}
|
|
||||||
- time: 0.11666667
|
|
||||||
value: {fileID: 0}
|
|
||||||
- time: 0.13333334
|
|
||||||
value: {fileID: 0}
|
|
||||||
- time: 0.15
|
|
||||||
value: {fileID: 0}
|
|
||||||
- time: 0.16666667
|
|
||||||
value: {fileID: 0}
|
|
||||||
- time: 0.18333334
|
|
||||||
value: {fileID: 0}
|
|
||||||
- time: 0.2
|
|
||||||
value: {fileID: 0}
|
|
||||||
- time: 0.21666667
|
|
||||||
value: {fileID: 0}
|
|
||||||
- time: 0.23333333
|
|
||||||
value: {fileID: 0}
|
|
||||||
- time: 0.25
|
|
||||||
value: {fileID: 0}
|
|
||||||
- time: 0.26666668
|
|
||||||
value: {fileID: 0}
|
|
||||||
- time: 0.28333333
|
|
||||||
value: {fileID: 0}
|
|
||||||
- time: 0.3
|
|
||||||
value: {fileID: 0}
|
|
||||||
- time: 0.31666666
|
|
||||||
value: {fileID: 0}
|
|
||||||
- time: 0.33333334
|
|
||||||
value: {fileID: 0}
|
|
||||||
- time: 0.35
|
|
||||||
value: {fileID: 0}
|
|
||||||
- time: 0.36666667
|
|
||||||
value: {fileID: 0}
|
|
||||||
- time: 0.38333333
|
|
||||||
value: {fileID: 0}
|
|
||||||
attribute: m_Sprite
|
|
||||||
path: Fork_Lifter_Gameplay
|
|
||||||
classID: 212
|
|
||||||
script: {fileID: 0}
|
|
||||||
- curve:
|
- curve:
|
||||||
- time: 0
|
- time: 0
|
||||||
value: {fileID: -4922902375269903740, guid: 52117e1d5cd298c42adfea952676c7d6, type: 3}
|
value: {fileID: -4922902375269903740, guid: 52117e1d5cd298c42adfea952676c7d6, type: 3}
|
||||||
|
@ -307,13 +263,6 @@ AnimationClip:
|
||||||
typeID: 1
|
typeID: 1
|
||||||
customType: 0
|
customType: 0
|
||||||
isPPtrCurve: 0
|
isPPtrCurve: 0
|
||||||
- serializedVersion: 2
|
|
||||||
path: 345648135
|
|
||||||
attribute: 0
|
|
||||||
script: {fileID: 0}
|
|
||||||
typeID: 212
|
|
||||||
customType: 23
|
|
||||||
isPPtrCurve: 1
|
|
||||||
- serializedVersion: 2
|
- serializedVersion: 2
|
||||||
path: 3267382320
|
path: 3267382320
|
||||||
attribute: 0
|
attribute: 0
|
||||||
|
@ -336,30 +285,6 @@ AnimationClip:
|
||||||
customType: 0
|
customType: 0
|
||||||
isPPtrCurve: 0
|
isPPtrCurve: 0
|
||||||
pptrCurveMapping:
|
pptrCurveMapping:
|
||||||
- {fileID: 0}
|
|
||||||
- {fileID: 0}
|
|
||||||
- {fileID: 0}
|
|
||||||
- {fileID: 0}
|
|
||||||
- {fileID: 0}
|
|
||||||
- {fileID: 0}
|
|
||||||
- {fileID: 0}
|
|
||||||
- {fileID: 0}
|
|
||||||
- {fileID: 0}
|
|
||||||
- {fileID: 0}
|
|
||||||
- {fileID: 0}
|
|
||||||
- {fileID: 0}
|
|
||||||
- {fileID: 0}
|
|
||||||
- {fileID: 0}
|
|
||||||
- {fileID: 0}
|
|
||||||
- {fileID: 0}
|
|
||||||
- {fileID: 0}
|
|
||||||
- {fileID: 0}
|
|
||||||
- {fileID: 0}
|
|
||||||
- {fileID: 0}
|
|
||||||
- {fileID: 0}
|
|
||||||
- {fileID: 0}
|
|
||||||
- {fileID: 0}
|
|
||||||
- {fileID: 0}
|
|
||||||
- {fileID: -4922902375269903740, guid: 52117e1d5cd298c42adfea952676c7d6, type: 3}
|
- {fileID: -4922902375269903740, guid: 52117e1d5cd298c42adfea952676c7d6, type: 3}
|
||||||
- {fileID: -3456084564025576355, guid: 52117e1d5cd298c42adfea952676c7d6, type: 3}
|
- {fileID: -3456084564025576355, guid: 52117e1d5cd298c42adfea952676c7d6, type: 3}
|
||||||
- {fileID: -3456084564025576355, guid: 52117e1d5cd298c42adfea952676c7d6, type: 3}
|
- {fileID: -3456084564025576355, guid: 52117e1d5cd298c42adfea952676c7d6, type: 3}
|
||||||
|
@ -688,6 +613,15 @@ AnimationClip:
|
||||||
- serializedVersion: 3
|
- serializedVersion: 3
|
||||||
time: 0.35
|
time: 0.35
|
||||||
value: 0.017
|
value: 0.017
|
||||||
|
inSlope: 2.7443511
|
||||||
|
outSlope: 2.7443511
|
||||||
|
tangentMode: 136
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0.33333334
|
||||||
|
outWeight: 0.33333334
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0.4
|
||||||
|
value: 0.1744351
|
||||||
inSlope: 0
|
inSlope: 0
|
||||||
outSlope: 0
|
outSlope: 0
|
||||||
tangentMode: 136
|
tangentMode: 136
|
||||||
|
@ -716,6 +650,15 @@ AnimationClip:
|
||||||
- serializedVersion: 3
|
- serializedVersion: 3
|
||||||
time: 0.35
|
time: 0.35
|
||||||
value: 0.261
|
value: 0.261
|
||||||
|
inSlope: -2.188788
|
||||||
|
outSlope: -2.188788
|
||||||
|
tangentMode: 136
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0.33333334
|
||||||
|
outWeight: 0.33333334
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0.4
|
||||||
|
value: 0.1891212
|
||||||
inSlope: 0
|
inSlope: 0
|
||||||
outSlope: 0
|
outSlope: 0
|
||||||
tangentMode: 136
|
tangentMode: 136
|
||||||
|
|
|
@ -6701,7 +6701,7 @@ AnimationClip:
|
||||||
m_PostInfinity: 2
|
m_PostInfinity: 2
|
||||||
m_RotationOrder: 4
|
m_RotationOrder: 4
|
||||||
attribute: m_LocalEulerAngles.z
|
attribute: m_LocalEulerAngles.z
|
||||||
path: HandL
|
path: FootR
|
||||||
classID: 4
|
classID: 4
|
||||||
script: {fileID: 0}
|
script: {fileID: 0}
|
||||||
- curve:
|
- curve:
|
||||||
|
@ -6711,7 +6711,7 @@ AnimationClip:
|
||||||
m_PostInfinity: 2
|
m_PostInfinity: 2
|
||||||
m_RotationOrder: 4
|
m_RotationOrder: 4
|
||||||
attribute: m_LocalEulerAngles.y
|
attribute: m_LocalEulerAngles.y
|
||||||
path: HandL
|
path: FootR
|
||||||
classID: 4
|
classID: 4
|
||||||
script: {fileID: 0}
|
script: {fileID: 0}
|
||||||
- curve:
|
- curve:
|
||||||
|
@ -6721,7 +6721,37 @@ AnimationClip:
|
||||||
m_PostInfinity: 2
|
m_PostInfinity: 2
|
||||||
m_RotationOrder: 4
|
m_RotationOrder: 4
|
||||||
attribute: m_LocalEulerAngles.x
|
attribute: m_LocalEulerAngles.x
|
||||||
path: HandL
|
path: FootR
|
||||||
|
classID: 4
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve: []
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: m_LocalEulerAngles.z
|
||||||
|
path: LegLowR
|
||||||
|
classID: 4
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve: []
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: m_LocalEulerAngles.y
|
||||||
|
path: LegLowR
|
||||||
|
classID: 4
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve: []
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: m_LocalEulerAngles.x
|
||||||
|
path: LegLowR
|
||||||
classID: 4
|
classID: 4
|
||||||
script: {fileID: 0}
|
script: {fileID: 0}
|
||||||
- curve:
|
- curve:
|
||||||
|
@ -6761,7 +6791,7 @@ AnimationClip:
|
||||||
m_PostInfinity: 2
|
m_PostInfinity: 2
|
||||||
m_RotationOrder: 4
|
m_RotationOrder: 4
|
||||||
attribute: m_LocalEulerAngles.z
|
attribute: m_LocalEulerAngles.z
|
||||||
path: LegUpR
|
path: LegLowL
|
||||||
classID: 4
|
classID: 4
|
||||||
script: {fileID: 0}
|
script: {fileID: 0}
|
||||||
- curve:
|
- curve:
|
||||||
|
@ -6771,7 +6801,7 @@ AnimationClip:
|
||||||
m_PostInfinity: 2
|
m_PostInfinity: 2
|
||||||
m_RotationOrder: 4
|
m_RotationOrder: 4
|
||||||
attribute: m_LocalEulerAngles.y
|
attribute: m_LocalEulerAngles.y
|
||||||
path: LegUpR
|
path: LegLowL
|
||||||
classID: 4
|
classID: 4
|
||||||
script: {fileID: 0}
|
script: {fileID: 0}
|
||||||
- curve:
|
- curve:
|
||||||
|
@ -6781,7 +6811,7 @@ AnimationClip:
|
||||||
m_PostInfinity: 2
|
m_PostInfinity: 2
|
||||||
m_RotationOrder: 4
|
m_RotationOrder: 4
|
||||||
attribute: m_LocalEulerAngles.x
|
attribute: m_LocalEulerAngles.x
|
||||||
path: LegUpR
|
path: LegLowL
|
||||||
classID: 4
|
classID: 4
|
||||||
script: {fileID: 0}
|
script: {fileID: 0}
|
||||||
- curve:
|
- curve:
|
||||||
|
@ -6911,7 +6941,7 @@ AnimationClip:
|
||||||
m_PostInfinity: 2
|
m_PostInfinity: 2
|
||||||
m_RotationOrder: 4
|
m_RotationOrder: 4
|
||||||
attribute: m_LocalEulerAngles.z
|
attribute: m_LocalEulerAngles.z
|
||||||
path: EyeL
|
path: EyeR
|
||||||
classID: 4
|
classID: 4
|
||||||
script: {fileID: 0}
|
script: {fileID: 0}
|
||||||
- curve:
|
- curve:
|
||||||
|
@ -6921,7 +6951,7 @@ AnimationClip:
|
||||||
m_PostInfinity: 2
|
m_PostInfinity: 2
|
||||||
m_RotationOrder: 4
|
m_RotationOrder: 4
|
||||||
attribute: m_LocalEulerAngles.y
|
attribute: m_LocalEulerAngles.y
|
||||||
path: EyeL
|
path: EyeR
|
||||||
classID: 4
|
classID: 4
|
||||||
script: {fileID: 0}
|
script: {fileID: 0}
|
||||||
- curve:
|
- curve:
|
||||||
|
@ -6931,7 +6961,7 @@ AnimationClip:
|
||||||
m_PostInfinity: 2
|
m_PostInfinity: 2
|
||||||
m_RotationOrder: 4
|
m_RotationOrder: 4
|
||||||
attribute: m_LocalEulerAngles.x
|
attribute: m_LocalEulerAngles.x
|
||||||
path: EyeL
|
path: EyeR
|
||||||
classID: 4
|
classID: 4
|
||||||
script: {fileID: 0}
|
script: {fileID: 0}
|
||||||
- curve:
|
- curve:
|
||||||
|
@ -6971,7 +7001,7 @@ AnimationClip:
|
||||||
m_PostInfinity: 2
|
m_PostInfinity: 2
|
||||||
m_RotationOrder: 4
|
m_RotationOrder: 4
|
||||||
attribute: m_LocalEulerAngles.z
|
attribute: m_LocalEulerAngles.z
|
||||||
path: FootR
|
path: LegUpR
|
||||||
classID: 4
|
classID: 4
|
||||||
script: {fileID: 0}
|
script: {fileID: 0}
|
||||||
- curve:
|
- curve:
|
||||||
|
@ -6981,7 +7011,7 @@ AnimationClip:
|
||||||
m_PostInfinity: 2
|
m_PostInfinity: 2
|
||||||
m_RotationOrder: 4
|
m_RotationOrder: 4
|
||||||
attribute: m_LocalEulerAngles.y
|
attribute: m_LocalEulerAngles.y
|
||||||
path: FootR
|
path: LegUpR
|
||||||
classID: 4
|
classID: 4
|
||||||
script: {fileID: 0}
|
script: {fileID: 0}
|
||||||
- curve:
|
- curve:
|
||||||
|
@ -6991,7 +7021,97 @@ AnimationClip:
|
||||||
m_PostInfinity: 2
|
m_PostInfinity: 2
|
||||||
m_RotationOrder: 4
|
m_RotationOrder: 4
|
||||||
attribute: m_LocalEulerAngles.x
|
attribute: m_LocalEulerAngles.x
|
||||||
path: FootR
|
path: LegUpR
|
||||||
|
classID: 4
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve: []
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: m_LocalEulerAngles.z
|
||||||
|
path: EyeL
|
||||||
|
classID: 4
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve: []
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: m_LocalEulerAngles.y
|
||||||
|
path: EyeL
|
||||||
|
classID: 4
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve: []
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: m_LocalEulerAngles.x
|
||||||
|
path: EyeL
|
||||||
|
classID: 4
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve: []
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: m_LocalEulerAngles.z
|
||||||
|
path: Head
|
||||||
|
classID: 4
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve: []
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: m_LocalEulerAngles.y
|
||||||
|
path: Head
|
||||||
|
classID: 4
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve: []
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: m_LocalEulerAngles.x
|
||||||
|
path: Head
|
||||||
|
classID: 4
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve: []
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: m_LocalEulerAngles.z
|
||||||
|
path: HandL
|
||||||
|
classID: 4
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve: []
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: m_LocalEulerAngles.y
|
||||||
|
path: HandL
|
||||||
|
classID: 4
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve: []
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: m_LocalEulerAngles.x
|
||||||
|
path: HandL
|
||||||
classID: 4
|
classID: 4
|
||||||
script: {fileID: 0}
|
script: {fileID: 0}
|
||||||
- curve:
|
- curve:
|
||||||
|
@ -7024,66 +7144,6 @@ AnimationClip:
|
||||||
path: Mouth
|
path: Mouth
|
||||||
classID: 4
|
classID: 4
|
||||||
script: {fileID: 0}
|
script: {fileID: 0}
|
||||||
- curve:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Curve: []
|
|
||||||
m_PreInfinity: 2
|
|
||||||
m_PostInfinity: 2
|
|
||||||
m_RotationOrder: 4
|
|
||||||
attribute: m_LocalEulerAngles.z
|
|
||||||
path: EyeR
|
|
||||||
classID: 4
|
|
||||||
script: {fileID: 0}
|
|
||||||
- curve:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Curve: []
|
|
||||||
m_PreInfinity: 2
|
|
||||||
m_PostInfinity: 2
|
|
||||||
m_RotationOrder: 4
|
|
||||||
attribute: m_LocalEulerAngles.y
|
|
||||||
path: EyeR
|
|
||||||
classID: 4
|
|
||||||
script: {fileID: 0}
|
|
||||||
- curve:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Curve: []
|
|
||||||
m_PreInfinity: 2
|
|
||||||
m_PostInfinity: 2
|
|
||||||
m_RotationOrder: 4
|
|
||||||
attribute: m_LocalEulerAngles.x
|
|
||||||
path: EyeR
|
|
||||||
classID: 4
|
|
||||||
script: {fileID: 0}
|
|
||||||
- curve:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Curve: []
|
|
||||||
m_PreInfinity: 2
|
|
||||||
m_PostInfinity: 2
|
|
||||||
m_RotationOrder: 4
|
|
||||||
attribute: m_LocalEulerAngles.z
|
|
||||||
path: LegLowL
|
|
||||||
classID: 4
|
|
||||||
script: {fileID: 0}
|
|
||||||
- curve:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Curve: []
|
|
||||||
m_PreInfinity: 2
|
|
||||||
m_PostInfinity: 2
|
|
||||||
m_RotationOrder: 4
|
|
||||||
attribute: m_LocalEulerAngles.y
|
|
||||||
path: LegLowL
|
|
||||||
classID: 4
|
|
||||||
script: {fileID: 0}
|
|
||||||
- curve:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Curve: []
|
|
||||||
m_PreInfinity: 2
|
|
||||||
m_PostInfinity: 2
|
|
||||||
m_RotationOrder: 4
|
|
||||||
attribute: m_LocalEulerAngles.x
|
|
||||||
path: LegLowL
|
|
||||||
classID: 4
|
|
||||||
script: {fileID: 0}
|
|
||||||
- curve:
|
- curve:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_Curve: []
|
m_Curve: []
|
||||||
|
@ -7120,7 +7180,7 @@ AnimationClip:
|
||||||
m_PreInfinity: 2
|
m_PreInfinity: 2
|
||||||
m_PostInfinity: 2
|
m_PostInfinity: 2
|
||||||
m_RotationOrder: 4
|
m_RotationOrder: 4
|
||||||
attribute: m_LocalEulerAngles.z
|
attribute: m_LocalEulerAngles.x
|
||||||
path: Woosh
|
path: Woosh
|
||||||
classID: 4
|
classID: 4
|
||||||
script: {fileID: 0}
|
script: {fileID: 0}
|
||||||
|
@ -7140,70 +7200,10 @@ AnimationClip:
|
||||||
m_PreInfinity: 2
|
m_PreInfinity: 2
|
||||||
m_PostInfinity: 2
|
m_PostInfinity: 2
|
||||||
m_RotationOrder: 4
|
m_RotationOrder: 4
|
||||||
attribute: m_LocalEulerAngles.x
|
attribute: m_LocalEulerAngles.z
|
||||||
path: Woosh
|
path: Woosh
|
||||||
classID: 4
|
classID: 4
|
||||||
script: {fileID: 0}
|
script: {fileID: 0}
|
||||||
- curve:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Curve: []
|
|
||||||
m_PreInfinity: 2
|
|
||||||
m_PostInfinity: 2
|
|
||||||
m_RotationOrder: 4
|
|
||||||
attribute: m_LocalEulerAngles.z
|
|
||||||
path: Head
|
|
||||||
classID: 4
|
|
||||||
script: {fileID: 0}
|
|
||||||
- curve:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Curve: []
|
|
||||||
m_PreInfinity: 2
|
|
||||||
m_PostInfinity: 2
|
|
||||||
m_RotationOrder: 4
|
|
||||||
attribute: m_LocalEulerAngles.y
|
|
||||||
path: Head
|
|
||||||
classID: 4
|
|
||||||
script: {fileID: 0}
|
|
||||||
- curve:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Curve: []
|
|
||||||
m_PreInfinity: 2
|
|
||||||
m_PostInfinity: 2
|
|
||||||
m_RotationOrder: 4
|
|
||||||
attribute: m_LocalEulerAngles.x
|
|
||||||
path: Head
|
|
||||||
classID: 4
|
|
||||||
script: {fileID: 0}
|
|
||||||
- curve:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Curve: []
|
|
||||||
m_PreInfinity: 2
|
|
||||||
m_PostInfinity: 2
|
|
||||||
m_RotationOrder: 4
|
|
||||||
attribute: m_LocalEulerAngles.x
|
|
||||||
path: LegLowR
|
|
||||||
classID: 4
|
|
||||||
script: {fileID: 0}
|
|
||||||
- curve:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Curve: []
|
|
||||||
m_PreInfinity: 2
|
|
||||||
m_PostInfinity: 2
|
|
||||||
m_RotationOrder: 4
|
|
||||||
attribute: m_LocalEulerAngles.y
|
|
||||||
path: LegLowR
|
|
||||||
classID: 4
|
|
||||||
script: {fileID: 0}
|
|
||||||
- curve:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Curve: []
|
|
||||||
m_PreInfinity: 2
|
|
||||||
m_PostInfinity: 2
|
|
||||||
m_RotationOrder: 4
|
|
||||||
attribute: m_LocalEulerAngles.z
|
|
||||||
path: LegLowR
|
|
||||||
classID: 4
|
|
||||||
script: {fileID: 0}
|
|
||||||
m_HasGenericRootTransform: 0
|
m_HasGenericRootTransform: 0
|
||||||
m_HasMotionFloatCurves: 0
|
m_HasMotionFloatCurves: 0
|
||||||
m_Events: []
|
m_Events: []
|
||||||
|
|
|
@ -406,11 +406,11 @@ namespace HeavenStudio
|
||||||
|
|
||||||
public void LateUpdate()
|
public void LateUpdate()
|
||||||
{
|
{
|
||||||
if (metronome && isPlaying)
|
if (isPlaying)
|
||||||
{
|
{
|
||||||
if (songPositionInBeatsAsDouble >= Math.Ceiling(startBeat) + _metronomeTally)
|
if (songPositionInBeatsAsDouble >= Math.Ceiling(startBeat) + _metronomeTally)
|
||||||
{
|
{
|
||||||
metronomeSound = Util.SoundByte.PlayOneShot("metronome", Math.Ceiling(startBeat) + _metronomeTally);
|
if (metronome) metronomeSound = Util.SoundByte.PlayOneShot("metronome", Math.Ceiling(startBeat) + _metronomeTally);
|
||||||
_metronomeTally++;
|
_metronomeTally++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ namespace HeavenStudio.Games.Loaders
|
||||||
},
|
},
|
||||||
new GameAction("setEmotion", "Emotion")
|
new GameAction("setEmotion", "Emotion")
|
||||||
{
|
{
|
||||||
function = delegate { var e = eventCaller.currentEntity; BlueBear.instance.SetEmotion(e["type"]); },
|
function = delegate { var e = eventCaller.currentEntity; BlueBear.instance.SetEmotion(e.beat, e["type"]); },
|
||||||
parameters = new List<Param>()
|
parameters = new List<Param>()
|
||||||
{
|
{
|
||||||
new Param("type", BlueBear.EmotionType.ClosedEyes, "Emotion", "Which emotion should the blue bear use?")
|
new Param("type", BlueBear.EmotionType.ClosedEyes, "Emotion", "Which emotion should the blue bear use?")
|
||||||
|
@ -274,18 +274,18 @@ namespace HeavenStudio.Games
|
||||||
headAndBodyAnim.SetBool("ShouldOpenMouth", foodHolder.childCount != 0);
|
headAndBodyAnim.SetBool("ShouldOpenMouth", foodHolder.childCount != 0);
|
||||||
if (headAndBodyAnim.GetBool("ShouldOpenMouth"))
|
if (headAndBodyAnim.GetBool("ShouldOpenMouth"))
|
||||||
{
|
{
|
||||||
_emotionCancelled = true;
|
_emotionCancelledBeat = Conductor.instance.songPositionInBeatsAsDouble;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PlayerInput.GetIsAction(InputAction_Left) && !IsExpectingInputNow(InputAction_Left.inputLockCategory))
|
if (PlayerInput.GetIsAction(InputAction_Left) && !IsExpectingInputNow(InputAction_Left.inputLockCategory))
|
||||||
{
|
{
|
||||||
SoundByte.PlayOneShotGame("blueBear/whiff", -1, SoundByte.GetPitchFromSemiTones(UnityEngine.Random.Range(-1, 2), false));
|
SoundByte.PlayOneShotGame("blueBear/whiff", -1, SoundByte.GetPitchFromSemiTones(UnityEngine.Random.Range(-1, 2), false));
|
||||||
Bite(true);
|
Bite(Conductor.instance.songPositionInBeatsAsDouble, true);
|
||||||
}
|
}
|
||||||
else if (PlayerInput.GetIsAction(InputAction_Right) && !IsExpectingInputNow(InputAction_Right.inputLockCategory))
|
else if (PlayerInput.GetIsAction(InputAction_Right) && !IsExpectingInputNow(InputAction_Right.inputLockCategory))
|
||||||
{
|
{
|
||||||
SoundByte.PlayOneShotGame("blueBear/whiff", -1, SoundByte.GetPitchFromSemiTones(UnityEngine.Random.Range(-1, 2), false));
|
SoundByte.PlayOneShotGame("blueBear/whiff", -1, SoundByte.GetPitchFromSemiTones(UnityEngine.Random.Range(-1, 2), false));
|
||||||
Bite(false);
|
Bite(Conductor.instance.songPositionInBeatsAsDouble, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateEmotions();
|
UpdateEmotions();
|
||||||
|
@ -298,7 +298,7 @@ namespace HeavenStudio.Games
|
||||||
windAnim.SetScaledAnimationSpeed();
|
windAnim.SetScaledAnimationSpeed();
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool _emotionCancelled = false;
|
private double _emotionCancelledBeat = -1;
|
||||||
private int _emotionIndex = 0;
|
private int _emotionIndex = 0;
|
||||||
private List<RiqEntity> _allEmotionsStretch = new();
|
private List<RiqEntity> _allEmotionsStretch = new();
|
||||||
private EmotionStretchType _lastEmotion = EmotionStretchType.LookUp;
|
private EmotionStretchType _lastEmotion = EmotionStretchType.LookUp;
|
||||||
|
@ -317,12 +317,11 @@ namespace HeavenStudio.Games
|
||||||
_emotionIndex++;
|
_emotionIndex++;
|
||||||
_lastEmotion = (EmotionStretchType)_allEmotionsStretch[_emotionIndex - 1]["type"];
|
_lastEmotion = (EmotionStretchType)_allEmotionsStretch[_emotionIndex - 1]["type"];
|
||||||
crying = _lastEmotion == EmotionStretchType.StartCrying;
|
crying = _lastEmotion == EmotionStretchType.StartCrying;
|
||||||
_emotionCancelled = false;
|
|
||||||
UpdateEmotions();
|
UpdateEmotions();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (beat >= e.beat && beat < e.beat + e.length && !_emotionCancelled)
|
if (beat >= e.beat && beat < e.beat + e.length && !(_emotionCancelledBeat >= e.beat && _emotionCancelledBeat < e.beat + e.length))
|
||||||
{
|
{
|
||||||
_lastEmotion = (EmotionStretchType)e["type"];
|
_lastEmotion = (EmotionStretchType)e["type"];
|
||||||
crying = _lastEmotion == EmotionStretchType.StartCrying;
|
crying = _lastEmotion == EmotionStretchType.StartCrying;
|
||||||
|
@ -388,9 +387,9 @@ namespace HeavenStudio.Games
|
||||||
windAnim.DoScaledAnimationAsync("Wind", 0.5f);
|
windAnim.DoScaledAnimationAsync("Wind", 0.5f);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Bite(bool left)
|
public void Bite(double beat, bool left)
|
||||||
{
|
{
|
||||||
_emotionCancelled = true;
|
_emotionCancelledBeat = beat;
|
||||||
if (crying)
|
if (crying)
|
||||||
{
|
{
|
||||||
headAndBodyAnim.DoScaledAnimationAsync(left ? "CryBiteL" : "CryBiteR", 0.5f);
|
headAndBodyAnim.DoScaledAnimationAsync(left ? "CryBiteL" : "CryBiteR", 0.5f);
|
||||||
|
@ -456,14 +455,15 @@ namespace HeavenStudio.Games
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetEmotion(int emotion)
|
public void SetEmotion(double beat, int emotion)
|
||||||
{
|
{
|
||||||
_emotionCancelled = true;
|
_emotionCancelledBeat = beat;
|
||||||
switch (emotion)
|
switch (emotion)
|
||||||
{
|
{
|
||||||
case (int)EmotionType.Neutral:
|
case (int)EmotionType.Neutral:
|
||||||
//check if smiling then play "StopSmile"
|
|
||||||
headAndBodyAnim.DoScaledAnimationAsync("Idle", 0.5f);
|
headAndBodyAnim.DoScaledAnimationAsync("Idle", 0.5f);
|
||||||
|
if (_allEmotionsStretch.Count == 0 || _lastEmotion != EmotionStretchType.Smile) return;
|
||||||
|
headAndBodyAnim.DoScaledAnimationAsync("StopSmile", 0.5f);
|
||||||
crying = false;
|
crying = false;
|
||||||
break;
|
break;
|
||||||
case (int)EmotionType.ClosedEyes:
|
case (int)EmotionType.ClosedEyes:
|
||||||
|
|
|
@ -68,7 +68,7 @@ namespace HeavenStudio.Games.Scripts_BlueBear
|
||||||
SoundByte.PlayOneShotGame("blueBear/chompDonut");
|
SoundByte.PlayOneShotGame("blueBear/chompDonut");
|
||||||
}
|
}
|
||||||
|
|
||||||
game.Bite(isCake);
|
game.Bite(Conductor.instance.songPositionInBeatsAsDouble, isCake);
|
||||||
game.EatTreat();
|
game.EatTreat();
|
||||||
|
|
||||||
SpawnCrumbs();
|
SpawnCrumbs();
|
||||||
|
|
|
@ -91,10 +91,8 @@ namespace HeavenStudio.Games
|
||||||
[SerializeField] List<BMExecutive> executives = new List<BMExecutive>();
|
[SerializeField] List<BMExecutive> executives = new List<BMExecutive>();
|
||||||
public BMExecutive firstSpinner;
|
public BMExecutive firstSpinner;
|
||||||
[SerializeField] float shakeIntensity = 0.5f;
|
[SerializeField] float shakeIntensity = 0.5f;
|
||||||
public bool shouldBop = true;
|
|
||||||
private bool assistantCanBop = true;
|
private bool assistantCanBop = true;
|
||||||
private bool executivesCanBop = true;
|
private bool executivesCanBop = true;
|
||||||
public GameEvent bop = new GameEvent();
|
|
||||||
[NonSerialized] public Sound chairLoopSound = null;
|
[NonSerialized] public Sound chairLoopSound = null;
|
||||||
int missCounter = 0;
|
int missCounter = 0;
|
||||||
private Tween shakeTween;
|
private Tween shakeTween;
|
||||||
|
@ -104,6 +102,7 @@ namespace HeavenStudio.Games
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
instance = this;
|
instance = this;
|
||||||
|
SetupBopRegion("boardMeeting", "bop", "auto");
|
||||||
InitExecutives();
|
InitExecutives();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -145,7 +144,7 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public override void OnBeatPulse(double beat)
|
public override void OnBeatPulse(double beat)
|
||||||
{
|
{
|
||||||
if (!shouldBop) return;
|
if (!BeatIsInBopRegion(beat)) return;
|
||||||
SingleBop();
|
SingleBop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,7 +165,6 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public void Bop(double beat, float length, bool goBop, bool autoBop)
|
public void Bop(double beat, float length, bool goBop, bool autoBop)
|
||||||
{
|
{
|
||||||
shouldBop = autoBop;
|
|
||||||
if (goBop)
|
if (goBop)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < length; i++)
|
for (int i = 0; i < length; i++)
|
||||||
|
|
|
@ -80,10 +80,10 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public enum WhoBops
|
public enum WhoBops
|
||||||
{
|
{
|
||||||
Alalin,
|
Alalin = 1,
|
||||||
Plalin,
|
Plalin = 2,
|
||||||
Both,
|
Both = 0,
|
||||||
None
|
None = 3
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum Background
|
public enum Background
|
||||||
|
@ -111,10 +111,6 @@ namespace HeavenStudio.Games
|
||||||
private double startSmile = 0;
|
private double startSmile = 0;
|
||||||
private double stopSmile = 0;
|
private double stopSmile = 0;
|
||||||
|
|
||||||
private bool bopLeft = true;
|
|
||||||
private bool bopRight = true;
|
|
||||||
public GameEvent bop = new GameEvent();
|
|
||||||
|
|
||||||
public static CatchyTune instance;
|
public static CatchyTune instance;
|
||||||
static List<QueuedFruit> queuedFruits = new List<QueuedFruit>();
|
static List<QueuedFruit> queuedFruits = new List<QueuedFruit>();
|
||||||
struct QueuedFruit
|
struct QueuedFruit
|
||||||
|
@ -184,6 +180,7 @@ namespace HeavenStudio.Games
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
instance = this;
|
instance = this;
|
||||||
|
SetupBopRegion("catchyTune", "bop", "bopAuto", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
const float orangeoffset = 0.5f;
|
const float orangeoffset = 0.5f;
|
||||||
|
@ -249,6 +246,9 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public override void OnBeatPulse(double beat)
|
public override void OnBeatPulse(double beat)
|
||||||
{
|
{
|
||||||
|
int whoBopsAuto = BeatIsInBopRegionInt(beat);
|
||||||
|
bool bopLeft = whoBopsAuto == (int)WhoBops.Plalin || whoBopsAuto == (int)WhoBops.Both;
|
||||||
|
bool bopRight = whoBopsAuto == (int)WhoBops.Alalin || whoBopsAuto == (int)WhoBops.Both;
|
||||||
if (bopLeft && stopCatchLeft == 0)
|
if (bopLeft && stopCatchLeft == 0)
|
||||||
{
|
{
|
||||||
plalinAnim.DoScaledAnimationAsync("bop", 0.5f);
|
plalinAnim.DoScaledAnimationAsync("bop", 0.5f);
|
||||||
|
@ -323,8 +323,6 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public void Bop(double beat, float length, int whoBops, int whoBopsAuto)
|
public void Bop(double beat, float length, int whoBops, int whoBopsAuto)
|
||||||
{
|
{
|
||||||
bopLeft = whoBopsAuto == (int)WhoBops.Plalin || whoBopsAuto == (int)WhoBops.Both;
|
|
||||||
bopRight = whoBopsAuto == (int)WhoBops.Alalin || whoBopsAuto == (int)WhoBops.Both;
|
|
||||||
for (int i = 0; i < length; i++)
|
for (int i = 0; i < length; i++)
|
||||||
{
|
{
|
||||||
BeatAction.New(instance, new List<BeatAction.Action>()
|
BeatAction.New(instance, new List<BeatAction.Action>()
|
||||||
|
|
|
@ -163,7 +163,6 @@ namespace HeavenStudio.Games
|
||||||
Sound SpinningLoop;
|
Sound SpinningLoop;
|
||||||
[Header("Variables")]
|
[Header("Variables")]
|
||||||
[SerializeField] List<PosterImages> posters = new List<PosterImages>();
|
[SerializeField] List<PosterImages> posters = new List<PosterImages>();
|
||||||
bool shouldBop = true;
|
|
||||||
bool canBop = true;
|
bool canBop = true;
|
||||||
public bool doingCue;
|
public bool doingCue;
|
||||||
double cueLength;
|
double cueLength;
|
||||||
|
@ -171,7 +170,6 @@ namespace HeavenStudio.Games
|
||||||
bool shouldYay;
|
bool shouldYay;
|
||||||
bool shouldDoSuccessZoom;
|
bool shouldDoSuccessZoom;
|
||||||
public bool shouldBeBlack = false;
|
public bool shouldBeBlack = false;
|
||||||
public GameEvent bop = new GameEvent();
|
|
||||||
int currentZoomIndex;
|
int currentZoomIndex;
|
||||||
double currentZoomCamBeat;
|
double currentZoomCamBeat;
|
||||||
float currentZoomCamLength;
|
float currentZoomCamLength;
|
||||||
|
@ -230,6 +228,7 @@ namespace HeavenStudio.Games
|
||||||
void Awake()
|
void Awake()
|
||||||
{
|
{
|
||||||
instance = this;
|
instance = this;
|
||||||
|
SetupBopRegion("cheerReaders", "bop", "toggle2");
|
||||||
for (int i = 0; i < topMasks.Count; i++)
|
for (int i = 0; i < topMasks.Count; i++)
|
||||||
{
|
{
|
||||||
firstRow[i].posterBook = topMasks[i];
|
firstRow[i].posterBook = topMasks[i];
|
||||||
|
@ -264,7 +263,7 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public override void OnBeatPulse(double beat)
|
public override void OnBeatPulse(double beat)
|
||||||
{
|
{
|
||||||
if (!shouldBop) return;
|
if (!BeatIsInBopRegion(beat)) return;
|
||||||
BopSingle();
|
BopSingle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -482,7 +481,6 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public void BopToggle(double beat, float length, bool startBop, bool bopAuto)
|
public void BopToggle(double beat, float length, bool startBop, bool bopAuto)
|
||||||
{
|
{
|
||||||
shouldBop = bopAuto;
|
|
||||||
if (startBop)
|
if (startBop)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < length; i++)
|
for (int i = 0; i < length; i++)
|
||||||
|
|
|
@ -49,7 +49,8 @@ namespace HeavenStudio.Games.Loaders
|
||||||
new GameAction("plantCollect", "Veggie Collection Values")
|
new GameAction("plantCollect", "Veggie Collection Values")
|
||||||
{
|
{
|
||||||
function = delegate { var e = eventCaller.currentEntity;
|
function = delegate { var e = eventCaller.currentEntity;
|
||||||
CropStomp.instance.SetCollectThresholds(e["threshold"], e["limit"], e["force"], e["forceAmount"]); },
|
CropStomp.instance.SetCollectThresholds(e["threshold"], e["limit"], e["force"], e["forceAmount"]);
|
||||||
|
},
|
||||||
defaultLength = 0.5f,
|
defaultLength = 0.5f,
|
||||||
parameters = new List<Param>()
|
parameters = new List<Param>()
|
||||||
{
|
{
|
||||||
|
@ -127,41 +128,32 @@ namespace HeavenStudio.Games
|
||||||
{
|
{
|
||||||
instance = this; // Finding grass sprite width for grass scrolling.
|
instance = this; // Finding grass sprite width for grass scrolling.
|
||||||
farmer.Init();
|
farmer.Init();
|
||||||
var grassSprite = grass.sprite;
|
Sprite sprite = grass.sprite;
|
||||||
var borderLeft = grassSprite.rect.xMin + grassSprite.border.x;
|
float borderLeft = sprite.rect.xMin + sprite.border.x;
|
||||||
var borderRight = grassSprite.rect.xMax - grassSprite.border.z;
|
float borderRight = sprite.rect.xMax - sprite.border.z;
|
||||||
var borderWidthPixels = borderRight - borderLeft;
|
float borderWidthPixels = borderRight - borderLeft;
|
||||||
grassWidth = borderWidthPixels / grassSprite.pixelsPerUnit;
|
grassWidth = borderWidthPixels / sprite.pixelsPerUnit;
|
||||||
|
|
||||||
legsAnim.Play("LiftFront", 0, 1); // Start with leg up.
|
legsAnim.Play("LiftFront", 0, 1); // Start with leg up.
|
||||||
|
}
|
||||||
|
|
||||||
// Initialize vegetables.
|
public override void OnGameSwitch(double beat)
|
||||||
var cond = Conductor.instance;
|
{
|
||||||
var entities = GameManager.instance.Beatmap.Entities;
|
double startBeat;
|
||||||
|
|
||||||
double startBeat = cond.songPositionInBeatsAsDouble;
|
|
||||||
double endBeat = double.MaxValue;
|
double endBeat = double.MaxValue;
|
||||||
|
var entities = GameManager.instance.Beatmap.Entities;
|
||||||
if (inactiveStart == -1f)
|
if (inactiveStart == -1f)
|
||||||
{
|
{
|
||||||
// Find the beat of the closest "start marching" event.
|
// Find the beat of the closest "start marching" event.
|
||||||
var marchStarts = entities.FindAll(m => m.datamodel == "cropStomp/start marching");
|
var lastMarch = entities.Find(c => c.datamodel == "cropStomp/start marching" && beat <= c.beat);
|
||||||
for (int i = 0; i < marchStarts.Count; i++)
|
startBeat = lastMarch?.beat ?? beat;
|
||||||
{
|
|
||||||
var sampleBeat = marchStarts[i].beat;
|
|
||||||
if (cond.songPositionInBeatsAsDouble <= sampleBeat + 0.25f) // 0.25-beat buffer in case the start marching event is directly next to the game switch event.
|
|
||||||
{
|
|
||||||
startBeat = sampleBeat;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Find the beat of the next step, assuming marching started at inactiveStart.
|
// Find the beat of the next step, assuming marching started at inactiveStart.
|
||||||
int stepsPassed = 0;
|
int stepsPassed = 0;
|
||||||
|
|
||||||
while (inactiveStart + (stepsPassed * 2f) < cond.songPositionInBeatsAsDouble)
|
while (inactiveStart + (stepsPassed * 2f) < beat)
|
||||||
{
|
{
|
||||||
stepsPassed++;
|
stepsPassed++;
|
||||||
|
|
||||||
|
@ -175,54 +167,31 @@ namespace HeavenStudio.Games
|
||||||
startBeat = inactiveStart + (stepsPassed * 2f);
|
startBeat = inactiveStart + (stepsPassed * 2f);
|
||||||
|
|
||||||
// Cue the marching proper to begin when applicable.
|
// Cue the marching proper to begin when applicable.
|
||||||
BeatAction.New(this, new List<BeatAction.Action>()
|
BeatAction.New(this, new() { new(startBeat - 0.25f, delegate { StartMarching(startBeat); }) });
|
||||||
{
|
|
||||||
new BeatAction.Action(startBeat - 0.25f, delegate { StartMarching(startBeat); })
|
|
||||||
});
|
|
||||||
|
|
||||||
inactiveStart = -1f;
|
inactiveStart = -1f;
|
||||||
}
|
}
|
||||||
|
|
||||||
// find out when the next game switch (or remix end) happens
|
// find out when the next game switch (or remix end) happens
|
||||||
var allEnds = EventCaller.GetAllInGameManagerList("gameManager", new string[] { "switchGame", "end" });
|
RiqEntity firstEnd = entities.Find(c => c.datamodel is "gameManager/switchGame/cropStomp" or "gameManager/end" && c.beat > startBeat);
|
||||||
if (allEnds.Count == 0)
|
endBeat = firstEnd?.beat ?? double.MaxValue;
|
||||||
{
|
|
||||||
endBeat = double.MaxValue;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
allEnds.Sort((x, y) => x.beat.CompareTo(y.beat));
|
|
||||||
|
|
||||||
//get the beat of the closest end event
|
|
||||||
foreach (var end in allEnds)
|
|
||||||
{
|
|
||||||
if (end.datamodel != "gameManager/end" && end.datamodel.Split(2) == "cropStomp") continue;
|
|
||||||
if (end.beat > startBeat)
|
|
||||||
{
|
|
||||||
endBeat = end.beat;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Veggie and mole events.
|
// Veggie and mole events.
|
||||||
var vegEvents = entities.FindAll(v => v.datamodel == "cropStomp/veggies");
|
List<RiqEntity> vegEvents = entities.FindAll(v => v.datamodel == "cropStomp/veggies");
|
||||||
var moleEvents = entities.FindAll(m => m.datamodel == "cropStomp/mole");
|
List<RiqEntity> moleEvents = entities.FindAll(m => m.datamodel == "cropStomp/mole");
|
||||||
|
|
||||||
// Spawn veggies.
|
// Spawn veggies.
|
||||||
for (int i = 0; i < vegEvents.Count; i++)
|
for (int i = 0; i < vegEvents.Count; i++) {
|
||||||
{
|
|
||||||
var vegBeat = vegEvents[i].beat;
|
var vegBeat = vegEvents[i].beat;
|
||||||
var vegLength = vegEvents[i].length;
|
var vegLength = vegEvents[i].length;
|
||||||
|
|
||||||
// Only consider veggie events that aren't past the start point.
|
// Only consider veggie events that aren't past the start point.
|
||||||
if (startBeat <= vegBeat + vegLength)
|
if (startBeat <= vegBeat + vegLength) {
|
||||||
{
|
|
||||||
int veggiesInEvent = Mathf.CeilToInt(vegLength + 1) / 2;
|
int veggiesInEvent = Mathf.CeilToInt(vegLength + 1) / 2;
|
||||||
|
|
||||||
for (int b = 0; b < veggiesInEvent; b++)
|
for (int b = 0; b < veggiesInEvent; b++)
|
||||||
{
|
{
|
||||||
var targetVeggieBeat = vegBeat + 2f * b;
|
var targetVeggieBeat = vegBeat + (2f * b);
|
||||||
if (startBeat <= targetVeggieBeat && targetVeggieBeat < endBeat)
|
if (startBeat <= targetVeggieBeat && targetVeggieBeat < endBeat)
|
||||||
{
|
{
|
||||||
SpawnVeggie(targetVeggieBeat, startBeat, false);
|
SpawnVeggie(targetVeggieBeat, startBeat, false);
|
||||||
|
@ -232,52 +201,40 @@ namespace HeavenStudio.Games
|
||||||
}
|
}
|
||||||
|
|
||||||
// Spawn moles.
|
// Spawn moles.
|
||||||
for (int i = 0; i < moleEvents.Count; i++)
|
for (int i = 0; i < moleEvents.Count; i++) {
|
||||||
{
|
|
||||||
var moleBeat = moleEvents[i].beat;
|
var moleBeat = moleEvents[i].beat;
|
||||||
|
|
||||||
if (startBeat <= moleBeat && moleBeat < endBeat)
|
if (startBeat <= moleBeat && moleBeat < endBeat) {
|
||||||
{
|
|
||||||
SpawnVeggie(moleBeat, startBeat, true);
|
SpawnVeggie(moleBeat, startBeat, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
List<RiqEntity> cuedMoleSounds = new List<RiqEntity>();
|
|
||||||
|
|
||||||
public override void OnGameSwitch(double beat)
|
|
||||||
{
|
|
||||||
SetInitTresholds(beat);
|
SetInitTresholds(beat);
|
||||||
SetMarchEndBeat(beat);
|
SetMarchEndBeat(beat);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnPlay(double beat)
|
public override void OnPlay(double beat)
|
||||||
{
|
{
|
||||||
SetInitTresholds(beat);
|
OnGameSwitch(beat);
|
||||||
SetMarchEndBeat(beat);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SetMarchEndBeat(double beat)
|
private void SetMarchEndBeat(double beat)
|
||||||
{
|
{
|
||||||
double nextEndBeat = double.MaxValue;
|
|
||||||
var nextEnd = EventCaller.GetAllInGameManagerList("gameManager", new string[] { "switchGame", "end" }).Find(e => e.beat > beat);
|
var nextEnd = EventCaller.GetAllInGameManagerList("gameManager", new string[] { "switchGame", "end" }).Find(e => e.beat > beat);
|
||||||
if (nextEnd != null) nextEndBeat = nextEnd.beat;
|
double nextEndBeat = nextEnd?.beat ?? double.MaxValue;
|
||||||
|
|
||||||
var allEnds = EventCaller.GetAllInGameManagerList("cropStomp", new string[] { "end" });
|
var firstEnd = GameManager.instance.Beatmap.Entities.Find(c => c.datamodel == "cropStomp/end" && c.beat >= beat && c.beat < nextEndBeat);
|
||||||
var tempEnds = allEnds.FindAll(x => x.beat >= beat && x.beat < nextEndBeat);
|
if (firstEnd != null) {
|
||||||
if (tempEnds.Count == 0) return;
|
marchEndBeat = firstEnd.beat;
|
||||||
|
willNotHum = firstEnd["mute"];
|
||||||
marchEndBeat = tempEnds[0].beat;
|
}
|
||||||
willNotHum = tempEnds[0]["mute"];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void MoleSound(double beat)
|
public static void MoleSound(double beat)
|
||||||
{
|
{
|
||||||
MultiSound.Play(new MultiSound.Sound[]
|
MultiSound.Play(new MultiSound.Sound[] {
|
||||||
{
|
new MultiSound.Sound("cropStomp/moleNyeh", beat - 2, offset: 0.134),
|
||||||
new MultiSound.Sound("cropStomp/moleNyeh", beat - 2, 1, 1, false, 0.134),
|
new MultiSound.Sound("cropStomp/moleHeh1", beat - 1.5, offset: 0.05),
|
||||||
new MultiSound.Sound("cropStomp/moleHeh1", beat - 1.5, 1, 1, false, 0.05),
|
new MultiSound.Sound("cropStomp/moleHeh2", beat - 1, offset: 0.061)
|
||||||
new MultiSound.Sound("cropStomp/moleHeh2", beat - 1, 1, 1, false, 0.061)
|
|
||||||
}, forcePlay: true);
|
}, forcePlay: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -285,11 +242,8 @@ namespace HeavenStudio.Games
|
||||||
{
|
{
|
||||||
var cond = Conductor.instance;
|
var cond = Conductor.instance;
|
||||||
|
|
||||||
if (!cond.isPlaying)
|
if (!cond.isPlaying || !isMarching) return;
|
||||||
return;
|
|
||||||
|
|
||||||
if (!isMarching)
|
|
||||||
return;
|
|
||||||
// Debug.Log(newBeat);
|
// Debug.Log(newBeat);
|
||||||
|
|
||||||
bool cameraLocked = cond.songPositionInBeats >= marchEndBeat;
|
bool cameraLocked = cond.songPositionInBeats >= marchEndBeat;
|
||||||
|
@ -308,11 +262,11 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
if (PlayerInput.GetIsAction(InputAction_BasicRelease) && !IsExpectingInputNow(InputAction_BasicRelease))
|
if (PlayerInput.GetIsAction(InputAction_BasicRelease) && !IsExpectingInputNow(InputAction_BasicRelease))
|
||||||
{
|
{
|
||||||
bodyAnim.Play("Raise");
|
bodyAnim.DoScaledAnimationAsync("Raise", 0.5f);
|
||||||
}
|
}
|
||||||
if (PlayerInput.GetIsAction(InputAction_Flick) && !IsExpectingInputNow(InputAction_FlickRelease))
|
if (PlayerInput.GetIsAction(InputAction_Flick) && !IsExpectingInputNow(InputAction_FlickRelease))
|
||||||
{
|
{
|
||||||
bodyAnim.Play("Pick");
|
bodyAnim.DoScaledAnimationAsync("Pick", 0.5f);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cameraLocked) return;
|
if (cameraLocked) return;
|
||||||
|
@ -326,7 +280,7 @@ namespace HeavenStudio.Games
|
||||||
var grassPos = grassTrans.localPosition;
|
var grassPos = grassTrans.localPosition;
|
||||||
|
|
||||||
var newGrassX = grassPos.x + (scrollRate * Time.deltaTime);
|
var newGrassX = grassPos.x + (scrollRate * Time.deltaTime);
|
||||||
newGrassX = (newGrassX % (grassWidth * 4.5f));
|
newGrassX %= grassWidth * 4.5f;
|
||||||
|
|
||||||
grassTrans.localPosition = new Vector3(newGrassX, grassPos.y, grassPos.z);
|
grassTrans.localPosition = new Vector3(newGrassX, grassPos.y, grassPos.z);
|
||||||
|
|
||||||
|
@ -334,16 +288,14 @@ namespace HeavenStudio.Games
|
||||||
var dotsPos = dotsTrans.localPosition;
|
var dotsPos = dotsTrans.localPosition;
|
||||||
|
|
||||||
var newDotsX = dotsPos.x + (scrollRate * Time.deltaTime);
|
var newDotsX = dotsPos.x + (scrollRate * Time.deltaTime);
|
||||||
newDotsX = (newDotsX % dotsWidth);
|
newDotsX %= dotsWidth;
|
||||||
|
|
||||||
dotsTrans.localPosition = new Vector3(newDotsX, dotsPos.y, dotsPos.z);
|
dotsTrans.localPosition = new Vector3(newDotsX, dotsPos.y, dotsPos.z);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LateUpdate()
|
private void LateUpdate()
|
||||||
{
|
{
|
||||||
if (!isMarching)
|
if (!isMarching) return;
|
||||||
return;
|
|
||||||
|
|
||||||
isFlicking = false;
|
isFlicking = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -357,12 +309,9 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
private void SetInitTresholds(double beat)
|
private void SetInitTresholds(double beat)
|
||||||
{
|
{
|
||||||
var allCollects = EventCaller.GetAllInGameManagerList("cropStomp", new string[] { "plantCollect" });
|
var lastCollect = GameManager.instance.Beatmap.Entities.FindLast(c => c.datamodel == "cropStomp/plantCollect" && c.beat < beat);
|
||||||
if (allCollects.Count == 0) return;
|
if (lastCollect == null) return;
|
||||||
|
SetCollectThresholds(lastCollect["threshold"], lastCollect["limit"], lastCollect["force"], lastCollect["forceAmount"]);
|
||||||
var tempCollect = allCollects.FindLast(x => x.beat < beat);
|
|
||||||
if (tempCollect == null) return;
|
|
||||||
SetCollectThresholds(tempCollect["threshold"], tempCollect["limit"], tempCollect["force"], tempCollect["forceAmount"]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CollectPlant(int veggieType)
|
public void CollectPlant(int veggieType)
|
||||||
|
@ -379,19 +328,18 @@ namespace HeavenStudio.Games
|
||||||
if (!isStepping)
|
if (!isStepping)
|
||||||
{
|
{
|
||||||
stepCount += 1;
|
stepCount += 1;
|
||||||
var stepAnim = (stepCount % 2 != 0 ? "StepFront" : "StepBack");
|
|
||||||
|
|
||||||
legsAnim.Play(stepAnim, 0, 0);
|
var stepAnim = (stepCount % 2 != 0) ? "StepFront" : "StepBack";
|
||||||
|
legsAnim.DoScaledAnimationAsync(stepAnim, 0.5f);
|
||||||
|
|
||||||
isStepping = true;
|
isStepping = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
// Lift.
|
// Lift.
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var liftAnim = (stepCount % 2 != 0 ? "LiftBack" : "LiftFront");
|
var liftAnim = (stepCount % 2 != 0) ? "LiftBack" : "LiftFront";
|
||||||
legsAnim.Play(liftAnim, 0, 0);
|
legsAnim.DoScaledAnimationAsync(liftAnim, 0.5f);
|
||||||
|
|
||||||
var farmerPos = farmerTrans.localPosition;
|
var farmerPos = farmerTrans.localPosition;
|
||||||
farmerTrans.localPosition = new Vector3(farmerPos.x - stepDistance, farmerPos.y, farmerPos.z);
|
farmerTrans.localPosition = new Vector3(farmerPos.x - stepDistance, farmerPos.y, farmerPos.z);
|
||||||
|
@ -413,27 +361,28 @@ namespace HeavenStudio.Games
|
||||||
public void Stomp()
|
public void Stomp()
|
||||||
{
|
{
|
||||||
// Don't increment step counter if autostep stepped already.
|
// Don't increment step counter if autostep stepped already.
|
||||||
if (!isStepping)
|
if (!isStepping) stepCount += 1;
|
||||||
stepCount += 1;
|
|
||||||
|
|
||||||
var stompAnim = (stepCount % 2 != 0 ? "StompFront" : "StompBack");
|
var stompAnim = (stepCount % 2 != 0) ? "StompFront" : "StompBack";
|
||||||
|
|
||||||
legsAnim.Play(stompAnim, 0, 0);
|
legsAnim.DoScaledAnimationAsync(stompAnim, 0.5f);
|
||||||
|
|
||||||
SoundByte.PlayOneShotGame("cropStomp/stomp");
|
SoundByte.PlayOneShotGame("cropStomp/stomp");
|
||||||
|
|
||||||
if (shakeTween != null)
|
if (shakeTween != null) shakeTween.Kill(true);
|
||||||
shakeTween.Kill(true);
|
|
||||||
|
|
||||||
DOTween.Punch(() => GameCamera.AdditionalPosition, x => GameCamera.AdditionalPosition = x, new Vector3(0, 0.75f, 0),
|
DOTween.Punch(() =>
|
||||||
Conductor.instance.pitchedSecPerBeat*0.5f, 18, 1f);
|
GameCamera.AdditionalPosition,
|
||||||
|
x => GameCamera.AdditionalPosition = x,
|
||||||
|
new Vector3(0, 0.75f, 0), Conductor.instance.pitchedSecPerBeat * 0.5f, 18, 1f
|
||||||
|
);
|
||||||
|
|
||||||
isStepping = true;
|
isStepping = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SpawnVeggie(double beat, double startBeat, bool isMole)
|
private void SpawnVeggie(double beat, double startBeat, bool isMole)
|
||||||
{
|
{
|
||||||
var newVeggie = GameObject.Instantiate(isMole ? baseMole : baseVeggie, veggieHolder).GetComponent<Veggie>();
|
var newVeggie = Instantiate(isMole ? baseMole : baseVeggie, veggieHolder).GetComponent<Veggie>();
|
||||||
|
|
||||||
newVeggie.targetBeat = beat;
|
newVeggie.targetBeat = beat;
|
||||||
|
|
||||||
|
@ -445,19 +394,14 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public static void MarchInactive(double beat)
|
public static void MarchInactive(double beat)
|
||||||
{
|
{
|
||||||
if (GameManager.instance.currentGame == "cropStomp") //this function is only meant for making march sounds while the game is inactive
|
if (GameManager.instance.currentGame == "cropStomp") return;
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
inactiveStart = beat;
|
inactiveStart = beat;
|
||||||
RiqEntity gameSwitch = GameManager.instance.Beatmap.Entities.Find(c => c.beat >= beat && c.datamodel == "gameManager/switchGame/cropStomp");
|
RiqEntity gameSwitch = GameManager.instance.Beatmap.Entities.Find(c => c.beat >= beat && c.datamodel == "gameManager/switchGame/cropStomp");
|
||||||
if (gameSwitch == null)
|
if (gameSwitch == null) return;
|
||||||
return;
|
|
||||||
int length = (int)Math.Ceiling((gameSwitch.beat - beat) / 2);
|
int length = (int)Math.Ceiling((gameSwitch.beat - beat) / 2);
|
||||||
MultiSound.Sound[] sounds = new MultiSound.Sound[length];
|
MultiSound.Sound[] sounds = new MultiSound.Sound[length];
|
||||||
for(int i = 0; i < length; i++)
|
for(int i = 0; i < length; i++) {
|
||||||
{
|
sounds[i] = new MultiSound.Sound("cropStomp/hmm", beat + (i * 2));
|
||||||
sounds[i] = new MultiSound.Sound("cropStomp/hmm", beat + i*2);
|
|
||||||
}
|
}
|
||||||
MultiSound.Play(sounds, forcePlay: true);
|
MultiSound.Play(sounds, forcePlay: true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,7 +70,7 @@ namespace HeavenStudio.Games.Scripts_CropStomp
|
||||||
|
|
||||||
if (PlayerInput.GetIsAction(CropStomp.InputAction_BasicPress) && !game.IsExpectingInputNow(CropStomp.InputAction_BasicPress))
|
if (PlayerInput.GetIsAction(CropStomp.InputAction_BasicPress) && !game.IsExpectingInputNow(CropStomp.InputAction_BasicPress))
|
||||||
{
|
{
|
||||||
game.bodyAnim.Play("Crouch", 0, 0);
|
game.bodyAnim.DoScaledAnimationAsync("Crouch", 0.5f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,8 +87,7 @@ namespace HeavenStudio.Games.Scripts_CropStomp
|
||||||
startPlant.SetActive(collectedPlants >= plantThreshold);
|
startPlant.SetActive(collectedPlants >= plantThreshold);
|
||||||
if (spawnedPlants.Count > 0)
|
if (spawnedPlants.Count > 0)
|
||||||
{
|
{
|
||||||
foreach (var plant in spawnedPlants)
|
foreach (var plant in spawnedPlants) {
|
||||||
{
|
|
||||||
Destroy(plant);
|
Destroy(plant);
|
||||||
}
|
}
|
||||||
spawnedPlants.Clear();
|
spawnedPlants.Clear();
|
||||||
|
@ -102,8 +101,9 @@ namespace HeavenStudio.Games.Scripts_CropStomp
|
||||||
{
|
{
|
||||||
spawnedPlant = Instantiate(plantLastRef, collectedHolder);
|
spawnedPlant = Instantiate(plantLastRef, collectedHolder);
|
||||||
spawnedPlant.GetComponent<SpriteRenderer>().sprite = veggieSprites[lastVeggieType];
|
spawnedPlant.GetComponent<SpriteRenderer>().sprite = veggieSprites[lastVeggieType];
|
||||||
|
} else {
|
||||||
|
spawnedPlant = Instantiate((realIndex % 2 == 0) ? plantRightRef : plantLeftRef, collectedHolder);
|
||||||
}
|
}
|
||||||
else spawnedPlant = Instantiate((realIndex % 2 == 0) ? plantRightRef : plantLeftRef, collectedHolder);
|
|
||||||
spawnedPlant.transform.localPosition = new Vector3(0, (realIndex * plantDistance) + plantStartDistance, 0);
|
spawnedPlant.transform.localPosition = new Vector3(0, (realIndex * plantDistance) + plantStartDistance, 0);
|
||||||
spawnedPlant.GetComponent<SpriteRenderer>().sortingOrder = -realIndex - 2;
|
spawnedPlant.GetComponent<SpriteRenderer>().sortingOrder = -realIndex - 2;
|
||||||
spawnedPlant.SetActive(true);
|
spawnedPlant.SetActive(true);
|
||||||
|
@ -119,9 +119,8 @@ namespace HeavenStudio.Games.Scripts_CropStomp
|
||||||
|
|
||||||
private void Miss(PlayerActionEvent caller)
|
private void Miss(PlayerActionEvent caller)
|
||||||
{
|
{
|
||||||
if (GameManager.instance.currentGame != "cropStomp") return;
|
if (GameManager.instance.currentGame != "cropStomp" || !game.isMarching) return;
|
||||||
if (!game.isMarching)
|
|
||||||
return;
|
|
||||||
// REMARK: does not count for performance
|
// REMARK: does not count for performance
|
||||||
nextStompBeat += 2f;
|
nextStompBeat += 2f;
|
||||||
stomp?.Disable();
|
stomp?.Disable();
|
||||||
|
@ -133,18 +132,12 @@ namespace HeavenStudio.Games.Scripts_CropStomp
|
||||||
|
|
||||||
void Stomp(bool ng)
|
void Stomp(bool ng)
|
||||||
{
|
{
|
||||||
if (GameManager.instance.currentGame != "cropStomp") return;
|
if (GameManager.instance.currentGame != "cropStomp" || !game.isMarching) return;
|
||||||
if (!game.isMarching)
|
if (ng) {
|
||||||
return;
|
game.bodyAnim.DoScaledAnimationAsync("Crouch", 0.5f);
|
||||||
if (ng)
|
} else {
|
||||||
{
|
|
||||||
game.bodyAnim.Play("Crouch", 0, 0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
game.Stomp();
|
game.Stomp();
|
||||||
game.bodyAnim.Play("Stomp", 0, 0);
|
game.bodyAnim.DoScaledAnimationAsync("Stomp", 0.5f);
|
||||||
|
|
||||||
}
|
}
|
||||||
nextStompBeat += 2f;
|
nextStompBeat += 2f;
|
||||||
stomp?.Disable();
|
stomp?.Disable();
|
||||||
|
|
|
@ -39,7 +39,7 @@ namespace HeavenStudio.Games.Scripts_CropStomp
|
||||||
{
|
{
|
||||||
game = CropStomp.instance;
|
game = CropStomp.instance;
|
||||||
|
|
||||||
if (Conductor.instance.isPlaying)
|
// if (Conductor.instance.isPlaying)
|
||||||
game.ScheduleInput(targetBeat - 1, 1f, CropStomp.InputAction_BasicPress, StompJust, StompMiss, Out);
|
game.ScheduleInput(targetBeat - 1, 1f, CropStomp.InputAction_BasicPress, StompJust, StompMiss, Out);
|
||||||
|
|
||||||
if (!isMole)
|
if (!isMole)
|
||||||
|
@ -56,38 +56,23 @@ namespace HeavenStudio.Games.Scripts_CropStomp
|
||||||
private bool gotStomped; // Safeguard in case nested Update() call breaks.
|
private bool gotStomped; // Safeguard in case nested Update() call breaks.
|
||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
if (!game.isMarching)
|
if (!game.isMarching) return;
|
||||||
return;
|
|
||||||
|
|
||||||
// Veggie missed. Handle missed state.
|
switch (veggieState)
|
||||||
if (veggieState == -1)
|
|
||||||
{
|
{
|
||||||
MissedUpdate();
|
case -1: MissedUpdate(); return;
|
||||||
return;
|
// case 0:
|
||||||
}
|
case 2: PickedUpdate(); return;
|
||||||
|
case 1:
|
||||||
// Veggie picked. Handle picked state.
|
float airPosition = Conductor.instance.GetPositionFromBeat(stompedBeat, landBeat - stompedBeat);
|
||||||
if (veggieState == 2)
|
|
||||||
{
|
|
||||||
PickedUpdate();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var cond = Conductor.instance;
|
|
||||||
// In ground.
|
|
||||||
if (veggieState == 0)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
// In air.
|
|
||||||
else if (veggieState == 1)
|
|
||||||
{
|
|
||||||
float airPosition = cond.GetPositionFromBeat(stompedBeat, landBeat - stompedBeat);
|
|
||||||
veggieTrans.position = curve.GetPoint(Mathf.Clamp(airPosition, 0, 1));
|
veggieTrans.position = curve.GetPoint(Mathf.Clamp(airPosition, 0, 1));
|
||||||
|
|
||||||
if (PlayerInput.GetIsAction(CropStomp.InputAction_FlickRelease) && !game.IsExpectingInputNow(CropStomp.InputAction_FlickRelease))
|
if (PlayerInput.GetIsAction(CropStomp.InputAction_FlickRelease) && !game.IsExpectingInputNow(CropStomp.InputAction_FlickRelease))
|
||||||
{
|
{
|
||||||
pickEligible = false;
|
pickEligible = false;
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
// default:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -115,7 +100,7 @@ namespace HeavenStudio.Games.Scripts_CropStomp
|
||||||
|
|
||||||
private void PickJust(PlayerActionEvent caller, float state)
|
private void PickJust(PlayerActionEvent caller, float state)
|
||||||
{
|
{
|
||||||
game.bodyAnim.Play("Pick", 0, 0);
|
game.bodyAnim.DoScaledAnimationAsync("Pick", 0.5f);
|
||||||
game.isFlicking = true;
|
game.isFlicking = true;
|
||||||
if (!pickEligible) return;
|
if (!pickEligible) return;
|
||||||
if (GameManager.instance.autoplay)
|
if (GameManager.instance.autoplay)
|
||||||
|
@ -131,13 +116,20 @@ namespace HeavenStudio.Games.Scripts_CropStomp
|
||||||
|
|
||||||
curve.transform.localScale = Vector3.one; // Return curve to normal size in the case of mole curves.
|
curve.transform.localScale = Vector3.one; // Return curve to normal size in the case of mole curves.
|
||||||
|
|
||||||
var key1 = curve.KeyPoints[0];
|
for (int i = 0; i < 2; i++)
|
||||||
var key1Pos = key1.Position;
|
{
|
||||||
key1.Position = new Vector3(key1Pos.x, veggieTrans.position.y, key1Pos.z);
|
var key = curve.KeyPoints[i];
|
||||||
|
var keyPos = key.Position;
|
||||||
|
key.Position = new Vector3(keyPos.x, veggieTrans.position.y + (i * 2), keyPos.z);
|
||||||
|
}
|
||||||
|
|
||||||
var key2 = curve.KeyPoints[1];
|
// var key1 = curve.KeyPoints[0];
|
||||||
var key2Pos = key2.Position;
|
// var key1Pos = key1.Position;
|
||||||
key2.Position = new Vector3(key2Pos.x, veggieTrans.position.y + 2f, key2Pos.z);
|
// key1.Position = new Vector3(key1Pos.x, veggieTrans.position.y, key1Pos.z);
|
||||||
|
|
||||||
|
// var key2 = curve.KeyPoints[1];
|
||||||
|
// var key2Pos = key2.Position;
|
||||||
|
// key2.Position = new Vector3(key2Pos.x, veggieTrans.position.y + 2f, key2Pos.z);
|
||||||
|
|
||||||
pickedBeat = Conductor.instance.songPositionInBeatsAsDouble;
|
pickedBeat = Conductor.instance.songPositionInBeatsAsDouble;
|
||||||
|
|
||||||
|
@ -155,8 +147,7 @@ namespace HeavenStudio.Games.Scripts_CropStomp
|
||||||
{
|
{
|
||||||
veggieState = -1;
|
veggieState = -1;
|
||||||
|
|
||||||
if (!isMole)
|
if (!isMole) SoundByte.PlayOneShotGame("cropStomp/veggieMiss");
|
||||||
SoundByte.PlayOneShotGame("cropStomp/veggieMiss");
|
|
||||||
caller.Disable();
|
caller.Disable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -186,7 +177,7 @@ namespace HeavenStudio.Games.Scripts_CropStomp
|
||||||
var distDiff = transform.position.x - game.farmerTrans.position.x;
|
var distDiff = transform.position.x - game.farmerTrans.position.x;
|
||||||
if (distDiff > 1.5f)
|
if (distDiff > 1.5f)
|
||||||
{
|
{
|
||||||
moleAnim.Play("Chuckle", 0, 0);
|
moleAnim.DoScaledAnimationAsync("Chuckle", 0.5f);
|
||||||
moleLaughing = true;
|
moleLaughing = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -223,6 +214,8 @@ namespace HeavenStudio.Games.Scripts_CropStomp
|
||||||
}
|
}
|
||||||
gotStomped = true;
|
gotStomped = true;
|
||||||
|
|
||||||
|
Debug.Log("Stomped!");
|
||||||
|
|
||||||
var cond = Conductor.instance;
|
var cond = Conductor.instance;
|
||||||
|
|
||||||
ParticleSystem spawnedHit = Instantiate(game.hitParticle, game.hitParticle.transform.parent);
|
ParticleSystem spawnedHit = Instantiate(game.hitParticle, game.hitParticle.transform.parent);
|
||||||
|
@ -240,7 +233,7 @@ namespace HeavenStudio.Games.Scripts_CropStomp
|
||||||
if (autoTriggered)
|
if (autoTriggered)
|
||||||
{
|
{
|
||||||
game.Stomp();
|
game.Stomp();
|
||||||
game.bodyAnim.Play("Stomp", 0, 0);
|
game.bodyAnim.DoScaledAnimationAsync("Stomp", 0.5f);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isMole)
|
if (!isMole)
|
||||||
|
@ -251,7 +244,7 @@ namespace HeavenStudio.Games.Scripts_CropStomp
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
moleAnim.Play("Idle", 0, 0);
|
moleAnim.DoScaledAnimationAsync("Idle", 0.5f);
|
||||||
}
|
}
|
||||||
|
|
||||||
var veggieScale = veggieTrans.localScale;
|
var veggieScale = veggieTrans.localScale;
|
||||||
|
@ -267,7 +260,7 @@ namespace HeavenStudio.Games.Scripts_CropStomp
|
||||||
|
|
||||||
if (autoTriggered)
|
if (autoTriggered)
|
||||||
{
|
{
|
||||||
game.bodyAnim.Play("Pick", 0, 0);
|
game.bodyAnim.DoScaledAnimationAsync("Pick", 0.5f);
|
||||||
game.isFlicking = true;
|
game.isFlicking = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -113,14 +113,12 @@ namespace HeavenStudio.Games
|
||||||
[SerializeField] private Student student;
|
[SerializeField] private Student student;
|
||||||
[SerializeField] private GameObject djYellow;
|
[SerializeField] private GameObject djYellow;
|
||||||
private Animator djYellowAnim;
|
private Animator djYellowAnim;
|
||||||
private double lastReportedBeat = 0f;
|
|
||||||
public DJYellow djYellowScript;
|
public DJYellow djYellowScript;
|
||||||
|
|
||||||
[Header("Properties")]
|
[Header("Properties")]
|
||||||
public GameEvent bop = new GameEvent();
|
public GameEvent bop = new GameEvent();
|
||||||
public bool djYellowHolding;
|
public bool djYellowHolding;
|
||||||
public bool andStop;
|
public bool andStop;
|
||||||
public bool goBop;
|
|
||||||
public double beatOfInstance;
|
public double beatOfInstance;
|
||||||
private bool djYellowBopLeft;
|
private bool djYellowBopLeft;
|
||||||
public bool shouldBeHolding = false;
|
public bool shouldBeHolding = false;
|
||||||
|
@ -138,7 +136,7 @@ namespace HeavenStudio.Games
|
||||||
djYellowAnim = djYellow.GetComponent<Animator>();
|
djYellowAnim = djYellow.GetComponent<Animator>();
|
||||||
djYellowScript = djYellow.GetComponent<DJYellow>();
|
djYellowScript = djYellow.GetComponent<DJYellow>();
|
||||||
student.Init();
|
student.Init();
|
||||||
goBop = true;
|
SetupBopRegion("djSchool", "bop", "toggle");
|
||||||
}
|
}
|
||||||
|
|
||||||
//For inactive game purposes
|
//For inactive game purposes
|
||||||
|
@ -167,7 +165,7 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public override void OnBeatPulse(double beat)
|
public override void OnBeatPulse(double beat)
|
||||||
{
|
{
|
||||||
if (!goBop) return;
|
if (!BeatIsInBopRegion(beat)) return;
|
||||||
if (student.isHolding)
|
if (student.isHolding)
|
||||||
{
|
{
|
||||||
student.anim.DoScaledAnimationAsync("HoldBop", 0.5f);
|
student.anim.DoScaledAnimationAsync("HoldBop", 0.5f);
|
||||||
|
@ -243,7 +241,6 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public void Bop(double beat, float length, bool isBopping, bool autoBop)
|
public void Bop(double beat, float length, bool isBopping, bool autoBop)
|
||||||
{
|
{
|
||||||
goBop = autoBop;
|
|
||||||
if (isBopping)
|
if (isBopping)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < length; i++)
|
for (int i = 0; i < length; i++)
|
||||||
|
|
|
@ -258,7 +258,7 @@ namespace HeavenStudio.Games.Scripts_DJSchool
|
||||||
{
|
{
|
||||||
new BeatAction.Action(caller.timer + caller.startBeat + 1, delegate
|
new BeatAction.Action(caller.timer + caller.startBeat + 1, delegate
|
||||||
{
|
{
|
||||||
if (game.goBop)
|
if (game.BeatIsInBopRegion(caller.timer + caller.startBeat + 1))
|
||||||
{
|
{
|
||||||
game.djYellowScript.ChangeHeadSprite(DJYellow.DJExpression.CrossEyed);
|
game.djYellowScript.ChangeHeadSprite(DJYellow.DJExpression.CrossEyed);
|
||||||
if (game.djYellowHolding) game.djYellowScript.Reverse();
|
if (game.djYellowHolding) game.djYellowScript.Reverse();
|
||||||
|
@ -278,7 +278,7 @@ namespace HeavenStudio.Games.Scripts_DJSchool
|
||||||
{
|
{
|
||||||
new BeatAction.Action(beat, delegate
|
new BeatAction.Action(beat, delegate
|
||||||
{
|
{
|
||||||
if (game.goBop)
|
if (game.BeatIsInBopRegion(beat))
|
||||||
{
|
{
|
||||||
game.djYellowScript.ChangeHeadSprite(DJYellow.DJExpression.CrossEyed);
|
game.djYellowScript.ChangeHeadSprite(DJYellow.DJExpression.CrossEyed);
|
||||||
if (game.djYellowHolding) game.djYellowScript.Reverse();
|
if (game.djYellowHolding) game.djYellowScript.Reverse();
|
||||||
|
|
|
@ -140,9 +140,7 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
[SerializeField] Sprite[] ObjectTypes;
|
[SerializeField] Sprite[] ObjectTypes;
|
||||||
|
|
||||||
private double lastReportedBeat = 0f;
|
|
||||||
private bool birdOnScreen = false;
|
private bool birdOnScreen = false;
|
||||||
bool dontBop = false;
|
|
||||||
private const string sfxNum = "dogNinja/";
|
private const string sfxNum = "dogNinja/";
|
||||||
|
|
||||||
public static DogNinja instance;
|
public static DogNinja instance;
|
||||||
|
@ -200,6 +198,7 @@ namespace HeavenStudio.Games
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
instance = this;
|
instance = this;
|
||||||
|
SetupBopRegion("dogNinja", "Bop", "auto");
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnDestroy()
|
void OnDestroy()
|
||||||
|
@ -216,7 +215,7 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public override void OnBeatPulse(double beat)
|
public override void OnBeatPulse(double beat)
|
||||||
{
|
{
|
||||||
if (dontBop) return;
|
if (!BeatIsInBopRegion(beat)) return;
|
||||||
DogAnim.DoScaledAnimationAsync("Bop", 0.5f);
|
DogAnim.DoScaledAnimationAsync("Bop", 0.5f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -267,7 +266,6 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public void Bop(double beat, float length, bool auto, bool bop)
|
public void Bop(double beat, float length, bool auto, bool bop)
|
||||||
{
|
{
|
||||||
dontBop = !auto;
|
|
||||||
if (!bop) return;
|
if (!bop) return;
|
||||||
List<BeatAction.Action> actions = new();
|
List<BeatAction.Action> actions = new();
|
||||||
|
|
||||||
|
|
|
@ -76,9 +76,7 @@ namespace HeavenStudio.Games
|
||||||
[SerializeField] public float shadowDepthScaleMax;
|
[SerializeField] public float shadowDepthScaleMax;
|
||||||
[SerializeField] SuperCurveObject.Path[] ballBouncePaths;
|
[SerializeField] SuperCurveObject.Path[] ballBouncePaths;
|
||||||
double lastGirlGacha = double.MinValue;
|
double lastGirlGacha = double.MinValue;
|
||||||
bool shouldBop = true;
|
|
||||||
bool canBop = true;
|
bool canBop = true;
|
||||||
GameEvent bop = new GameEvent();
|
|
||||||
public static DoubleDate instance;
|
public static DoubleDate instance;
|
||||||
public static List<QueuedBall> queuedBalls = new List<QueuedBall>();
|
public static List<QueuedBall> queuedBalls = new List<QueuedBall>();
|
||||||
[NonSerialized] public double lastHitWeasel = double.MinValue;
|
[NonSerialized] public double lastHitWeasel = double.MinValue;
|
||||||
|
@ -132,6 +130,7 @@ namespace HeavenStudio.Games
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
instance = this;
|
instance = this;
|
||||||
|
SetupBopRegion("doubleDate", "bop", "autoBop");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Start() {
|
private void Start() {
|
||||||
|
@ -140,7 +139,7 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public override void OnBeatPulse(double beat)
|
public override void OnBeatPulse(double beat)
|
||||||
{
|
{
|
||||||
if (shouldBop) SingleBop();
|
if (BeatIsInBopRegion(beat)) SingleBop();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Update()
|
void Update()
|
||||||
|
@ -198,7 +197,6 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public void Bop(double beat, float length, bool goBop, bool autoBop)
|
public void Bop(double beat, float length, bool goBop, bool autoBop)
|
||||||
{
|
{
|
||||||
shouldBop = autoBop;
|
|
||||||
if (goBop)
|
if (goBop)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < length; i++)
|
for (int i = 0; i < length; i++)
|
||||||
|
|
|
@ -21,7 +21,7 @@ namespace HeavenStudio.Games.Loaders
|
||||||
parameters = new List<Param>()
|
parameters = new List<Param>()
|
||||||
{
|
{
|
||||||
new Param("bop", true, "Bop", "Should the drummers bop?"),
|
new Param("bop", true, "Bop", "Should the drummers bop?"),
|
||||||
new Param("autoBop", true, "Bop (Auto)", "Should the drummers auto bop?")
|
new Param("autoBop", false, "Bop (Auto)", "Should the drummers auto bop?")
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
new GameAction("drum", "Hit Drum")
|
new GameAction("drum", "Hit Drum")
|
||||||
|
@ -121,9 +121,6 @@ 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 int count = 0;
|
public int count = 0;
|
||||||
|
|
||||||
public static DrummingPractice instance;
|
public static DrummingPractice instance;
|
||||||
|
@ -132,6 +129,7 @@ namespace HeavenStudio.Games
|
||||||
{
|
{
|
||||||
instance = this;
|
instance = this;
|
||||||
SetMiis();
|
SetMiis();
|
||||||
|
SetupBopRegion("drummingPractice", "bop", "autoBop");
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnGameSwitch(double beat)
|
public override void OnGameSwitch(double beat)
|
||||||
|
@ -146,7 +144,7 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public override void OnBeatPulse(double beat)
|
public override void OnBeatPulse(double beat)
|
||||||
{
|
{
|
||||||
if (goBop)
|
if (BeatIsInBopRegion(beat))
|
||||||
{
|
{
|
||||||
Bop();
|
Bop();
|
||||||
}
|
}
|
||||||
|
@ -191,7 +189,6 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public void SetBop(double beat, float length, bool shouldBop, bool autoBop)
|
public void SetBop(double beat, float length, bool shouldBop, bool autoBop)
|
||||||
{
|
{
|
||||||
goBop = autoBop;
|
|
||||||
if (shouldBop)
|
if (shouldBop)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < length; i++)
|
for (int i = 0; i < length; i++)
|
||||||
|
|
|
@ -218,8 +218,6 @@ namespace HeavenStudio.Games
|
||||||
private static bool wantKamoneAlt = false;
|
private static bool wantKamoneAlt = false;
|
||||||
private static double wantBigReady = double.MinValue;
|
private static double wantBigReady = double.MinValue;
|
||||||
private bool hasJumped = false;
|
private bool hasJumped = false;
|
||||||
private bool goBopIdol = true;
|
|
||||||
private bool goBopSpec = true;
|
|
||||||
private bool noJudgement = false;
|
private bool noJudgement = false;
|
||||||
private bool noJudgementInput = false;
|
private bool noJudgementInput = false;
|
||||||
|
|
||||||
|
@ -235,6 +233,8 @@ namespace HeavenStudio.Games
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
instance = this;
|
instance = this;
|
||||||
|
SetupBopRegion("fanClub", "bop", "type2", false);
|
||||||
|
AddBopRegionEventsInt("fanClub", "finish", 3);
|
||||||
Spectators = new List<GameObject>();
|
Spectators = new List<GameObject>();
|
||||||
idolAnimator = Arisa.GetComponent<Animator>();
|
idolAnimator = Arisa.GetComponent<Animator>();
|
||||||
backupRAnimator = Blue.GetComponent<Animator>();
|
backupRAnimator = Blue.GetComponent<Animator>();
|
||||||
|
@ -357,6 +357,9 @@ namespace HeavenStudio.Games
|
||||||
public override void OnBeatPulse(double beat)
|
public override void OnBeatPulse(double beat)
|
||||||
{
|
{
|
||||||
var cond = Conductor.instance;
|
var cond = Conductor.instance;
|
||||||
|
int whoBops = BeatIsInBopRegionInt(beat);
|
||||||
|
bool goBopIdol = whoBops == (int)IdolBopType.Both || whoBops == (int)IdolBopType.Idol;
|
||||||
|
bool goBopSpec = whoBops == (int)IdolBopType.Both || whoBops == (int)IdolBopType.Spectators;
|
||||||
if (goBopIdol)
|
if (goBopIdol)
|
||||||
{
|
{
|
||||||
if (!(cond.songPositionInBeatsAsDouble >= noBop.startBeat && cond.songPositionInBeatsAsDouble < noBop.startBeat + noBop.length))
|
if (!(cond.songPositionInBeatsAsDouble >= noBop.startBeat && cond.songPositionInBeatsAsDouble < noBop.startBeat + noBop.length))
|
||||||
|
@ -398,8 +401,6 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public void Bop(double beat, float length, int target = (int) IdolBopType.Both, int targetAuto = (int)IdolBopType.Both)
|
public void Bop(double beat, float length, int target = (int) IdolBopType.Both, int targetAuto = (int)IdolBopType.Both)
|
||||||
{
|
{
|
||||||
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++)
|
for (int i = 0; i < length; i++)
|
||||||
{
|
{
|
||||||
BeatAction.New(instance, new List<BeatAction.Action>()
|
BeatAction.New(instance, new List<BeatAction.Action>()
|
||||||
|
@ -934,7 +935,6 @@ namespace HeavenStudio.Games
|
||||||
if (noJudgement) return;
|
if (noJudgement) return;
|
||||||
noJudgement = true;
|
noJudgement = true;
|
||||||
noJudgementInput = false;
|
noJudgementInput = false;
|
||||||
goBopSpec = false;
|
|
||||||
|
|
||||||
// recreation of sub61
|
// recreation of sub61
|
||||||
BeatAction.New(this, new List<BeatAction.Action>()
|
BeatAction.New(this, new List<BeatAction.Action>()
|
||||||
|
|
|
@ -124,6 +124,12 @@ namespace HeavenStudio.Games
|
||||||
BackgroundColorUpdate();
|
BackgroundColorUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void OnPlay(double beat)
|
||||||
|
{
|
||||||
|
base.OnPlay(beat);
|
||||||
|
OnGameSwitch(beat);
|
||||||
|
}
|
||||||
|
|
||||||
public override void OnGameSwitch(double beat)
|
public override void OnGameSwitch(double beat)
|
||||||
{
|
{
|
||||||
base.OnGameSwitch(beat);
|
base.OnGameSwitch(beat);
|
||||||
|
@ -247,10 +253,5 @@ namespace HeavenStudio.Games
|
||||||
BackgroundColorGrad(lastEventGrad.beat, lastEventGrad.length, lastEventGrad["start"], lastEventGrad["end"], lastEventGrad["ease"]);
|
BackgroundColorGrad(lastEventGrad.beat, lastEventGrad.length, lastEventGrad["start"], lastEventGrad["end"], lastEventGrad["ease"]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnPlay(double beat)
|
|
||||||
{
|
|
||||||
PersistColor(beat);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -692,6 +692,7 @@ namespace HeavenStudio.Games
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
instance = this;
|
instance = this;
|
||||||
|
SetupBopRegion("karateman", "bop", "toggle");
|
||||||
|
|
||||||
KarateManPot.ResetLastCombo();
|
KarateManPot.ResetLastCombo();
|
||||||
|
|
||||||
|
@ -1168,13 +1169,13 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public override void OnBeatPulse(double beat)
|
public override void OnBeatPulse(double beat)
|
||||||
{
|
{
|
||||||
|
bool autoBop = BeatIsInBopRegion(beat);
|
||||||
|
Joe.bop.length = autoBop ? float.MaxValue : 0;
|
||||||
Joe.RequestBop();
|
Joe.RequestBop();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ToggleBop(double beat, float length, bool toggle, bool autoBop)
|
public void ToggleBop(double beat, float length, bool toggle, bool autoBop)
|
||||||
{
|
{
|
||||||
Joe.bop.length = autoBop ? float.MaxValue : 0;
|
|
||||||
|
|
||||||
if (toggle)
|
if (toggle)
|
||||||
{
|
{
|
||||||
var actions = new List<BeatAction.Action>();
|
var actions = new List<BeatAction.Action>();
|
||||||
|
|
|
@ -94,10 +94,8 @@ namespace HeavenStudio.Games
|
||||||
[Header("Variables")]
|
[Header("Variables")]
|
||||||
bool intervalStarted;
|
bool intervalStarted;
|
||||||
double intervalStartBeat;
|
double intervalStartBeat;
|
||||||
bool bossBop = true;
|
|
||||||
public double beatInterval = 4f;
|
public double beatInterval = 4f;
|
||||||
public bool bossAnnoyed = false;
|
public bool bossAnnoyed = false;
|
||||||
private double lastReportedBeat = 0f;
|
|
||||||
const string sfxName = "meatGrinder/";
|
const string sfxName = "meatGrinder/";
|
||||||
|
|
||||||
public static MeatGrinder instance;
|
public static MeatGrinder instance;
|
||||||
|
@ -124,6 +122,7 @@ namespace HeavenStudio.Games
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
instance = this;
|
instance = this;
|
||||||
|
SetupBopRegion("meatGrinder", "bop", "bossBop");
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnDestroy()
|
void OnDestroy()
|
||||||
|
@ -161,7 +160,7 @@ namespace HeavenStudio.Games
|
||||||
{
|
{
|
||||||
if (!BossAnim.IsPlayingAnimationName("BossCall")
|
if (!BossAnim.IsPlayingAnimationName("BossCall")
|
||||||
&& !BossAnim.IsPlayingAnimationName("BossSignal")
|
&& !BossAnim.IsPlayingAnimationName("BossSignal")
|
||||||
&& bossBop)
|
&& BeatIsInBopRegion(beat))
|
||||||
{
|
{
|
||||||
BossAnim.DoScaledAnimationAsync(bossAnnoyed ? "BossMiss" : "Bop", 0.5f);
|
BossAnim.DoScaledAnimationAsync(bossAnnoyed ? "BossMiss" : "Bop", 0.5f);
|
||||||
}
|
}
|
||||||
|
@ -169,7 +168,6 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public void Bop(double beat, double length, bool doesBop, bool autoBop)
|
public void Bop(double beat, double length, bool doesBop, bool autoBop)
|
||||||
{
|
{
|
||||||
bossBop = autoBop;
|
|
||||||
if (doesBop)
|
if (doesBop)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < length; i++)
|
for (int i = 0; i < length; i++)
|
||||||
|
|
|
@ -6,6 +6,7 @@ using HeavenStudio.Util;
|
||||||
using HeavenStudio.Common;
|
using HeavenStudio.Common;
|
||||||
using HeavenStudio.InputSystem;
|
using HeavenStudio.InputSystem;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace HeavenStudio.Games
|
namespace HeavenStudio.Games
|
||||||
{
|
{
|
||||||
|
@ -448,6 +449,82 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region Bop
|
||||||
|
|
||||||
|
protected enum DefaultBopEnum
|
||||||
|
{
|
||||||
|
Off = 0,
|
||||||
|
On = 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
private Dictionary<double, int> bopRegion = new();
|
||||||
|
|
||||||
|
public bool BeatIsInBopRegion(double beat)
|
||||||
|
{
|
||||||
|
if (bopRegion.Count == 0) return true;
|
||||||
|
|
||||||
|
int bop = 0;
|
||||||
|
foreach (var item in bopRegion)
|
||||||
|
{
|
||||||
|
if (beat < item.Key) break;
|
||||||
|
if (beat >= item.Key) bop = item.Value;
|
||||||
|
}
|
||||||
|
return (DefaultBopEnum)bop == DefaultBopEnum.On;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int BeatIsInBopRegionInt(double beat)
|
||||||
|
{
|
||||||
|
if (bopRegion.Count == 0) return 0;
|
||||||
|
|
||||||
|
int bop = 0;
|
||||||
|
foreach (var item in bopRegion)
|
||||||
|
{
|
||||||
|
if (beat < item.Key) break;
|
||||||
|
if (beat >= item.Key) bop = item.Value;
|
||||||
|
}
|
||||||
|
return bop;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void SetupBopRegion(string gameName, string eventName, string toggleName, bool isBool = true)
|
||||||
|
{
|
||||||
|
var allEvents = EventCaller.GetAllInGameManagerList(gameName, new string[] { eventName });
|
||||||
|
allEvents.Sort((x, y) => x.beat.CompareTo(y.beat));
|
||||||
|
|
||||||
|
foreach (var e in allEvents)
|
||||||
|
{
|
||||||
|
if (isBool)
|
||||||
|
{
|
||||||
|
bopRegion.Add(e.beat, e[toggleName] ? 1 : 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
bopRegion.Add(e.beat, e[toggleName]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void AddBopRegionEvents(string gameName, string eventName, bool allowBop)
|
||||||
|
{
|
||||||
|
var allEvents = EventCaller.GetAllInGameManagerList(gameName, new string[] { eventName });
|
||||||
|
foreach (var e in allEvents)
|
||||||
|
{
|
||||||
|
bopRegion.Add(e.beat, allowBop ? 1 : 0);
|
||||||
|
}
|
||||||
|
bopRegion = bopRegion.OrderBy(pair => pair.Value).ToDictionary(pair => pair.Key, pair => pair.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void AddBopRegionEventsInt(string gameName, string eventName, int allowBop)
|
||||||
|
{
|
||||||
|
var allEvents = EventCaller.GetAllInGameManagerList(gameName, new string[] { eventName });
|
||||||
|
foreach (var e in allEvents)
|
||||||
|
{
|
||||||
|
bopRegion.Add(e.beat, allowBop);
|
||||||
|
}
|
||||||
|
bopRegion = bopRegion.OrderBy(pair => pair.Value).ToDictionary(pair => pair.Key, pair => pair.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
private void OnDestroy()
|
private void OnDestroy()
|
||||||
{
|
{
|
||||||
foreach (var evt in scheduledInputs)
|
foreach (var evt in scheduledInputs)
|
||||||
|
|
|
@ -17,14 +17,14 @@ namespace HeavenStudio.Games.Loaders
|
||||||
{
|
{
|
||||||
function = delegate {
|
function = delegate {
|
||||||
var e = eventCaller.currentEntity;
|
var e = eventCaller.currentEntity;
|
||||||
MunchyMonk.instance.Bop(e.beat, e["bop"], e["autoBop"]);
|
MunchyMonk.instance.Bop(e.beat, e.length, e["bop"]);
|
||||||
},
|
},
|
||||||
parameters = new List<Param>()
|
parameters = new List<Param>()
|
||||||
{
|
{
|
||||||
new Param("bop", true, "Monk Bops?", "Does the monk bop?"),
|
new Param("bop", true, "Monk Bops?", "Does the monk bop?"),
|
||||||
new Param("autoBop", false, "Monk Bops? (Auto)", "Does the monk auto bop?"),
|
new Param("autoBop", false, "Monk Bops? (Auto)", "Does the monk auto bop?"),
|
||||||
},
|
},
|
||||||
defaultLength = 0.5f,
|
resizable = true
|
||||||
},
|
},
|
||||||
new GameAction("MonkMove", "Monk Move")
|
new GameAction("MonkMove", "Monk Move")
|
||||||
{
|
{
|
||||||
|
@ -209,7 +209,6 @@ namespace HeavenStudio.Games
|
||||||
public double lastReportedBeat = 0f;
|
public double lastReportedBeat = 0f;
|
||||||
public bool needBlush;
|
public bool needBlush;
|
||||||
public bool isStaring;
|
public bool isStaring;
|
||||||
bool monkBop = true;
|
|
||||||
|
|
||||||
// these variables are static so that they can be set outside of the game/stay the same between game switches
|
// these variables are static so that they can be set outside of the game/stay the same between game switches
|
||||||
static public int howManyGulps;
|
static public int howManyGulps;
|
||||||
|
@ -241,6 +240,7 @@ namespace HeavenStudio.Games
|
||||||
{
|
{
|
||||||
instance = this;
|
instance = this;
|
||||||
Baby.SetActive(!disableBaby);
|
Baby.SetActive(!disableBaby);
|
||||||
|
SetupBopRegion("munchyMonk", "Bop", "autoBop");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
|
@ -352,7 +352,7 @@ namespace HeavenStudio.Games
|
||||||
public override void OnBeatPulse(double beat)
|
public override void OnBeatPulse(double beat)
|
||||||
{
|
{
|
||||||
if ((MonkAnim.IsAnimationNotPlaying() || MonkAnim.IsPlayingAnimationName("Bop") || MonkAnim.IsPlayingAnimationName("Idle"))
|
if ((MonkAnim.IsAnimationNotPlaying() || MonkAnim.IsPlayingAnimationName("Bop") || MonkAnim.IsPlayingAnimationName("Idle"))
|
||||||
&& monkBop
|
&& BeatIsInBopRegion(beat)
|
||||||
&& !isStaring)
|
&& !isStaring)
|
||||||
{
|
{
|
||||||
MonkAnim.DoScaledAnimationAsync("Bop", 0.5f);
|
MonkAnim.DoScaledAnimationAsync("Bop", 0.5f);
|
||||||
|
@ -370,15 +370,23 @@ namespace HeavenStudio.Games
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Bop(double beat, bool bop, bool autoBop)
|
public void Bop(double beat, double length, bool bop)
|
||||||
|
{
|
||||||
|
if (!bop) return;
|
||||||
|
List<BeatAction.Action> actions = new();
|
||||||
|
|
||||||
|
for (int i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
actions.Add(new(beat + i, delegate
|
||||||
{
|
{
|
||||||
monkBop = autoBop;
|
|
||||||
if (bop) {
|
|
||||||
needBlush = false;
|
needBlush = false;
|
||||||
MonkAnim.DoScaledAnimationAsync("Bop", 0.5f);
|
MonkAnim.DoScaledAnimationAsync("Bop", 0.5f);
|
||||||
if (growLevel == 4) BrowAnim.DoScaledAnimationAsync("Bop", 0.5f);
|
if (growLevel == 4) BrowAnim.DoScaledAnimationAsync("Bop", 0.5f);
|
||||||
if (growLevel > 0) StacheAnim.DoScaledAnimationAsync($"Bop{growLevel}", 0.5f);
|
if (growLevel > 0) StacheAnim.DoScaledAnimationAsync($"Bop{growLevel}", 0.5f);
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (actions.Count > 0) BeatAction.New(this, actions);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void InputFunctions(int whichVar, float state = 0)
|
public void InputFunctions(int whichVar, float state = 0)
|
||||||
|
|
|
@ -229,6 +229,7 @@ namespace HeavenStudio.Games
|
||||||
void Awake()
|
void Awake()
|
||||||
{
|
{
|
||||||
instance = this;
|
instance = this;
|
||||||
|
SetupBopRegion("octopusMachine", "bop", "keepBop");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
|
@ -263,8 +264,11 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
if (autoAction) bopIterate++;
|
if (autoAction) bopIterate++;
|
||||||
|
|
||||||
|
bool keepBop = BeatIsInBopRegion(beat);
|
||||||
|
|
||||||
foreach (var octo in octopodes)
|
foreach (var octo in octopodes)
|
||||||
{
|
{
|
||||||
|
octo.cantBop = !keepBop;
|
||||||
octo.RequestBop();
|
octo.RequestBop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -339,7 +343,6 @@ namespace HeavenStudio.Games
|
||||||
foreach (var octo in octopodes) {
|
foreach (var octo in octopodes) {
|
||||||
if (singleBop) octo.PlayAnimation(whichBop);
|
if (singleBop) octo.PlayAnimation(whichBop);
|
||||||
if (keepBop) bopStatus = whichBop;
|
if (keepBop) bopStatus = whichBop;
|
||||||
octo.cantBop = !keepBop;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -152,8 +152,6 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public Paddlers paddlers;
|
public Paddlers paddlers;
|
||||||
|
|
||||||
private bool goBop = true;
|
|
||||||
|
|
||||||
public static RhythmRally instance;
|
public static RhythmRally instance;
|
||||||
|
|
||||||
private void Awake()
|
private void Awake()
|
||||||
|
@ -166,6 +164,7 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
playerAnim.Play("Idle", 0, 0);
|
playerAnim.Play("Idle", 0, 0);
|
||||||
opponentAnim.Play("Idle", 0, 0);
|
opponentAnim.Play("Idle", 0, 0);
|
||||||
|
SetupBopRegion("rhythmRally", "bop", "bopAuto");
|
||||||
}
|
}
|
||||||
|
|
||||||
const float tableHitTime = 0.58f;
|
const float tableHitTime = 0.58f;
|
||||||
|
@ -366,7 +365,7 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public override void OnBeatPulse(double beat)
|
public override void OnBeatPulse(double beat)
|
||||||
{
|
{
|
||||||
if (goBop && !inPose)
|
if (BeatIsInBopRegion(beat) && !inPose)
|
||||||
{
|
{
|
||||||
BopSingle();
|
BopSingle();
|
||||||
}
|
}
|
||||||
|
@ -374,7 +373,6 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public void Bop(double beat, float length, bool bop, bool bopAuto)
|
public void Bop(double beat, float length, bool bop, bool bopAuto)
|
||||||
{
|
{
|
||||||
goBop = bopAuto;
|
|
||||||
if (bop)
|
if (bop)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < length; i++)
|
for (int i = 0; i < length; i++)
|
||||||
|
|
|
@ -70,23 +70,21 @@ namespace HeavenStudio.Games
|
||||||
public Animator CloseCrane;
|
public Animator CloseCrane;
|
||||||
public Animator FarCrane;
|
public Animator FarCrane;
|
||||||
public GameObject Player;
|
public GameObject Player;
|
||||||
private bool shouldBop = true;
|
|
||||||
private bool missed;
|
private bool missed;
|
||||||
private bool hasSlurped;
|
private bool hasSlurped;
|
||||||
|
|
||||||
public GameEvent bop = new GameEvent();
|
|
||||||
|
|
||||||
public static RhythmSomen instance;
|
public static RhythmSomen instance;
|
||||||
|
|
||||||
// Start is called before the first frame update
|
// Start is called before the first frame update
|
||||||
void Awake()
|
void Awake()
|
||||||
{
|
{
|
||||||
instance = this;
|
instance = this;
|
||||||
|
SetupBopRegion("rhythmSomen", "bop", "toggle");
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnBeatPulse(double beat)
|
public override void OnBeatPulse(double beat)
|
||||||
{
|
{
|
||||||
if (shouldBop) SomenPlayer.DoScaledAnimationAsync("HeadBob", 0.5f);
|
if (BeatIsInBopRegion(beat)) SomenPlayer.DoScaledAnimationAsync("HeadBob", 0.5f);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Update()
|
void Update()
|
||||||
|
@ -125,7 +123,6 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public void ToggleBop(double beat, float length, bool bopOrNah, bool autoBop)
|
public void ToggleBop(double beat, float length, bool bopOrNah, bool autoBop)
|
||||||
{
|
{
|
||||||
shouldBop = autoBop;
|
|
||||||
if (bopOrNah)
|
if (bopOrNah)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < length; i++)
|
for (int i = 0; i < length; i++)
|
||||||
|
|
|
@ -143,7 +143,6 @@ namespace HeavenStudio.Games
|
||||||
private float currentZoomCamBeat;
|
private float currentZoomCamBeat;
|
||||||
private Vector3 lastCamPos = new Vector3(0, 0, -10);
|
private Vector3 lastCamPos = new Vector3(0, 0, -10);
|
||||||
private Vector3 currentCamPos = new Vector3(0, 0, -10);
|
private Vector3 currentCamPos = new Vector3(0, 0, -10);
|
||||||
private bool shouldBop = true;
|
|
||||||
private bool missedBigGuy;
|
private bool missedBigGuy;
|
||||||
private bool reporterShouldHeart;
|
private bool reporterShouldHeart;
|
||||||
private bool hitPose;
|
private bool hitPose;
|
||||||
|
@ -201,6 +200,7 @@ namespace HeavenStudio.Games
|
||||||
void Awake()
|
void Awake()
|
||||||
{
|
{
|
||||||
instance = this;
|
instance = this;
|
||||||
|
SetupBopRegion("ringside", "toggleBop", "bop");
|
||||||
var camEvents = EventCaller.GetAllInGameManagerList("ringside", new string[] { "poseForTheFans" });
|
var camEvents = EventCaller.GetAllInGameManagerList("ringside", new string[] { "poseForTheFans" });
|
||||||
List<RiqEntity> tempEvents = new List<RiqEntity>();
|
List<RiqEntity> tempEvents = new List<RiqEntity>();
|
||||||
for (int i = 0; i < camEvents.Count; i++)
|
for (int i = 0; i < camEvents.Count; i++)
|
||||||
|
@ -220,7 +220,7 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public override void OnBeatPulse(double beat)
|
public override void OnBeatPulse(double beat)
|
||||||
{
|
{
|
||||||
if (shouldBop && canBop)
|
if (BeatIsInBopRegion(beat) && canBop)
|
||||||
{
|
{
|
||||||
if (UnityEngine.Random.Range(1, 18) == 1)
|
if (UnityEngine.Random.Range(1, 18) == 1)
|
||||||
{
|
{
|
||||||
|
@ -331,7 +331,6 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public void ToggleBop(double beat, float length, bool startBopping, bool autoBop)
|
public void ToggleBop(double beat, float length, bool startBopping, bool autoBop)
|
||||||
{
|
{
|
||||||
shouldBop = autoBop;
|
|
||||||
if (startBopping)
|
if (startBopping)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < length; i++)
|
for (int i = 0; i < length; i++)
|
||||||
|
@ -510,7 +509,7 @@ namespace HeavenStudio.Games
|
||||||
new BeatAction.Action(beat + 1, delegate { PoseCheck(beat); }),
|
new BeatAction.Action(beat + 1, delegate { PoseCheck(beat); }),
|
||||||
new BeatAction.Action(beat + 4f, delegate
|
new BeatAction.Action(beat + 4f, delegate
|
||||||
{
|
{
|
||||||
if (shouldBop)
|
if (BeatIsInBopRegion(beat + 4f))
|
||||||
{
|
{
|
||||||
if (UnityEngine.Random.Range(1, 18) == 1)
|
if (UnityEngine.Random.Range(1, 18) == 1)
|
||||||
{
|
{
|
||||||
|
|
|
@ -89,6 +89,7 @@ namespace HeavenStudio.Games.Loaders
|
||||||
|
|
||||||
namespace HeavenStudio.Games
|
namespace HeavenStudio.Games
|
||||||
{
|
{
|
||||||
|
using JetBrains.Annotations;
|
||||||
using Scripts_NtrSamurai;
|
using Scripts_NtrSamurai;
|
||||||
|
|
||||||
public class SamuraiSliceNtr : Minigame
|
public class SamuraiSliceNtr : Minigame
|
||||||
|
@ -102,15 +103,12 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public enum WhoBops
|
public enum WhoBops
|
||||||
{
|
{
|
||||||
Samurai = 0,
|
Samurai = 2,
|
||||||
Children = 1,
|
Children = 1,
|
||||||
Both = 2,
|
Both = 0,
|
||||||
None = 3
|
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;
|
||||||
|
@ -167,10 +165,15 @@ namespace HeavenStudio.Games
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
instance = this;
|
instance = this;
|
||||||
|
SetupBopRegion("samuraiSliceNtr", "bop", "whoBopsAuto", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnBeatPulse(double beat)
|
public override void OnBeatPulse(double beat)
|
||||||
{
|
{
|
||||||
|
int whoBopsAuto = BeatIsInBopRegionInt(beat);
|
||||||
|
bool goBopSamurai = whoBopsAuto == (int)WhoBops.Samurai || whoBopsAuto == (int)WhoBops.Both;
|
||||||
|
bool goBopChild = whoBopsAuto == (int)WhoBops.Children || whoBopsAuto == (int)WhoBops.Both;
|
||||||
|
|
||||||
if (goBopSamurai) player.Bop();
|
if (goBopSamurai) player.Bop();
|
||||||
if (goBopChild) childParent.GetComponent<NtrSamuraiChild>().Bop();
|
if (goBopChild) childParent.GetComponent<NtrSamuraiChild>().Bop();
|
||||||
}
|
}
|
||||||
|
@ -187,8 +190,6 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public void Bop(double beat, float length, int whoBops, int whoBopsAuto)
|
public void Bop(double 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++)
|
for (int i = 0; i < length; i++)
|
||||||
{
|
{
|
||||||
BeatAction.New(instance, new List<BeatAction.Action>()
|
BeatAction.New(instance, new List<BeatAction.Action>()
|
||||||
|
|
|
@ -136,9 +136,34 @@ namespace HeavenStudio.Games.Scripts_SeeSaw
|
||||||
transform.position = GetPathPositionFromBeat(currentPath, Math.Max(startBeat, currentBeat), startBeat);
|
transform.position = GetPathPositionFromBeat(currentPath, Math.Max(startBeat, currentBeat), startBeat);
|
||||||
break;
|
break;
|
||||||
case JumpState.HighOutOut:
|
case JumpState.HighOutOut:
|
||||||
|
if (currentBeat >= startBeat + 1 && !hasChangedAnimMidAir && see)
|
||||||
|
{
|
||||||
|
if (!hasChangedAnimMidAir) anim.Play("Jump_OutOut_Fall", 0, 0);
|
||||||
|
hasChangedAnimMidAir = true;
|
||||||
|
}
|
||||||
|
transform.position = GetPathPositionFromBeat(currentPath, Math.Max(startBeat, currentBeat), startBeat);
|
||||||
|
break;
|
||||||
case JumpState.HighOutIn:
|
case JumpState.HighOutIn:
|
||||||
|
if (currentBeat >= startBeat + 1 && !hasChangedAnimMidAir && see)
|
||||||
|
{
|
||||||
|
if (!hasChangedAnimMidAir) anim.Play("Jump_OutIn_Tuck", 0, 0);
|
||||||
|
hasChangedAnimMidAir = true;
|
||||||
|
}
|
||||||
|
transform.position = GetPathPositionFromBeat(currentPath, Math.Max(startBeat, currentBeat), startBeat);
|
||||||
|
break;
|
||||||
case JumpState.HighInOut:
|
case JumpState.HighInOut:
|
||||||
|
if (currentBeat >= startBeat + 1 && !hasChangedAnimMidAir && see)
|
||||||
|
{
|
||||||
|
if (!hasChangedAnimMidAir) anim.Play("Jump_InOut_Tuck", 0, 0);
|
||||||
|
hasChangedAnimMidAir = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case JumpState.HighInIn:
|
case JumpState.HighInIn:
|
||||||
|
if (currentBeat >= startBeat + 1 && !hasChangedAnimMidAir && see)
|
||||||
|
{
|
||||||
|
if (!hasChangedAnimMidAir) anim.Play("Jump_InIn_Fall", 0, 0);
|
||||||
|
hasChangedAnimMidAir = true;
|
||||||
|
}
|
||||||
transform.position = GetPathPositionFromBeat(currentPath, Math.Max(startBeat, currentBeat), startBeat);
|
transform.position = GetPathPositionFromBeat(currentPath, Math.Max(startBeat, currentBeat), startBeat);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -144,7 +144,6 @@ namespace HeavenStudio.Games
|
||||||
public Animator Gramps;
|
public Animator Gramps;
|
||||||
public Animator Hit;
|
public Animator Hit;
|
||||||
public GameObject Player;
|
public GameObject Player;
|
||||||
[NonSerialized] public bool shouldBop = true;
|
|
||||||
bool canBop = true;
|
bool canBop = true;
|
||||||
bool grampsCanBop = true;
|
bool grampsCanBop = true;
|
||||||
public bool spaceGrampsShouldBop = false;
|
public bool spaceGrampsShouldBop = false;
|
||||||
|
@ -226,11 +225,12 @@ namespace HeavenStudio.Games
|
||||||
instance = this;
|
instance = this;
|
||||||
colorStart = defaultBGColor;
|
colorStart = defaultBGColor;
|
||||||
colorEnd = defaultBGColor;
|
colorEnd = defaultBGColor;
|
||||||
|
SetupBopRegion("spaceDance", "bop", "auto");
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnBeatPulse(double beat)
|
public override void OnBeatPulse(double beat)
|
||||||
{
|
{
|
||||||
if (shouldBop)
|
if (BeatIsInBopRegion(beat))
|
||||||
{
|
{
|
||||||
Bop();
|
Bop();
|
||||||
}
|
}
|
||||||
|
@ -656,7 +656,6 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public void EpicBop(double beat, float length, bool autoDancers, bool dancers, bool autoGramps, bool gramps)
|
public void EpicBop(double beat, float length, bool autoDancers, bool dancers, bool autoGramps, bool gramps)
|
||||||
{
|
{
|
||||||
shouldBop = autoDancers;
|
|
||||||
spaceGrampsShouldBop = autoGramps;
|
spaceGrampsShouldBop = autoGramps;
|
||||||
if (dancers || gramps)
|
if (dancers || gramps)
|
||||||
{
|
{
|
||||||
|
|
|
@ -110,9 +110,7 @@ namespace HeavenStudio.Games
|
||||||
[SerializeField] private float monkeyJumpHeight = 3f;
|
[SerializeField] private float monkeyJumpHeight = 3f;
|
||||||
[SerializeField] private float maxFlashOpacity = 0.8f;
|
[SerializeField] private float maxFlashOpacity = 0.8f;
|
||||||
|
|
||||||
private GameEvent bop = new();
|
|
||||||
private bool canBop = true;
|
private bool canBop = true;
|
||||||
private bool shouldBop = true;
|
|
||||||
|
|
||||||
private double jumpStartBeat = double.MinValue;
|
private double jumpStartBeat = double.MinValue;
|
||||||
|
|
||||||
|
@ -121,11 +119,12 @@ namespace HeavenStudio.Games
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
instance = this;
|
instance = this;
|
||||||
|
SetupBopRegion("tapTrial", "bop", "toggle2");
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnBeatPulse(double beat)
|
public override void OnBeatPulse(double beat)
|
||||||
{
|
{
|
||||||
if (shouldBop) SingleBop();
|
if (BeatIsInBopRegion(beat)) SingleBop();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Update()
|
private void Update()
|
||||||
|
@ -253,7 +252,6 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public void Bop(double beat, float length, bool bop, bool autoBop)
|
public void Bop(double beat, float length, bool bop, bool autoBop)
|
||||||
{
|
{
|
||||||
shouldBop = autoBop;
|
|
||||||
if (bop)
|
if (bop)
|
||||||
{
|
{
|
||||||
List<BeatAction.Action> actions = new();
|
List<BeatAction.Action> actions = new();
|
||||||
|
@ -443,14 +441,14 @@ namespace HeavenStudio.Games
|
||||||
private void MissJump(PlayerActionEvent caller)
|
private void MissJump(PlayerActionEvent caller)
|
||||||
{
|
{
|
||||||
player.JumpTapMiss(false);
|
player.JumpTapMiss(false);
|
||||||
if (giraffe.IsAnimationNotPlaying()) giraffe.DoScaledAnimationAsync("Miss", 0.5f);
|
if (giraffe.IsAnimationNotPlaying() && currentAnim != GiraffeAnimation.Exit) giraffe.DoScaledAnimationAsync("Miss", 0.5f);
|
||||||
ResetScroll();
|
ResetScroll();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void MissJumpFinal(PlayerActionEvent caller)
|
private void MissJumpFinal(PlayerActionEvent caller)
|
||||||
{
|
{
|
||||||
player.JumpTapMiss(true);
|
player.JumpTapMiss(true);
|
||||||
if (giraffe.IsAnimationNotPlaying()) giraffe.DoScaledAnimationAsync("Miss", 0.5f);
|
if (giraffe.IsAnimationNotPlaying() && currentAnim != GiraffeAnimation.Exit) giraffe.DoScaledAnimationAsync("Miss", 0.5f);
|
||||||
ResetScroll();
|
ResetScroll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -228,8 +228,6 @@ namespace HeavenStudio.Games
|
||||||
bool doingPoses = false;
|
bool doingPoses = false;
|
||||||
bool shouldHold = false;
|
bool shouldHold = false;
|
||||||
double crouchEndBeat;
|
double crouchEndBeat;
|
||||||
public bool shouldBop = true;
|
|
||||||
public GameEvent bop = new GameEvent();
|
|
||||||
static List<QueuedPose> queuedPoses = new List<QueuedPose>();
|
static List<QueuedPose> queuedPoses = new List<QueuedPose>();
|
||||||
static List<QueuedCrouch> queuedCrouches = new List<QueuedCrouch>();
|
static List<QueuedCrouch> queuedCrouches = new List<QueuedCrouch>();
|
||||||
[Header("Components")]
|
[Header("Components")]
|
||||||
|
@ -255,11 +253,12 @@ namespace HeavenStudio.Games
|
||||||
void Awake()
|
void Awake()
|
||||||
{
|
{
|
||||||
instance = this;
|
instance = this;
|
||||||
|
SetupBopRegion("theDazzles", "bop", "toggle");
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnBeatPulse(double beat)
|
public override void OnBeatPulse(double beat)
|
||||||
{
|
{
|
||||||
if (shouldBop)
|
if (BeatIsInBopRegion(beat))
|
||||||
{
|
{
|
||||||
foreach (var girl in npcGirls)
|
foreach (var girl in npcGirls)
|
||||||
{
|
{
|
||||||
|
@ -353,7 +352,6 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public void Bop(double beat, float length, bool goBop, bool autoBop)
|
public void Bop(double beat, float length, bool goBop, bool autoBop)
|
||||||
{
|
{
|
||||||
shouldBop = autoBop;
|
|
||||||
if (goBop)
|
if (goBop)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < length; i++)
|
for (int i = 0; i < length; i++)
|
||||||
|
|
|
@ -147,8 +147,6 @@ namespace HeavenStudio.Games
|
||||||
Dictionary<double, RiqEntity> passBallDict = new();
|
Dictionary<double, RiqEntity> passBallDict = new();
|
||||||
string currentPassType;
|
string currentPassType;
|
||||||
public static TossBoys instance;
|
public static TossBoys instance;
|
||||||
bool shouldBop = true;
|
|
||||||
public GameEvent bop = new GameEvent();
|
|
||||||
float currentEventLength;
|
float currentEventLength;
|
||||||
|
|
||||||
const int IAAka = IAMAXCAT;
|
const int IAAka = IAMAXCAT;
|
||||||
|
@ -236,6 +234,7 @@ namespace HeavenStudio.Games
|
||||||
instance = this;
|
instance = this;
|
||||||
colorStart = defaultBGColor;
|
colorStart = defaultBGColor;
|
||||||
colorEnd = defaultBGColor;
|
colorEnd = defaultBGColor;
|
||||||
|
SetupBopRegion("tossBoys", "bop", "auto");
|
||||||
}
|
}
|
||||||
|
|
||||||
new void OnDrawGizmos()
|
new void OnDrawGizmos()
|
||||||
|
@ -264,7 +263,7 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public override void OnBeatPulse(double beat)
|
public override void OnBeatPulse(double beat)
|
||||||
{
|
{
|
||||||
if (shouldBop)
|
if (BeatIsInBopRegion(beat))
|
||||||
{
|
{
|
||||||
SingleBop();
|
SingleBop();
|
||||||
}
|
}
|
||||||
|
@ -352,7 +351,6 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public void Bop(double beat, float length, bool auto, bool goBop)
|
public void Bop(double beat, float length, bool auto, bool goBop)
|
||||||
{
|
{
|
||||||
shouldBop = auto;
|
|
||||||
if (goBop)
|
if (goBop)
|
||||||
{
|
{
|
||||||
List<BeatAction.Action> bops = new List<BeatAction.Action>();
|
List<BeatAction.Action> bops = new List<BeatAction.Action>();
|
||||||
|
|
|
@ -114,12 +114,13 @@ namespace HeavenStudio.Games
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
instance = this;
|
instance = this;
|
||||||
|
SetupBopRegion("trickClass", "bop", "autoBop");
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnBeatPulse(double beat)
|
public override void OnBeatPulse(double beat)
|
||||||
{
|
{
|
||||||
var cond = Conductor.instance;
|
var cond = Conductor.instance;
|
||||||
if (!goBop) return;
|
if (!BeatIsInBopRegion(beat)) return;
|
||||||
if ((!playerReady) && cond.songPositionInBeatsAsDouble > playerBopStart)
|
if ((!playerReady) && cond.songPositionInBeatsAsDouble > playerBopStart)
|
||||||
playerAnim.DoScaledAnimationAsync("Bop");
|
playerAnim.DoScaledAnimationAsync("Bop");
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue