From 13d43aca1fad3d8faac9b5e97afc848994500ec3 Mon Sep 17 00:00:00 2001 From: AstrlJelly Date: Wed, 30 Aug 2023 22:41:57 -0400 Subject: [PATCH] bg still broken :( --- Assets/Resources/Games/karateman.prefab | 3 + .../Sfx/games/karateMan/lightbulbNtrHit.ogg | Bin 0 -> 25588 bytes .../games/karateMan/lightbulbNtrHit.ogg.meta | 22 + .../Sfx/games/karateMan/lightbulbNtrOut.ogg | Bin 0 -> 36190 bytes .../games/karateMan/lightbulbNtrOut.ogg.meta | 22 + .../KarateMan/anime/word/Word.controller | 12 +- .../Games/KarateMan/anime/word/Word00.anim | 14 +- .../Games/KarateMan/anime/word/Word01.anim | 14 +- .../Games/KarateMan/anime/word/Word02.anim | 380 +++++----- .../Games/KarateMan/anime/word/Word03.anim | 380 +++++----- .../Games/KarateMan/anime/word/Word04.anim | 14 +- .../Games/KarateMan/anime/word/Word06.anim | 14 +- Assets/Scripts/Games/KarateMan/KarateMan.cs | 648 ++++++++---------- .../Scripts/Games/KarateMan/KarateManJoe.cs | 16 +- .../KarateMan/KarateManNoriController.cs | 6 +- .../Scripts/Games/KarateMan/KarateManPot.cs | 100 +-- Packages/manifest.json | 2 +- Packages/packages-lock.json | 2 +- 18 files changed, 815 insertions(+), 834 deletions(-) create mode 100644 Assets/Resources/Sfx/games/karateMan/lightbulbNtrHit.ogg create mode 100644 Assets/Resources/Sfx/games/karateMan/lightbulbNtrHit.ogg.meta create mode 100644 Assets/Resources/Sfx/games/karateMan/lightbulbNtrOut.ogg create mode 100644 Assets/Resources/Sfx/games/karateMan/lightbulbNtrOut.ogg.meta diff --git a/Assets/Resources/Games/karateman.prefab b/Assets/Resources/Games/karateman.prefab index 10016c52f..81a327cff 100644 --- a/Assets/Resources/Games/karateman.prefab +++ b/Assets/Resources/Games/karateman.prefab @@ -97608,12 +97608,15 @@ MonoBehaviour: Nori: {fileID: 3856490809560069226} MappingMaterial: {fileID: 2100000, guid: 01a12550d4a6d8141bbbdf4ce2700eea, type: 2} Word: {fileID: 8471847813194768760} + currentBgEffect: 0 BGPlane: {fileID: 5423016352081307686} BGEffect: {fileID: 185016033042157469} BGGradient: {fileID: 2790469215453043610} BGBlood: {fileID: 5404947306895237780} BGRadial: {fileID: 8238140095837895901} Wind: {fileID: 9003203273337395302} + Effects: [] + EffectsGO: [] SnowEffect: {fileID: 6887086164110906535} SnowEffectGO: {fileID: 1216083719847348373} FireEffect: {fileID: 5127881687583584282} diff --git a/Assets/Resources/Sfx/games/karateMan/lightbulbNtrHit.ogg b/Assets/Resources/Sfx/games/karateMan/lightbulbNtrHit.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5cf415cd9454b9202d3057b2bfd16e86312ccbe5 GIT binary patch literal 25588 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 literal 0 HcmV?d00001 diff --git a/Assets/Resources/Sfx/games/karateMan/lightbulbNtrHit.ogg.meta b/Assets/Resources/Sfx/games/karateMan/lightbulbNtrHit.ogg.meta new file mode 100644 index 000000000..defa8721f --- /dev/null +++ b/Assets/Resources/Sfx/games/karateMan/lightbulbNtrHit.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 6ad9f1d601adf9a4889010293bb854d4 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sfx/games/karateMan/lightbulbNtrOut.ogg b/Assets/Resources/Sfx/games/karateMan/lightbulbNtrOut.ogg new file mode 100644 index 0000000000000000000000000000000000000000..257073da7043b15d9c0c0b8533eb13df37917a05 GIT binary patch literal 36190 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 !a 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­=Ye5wf4YszzGCnI zNYMIJGB77}e8@DkM~X=Pz%HqIZ}X#B@%dyMk)wRIS+VVp+58(}fz60j@@4Fh!LP6O zD$s}1Gj}#x&g4W3tp3Q6I&XdYdme7Rhrbwx2z-=BsgT6Ese$* zSEScBo4e`qp6=;>JZHQ9*)80+s%*AC@$dCvm9yYl@|1QanD+R{_qDGCNaVhFhFs>K z-=&|?FG8%~;?ix5|KZ#)KRf=Pj`!a@Y&Q62GWma^o!Nhj$bSpg)6?EJk^ZjxJAS`^ zHp^FhfwZea1tCr=LXQaQzVJ}X*~TfQ#5rTUH(N{+hke#WGDK8Z3Rn(I)0FCHtqY_h z&{a9k|_afkR4V*>6UK zNUS8DdKA2xXU~nQ#bEeQ1NgLOtyW?=Xx^gz>D#V@vvTeNaQQM-P4k%~otuMPf2*Xn z`H1I{k+T~eM^*a;VV{%hYca+H`9q$*D{vfHrjF^wj}6V&tTwJR;?~Z)6DX>0nAhROGq;hZ;Q87bu@C;)+u?c z$*r}RZ?ZDRE`c;6R+tj69JO9P2J8iann?z`5;gjGo8wwnoMw*$XNZwz%gIs2;g^4Vk6pTFXypDi;k%Bk!dZOwk^>$gqM`cK#@Wbt3s%(dcd9i2MHU!`FRWNiSsF z)bUNuK3O)GRLa6gDXG(Qx+4Ah?h%qDIiQP+zg8q}Q8`(JPakMvcB5tfvZYq6b6Mnm z`UOb&nd0QLY03HcnhUw@nu z+I*9b`~|s}bUiETy5z6KDS};^?{bLDa%4@4Kj}Jh_77Hif{LLWV&}Abi&T#j25P-` zi09kASQQl_A03G7m7Z`{7e31HUWHT%)F(3RUGCDMjhj5NqY|^v?+X4&Z+l+(m+(26 zZfC%7<(G1tAEtANoO3I~y|}T$e|Ej;x?-QqJX_RR8$C&-F}ZGB-oiMwO2Zi2w6A=3 z`KF687pM7S2V--v-SeWPC4Il=H(zGEUu}si;QFw~XGcYskJkMu-F~sQ{-IE#2uUs9 zJYweXL)j|ir^Fz!2k5FsZugk+ED8Yqd&D(Oa7EPnRrZ;UG5O}!S?3aF8Ihpc##F6g zXn>HRp%OMF0QF2Md5>znIzq;k2<6)Ut_9DTZV*)S4bk`4g28BjbUuRix`;e+RImhq z4GKG+dd%bgVoa8vd6mU)PoN0&(keZ723&R&vcWhB(`%Z zZ>+_C^{{Bh&cOoLXwD3$Y}Qa+Fd0io{^{m@)V9&nTFXw#o?6z4y-94mmfjmitp;c6 zq-0~p)D4@8U$`{K-36CJ5F?ceZk z`cj%t5@9S-9WqFt$jyP5{&*UQBk={oM2OszXK^LUzo^G^3^#bY`4)Ts5|(v&lspBceldpwaDPZt$M z?{`OI_ryh?LjX!XJ1FI}szl=dRaG zH72;CGynDSWZ|_3q%B;@u#{PK`R3n(7L3y*8HlW#{U$ZU9MgPaC6a}EZzvgr{vzl5 zLsy?(jsNle_WtgGVkXdb|32LFo3G>eDum&zNHANr+kq@PFps$P)?oGz4feEU6;%DU%yOM4dsj^bHnlrK24x1FjS6J~Zf7|pjNjzxzIk^F5ew2@%Kw-4htx~N zm$9xdJ!_b--!<9XNnA0EAz5$IeofRPQ&1rHdq7zD`mSI}de7}|0nQVJ^P%ftBH6d0 zX)8a%fS1whJ9Touf(-I$+WC-E2H=ya=h(Ql?*`jSQnuYE=5l-RFFDXqj|--3nztD4 zz!0ajfy?3MNIWw#9ZWHV@d#vnYzxFzxtv%QU~3B?S9DmxeUr7`Poa=)aumf{1x)ocIHG^ET>JO)*W$2g zd4`=1+_>Dr>c#W!ce5d#HUA#}bRYe=&#ZWL`4X1@yzkF>O{nq9I+z-6WEXva+qK*e zbtdw7vajT7L8EVIF0Xri_O=4xHUr;@{yZ8J8dZt7zU&BZ?j(cnMzB6gOsi0?y>|sl zPkATJe%o4^`Q{Wo-s{Qew>u!~BidPFcUERa(%t+!D}gm9tV0DgkuJWO7O`{+F1g7$ ze`)ZBVGH5#C_&cKBQe}r_nF!ksHSprAL2!#o`GSZy_lxZUM+Fx4ZKdA9VfZ*wtK}E zoI}`CMo5N~)tTQ-rpT}REh7|>-Gpcxw@53oYPBr&L1Ue63y&Uocx<~nCTKm zt4lyoowf6BC(9SyY|Y;)Tapbbwdwz04#eV%?-FOLvAVEQ+1g{>+RqeAlTz)77cvFo zt+|nR9alLU^U1PP?dHJ}GJ31nTm5l3aKkqum8{v^`<}iR1N+@ApN8yh4-SXEpmo<# z{yu4M9+daHFzR_(t2o%6xai%z&1_m{oW*8Ke8!w~5>9x@dSZQar=k-tk&XvMXF6E% z3ur3)a^lgsV7~QM- z&7`gYmpVKtSa^@YI@AyUbK9ar)7Fcct9Lb(?DXB}i$H#+cUW7qj-M(Uzz!;G z6=S;dc!L3`SB^KJH9qV!ViMtSc&>9Qz5CYRpR=&~26`vZ1wH3_E7iSo`GH~a`bv!FK&VOkFMLe_02nw7lZ+lmV_e0x#Z>5u;xhFVwKgDBY4tt_W#P%gW_3W>{ zDgZ*MS6GNB8hf0)j_Pn4H6e|e6H$>{P0@uB#?DD&^pCJ+wrK(xkx@cSCG@RRb+Xh& zf|~04R!LtS!WC$Yg>s?oP2Io50cXg z;T?=>jKf_*Z_P_9+Yq(0VH z*7$u{h1%{K)wRpzduX5WW9%;iXaJMjD5>KxDzP`0ob<{(pE{EFXDs}tK+XF#PdFFg zFTTI26^$94_Podq#DMd|>-7r7@nq#ewnQ-+lI41PG`juq=|5`?-XqhYK*suh|SYMV@SDBA#ErO-$qrwe`=gYVh;TDPvP8pG&+oF~io z=4I+;K(TNr>d$Fp06^+!p^;h*X@#ie2uGbcl%%>>V4!+UFxm0oTqeoxwSB6V9DjMe zLnhJhOH1@%ek-Dw;U?_HBNw#QiX)zYE(D`Tm`@&x*n4nqD@>HuLg(qw7ay ydZEfScZXUR&H8^ZP>?XGYEST(C9QlFb|_N^!pR^Tjs-0N?`52?!_v literal 0 HcmV?d00001 diff --git a/Assets/Resources/Sfx/games/karateMan/lightbulbNtrOut.ogg.meta b/Assets/Resources/Sfx/games/karateMan/lightbulbNtrOut.ogg.meta new file mode 100644 index 000000000..84d887ce1 --- /dev/null +++ b/Assets/Resources/Sfx/games/karateMan/lightbulbNtrOut.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 86fe61ed86cc5bd4cb8da587c4e4cc48 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word.controller b/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word.controller index cab9a2b21..a2b73c402 100644 --- a/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word.controller +++ b/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word.controller @@ -7,7 +7,7 @@ AnimatorState: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: Word01 + m_Name: Word04 m_Speed: 1 m_CycleOffset: 0 m_Transitions: [] @@ -33,7 +33,7 @@ AnimatorState: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: Word06 + m_Name: Word00 m_Speed: 1 m_CycleOffset: 0 m_Transitions: [] @@ -59,7 +59,7 @@ AnimatorState: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: Word04 + m_Name: Word03 m_Speed: 1 m_CycleOffset: 0 m_Transitions: [] @@ -85,7 +85,7 @@ AnimatorState: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: Word00 + m_Name: Word06 m_Speed: 1 m_CycleOffset: 0 m_Transitions: [] @@ -111,7 +111,7 @@ AnimatorState: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: Word03 + m_Name: Word02 m_Speed: 1 m_CycleOffset: 0 m_Transitions: [] @@ -211,7 +211,7 @@ AnimatorState: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: Word02 + m_Name: Word01 m_Speed: 1 m_CycleOffset: 0 m_Transitions: [] diff --git a/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word00.anim b/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word00.anim index f31800a24..fb928d49a 100644 --- a/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word00.anim +++ b/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word00.anim @@ -84,7 +84,7 @@ AnimationClip: m_Curve: - serializedVersion: 3 time: 0 - value: {x: -5.8, y: 1.5, z: 0} + value: {x: -4, y: 1, z: 0} inSlope: {x: 0, y: 0, z: 0} outSlope: {x: 0, y: 0, z: 0} tangentMode: 0 @@ -116,14 +116,14 @@ AnimationClip: m_PPtrCurves: - curve: - time: 0 - value: {fileID: 0} + value: {fileID: 7844610654334982216, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} attribute: m_Sprite path: Exclaim classID: 212 script: {fileID: 0} - curve: - time: 0 - value: {fileID: -8701253081129557890, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} + value: {fileID: -5610626859485252548, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} attribute: m_Sprite path: Main classID: 212 @@ -206,8 +206,8 @@ AnimationClip: customType: 4 isPPtrCurve: 0 pptrCurveMapping: - - {fileID: 0} - - {fileID: -8701253081129557890, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} + - {fileID: 7844610654334982216, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} + - {fileID: -5610626859485252548, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} - {fileID: 0} m_AnimationClipSettings: serializedVersion: 2 @@ -349,7 +349,7 @@ AnimationClip: m_Curve: - serializedVersion: 3 time: 0 - value: -5.8 + value: -4 inSlope: 0 outSlope: 0 tangentMode: 136 @@ -368,7 +368,7 @@ AnimationClip: m_Curve: - serializedVersion: 3 time: 0 - value: 1.5 + value: 1 inSlope: 0 outSlope: 0 tangentMode: 136 diff --git a/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word01.anim b/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word01.anim index 8ca43ae39..93b71c79a 100644 --- a/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word01.anim +++ b/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word01.anim @@ -84,7 +84,7 @@ AnimationClip: m_Curve: - serializedVersion: 3 time: 0 - value: {x: -4.72, y: 1.6, z: 0} + value: {x: -4.4, y: 1, z: 0} inSlope: {x: 0, y: 0, z: 0} outSlope: {x: 0, y: 0, z: 0} tangentMode: 0 @@ -116,14 +116,14 @@ AnimationClip: m_PPtrCurves: - curve: - time: 0 - value: {fileID: 0} + value: {fileID: 7844610654334982216, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} attribute: m_Sprite path: Exclaim classID: 212 script: {fileID: 0} - curve: - time: 0 - value: {fileID: -2089169352201841507, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} + value: {fileID: 1214470814246859168, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} attribute: m_Sprite path: Main classID: 212 @@ -206,8 +206,8 @@ AnimationClip: customType: 4 isPPtrCurve: 0 pptrCurveMapping: - - {fileID: 0} - - {fileID: -2089169352201841507, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} + - {fileID: 7844610654334982216, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} + - {fileID: 1214470814246859168, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} - {fileID: 0} m_AnimationClipSettings: serializedVersion: 2 @@ -349,7 +349,7 @@ AnimationClip: m_Curve: - serializedVersion: 3 time: 0 - value: -4.72 + value: -4.4 inSlope: 0 outSlope: 0 tangentMode: 136 @@ -368,7 +368,7 @@ AnimationClip: m_Curve: - serializedVersion: 3 time: 0 - value: 1.6 + value: 1 inSlope: 0 outSlope: 0 tangentMode: 136 diff --git a/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word02.anim b/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word02.anim index c576beafb..284fe51bb 100644 --- a/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word02.anim +++ b/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word02.anim @@ -14,6 +14,22 @@ AnimationClip: m_RotationCurves: [] m_CompressedRotationCurves: [] m_EulerCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 0, y: 0, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: Sub - curve: serializedVersion: 2 m_Curve: @@ -46,12 +62,13 @@ AnimationClip: m_PostInfinity: 2 m_RotationOrder: 4 path: Main + m_PositionCurves: - curve: serializedVersion: 2 m_Curve: - serializedVersion: 3 time: 0 - value: {x: 0, y: 0, z: 0} + value: {x: -1.403, y: 1, z: 0} inSlope: {x: 0, y: 0, z: 0} outSlope: {x: 0, y: 0, z: 0} tangentMode: 0 @@ -62,7 +79,6 @@ AnimationClip: m_PostInfinity: 2 m_RotationOrder: 4 path: Sub - m_PositionCurves: - curve: serializedVersion: 2 m_Curve: @@ -95,25 +111,16 @@ AnimationClip: m_PostInfinity: 2 m_RotationOrder: 4 path: Main - - curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: {x: -1.403, y: 1, z: 0} - inSlope: {x: 0, y: 0, z: 0} - outSlope: {x: 0, y: 0, z: 0} - tangentMode: 0 - weightedMode: 0 - inWeight: {x: 0, y: 0.33333334, z: 0.33333334} - outWeight: {x: 0, y: 0.33333334, z: 0.33333334} - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - path: Sub m_ScaleCurves: [] m_FloatCurves: [] m_PPtrCurves: + - curve: + - time: 0 + value: {fileID: 0} + attribute: m_Sprite + path: Sub + classID: 212 + script: {fileID: 0} - curve: - time: 0 value: {fileID: 7844610654334982216, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} @@ -123,18 +130,11 @@ AnimationClip: script: {fileID: 0} - curve: - time: 0 - value: {fileID: 1214470814246859168, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} + value: {fileID: 3512758288782026156, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} attribute: m_Sprite path: Main classID: 212 script: {fileID: 0} - - curve: - - time: 0 - value: {fileID: 0} - attribute: m_Sprite - path: Sub - classID: 212 - script: {fileID: 0} m_SampleRate: 60 m_WrapMode: 0 m_Bounds: @@ -142,6 +142,13 @@ AnimationClip: m_Extent: {x: 0, y: 0, z: 0} m_ClipBindingConstant: genericBindings: + - serializedVersion: 2 + path: 1615840316 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 - serializedVersion: 2 path: 224731958 attribute: 0 @@ -158,11 +165,11 @@ AnimationClip: isPPtrCurve: 1 - serializedVersion: 2 path: 1615840316 - attribute: 0 + attribute: 1 script: {fileID: 0} - typeID: 212 - customType: 23 - isPPtrCurve: 1 + typeID: 4 + customType: 0 + isPPtrCurve: 0 - serializedVersion: 2 path: 224731958 attribute: 1 @@ -179,10 +186,10 @@ AnimationClip: isPPtrCurve: 0 - serializedVersion: 2 path: 1615840316 - attribute: 1 + attribute: 4 script: {fileID: 0} typeID: 4 - customType: 0 + customType: 4 isPPtrCurve: 0 - serializedVersion: 2 path: 224731958 @@ -198,17 +205,10 @@ AnimationClip: typeID: 4 customType: 4 isPPtrCurve: 0 - - serializedVersion: 2 - path: 1615840316 - attribute: 4 - script: {fileID: 0} - typeID: 4 - customType: 4 - isPPtrCurve: 0 pptrCurveMapping: - - {fileID: 7844610654334982216, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} - - {fileID: 1214470814246859168, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} - {fileID: 0} + - {fileID: 7844610654334982216, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} + - {fileID: 3512758288782026156, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} m_AnimationClipSettings: serializedVersion: 2 m_AdditiveReferencePoseClip: {fileID: 0} @@ -230,6 +230,63 @@ AnimationClip: m_HeightFromFeet: 0 m_Mirror: 0 m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1.403 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: Sub + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: Sub + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: Sub + classID: 4 + script: {fileID: 0} - curve: serializedVersion: 2 m_Curve: @@ -287,63 +344,6 @@ AnimationClip: path: Exclaim classID: 4 script: {fileID: 0} - - curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 136 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - attribute: localEulerAnglesRaw.x - path: Exclaim - classID: 4 - script: {fileID: 0} - - curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 136 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - attribute: localEulerAnglesRaw.y - path: Exclaim - classID: 4 - script: {fileID: 0} - - curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 136 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - attribute: localEulerAnglesRaw.z - path: Exclaim - classID: 4 - script: {fileID: 0} - curve: serializedVersion: 2 m_Curve: @@ -417,7 +417,7 @@ AnimationClip: m_PostInfinity: 2 m_RotationOrder: 4 attribute: localEulerAnglesRaw.x - path: Main + path: Sub classID: 4 script: {fileID: 0} - curve: @@ -436,7 +436,7 @@ AnimationClip: m_PostInfinity: 2 m_RotationOrder: 4 attribute: localEulerAnglesRaw.y - path: Main + path: Sub classID: 4 script: {fileID: 0} - curve: @@ -455,63 +455,6 @@ AnimationClip: m_PostInfinity: 2 m_RotationOrder: 4 attribute: localEulerAnglesRaw.z - path: Main - classID: 4 - script: {fileID: 0} - - curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: -1.403 - inSlope: 0 - outSlope: 0 - tangentMode: 136 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - attribute: m_LocalPosition.x - path: Sub - classID: 4 - script: {fileID: 0} - - curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 136 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - attribute: m_LocalPosition.y - path: Sub - classID: 4 - script: {fileID: 0} - - curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 136 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - attribute: m_LocalPosition.z path: Sub classID: 4 script: {fileID: 0} @@ -531,7 +474,7 @@ AnimationClip: m_PostInfinity: 2 m_RotationOrder: 4 attribute: localEulerAnglesRaw.x - path: Sub + path: Exclaim classID: 4 script: {fileID: 0} - curve: @@ -550,7 +493,7 @@ AnimationClip: m_PostInfinity: 2 m_RotationOrder: 4 attribute: localEulerAnglesRaw.y - path: Sub + path: Exclaim classID: 4 script: {fileID: 0} - curve: @@ -569,10 +512,97 @@ AnimationClip: m_PostInfinity: 2 m_RotationOrder: 4 attribute: localEulerAnglesRaw.z - path: Sub + path: Exclaim + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: localEulerAnglesRaw.x + path: Main + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: localEulerAnglesRaw.y + path: Main + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: localEulerAnglesRaw.z + path: Main classID: 4 script: {fileID: 0} m_EulerEditorCurves: + - curve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalEulerAngles.x + path: Sub + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalEulerAngles.y + path: Sub + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalEulerAngles.z + path: Sub + classID: 4 + script: {fileID: 0} - curve: serializedVersion: 2 m_Curve: [] @@ -633,36 +663,6 @@ AnimationClip: path: Main classID: 4 script: {fileID: 0} - - curve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - attribute: m_LocalEulerAngles.x - path: Sub - classID: 4 - script: {fileID: 0} - - curve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - attribute: m_LocalEulerAngles.y - path: Sub - classID: 4 - script: {fileID: 0} - - curve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - attribute: m_LocalEulerAngles.z - path: Sub - classID: 4 - script: {fileID: 0} m_HasGenericRootTransform: 0 m_HasMotionFloatCurves: 0 m_Events: [] diff --git a/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word03.anim b/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word03.anim index 34b2b836b..f021864db 100644 --- a/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word03.anim +++ b/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word03.anim @@ -14,22 +14,6 @@ AnimationClip: m_RotationCurves: [] m_CompressedRotationCurves: [] m_EulerCurves: - - curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: {x: 0, y: 0, z: 0} - inSlope: {x: 0, y: 0, z: 0} - outSlope: {x: 0, y: 0, z: 0} - tangentMode: 0 - weightedMode: 0 - inWeight: {x: 0, y: 0.33333334, z: 0.33333334} - outWeight: {x: 0, y: 0.33333334, z: 0.33333334} - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - path: Sub - curve: serializedVersion: 2 m_Curve: @@ -62,13 +46,12 @@ AnimationClip: m_PostInfinity: 2 m_RotationOrder: 4 path: Main - m_PositionCurves: - curve: serializedVersion: 2 m_Curve: - serializedVersion: 3 time: 0 - value: {x: -1.403, y: 1, z: 0} + value: {x: 0, y: 0, z: 0} inSlope: {x: 0, y: 0, z: 0} outSlope: {x: 0, y: 0, z: 0} tangentMode: 0 @@ -79,6 +62,7 @@ AnimationClip: m_PostInfinity: 2 m_RotationOrder: 4 path: Sub + m_PositionCurves: - curve: serializedVersion: 2 m_Curve: @@ -111,16 +95,25 @@ AnimationClip: m_PostInfinity: 2 m_RotationOrder: 4 path: Main + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: -1.403, y: 1, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: Sub m_ScaleCurves: [] m_FloatCurves: [] m_PPtrCurves: - - curve: - - time: 0 - value: {fileID: 0} - attribute: m_Sprite - path: Sub - classID: 212 - script: {fileID: 0} - curve: - time: 0 value: {fileID: 7844610654334982216, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} @@ -130,11 +123,18 @@ AnimationClip: script: {fileID: 0} - curve: - time: 0 - value: {fileID: 3512758288782026156, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} + value: {fileID: -1278344009149830369, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} attribute: m_Sprite path: Main classID: 212 script: {fileID: 0} + - curve: + - time: 0 + value: {fileID: 0} + attribute: m_Sprite + path: Sub + classID: 212 + script: {fileID: 0} m_SampleRate: 60 m_WrapMode: 0 m_Bounds: @@ -142,13 +142,6 @@ AnimationClip: m_Extent: {x: 0, y: 0, z: 0} m_ClipBindingConstant: genericBindings: - - serializedVersion: 2 - path: 1615840316 - attribute: 0 - script: {fileID: 0} - typeID: 212 - customType: 23 - isPPtrCurve: 1 - serializedVersion: 2 path: 224731958 attribute: 0 @@ -165,11 +158,11 @@ AnimationClip: isPPtrCurve: 1 - serializedVersion: 2 path: 1615840316 - attribute: 1 + attribute: 0 script: {fileID: 0} - typeID: 4 - customType: 0 - isPPtrCurve: 0 + typeID: 212 + customType: 23 + isPPtrCurve: 1 - serializedVersion: 2 path: 224731958 attribute: 1 @@ -186,10 +179,10 @@ AnimationClip: isPPtrCurve: 0 - serializedVersion: 2 path: 1615840316 - attribute: 4 + attribute: 1 script: {fileID: 0} typeID: 4 - customType: 4 + customType: 0 isPPtrCurve: 0 - serializedVersion: 2 path: 224731958 @@ -205,10 +198,17 @@ AnimationClip: typeID: 4 customType: 4 isPPtrCurve: 0 + - serializedVersion: 2 + path: 1615840316 + attribute: 4 + script: {fileID: 0} + typeID: 4 + customType: 4 + isPPtrCurve: 0 pptrCurveMapping: - - {fileID: 0} - {fileID: 7844610654334982216, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} - - {fileID: 3512758288782026156, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} + - {fileID: -1278344009149830369, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} + - {fileID: 0} m_AnimationClipSettings: serializedVersion: 2 m_AdditiveReferencePoseClip: {fileID: 0} @@ -230,63 +230,6 @@ AnimationClip: m_HeightFromFeet: 0 m_Mirror: 0 m_EditorCurves: - - curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: -1.403 - inSlope: 0 - outSlope: 0 - tangentMode: 136 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - attribute: m_LocalPosition.x - path: Sub - classID: 4 - script: {fileID: 0} - - curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 136 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - attribute: m_LocalPosition.y - path: Sub - classID: 4 - script: {fileID: 0} - - curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 136 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - attribute: m_LocalPosition.z - path: Sub - classID: 4 - script: {fileID: 0} - curve: serializedVersion: 2 m_Curve: @@ -344,6 +287,63 @@ AnimationClip: path: Exclaim classID: 4 script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: localEulerAnglesRaw.x + path: Exclaim + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: localEulerAnglesRaw.y + path: Exclaim + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: localEulerAnglesRaw.z + path: Exclaim + classID: 4 + script: {fileID: 0} - curve: serializedVersion: 2 m_Curve: @@ -417,7 +417,7 @@ AnimationClip: m_PostInfinity: 2 m_RotationOrder: 4 attribute: localEulerAnglesRaw.x - path: Sub + path: Main classID: 4 script: {fileID: 0} - curve: @@ -436,7 +436,7 @@ AnimationClip: m_PostInfinity: 2 m_RotationOrder: 4 attribute: localEulerAnglesRaw.y - path: Sub + path: Main classID: 4 script: {fileID: 0} - curve: @@ -455,6 +455,63 @@ AnimationClip: m_PostInfinity: 2 m_RotationOrder: 4 attribute: localEulerAnglesRaw.z + path: Main + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1.403 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: Sub + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: Sub + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z path: Sub classID: 4 script: {fileID: 0} @@ -474,7 +531,7 @@ AnimationClip: m_PostInfinity: 2 m_RotationOrder: 4 attribute: localEulerAnglesRaw.x - path: Exclaim + path: Sub classID: 4 script: {fileID: 0} - curve: @@ -493,7 +550,7 @@ AnimationClip: m_PostInfinity: 2 m_RotationOrder: 4 attribute: localEulerAnglesRaw.y - path: Exclaim + path: Sub classID: 4 script: {fileID: 0} - curve: @@ -512,97 +569,10 @@ AnimationClip: m_PostInfinity: 2 m_RotationOrder: 4 attribute: localEulerAnglesRaw.z - path: Exclaim - classID: 4 - script: {fileID: 0} - - curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 136 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - attribute: localEulerAnglesRaw.x - path: Main - classID: 4 - script: {fileID: 0} - - curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 136 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - attribute: localEulerAnglesRaw.y - path: Main - classID: 4 - script: {fileID: 0} - - curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 136 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - attribute: localEulerAnglesRaw.z - path: Main + path: Sub classID: 4 script: {fileID: 0} m_EulerEditorCurves: - - curve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - attribute: m_LocalEulerAngles.x - path: Sub - classID: 4 - script: {fileID: 0} - - curve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - attribute: m_LocalEulerAngles.y - path: Sub - classID: 4 - script: {fileID: 0} - - curve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - attribute: m_LocalEulerAngles.z - path: Sub - classID: 4 - script: {fileID: 0} - curve: serializedVersion: 2 m_Curve: [] @@ -663,6 +633,36 @@ AnimationClip: path: Main classID: 4 script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalEulerAngles.x + path: Sub + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalEulerAngles.y + path: Sub + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalEulerAngles.z + path: Sub + classID: 4 + script: {fileID: 0} m_HasGenericRootTransform: 0 m_HasMotionFloatCurves: 0 m_Events: [] diff --git a/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word04.anim b/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word04.anim index d9b819928..ce75e1a27 100644 --- a/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word04.anim +++ b/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word04.anim @@ -84,7 +84,7 @@ AnimationClip: m_Curve: - serializedVersion: 3 time: 0 - value: {x: -4.4, y: 1, z: 0} + value: {x: -4.72, y: 1.6, z: 0} inSlope: {x: 0, y: 0, z: 0} outSlope: {x: 0, y: 0, z: 0} tangentMode: 0 @@ -116,14 +116,14 @@ AnimationClip: m_PPtrCurves: - curve: - time: 0 - value: {fileID: 7844610654334982216, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} + value: {fileID: 0} attribute: m_Sprite path: Exclaim classID: 212 script: {fileID: 0} - curve: - time: 0 - value: {fileID: -1278344009149830369, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} + value: {fileID: -2089169352201841507, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} attribute: m_Sprite path: Main classID: 212 @@ -206,8 +206,8 @@ AnimationClip: customType: 4 isPPtrCurve: 0 pptrCurveMapping: - - {fileID: 7844610654334982216, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} - - {fileID: -1278344009149830369, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} + - {fileID: 0} + - {fileID: -2089169352201841507, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} - {fileID: 0} m_AnimationClipSettings: serializedVersion: 2 @@ -349,7 +349,7 @@ AnimationClip: m_Curve: - serializedVersion: 3 time: 0 - value: -4.4 + value: -4.72 inSlope: 0 outSlope: 0 tangentMode: 136 @@ -368,7 +368,7 @@ AnimationClip: m_Curve: - serializedVersion: 3 time: 0 - value: 1 + value: 1.6 inSlope: 0 outSlope: 0 tangentMode: 136 diff --git a/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word06.anim b/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word06.anim index fbebd7445..a493e78f9 100644 --- a/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word06.anim +++ b/Assets/Resources/Sprites/Games/KarateMan/anime/word/Word06.anim @@ -84,7 +84,7 @@ AnimationClip: m_Curve: - serializedVersion: 3 time: 0 - value: {x: -4, y: 1, z: 0} + value: {x: -5.8, y: 1.5, z: 0} inSlope: {x: 0, y: 0, z: 0} outSlope: {x: 0, y: 0, z: 0} tangentMode: 0 @@ -116,14 +116,14 @@ AnimationClip: m_PPtrCurves: - curve: - time: 0 - value: {fileID: 7844610654334982216, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} + value: {fileID: 0} attribute: m_Sprite path: Exclaim classID: 212 script: {fileID: 0} - curve: - time: 0 - value: {fileID: -5610626859485252548, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} + value: {fileID: -8701253081129557890, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} attribute: m_Sprite path: Main classID: 212 @@ -206,8 +206,8 @@ AnimationClip: customType: 4 isPPtrCurve: 0 pptrCurveMapping: - - {fileID: 7844610654334982216, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} - - {fileID: -5610626859485252548, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} + - {fileID: 0} + - {fileID: -8701253081129557890, guid: 57ea36e082ce7e44581fa6fdb2cd7a49, type: 3} - {fileID: 0} m_AnimationClipSettings: serializedVersion: 2 @@ -349,7 +349,7 @@ AnimationClip: m_Curve: - serializedVersion: 3 time: 0 - value: -4 + value: -5.8 inSlope: 0 outSlope: 0 tangentMode: 136 @@ -368,7 +368,7 @@ AnimationClip: m_Curve: - serializedVersion: 3 time: 0 - value: 1 + value: 1.5 inSlope: 0 outSlope: 0 tangentMode: 136 diff --git a/Assets/Scripts/Games/KarateMan/KarateMan.cs b/Assets/Scripts/Games/KarateMan/KarateMan.cs index 2d9c67a5d..12df64a0d 100644 --- a/Assets/Scripts/Games/KarateMan/KarateMan.cs +++ b/Assets/Scripts/Games/KarateMan/KarateMan.cs @@ -14,45 +14,10 @@ namespace HeavenStudio.Games.Loaders { public static Minigame AddGame(EventCaller eventCaller) { - RiqEntity WarningUpdater(string datamodel, RiqEntity entity) - { - if (datamodel == "karateman/hitX") - { - int newWarning = (int)entity["type"]; - if (entity["type"] < 7) { - newWarning++; - } else { - newWarning = 0; - } - - entity.CreateProperty("whichWarning", newWarning); - entity.CreateProperty("customLength", false); - entity.CreateProperty("cutOut", true); - - entity.dynamicData.Remove("type"); - - entity.datamodel = "karateman/warnings"; - return entity; - } - return null; - } - RiqBeatmap.OnUpdateEntity += WarningUpdater; - - RiqEntity BackgroundUpdater(string datamodel, RiqEntity entity) - { - if (datamodel == "karateman/set background effects") - { - - return entity; - } - return null; - } - RiqBeatmap.OnUpdateEntity += BackgroundUpdater; - - /* + /* what the fuck RiqEntity NameUpdater(string datamodel, RiqEntity entity) { - if (entity.datamodel.Split('/')[0] == "karateman") + if (entity.datamodel.Split('/')[0] == "karateMan") { Debug.Log(datamodel); // this was the only way i could figure out how to convert from that freaky format into an actual color :( @@ -80,7 +45,7 @@ namespace HeavenStudio.Games.Loaders entity.datamodel = entity.datamodel.Remove(0, 9); entity.datamodel = "karateMan" + entity.datamodel; return entity; - } else if (entity.datamodel == "gameManager/switchGame/karateman") { + } else if (entity.datamodel == "gameManager/switchGame/karateMan") { entity.datamodel = "gameManager/switchGame/karateMan"; } return null; @@ -88,7 +53,67 @@ namespace HeavenStudio.Games.Loaders RiqBeatmap.OnUpdateEntity += NameUpdater; */ - return new Minigame("karateman", "Karate Man", "fbca3e", false, false, new List() + RiqEntity WarningUpdater(string datamodel, RiqEntity entity) + { + if (datamodel == "karateman/hitX") + { + int newWarning = (int)entity["type"]; + if (entity["type"] < 7) { + newWarning++; + } else { + newWarning = 0; + } + + entity.CreateProperty("whichWarning", newWarning); + entity.CreateProperty("customLength", false); + entity.CreateProperty("cutOut", true); + + entity.dynamicData.Remove("type"); + + entity.datamodel = "karateMan/warnings"; + return entity; + } + return null; + } + RiqBeatmap.OnUpdateEntity += WarningUpdater; + + RiqEntity BackgroundUpdater(string datamodel, RiqEntity entity) + { + if (datamodel == "karateman/set background effects") + { + + return entity; + } + return null; + } + //RiqBeatmap.OnUpdateEntity += BackgroundUpdater; + + RiqEntity GameCapitalizer(string datamodel, RiqEntity entity) + { + if (datamodel.Split('/')[0] == "karateman") + { + string name = datamodel.Split('/')[1]; + entity.datamodel = "karateMan/" + name; + var tempData = entity.dynamicData.ToDictionary(x => x.Key); + foreach ((string key, dynamic item) in tempData) + { + if (item.GetType() == typeof(Newtonsoft.Json.Linq.JObject)) { + entity.dynamicData[key] = new Color((float)item["r"], (float)item["g"], (float)item["b"]); + } + Debug.Log(key + ", " + item); + } + entity.version = 1; + + return entity; + } else if (datamodel == "gameManager/switchGame/karateman") { + entity.datamodel = "gameManager/switchGame/karateMan"; + return entity; + } + return null; + } + RiqBeatmap.OnUpdateEntity += GameCapitalizer; + + return new Minigame("karateMan", "Karate Man", "fbca3e", false, false, new List() { new GameAction("bop", "Bop") { @@ -124,12 +149,12 @@ namespace HeavenStudio.Games.Loaders function = delegate { var e = eventCaller.currentEntity; KarateMan.instance.CreateBulbSpecial(e.beat, e["type"], e["colorA"], e["type2"]); - KarateMan.CreateItemSFX(e.beat, e["type"], false, true); + KarateMan.CreateBulbSFX(e.beat, e["type"], false); }, inactiveFunction = delegate { var e = eventCaller.currentEntity; KarateMan.QueueBulb(e.beat, e["type"], e["colorA"], e["type2"]); - KarateMan.CreateItemSFX(e.beat, e["type"], false, true); + KarateMan.CreateBulbSFX(e.beat, e["type"], false); }, defaultLength = 2, parameters = new List() @@ -147,12 +172,12 @@ namespace HeavenStudio.Games.Loaders { function = delegate { var e = eventCaller.currentEntity; - KarateMan.instance.Kick(e.beat, e["toggle"], e["type"], e["cutOut"], e["disableVoice"]); + KarateMan.instance.Kick(e.beat, e["toggle"], e["type"], e["pitchVoice"], e["forcePitch"], e["cutOut"], e["disableVoice"]); KarateMan.KickSFX(); }, inactiveFunction = delegate { var e = eventCaller.currentEntity; - KarateMan.QueueKick(e.beat, e["toggle"], e["type"], e["cutOut"], e["disableVoice"]); + KarateMan.QueueKick(e.beat, e["toggle"], e["type"], e["pitchVoice"], e["forcePitch"], e["cutOut"], e["disableVoice"]); KarateMan.KickSFX(); }, defaultLength = 4f, @@ -160,6 +185,11 @@ namespace HeavenStudio.Games.Loaders { new Param("toggle", false, "Contains Ball", "Barrel contains a ball instead of a bomb?"), new Param("type", KarateMan.KarateManFaces.Smirk, "Success Expression", "The facial expression to set Joe to on hit"), + new Param("pitchVoice", false, "Pitch Voice", "Pitch the voice of this cue?", new List() + { + new Param.CollapseParam(x => (bool)x, new string[] { "forcePitch" }), + }), + new Param("forcePitch", new EntityTypes.Float(0.5f, 2f, 1f), "Force Pitch", "Override the automatic pitching if not set to 1"), new Param("cutOut", true, "Cut Out Voice", "Will this cue be cut out by another voice?"), new Param("disableVoice", false, "Disable Voice", "When enabled, there will be no voice during this cue"), } @@ -168,18 +198,23 @@ namespace HeavenStudio.Games.Loaders { function = delegate { var e = eventCaller.currentEntity; - KarateMan.instance.Combo(e.beat, e["type"], e["cutOut"], e["disableVoice"]); + KarateMan.instance.Combo(e.beat, e["type"], e["pitchVoice"], e["forcePitch"], e["cutOut"], e["disableVoice"]); KarateMan.ComboSFX(); }, inactiveFunction = delegate { var e = eventCaller.currentEntity; - KarateMan.QueueCombo(e.beat, e["type"], e["cutOut"], e["disableVoice"]); + KarateMan.QueueCombo(e.beat, e["type"], e["pitchVoice"], e["forcePitch"], e["cutOut"], e["disableVoice"]); KarateMan.ComboSFX(); }, defaultLength = 4, parameters = new List() { new Param("type", KarateMan.KarateManFaces.Happy, "Success Expression", "The facial expression to set Joe to on hit"), + new Param("pitchVoice", false, "Pitch Voice", "Pitch the voice of this cue?", new List() + { + new Param.CollapseParam(x => (bool)x, new string[] { "forcePitch" }), + }), + new Param("forcePitch", new EntityTypes.Float(0.5f, 2f, 1f), "Force Pitch", "Override the automatic pitching if not set to 1"), new Param("cutOut", true, "Cut Out Voice", "Will this cue be cut out by another voice?"), new Param("disableVoice", false, "Disable Voice", "When enabled, there will be no voice during this cue"), } @@ -188,19 +223,24 @@ namespace HeavenStudio.Games.Loaders { function = delegate { var e = eventCaller.currentEntity; - KarateMan.instance.DoWord(e.beat, e.length, e["whichWarning"], e["customLength"]); + KarateMan.instance.DoWord(e.beat, e.length, e["whichWarning"], e["pitchVoice"], e["forcePitch"], e["customLength"]); }, defaultLength = 1f, resizable = true, parameters = new List() { new Param("whichWarning", KarateMan.HitThree.HitThree, "Which Warning", "The warning text to show and the sfx to play"), + new Param("pitchVoice", false, "Pitch Voice", "Pitch the voice of this cue?", new List() + { + new Param.CollapseParam(x => (bool)x, new string[] { "forcePitch" }), + }), + new Param("forcePitch", new EntityTypes.Float(0.5f, 2f, 1f), "Force Pitch", "Override the automatic pitching if not set to 1"), new Param("customLength", false, "Custom Length", "Have the warning text appear for the length of the block"), new Param("cutOut", true, "Cut Out Voice", "Will this cue be cut out by another voice?"), }, inactiveFunction = delegate { var e = eventCaller.currentEntity; - KarateMan.DoWordSound(e.beat, e.length, e["whichWarning"], e["customLength"]); + KarateMan.QueueWord(e.beat, e.length, e["whichWarning"], e["pitchVoice"], e["forcePitch"], e["customLength"]); } }, new GameAction("special camera", "Special Camera") @@ -234,12 +274,12 @@ namespace HeavenStudio.Games.Loaders { function = delegate { var e = eventCaller.currentEntity; - KarateMan.instance.BackgroundColor(e.beat, e.length, e["presetBg"], e["shadowType"], e["fxType"], e["startColor"], e["endColor"], e["bgEase"]); - //KarateMan.instance.SetBgTexture(e["type4"], e["type5"], e["colorC"], e["colorD"]); - }, - defaultLength = 0.5f, - resizable = true, - parameters = new List() + KarateMan.instance.BackgroundColor(e.beat, e.length, e["presetBg"], e["startColor"], e["endColor"], e["bgEase"], e["shadowType"], e["shadowStart"], e["shadowEnd"]); + KarateMan.instance.SetBgFx(e.beat, e.length, e["fxType"], e["textureType"], e["autoColor"], e["startTexture"], e["endTexture"], e["textureEase"]); + }, + defaultLength = 0.5f, + resizable = true, + parameters = new List() // uncomment these collapses when overlapping collapses are implemented { new Param("presetBg", KarateMan.BackgroundType.Yellow, "Preset BG Color", "The preset background type (will by default fade from the existing background color)", new List() { @@ -249,16 +289,27 @@ namespace HeavenStudio.Games.Loaders new Param("endColor", new Color(0.985f, 0.79f, 0.243f), "End BG Color", "When using the Fade background effect, make filter colour fade to this colour"), new Param("bgEase", Util.EasingFunction.Ease.Instant, "BG Color Ease", "Ease to use when fading color", new List() { - // doesn't work with the current CollapseParam implementation //new Param.CollapseParam(x => (int)x != (int)Util.EasingFunction.Ease.Instant, new string[] { "startColor" }) }), new Param("shadowType", KarateMan.ShadowType.Tinted, "Shadow Type", "The shadow type. If Tinted doesn't work with your background color try Custom"), - new Param("shadowColor", new Color(), "Custom Shadow Color", "The shadow color to use when shadow type is set to Custom. When fading the background colour shadows fade to this color"), - new Param("fxType", KarateMan.BackgroundFXType.None, "FX Type", "The background effect to be displayed. Fade uses the entity length to determine colour fading speed"), - new Param("type4", KarateMan.BackgroundTextureType.Plain, "Texture", "The type of background texture to use"), - new Param("type5", KarateMan.ShadowType.Tinted, "Color Filter Type", "The method used to apply colour to the texture"), - new Param("colorC", new Color(), "Custom Filter Color", "The filter color to use when color filter type is set to Custom"), - new Param("colorD", new Color(), "Fading Filter Color", "When using the Fade background effect, make filter colour fade to this colour"), + new Param("shadowStart", new Color(), "Start Shadow Color", "The shadow color to use when shadow type is set to Custom. When fading the background colour shadows fade to this color"), + new Param("shadowEnd", new Color(), "End Shadow Color", "The shadow color to use when shadow type is set to Custom. When fading the background colour shadows fade to this color"), + + new Param("fxType", KarateMan.BackgroundFXType.None, "FX Type", "The background effect to be displayed"), + new Param("textureType", KarateMan.BackgroundTextureType.Plain, "Texture", "The type of background texture to use", new List() + { + new Param.CollapseParam(x => (int)x != (int)KarateMan.BackgroundTextureType.Plain, new string[] { "startTexture", "endTexture" }) + }), + new Param("autoColor", true, "Use BG Color For Texture", "Use a tint of the background color for the ", new List() + { + //new Param.CollapseParam(x => (int)x != (int)KarateMan.ShadowType.Tinted, new string[] { "startTexture", "endTexture" }) + }), + new Param("startTexture", new Color(), "Start Filter Color", "The filter color to use when color filter type is set to Custom"), + new Param("endTexture", new Color(), "End Filter Color", "When using the Fade background effect, make filter colour fade to this colour"), + new Param("textureEase", Util.EasingFunction.Ease.Instant, "Texture Color Ease", "Ease to use when fading color", new List() + { + //new Param.CollapseParam(x => (int)x != (int)Util.EasingFunction.Ease.Instant, new string[] { "startTexture" }) + }), }, }, // new GameAction("set background effects", "Background Appearance (OLD)") @@ -266,7 +317,7 @@ namespace HeavenStudio.Games.Loaders // function = delegate { // var e = eventCaller.currentEntity; // KarateMan.instance.SetBgAndShadowCol(e.beat, e.length, e["type"], e["type2"], e["colorA"], e["colorB"], e["type3"]); - // KarateMan.instance.SetBgTexture(e["type4"], e["type5"], e["colorC"], e["colorD"]); + // KarateMan.instance.SetBgFx(e["type4"], e["type5"], e["colorC"], e["colorD"]); // }, // defaultLength = 0.5f, // resizable = true, @@ -285,7 +336,10 @@ namespace HeavenStudio.Games.Loaders // }, new GameAction("set object colors", "Object Colors") { - function = delegate { var e = eventCaller.currentEntity; KarateMan.UpdateMaterialColour(e["colorA"], e["colorB"], e["colorC"]); }, + function = delegate { + var e = eventCaller.currentEntity; + KarateMan.UpdateMaterialColour(e["colorA"], e["colorB"], e["colorC"]); + }, defaultLength = 0.5f, parameters = new List() { @@ -296,7 +350,10 @@ namespace HeavenStudio.Games.Loaders }, new GameAction("particle effects", "Particle Effects") { - function = delegate { var e = eventCaller.currentEntity; KarateMan.instance.SetParticleEffect(e.beat, e["type"], e["valA"], e["valB"]); }, + function = delegate { + var e = eventCaller.currentEntity; + KarateMan.instance.SetParticleEffect(e.beat, e["type"], e["valA"], e["valB"]); + }, defaultLength = 0.5f, parameters = new List() { @@ -315,12 +372,6 @@ namespace HeavenStudio.Games.Loaders new Param("type", KarateMan.KarateManFaces.Normal, "Facial Expression", "The facial expression to force Joe to. Special moves may override this") } }, - - // hidden but here so that the block can update - new GameAction("hitX", "Warnings (old)") - { - hidden = true, - }, }, new List() {"agb", "ntr", "rvl", "ctr", "pco", "normal"}, "karate", "en", @@ -351,6 +402,8 @@ namespace HeavenStudio.Games { public double beat; public int expression; + public bool pitchVoice; + public float forcePitch; public bool cutOut; public bool noVoice; public bool ball; @@ -372,14 +425,14 @@ namespace HeavenStudio.Games public enum HitThree { - HitOne, - HitTwo, - HitThree, - HitThreeAlt, - HitFour, - Grr, - Warning, - Combo, + HitOne, // 0 + HitTwo, // 1 + HitThree, // 2 + HitThreeAlt, // 3 + HitFour, // 4 + Grr, // 5 + Warning, // 6 + Combo, // 7 } public enum LightBulbType @@ -496,25 +549,20 @@ namespace HeavenStudio.Games [Header("Backgrounds")] // new bg fading - private double colorStartBeat = -1; - private float colorLength = 0f; - private Color colorStart = new Color(0.985f, 0.79f, 0.243f); - private Color colorEnd = new Color(0.985f, 0.79f, 0.243f); - private Util.EasingFunction.Ease colorEase; + private double[] colorStartBeats = new double[3] { + -1, + -1, + -1 + }; + private float[] colorLengths = new float[3]; + private Color[] colorStarts = new Color[3]; + private Color[] colorEnds = new Color[3]; // 0 = bg color, 1 = shadow color, 2 = filter color + private Util.EasingFunction.Ease[] colorEases = new Util.EasingFunction.Ease[3]; - static int bgType = (int) BackgroundType.Yellow; - public static int currentBgEffect = (int) BackgroundFXType.None; + public int currentBgEffect = (int) BackgroundFXType.None; public SpriteRenderer BGPlane; public GameObject BGEffect; - - Animator bgEffectAnimator; - SpriteRenderer bgEffectSpriteRenderer; - - static int textureType = (int) BackgroundTextureType.Plain; - static int textureFilterType = (int) ShadowType.Tinted; - static Color filterColour = Color.white; - static Color filterColourNext = Color.white; public GameObject BGGradient; SpriteRenderer bgGradientRenderer; public GameObject BGBlood; @@ -522,15 +570,15 @@ namespace HeavenStudio.Games public GameObject BGRadial; SpriteRenderer bgRadialRenderer; SpriteRenderer[] bgFxRenderers; - - [Header("Shadows")] - static int currentShadowType = (int) ShadowType.Tinted; - static Color customShadowColour = Color.white; - static Color oldShadowColour; + Animator bgEffectAnimator; + SpriteRenderer bgEffectSpriteRenderer; [Header("Particles")] //wind public WindZone Wind; + + public ParticleSystem[] Effects; + public GameObject[] EffectsGO; //snow public ParticleSystem SnowEffect; public GameObject SnowEffectGO; @@ -570,33 +618,31 @@ namespace HeavenStudio.Games } if (queuedKicks.Count > 0) { - foreach (var qObj in queuedKicks) { Kick(qObj.beat, qObj.ball, qObj.expression, qObj.cutOut, qObj.noVoice); } + foreach (var qObj in queuedKicks) { Kick(qObj.beat, qObj.ball, qObj.expression, qObj.pitchVoice, qObj.forcePitch, qObj.cutOut, qObj.noVoice); } queuedKicks.Clear(); } if (queuedCombos.Count > 0) { - foreach (var qObj in queuedCombos) { Combo(qObj.beat, qObj.expression, qObj.cutOut, qObj.noVoice); } + foreach (var qObj in queuedCombos) { Combo(qObj.beat, qObj.expression, qObj.pitchVoice, qObj.forcePitch, qObj.cutOut, qObj.noVoice); } queuedCombos.Clear(); } - List prevEntities = GameManager.instance.Beatmap.Entities.FindAll(c => c.datamodel.Split(0) == "karateman"); + List prevEntities = GameManager.instance.Beatmap.Entities.FindAll(c => c.datamodel.Split(0) == "karateMan"); + + RiqEntity voice = prevEntities.FindLast(c => c.beat < beat && c.datamodel.Split(1) == "warnings"); + if (wordClearTime > beat && voice != null) { + var type = voice["whichWarning"]; + Word.Play($"Word0{(type < (int)HitThree.HitThreeAlt ? type : type - 1)}"); + } // init colors RiqEntity bg = prevEntities.FindLast(c => c.beat < beat && c.datamodel.Split(1) == "set background effects"); RiqEntity obj = prevEntities.FindLast(c => c.beat < beat && c.datamodel.Split(1) == "set object colors"); - + if (bg != null) { - - } else { - + BackgroundColor(bg.beat, bg.length, bg["presetBg"], bg["startColor"], bg["endColor"], bg["bgEase"], bg["shadowType"], bg["shadowStart"], bg["shadowEnd"]); + SetBgFx(bg.beat, bg.length, bg["fxType"], bg["textureType"], bg["autoColor"], bg["startTexture"], bg["endTexture"], bg["textureEase"]); } - // if (bg != null) { - // SetBgAndShadowCol(bg.beat, 0, bg["type"], bg["type2"], bg["colorA"], bg["colorB"], bg["type3"] == (int)BackgroundFXType.Fade ? 0 : bg["type3"]); - // SetBgTexture(bg["type4"], bg["type5"], bg["colorC"], bg["colorD"]); - // } else { - // SetBgAndShadowCol(0, 0, 0, 0, new Color(), new Color(), 0); - // SetBgTexture(0, 0, new Color(), new Color()); - // } if (obj != null) { UpdateMaterialColour(obj["colorA"], obj["colorB"], obj["colorC"]); @@ -611,13 +657,7 @@ namespace HeavenStudio.Games // get all entities to later check against eachother to cut out voices voiceEntities = prevEntities.FindAll(c => c.beat > beat && (c.datamodel.Split(1) is "kick" or "combo")); - for (int i = 0; i < voiceEntities.Count; i++) { - Debug.Log("voice entity " + (i+1) + " : " + voiceEntities[i].beat); - } hitVoiceEntities = prevEntities.FindAll(c => c.beat > beat && (c.datamodel.Split(1) is "warnings" && c["whichWarning"] <= (int)HitThree.HitFour)); - for (int i = 0; i < hitVoiceEntities.Count; i++) { - Debug.Log("hitVoice entity #" + (i+1) + ", beat : " + hitVoiceEntities[i].beat); - } } public override void OnPlay(double beat) @@ -627,8 +667,6 @@ namespace HeavenStudio.Games private void Start() { - var cond = Conductor.instance; - GameCamera.additionalPosition = cameraPosition - GameCamera.defaultPosition; bgEffectAnimator = BGEffect.GetComponent(); bgEffectSpriteRenderer = BGEffect.GetComponent(); @@ -645,10 +683,10 @@ namespace HeavenStudio.Games switch (currentBgEffect) { case (int) BackgroundFXType.Sunburst: - bgEffectAnimator.DoNormalizedAnimation("Sunburst", (cond.songPositionInBeats*0.5f) % 1f); + bgEffectAnimator.DoNormalizedAnimation("Sunburst", (cond.songPositionInBeats * 0.5f) % 1f); break; case (int) BackgroundFXType.Rings: - bgEffectAnimator.DoNormalizedAnimation("Rings", (cond.songPositionInBeats*0.5f) % 1f); + bgEffectAnimator.DoNormalizedAnimation("Rings", (cond.songPositionInBeats * 0.5f) % 1f); break; default: bgEffectAnimator.Play("NoPose", -1, 0); @@ -693,13 +731,13 @@ namespace HeavenStudio.Games cameraPosition = CameraPosition[0].position; } - BackgroundColorUpdate(); + //BackgroundColorUpdate(); GameCamera.additionalPosition = cameraPosition - GameCamera.defaultPosition; BGEffect.transform.position = new Vector3(GameCamera.instance.transform.position.x, GameCamera.instance.transform.position.y, 0); } - private void OnDestroy() + private void OnDestroy() { if (!Conductor.instance.NotStopped()) { if (queuedObjects.Count > 0) queuedObjects.Clear(); @@ -713,7 +751,7 @@ namespace HeavenStudio.Games static List allEnds = new List(); public static int CountHitsToEnd(double fromBeat) { - allHits = EventCaller.GetAllInGameManagerList("karateman", new string[] { "hit", "bulb", "kick", "combo" }); + allHits = EventCaller.GetAllInGameManagerList("karateMan", new string[] { "hit", "bulb", "kick", "combo" }); allEnds = EventCaller.GetAllInGameManagerList("gameManager", new string[] { "switchGame", "end" }); allHits.Sort((x, y) => x.beat.CompareTo(y.beat)); @@ -738,14 +776,13 @@ namespace HeavenStudio.Games RiqEntity h = allHits[i]; if (h.beat >= fromBeat) { - if (h.beat < endBeat) - { + if (h.beat < endBeat) { //kicks and combos count for 2 hits - type = (h.datamodel.Split('/'))[1]; - count += (type is "kick" or "combo" ? 2 : 1); - } - else + type = h.datamodel.Split('/')[1]; + count += (type is "kick" or "combo") ? 2 : 1; + } else { break; + } } } return count; @@ -762,96 +799,62 @@ namespace HeavenStudio.Games cameraReturnLength = Mathf.Min(2f, length*0.5f); } - public void DoWord(double beat, double length, int type, bool customLength, bool doSound = true) + public void DoWord(double beat, double length, int type, bool pitchVoice, float forcePitch, bool customLength, bool doSound = true) { - Word.Play(DoWordSound(beat, length, type, customLength, doSound)); + Word.Play(DoWordSound(beat, length, type, pitchVoice, forcePitch, customLength, doSound)); } - public static string DoWordSound(double beat, double length, int type, bool customLength, bool doSound = true) + public static void QueueWord(double beat, double length, int type, bool pitchVoice, float forcePitch, bool customLength, bool doSound = true) { - string word = "NoPose"; - double clear = 0f; + DoWordSound(beat, length, type, pitchVoice, forcePitch, customLength, doSound); + } - // if (type <= (int)HitThree.HitFour) { - // string number = type.ToString().Substring(3); - // number = char.ToLower(number[0]).ToString() + number.Substring(1); - // MultiSound.Play(new MultiSound.Sound[] { - // new MultiSound.Sound($"karateman/{(type == (int)HitThree.HitThreeAlt ? "hitAlt" : "hit")}", beat + 0.5f, offset: hitVoiceOffset), - // new MultiSound.Sound($"karateman/{number}", beat + 1f), - // }, forcePlay: true); - // clear = beat + 4f; - // } - switch (type) + public static string DoWordSound(double beat, double length, int type, bool pitchVoice, float forcePitch, bool customLength, bool doSound = true) + { + string word = $"Word0{(type < (int)HitThree.HitThreeAlt ? type : type - 1)}"; + double clear = type switch { + <= (int)HitThree.HitFour => beat + 4f, + <= (int)HitThree.Warning => beat + 1f, + _ => beat + 3f, + }; + + if (type <= (int)HitThree.HitFour) { - case (int) HitThree.HitOne: // lol - word = "Word06"; - clear = beat + 4f; - if (doSound) - MultiSound.Play(new MultiSound.Sound[] { - new MultiSound.Sound("karateman/hit", beat + 0.5f, offset: hitVoiceOffset), - new MultiSound.Sound("karateman/one", beat + 1f), - }, forcePlay: true); - break; - case (int) HitThree.HitTwo: - word = "Word02"; - clear = beat + 4f; - if (doSound) - MultiSound.Play(new MultiSound.Sound[] { - new MultiSound.Sound("karateman/hit", beat + 0.5f, offset: hitVoiceOffset), - new MultiSound.Sound("karateman/two", beat + 1f), - }, forcePlay: true); - break; - case (int) HitThree.HitThree: - word = "Word03"; - clear = beat + 4f; - if (doSound) - MultiSound.Play(new MultiSound.Sound[] { - new MultiSound.Sound("karateman/hit", beat + 0.5f, offset: hitVoiceOffset), - new MultiSound.Sound("karateman/three", beat + 1f), - }, forcePlay: true); - break; - case (int) HitThree.HitThreeAlt: - word = "Word03"; - clear = beat + 4f; - if (doSound) - MultiSound.Play(new MultiSound.Sound[] { - new MultiSound.Sound("karateman/hitAlt", beat + 0.5f, offset: hitVoiceOffset), - new MultiSound.Sound("karateman/threeAlt", beat + 1f), - }, forcePlay: true); - break; - case (int) HitThree.HitFour: - word = "Word04"; - clear = beat + 4f; - if (doSound) - MultiSound.Play(new MultiSound.Sound[] - { - new MultiSound.Sound("karateman/hit", beat + 0.5f, offset: hitVoiceOffset), - new MultiSound.Sound("karateman/four", beat + 1f), - }, forcePlay: true); - break; - case (int) HitThree.Grr: - word = "Word01"; - clear = beat + 1f; - break; - case (int) HitThree.Warning: - word = "Word05"; - clear = beat + 1f; - break; - case (int) HitThree.Combo: - word = "Word00"; - clear = beat + 3f; - break; + string number = ((HitThree)type).ToString()[3..]; + number = char.ToLower(number[0]).ToString() + number[1..]; + var sounds = new MultiSound.Sound[] { + new MultiSound.Sound($"karateMan/{(type == (int)HitThree.HitThreeAlt ? "hitAlt" : "hit")}", beat + 0.5f, offset: hitVoiceOffset), + new MultiSound.Sound($"karateMan/{number}", beat + 1f), + }; + if (pitchVoice) { + foreach (var sound in sounds) { + sound.pitch = (forcePitch == 1) ? Conductor.instance.GetBpmAtBeat(sound.beat) / 125 : forcePitch; + } + } + MultiSound.Play(sounds, forcePlay: true); } - if (Conductor.instance.songPositionInBeatsAsDouble <= clear && Conductor.instance.songPositionInBeatsAsDouble >= beat) - { + + var songPos = Conductor.instance.songPositionInBeatsAsDouble; + if (songPos <= clear && songPos >= beat) { wordClearTime = customLength ? (beat + length) : clear; } return word; } - public static void CreateItemSFX(double beat, int type, bool muteSound = false, bool isBulb = false) + public static void CreateItemSFX(double beat, int type, bool muteSound = false) { - if (!muteSound) SoundByte.PlayOneShotGame($"karateman/{(beat % 1.0 == 0.5 ? "offbeatObject" : "object")}Out", forcePlay: true); + if (!muteSound) SoundByte.PlayOneShotGame($"karateMan/{(beat % 1.0 == 0.5 ? $"offbeatObject" : "object")}Out", forcePlay: true); + } + + public static void CreateBulbSFX(double beat, int type, bool muteSound = false) + { + string obj = type switch { + (int)LightBulbType.Normal => "LightbulbAgb", + (int)LightBulbType.Yellow => "LightbulbNtr", + _ => "Lightbulb", + }; + Debug.Log(obj); + if (!muteSound) SoundByte.PlayOneShotGame($"karateMan/{(beat % 1.0 == 0.5 ? $"offbeat{obj}" : obj.ToLower())}Out", forcePlay: true); } public static void QueueItem(double beat, int type, int expression) @@ -910,7 +913,12 @@ namespace HeavenStudio.Games public void CreateBulbSpecial(double beat, int type, Color c, int expression) { - var mobj = CreateItemInstance(beat, "Item01", expression, KarateManPot.ItemType.Bulb); + string obj = type switch { + (int)LightBulbType.Normal => "LightbulbAgb", + (int)LightBulbType.Yellow => "LightbulbNtr", + _ => "Lightbulb", + }; + var mobj = CreateItemInstance(beat, "Item01", expression, KarateManPot.ItemType.Bulb, hitSfxOverride: $"karateMan/{obj}Hit"); if (type == (int) LightBulbType.Custom) { mobj.GetComponent().SetBulbColor(c); @@ -921,20 +929,22 @@ namespace HeavenStudio.Games public static void ComboSFX() { - SoundByte.PlayOneShotGame("karateman/barrelOutCombos", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/barrelOutCombos", forcePlay: true); } - public static void QueueCombo(double beat, int expression, bool cutOut, bool noVoice) + public static void QueueCombo(double beat, int expression, bool pitchVoice, float forcePitch, bool cutOut, bool noVoice) { queuedCombos.Add(new QueuedSpecial() { beat = beat, expression = expression, + pitchVoice = pitchVoice, + forcePitch = forcePitch, cutOut = cutOut, noVoice = noVoice }); } - public void Combo(double beat, int expression, bool cutOut, bool noVoice) + public void Combo(double beat, int expression, bool pitchVoice, float forcePitch, bool cutOut, bool noVoice) { int comboId = KarateManPot.GetNewCombo(); @@ -951,15 +961,22 @@ namespace HeavenStudio.Games if (noVoice) return; List sounds = new() { - new MultiSound.Sound("karateman/punchy1", beat + 1f), - new MultiSound.Sound("karateman/punchy2", beat + 1.25f), - new MultiSound.Sound("karateman/punchy3", beat + 1.5f), - new MultiSound.Sound("karateman/punchy4", beat + 1.75f), - new MultiSound.Sound("karateman/ko", beat + 2f), - new MultiSound.Sound("karateman/pow", beat + 2.5f) + new MultiSound.Sound("karateMan/punchy1", beat + 1f), + new MultiSound.Sound("karateMan/punchy2", beat + 1.25f), + new MultiSound.Sound("karateMan/punchy3", beat + 1.5f), + new MultiSound.Sound("karateMan/punchy4", beat + 1.75f), + new MultiSound.Sound("karateMan/ko", beat + 2f), + new MultiSound.Sound("karateMan/pow", beat + 2.5f) }; - if (voiceEntities.Count > 0 && cutOut) { + if (pitchVoice) { + foreach (var sound in sounds) { + sound.pitch = (forcePitch == 1) ? Conductor.instance.GetBpmAtBeat(sound.beat) / 125 : forcePitch; + } + } + + if (voiceEntities.Count > 0 && cutOut) + { RiqEntity firstVoice = voiceEntities.Find(x => x.beat >= beat + 1); RiqEntity firstHitVoice = hitVoiceEntities.Find(x => x.beat >= beat + 1); if (firstVoice != null) sounds.RemoveAll(x => x.beat > firstVoice.beat); @@ -971,34 +988,43 @@ namespace HeavenStudio.Games public static void KickSFX() { - SoundByte.PlayOneShotGame("karateman/barrelOutKicks", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/barrelOutKicks", forcePlay: true); } - public static void QueueKick(double beat, bool ball, int expression, bool cutOut, bool noVoice) + public static void QueueKick(double beat, bool ball, int expression, bool pitchVoice, float forcePitch, bool cutOut, bool noVoice) { queuedKicks.Add(new QueuedSpecial() { beat = beat, expression = expression, + pitchVoice = pitchVoice, + forcePitch = forcePitch, cutOut = cutOut, noVoice = noVoice, ball = ball, }); } - public void Kick(double beat, bool ball, int expression, bool cutOut, bool noVoice) + public void Kick(double beat, bool ball, int expression, bool pitchVoice, float forcePitch, bool cutOut, bool noVoice) { CreateItemInstance(beat, "Item05", expression, KarateManPot.ItemType.KickBarrel, content: ball); if (noVoice) return; List sounds = new() { - new MultiSound.Sound("karateman/punchKick1", beat + 1f), - new MultiSound.Sound("karateman/punchKick2", beat + 1.5f), - new MultiSound.Sound("karateman/punchKick3", beat + 1.75f), - new MultiSound.Sound("karateman/punchKick4", beat + 2.5f), + new MultiSound.Sound("karateMan/punchKick1", beat + 1f), + new MultiSound.Sound("karateMan/punchKick2", beat + 1.5f), + new MultiSound.Sound("karateMan/punchKick3", beat + 1.75f), + new MultiSound.Sound("karateMan/punchKick4", beat + 2.5f), }; - if (voiceEntities.Count > 0 && cutOut) { + if (pitchVoice) { + foreach (var sound in sounds) { + sound.pitch = (forcePitch == 1) ? Conductor.instance.GetBpmAtBeat(sound.beat) / 125 : forcePitch; + } + } + + if (voiceEntities.Count > 0 && cutOut) + { RiqEntity firstVoice = voiceEntities.Find(x => x.beat >= beat + 1); RiqEntity firstHitVoice = hitVoiceEntities.Find(x => x.beat >= beat + 1); if (firstVoice != null) sounds.RemoveAll(x => x.beat > firstVoice.beat); @@ -1008,7 +1034,7 @@ namespace HeavenStudio.Games MultiSound.Play(sounds.ToArray(), forcePlay: true); } - public GameObject CreateItemInstance(double beat, string awakeAnim, int successExpression, KarateManPot.ItemType type = KarateManPot.ItemType.Pot, int comboId = -1, bool content = false) + public GameObject CreateItemInstance(double beat, string awakeAnim, int successExpression, KarateManPot.ItemType type = KarateManPot.ItemType.Pot, int comboId = -1, bool content = false, string hitSfxOverride = null) { GameObject mobj = GameObject.Instantiate(Item, ItemHolder); KarateManPot mobjDat = mobj.GetComponent(); @@ -1018,124 +1044,65 @@ namespace HeavenStudio.Games mobjDat.comboId = comboId; mobjDat.OnHitExpression = successExpression; mobjDat.KickBarrelContent = content; + mobjDat.hitSfxOverride = hitSfxOverride; mobj.SetActive(true); return mobj; } - public void BackgroundColor(double beat, float length, int presetBG, int shadowType, int fxType, Color colorStartSet, Color colorEndSet, int ease) + public void BackgroundColor(double beat, float length, int presetBG, Color colorStart, Color colorEnd, int colorEaseSet, int shadowType, Color shadowStart, Color shadowEnd) { - ////////////////////////////////////////// - // preset = BackgroundType // - // shadow = ShadowType // - // fxType = BackgroundFXType // - // textureType = BackgroundTextureType // - ////////////////////////////////////////// - if (presetBG != (int)BackgroundType.Custom) { - colorEndSet = BackgroundColors[presetBG]; + colorEnd = BackgroundColors[presetBG]; } - colorStartBeat = beat; - colorLength = length; - colorStart = colorStartSet; - colorEnd = colorEndSet; - colorEase = (Util.EasingFunction.Ease)ease; + colorStartBeats[0] = beat; + colorLengths[0] = length; + colorStarts[0] = colorStart; + colorEnds[0] = colorEnd; + colorEases[0] = (Util.EasingFunction.Ease)colorEaseSet; + + BackgroundColorUpdate(); } - public void SetBgTexture(int type, int filterType, Color colorStartSet, Color colorEndSet) + public void SetBgFx(double beat, float length, int fxType, int textureType, bool autoColor, Color filterStartSet, Color filterEndSet, int ease) { - textureType = type; - textureFilterType = filterType; - if (textureFilterType == (int) ShadowType.Tinted) - filterColour = Color.LerpUnclamped(colorStartSet, colorEndSet, 0.45f); - else - { - filterColour = colorStartSet; - filterColourNext = colorEndSet; - } - switch (textureType) - { - case (int) BackgroundTextureType.Blood: - BGBlood.SetActive(true); - BGGradient.SetActive(false); - BGRadial.SetActive(false); - break; - case (int) BackgroundTextureType.Gradient: - BGGradient.SetActive(true); - BGBlood.SetActive(false); - BGRadial.SetActive(false); - break; - case (int) BackgroundTextureType.Radial: - BGRadial.SetActive(true); - BGBlood.SetActive(false); - BGGradient.SetActive(false); - break; - default: - BGGradient.SetActive(false); - BGBlood.SetActive(false); - BGRadial.SetActive(false); - break; - } - BackgroundColorUpdate(); + colorStarts[2] = filterStartSet; + colorEnds[2] = filterEndSet; + + BGBlood.SetActive(fxType == (int)BackgroundTextureType.Blood); + BGGradient.SetActive(fxType == (int)BackgroundTextureType.Gradient); + BGRadial.SetActive(fxType == (int)BackgroundTextureType.Radial); } private void BackgroundColorUpdate() { - float normalizedBeat = Mathf.Clamp01(Conductor.instance.GetPositionFromBeat(colorStartBeat, colorLength)); + float[,] newRgb = new float[3, 3]; - var func = Util.EasingFunction.GetEasingFunction(colorEase); + for (int i = 0; i < newRgb.GetLength(0); i++) + { + float normalizedBeat = Mathf.Clamp01(Conductor.instance.GetPositionFromBeat(colorStartBeats[i], colorLengths[i])); + var func = Util.EasingFunction.GetEasingFunction(colorEases[i]); + + for (int j = 0; j < newRgb.GetLength(1); j++) + { + float Hue(Color[] whichColors) => j switch { + 0 => whichColors[i].r, + 1 => whichColors[i].g, + _ => whichColors[i].b, + }; + newRgb[j, i] = func(Hue(colorStarts), Hue(colorEnds), normalizedBeat); + } + } - float newR = func(colorStart.r, colorEnd.r, normalizedBeat); - float newG = func(colorStart.g, colorEnd.g, normalizedBeat); - float newB = func(colorStart.b, colorEnd.b, normalizedBeat); + BGPlane.color = new Color(newRgb[0, 0], newRgb[0, 1], newRgb[0, 2]); - BGPlane.color = new Color(newR, newG, newB); - - // bgGradientRenderer.color = filterCol; - // bgBloodRenderer.color = filterCol; - // bgRadialRenderer.color = filterCol; + bgGradientRenderer.color = + bgBloodRenderer.color = + bgRadialRenderer.color = new Color(newRgb[1, 0], newRgb[1, 1], newRgb[1, 2]); } - // public void SetBgAndShadowCol(double beat, float length, int newBgType, int shadowType, Color a, Color b, int fx) - // { - // SetBgFx(fx, beat, length); - // UpdateShadowColour(shadowType, b); - - // bgType = newBgType; - // if (bgType == (int) BackgroundType.Custom) - // bgColour = a; - // else - // bgColour = BackgroundColors[newBgType]; - // BGPlane.color = bgColour; - - // //😢 - // if (fx != (int) BackgroundFXType.Fade) - // { - // bgColourLast = bgColour; - // oldShadowColour = GetShadowColor(true); - // } - - // if (textureFilterType == (int) ShadowType.Tinted) - // filterColour = Color.LerpUnclamped(bgColour, ShadowBlendColor, 0.45f); - // } - - // public void SetBgFx(int fx, double beat, float length) - // { - // switch (fx) - // { - // case (int) BackgroundFXType.Fade: - // bgColourLast = bgColour; - // bgFadeTime = beat; - // bgFadeDuration = length; - // break; - // default: - // currentBgEffect = fx; - // break; - // } - // } - public void SetGameplayMods(double beat, int mode, bool combo) { NoriGO.SetActive(true); @@ -1143,39 +1110,6 @@ namespace HeavenStudio.Games IsComboEnable = combo; } - public static Color ShadowBlendColor = new Color(195 / 255f, 48 / 255f, 2 / 255f); - // public Color GetShadowColor(bool next = false) - // { - // Color lastCol, nextCol; - // lastCol = oldShadowColour; - - // if (currentShadowType == (int) ShadowType.Custom) - // nextCol = customShadowColour; - // else if (bgType < (int) BackgroundType.Custom) - // nextCol = ShadowColors[bgType]; - // else - // nextCol = Color.LerpUnclamped(bgColour, ShadowBlendColor, 0.45f); - - // float fadeProg = Conductor.instance.GetPositionFromBeat(bgFadeTime, bgFadeDuration); - // if (fadeProg <= 1f && fadeProg >= 0) - // { - // return Color.LerpUnclamped(lastCol, nextCol, fadeProg); - // } - // return next ? nextCol : lastCol; - // } - - // public void UpdateShadowColour(int type, Color colour) - // { - // if (currentShadowType == (int) ShadowType.Custom) - // oldShadowColour = customShadowColour; - // else if (bgType < (int) BackgroundType.Custom) - // oldShadowColour = ShadowColors[bgType]; - // else - // oldShadowColour = Color.LerpUnclamped(bgColour, ShadowBlendColor, 0.45f); - - // currentShadowType = type; - // customShadowColour = colour; - // } public static void UpdateMaterialColour(Color mainCol, Color highlightCol, Color objectCol) { @@ -1247,4 +1181,4 @@ namespace HeavenStudio.Games Joe.SetFaceExpression(face); } } -} +} \ No newline at end of file diff --git a/Assets/Scripts/Games/KarateMan/KarateManJoe.cs b/Assets/Scripts/Games/KarateMan/KarateManJoe.cs index 82a8424b7..e04946ab6 100644 --- a/Assets/Scripts/Games/KarateMan/KarateManJoe.cs +++ b/Assets/Scripts/Games/KarateMan/KarateManJoe.cs @@ -140,7 +140,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan if (!KarateMan.instance.IsExpectingInputNow(InputType.STANDARD_DOWN | InputType.DIRECTION_DOWN)) { Punch(1); - SoundByte.PlayOneShotGame("karateman/swingNoHit", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/swingNoHit", forcePlay: true); } } @@ -174,7 +174,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan else if (inKick && cond.GetPositionFromBeat(lastChargeTime, 2.75f) <= 0.5f && !KarateMan.instance.IsExpectingInputNow(InputType.STANDARD_UP | InputType.DIRECTION_UP)) { Kick(cond.songPositionInBeatsAsDouble); - SoundByte.PlayOneShotGame("karateman/swingKick", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/swingKick", forcePlay: true); } } @@ -189,7 +189,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan public bool Punch(int forceHand = 0) { - if (GameManager.instance.currentGame != "karateman") return false; + if (GameManager.instance.currentGame != "karateMan") return false; var cond = Conductor.instance; bool straight = false; @@ -232,7 +232,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan public void ComboSequence(int seq) { - if (GameManager.instance.currentGame != "karateman") return; + if (GameManager.instance.currentGame != "karateMan") return; var cond = Conductor.instance; bop.startBeat = cond.songPositionInBeatsAsDouble + 1f; unPrepareTime = double.MinValue; @@ -286,10 +286,10 @@ namespace HeavenStudio.Games.Scripts_KarateMan MultiSound.Play(new MultiSound.Sound[] { - new MultiSound.Sound("karateman/swingNoHit", beat), - new MultiSound.Sound("karateman/swingNoHit_Alt", beat + 0.25f), - new MultiSound.Sound("karateman/swingNoHit_Alt", beat + 0.5f), - new MultiSound.Sound("karateman/comboMiss", beat + 0.75f), + new MultiSound.Sound("karateMan/swingNoHit", beat), + new MultiSound.Sound("karateMan/swingNoHit_Alt", beat + 0.25f), + new MultiSound.Sound("karateMan/swingNoHit_Alt", beat + 0.5f), + new MultiSound.Sound("karateMan/comboMiss", beat + 0.75f), }, forcePlay: true); } diff --git a/Assets/Scripts/Games/KarateMan/KarateManNoriController.cs b/Assets/Scripts/Games/KarateMan/KarateManNoriController.cs index 9f7dfd8fe..116743e58 100644 --- a/Assets/Scripts/Games/KarateMan/KarateManNoriController.cs +++ b/Assets/Scripts/Games/KarateMan/KarateManNoriController.cs @@ -154,7 +154,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan if (KarateMan.instance.NoriPerformance >= 0.6f && oldNori / MaxNori < 0.6f && !playedJust) { playedJust = true; - SoundByte.PlayOneShotGame("karateman/nori_just"); + SoundByte.PlayOneShotGame("karateMan/nori_just"); } UpdateHeartColours(); } @@ -193,7 +193,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan if (KarateMan.instance.NoriPerformance < 0.6f && oldNori / MaxNori >= 0.6f) { playedJust = false; - SoundByte.PlayOneShotGame("karateman/nori_ng"); + SoundByte.PlayOneShotGame("karateMan/nori_ng"); } UpdateHeartColours(); } @@ -205,7 +205,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan if (noriMode == (int) KarateMan.NoriMode.Tengoku) { if (Nori >= MaxNori) - SoundByte.PlayOneShotGame("karateman/nori_through"); + SoundByte.PlayOneShotGame("karateMan/nori_through"); playedJust = false; Nori = 0; foreach (Animator anim in NoriHeartAnimators) diff --git a/Assets/Scripts/Games/KarateMan/KarateManPot.cs b/Assets/Scripts/Games/KarateMan/KarateManPot.cs index 82faa2a83..25adcddc0 100644 --- a/Assets/Scripts/Games/KarateMan/KarateManPot.cs +++ b/Assets/Scripts/Games/KarateMan/KarateManPot.cs @@ -13,10 +13,10 @@ namespace HeavenStudio.Games.Scripts_KarateMan public double startBeat; public ItemType type; public int path = 1; + public string hitSfxOverride; public GameObject Shadow; public GameObject ShadowInstance; - SpriteRenderer shadowRenderer; //hit effects public GameObject HitMark; @@ -255,7 +255,6 @@ namespace HeavenStudio.Games.Scripts_KarateMan transform.rotation = Quaternion.Euler(0, 0, transform.rotation.eulerAngles.z + (-360f * Time.deltaTime) + UnityEngine.Random.Range(0f, 360f)); ShadowInstance = GameObject.Instantiate(Shadow, KarateMan.instance.ItemHolder); - shadowRenderer = ShadowInstance.GetComponent(); //shadowRenderer.color = KarateMan.instance.GetShadowColor(); ShadowInstance.SetActive(true); ShadowInstance.transform.position = new Vector3(transform.position.x, floorHeight - 0.5f, transform.position.z); @@ -321,7 +320,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan GameObject.Destroy(ShadowInstance.gameObject); GameObject.Destroy(gameObject); - SoundByte.PlayOneShotGame("karateman/bombBreak", volume: 0.25f); + SoundByte.PlayOneShotGame("karateMan/bombBreak", volume: 0.25f); return; } else if (cond.songPositionInBeatsAsDouble >= startBeat + Mathf.Max(2f, curveTargetBeat) || CurrentCurve == null) { @@ -439,8 +438,9 @@ namespace HeavenStudio.Games.Scripts_KarateMan { case ItemType.Bulb: CurrentCurve = ItemCurves[straight ? 1 : 0]; - curveTargetBeat = straight ? 1f : 1.5f;; - SoundByte.PlayOneShotGame("karateman/lightbulbHit", forcePlay: true); + curveTargetBeat = straight ? 1f : 1.5f; + Debug.Log(hitSfxOverride); + SoundByte.PlayOneShotGame(hitSfxOverride ?? "karateMan/lightbulbHit", forcePlay: true); p = Instantiate(HitParticles[5], HitPosition[1].position, Quaternion.Euler(0, 0, UnityEngine.Random.Range(0f, 360f)), game.ItemHolder); if (effectTint.a == 0) @@ -464,101 +464,101 @@ namespace HeavenStudio.Games.Scripts_KarateMan case ItemType.Rock: CurrentCurve = ItemCurves[1]; curveTargetBeat = 1f; - SoundByte.PlayOneShotGame("karateman/rockHit", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/rockHit", forcePlay: true); p = Instantiate(HitParticles[4], HitPosition[1].position, Quaternion.identity, game.ItemHolder); p.Play(); if (game.IsNoriActive && game.NoriPerformance >= 1f) - SoundByte.PlayOneShotGame("karateman/rockHit_fullNori", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/rockHit_fullNori", forcePlay: true); break; case ItemType.Ball: CurrentCurve = ItemCurves[1]; curveTargetBeat = 1f; - SoundByte.PlayOneShotGame("karateman/soccerHit", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/soccerHit", forcePlay: true); p = Instantiate(HitParticles[1], HitPosition[1].position, Quaternion.Euler(0, 0, UnityEngine.Random.Range(0f, 360f)), game.ItemHolder); p.Play(); break; case ItemType.Cooking: CurrentCurve = ItemCurves[1]; curveTargetBeat = 1f; - SoundByte.PlayOneShotGame("karateman/cookingPot", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/cookingPot", forcePlay: true); p = Instantiate(HitParticles[1], HitPosition[1].position, Quaternion.Euler(0, 0, UnityEngine.Random.Range(0f, 360f)), game.ItemHolder); p.Play(); game.CreateItemInstance(startBeat + 1f, "Item09", 0, ItemType.CookingLid); GetComponent().Play("Item08", -1, 0); if (game.IsNoriActive && game.NoriPerformance >= 1f) - SoundByte.PlayOneShotGame("karateman/rockHit_fullNori", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/rockHit_fullNori", forcePlay: true); break; case ItemType.Alien: CurrentCurve = ItemCurves[1]; curveTargetBeat = 1f; - SoundByte.PlayOneShotGame("karateman/alienHit", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/alienHit", forcePlay: true); p = Instantiate(HitParticles[1], HitPosition[1].position, Quaternion.Euler(0, 0, UnityEngine.Random.Range(0f, 360f)), game.ItemHolder); p.Play(); if (game.IsNoriActive && game.NoriPerformance >= 1f) - SoundByte.PlayOneShotGame("karateman/rockHit_fullNori", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/rockHit_fullNori", forcePlay: true); break; case ItemType.Bomb: CurrentCurve = ItemCurves[1]; curveTargetBeat = 1f; - SoundByte.PlayOneShotGame("karateman/bombHit", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/bombHit", forcePlay: true); p = Instantiate(HitParticles[2], HitPosition[1].position, Quaternion.Euler(0, 0, UnityEngine.Random.Range(0f, 360f)), game.ItemHolder); p.Play(); game.Joe.RemoveBombGlow(startBeat + 1f, 1f); if (game.IsNoriActive && game.NoriPerformance >= 1f) - SoundByte.PlayOneShotGame("karateman/rockHit_fullNori", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/rockHit_fullNori", forcePlay: true); break; case ItemType.TacoBell: CurrentCurve = ItemCurves[1]; curveTargetBeat = 1f; - SoundByte.PlayOneShotGame("karateman/rockHit", forcePlay: true); - SoundByte.PlayOneShotGame("karateman/tacobell", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/rockHit", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/tacobell", forcePlay: true); p = Instantiate(HitParticles[1], HitPosition[1].position, Quaternion.Euler(0, 0, UnityEngine.Random.Range(0f, 360f)), game.ItemHolder); p.Play(); if (game.IsNoriActive && game.NoriPerformance >= 1f) - SoundByte.PlayOneShotGame("karateman/rockHit_fullNori", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/rockHit_fullNori", forcePlay: true); break; case ItemType.ComboPot1: CurrentCurve = ItemCurves[straight ? 1 : 0]; curveTargetBeat = 1.5f; - SoundByte.PlayOneShotGame("karateman/comboHit1", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/comboHit1", forcePlay: true); p = Instantiate(HitParticles[1], HitPosition[1].position, Quaternion.Euler(0, 0, UnityEngine.Random.Range(0f, 360f)), game.ItemHolder); p.Play(); break; case ItemType.ComboPot2: CurrentCurve = ItemCurves[0]; curveTargetBeat = 1.5f; - SoundByte.PlayOneShotGame("karateman/comboHit1", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/comboHit1", forcePlay: true); p = Instantiate(HitParticles[1], HitPosition[1].position, Quaternion.Euler(0, 0, UnityEngine.Random.Range(0f, 360f)), game.ItemHolder); p.Play(); break; case ItemType.ComboPot3: CurrentCurve = ItemCurves[2]; curveTargetBeat = 1f; - SoundByte.PlayOneShotGame("karateman/comboHit2", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/comboHit2", forcePlay: true); p = Instantiate(HitParticles[1], HitPosition[2].position, Quaternion.Euler(0, 0, UnityEngine.Random.Range(0f, 360f)), game.ItemHolder); p.Play(); break; case ItemType.ComboPot4: CurrentCurve = ItemCurves[3]; curveTargetBeat = 1f; - SoundByte.PlayOneShotGame("karateman/comboHit3", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/comboHit3", forcePlay: true); p = Instantiate(HitParticles[1], HitPosition[3].position, Quaternion.Euler(0, 0, UnityEngine.Random.Range(0f, 360f)), game.ItemHolder); p.Play(); break; case ItemType.ComboPot5: CurrentCurve = ItemCurves[4]; curveTargetBeat = 1f; - SoundByte.PlayOneShotGame("karateman/comboHit3", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/comboHit3", forcePlay: true); p = Instantiate(HitParticles[1], HitPosition[4].position, Quaternion.Euler(0, 0, UnityEngine.Random.Range(0f, 360f)), game.ItemHolder); p.Play(); break; case ItemType.ComboBarrel: - SoundByte.PlayOneShotGame("karateman/comboHit4", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/comboHit4", forcePlay: true); p = Instantiate(HitParticles[0], HitPosition[5].position, Quaternion.identity, game.ItemHolder); p.Play(); p = Instantiate(HitParticles[1], HitPosition[5].position, Quaternion.Euler(0, 0, UnityEngine.Random.Range(0f, 360f)), game.ItemHolder); @@ -572,7 +572,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan game.Joe.ApplyBombGlow(); game.CreateItemInstance(startBeat + 1f, "Item04", OnHitExpression, ItemType.KickBomb); } - SoundByte.PlayOneShotGame("karateman/barrelBreak", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/barrelBreak", forcePlay: true); p = Instantiate(HitParticles[0], HitPosition[1].position, Quaternion.Euler(0, 0, -5f), game.ItemHolder); p.Play(); p = Instantiate(HitParticles[1], HitPosition[1].position, Quaternion.Euler(0, 0, UnityEngine.Random.Range(0f, 360f)), game.ItemHolder); @@ -580,14 +580,14 @@ namespace HeavenStudio.Games.Scripts_KarateMan break; case ItemType.KickBomb: - SoundByte.PlayOneShotGame("karateman/bombKick", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/bombKick", forcePlay: true); p = Instantiate(HitParticles[2], ItemCurves[6].GetPoint(0.5f), Quaternion.identity, game.ItemHolder); p.Play(); game.Joe.RemoveBombGlow(startBeat + 0.75f); break; case ItemType.KickBall: - SoundByte.PlayOneShotGame("karateman/bombKick", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/bombKick", forcePlay: true); p = Instantiate(HitParticles[1], ItemCurves[6].GetPoint(0.5f), Quaternion.identity, game.ItemHolder); p.Play(); break; @@ -596,11 +596,11 @@ namespace HeavenStudio.Games.Scripts_KarateMan curveTargetBeat = straight ? 1f : 1.5f; if (game.IsNoriActive && game.NoriPerformance < 0.6f) { - SoundByte.PlayOneShotGame("karateman/potHit_lowNori", forcePlay: true); - SoundByte.PlayOneShotGame("karateman/potHit", volume: 0.66f, forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/potHit_lowNori", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/potHit", volume: 0.66f, forcePlay: true); } else - SoundByte.PlayOneShotGame("karateman/potHit", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/potHit", forcePlay: true); p = Instantiate(HitParticles[3], HitPosition[1].position, Quaternion.identity, game.ItemHolder); p.Play(); @@ -657,7 +657,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan void JoeComboSequence() { - if (GameManager.instance.currentGame != "karateman") return; + if (GameManager.instance.currentGame != "karateMan") return; var joe = KarateMan.instance.Joe; if (joe.GetShouldComboId() != comboId || !joe.inCombo) return; switch (type) @@ -665,7 +665,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan case ItemType.ComboPot2: joe.Punch(2); if (joe.GetComboId() != comboId) - SoundByte.PlayOneShotGame("karateman/swingNoHit_Alt", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/swingNoHit_Alt", forcePlay: true); else { ItemHitEffect(); @@ -683,7 +683,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan //if the button isn't held anymore make Joe spin if (joe.GetComboId() != comboId) { joe.ComboMiss(startBeat + 1f); - SoundByte.PlayOneShotGame("karateman/comboMiss", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/comboMiss", forcePlay: true); joe.SetShouldComboId(-2); } else @@ -730,7 +730,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan public void ItemJustOrNg(PlayerActionEvent caller, float state) { - if (GameManager.instance.currentGame != "karateman") return; + if (GameManager.instance.currentGame != "karateMan") return; var joe = KarateMan.instance.Joe; if (state <= -1f || state >= 1f) { bool straight = joe.Punch(ItemPunchHand()); @@ -758,7 +758,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan CreateHitMark(false); startBeat = Conductor.instance.songPositionInBeatsAsDouble; status = FlyStatus.HitWeak; - SoundByte.PlayOneShotGame("karateman/hitNoNori", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/hitNoNori", forcePlay: true); joe.Punch(3); transform.rotation = Quaternion.Euler(0, 0, transform.rotation.eulerAngles.z - 30f); KarateMan.instance.Nori.DoNG(); @@ -775,7 +775,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan public void ItemWrongAction(PlayerActionEvent caller, float state) { - if (GameManager.instance.currentGame != "karateman") return; + if (GameManager.instance.currentGame != "karateMan") return; if (!KarateMan.IsComboEnable) return; //hitting a normal object with the alt input //WHEN SCORING THIS IS A MISS @@ -809,13 +809,13 @@ namespace HeavenStudio.Games.Scripts_KarateMan public void ItemThrough(PlayerActionEvent caller) { var joe = KarateMan.instance.Joe; - if (GameManager.instance.currentGame != "karateman") return; + if (GameManager.instance.currentGame != "karateMan") return; if (status != FlyStatus.Fly || gameObject == null) return; BeatAction.New(joe.gameObject, new List() { new BeatAction.Action(startBeat + 2f, delegate { joe.SetFaceExpression((int) KarateMan.KarateManFaces.Surprise); - SoundByte.PlayOneShotGame("karateman/karate_through", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/karate_through", forcePlay: true); }), new BeatAction.Action(startBeat + 5f, delegate { if (joe.wantFace == -1) @@ -835,7 +835,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan public void ComboStartJustOrNg(PlayerActionEvent caller, float state) { - if (GameManager.instance.currentGame != "karateman") return; + if (GameManager.instance.currentGame != "karateMan") return; var joe = KarateMan.instance.Joe; joe.inCombo = true; joe.Punch(1); @@ -860,13 +860,13 @@ namespace HeavenStudio.Games.Scripts_KarateMan public void ComboStartThrough(PlayerActionEvent caller) { var joe = KarateMan.instance.Joe; - if (GameManager.instance.currentGame != "karateman") return; + if (GameManager.instance.currentGame != "karateMan") return; if (status != FlyStatus.Fly || gameObject == null) return; BeatAction.New(joe.gameObject, new List() { new BeatAction.Action(startBeat + 2f, delegate { joe.SetFaceExpression((int) KarateMan.KarateManFaces.Surprise); - SoundByte.PlayOneShotGame("karateman/karate_through", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/karate_through", forcePlay: true); }), new BeatAction.Action(startBeat + 5f, delegate { if (joe.wantFace == -1) @@ -880,7 +880,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan public void ComboStartWrongAction(PlayerActionEvent caller, float state) { - if (GameManager.instance.currentGame != "karateman") return; + if (GameManager.instance.currentGame != "karateMan") return; //hitting a combo start with the normal input //WHEN SCORING THIS IS A MISS var joe = KarateMan.instance.Joe; @@ -906,7 +906,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan public void ComboEndJustOrNg(PlayerActionEvent caller, float state) { - if (GameManager.instance.currentGame != "karateman") return; + if (GameManager.instance.currentGame != "karateMan") return; var joe = KarateMan.instance.Joe; joe.inCombo = false; joe.SetComboId(-1); @@ -939,7 +939,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan } public void ComboEndOut(PlayerActionEvent caller) { - if (GameManager.instance.currentGame != "karateman") return; + if (GameManager.instance.currentGame != "karateMan") return; var joe = KarateMan.instance.Joe; if (status == FlyStatus.Fly && joe.inCombo && joe.GetComboId() == comboId && joe.comboWaiting) { @@ -947,14 +947,14 @@ namespace HeavenStudio.Games.Scripts_KarateMan joe.SetComboId(-1); joe.SetShouldComboId(-1); joe.ComboSequence(3); - SoundByte.PlayOneShotGame("karateman/swingKick", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/swingKick", forcePlay: true); } OnHit.CanHit(false); } public void ComboEndThrough(PlayerActionEvent caller) { - if (GameManager.instance.currentGame != "karateman") return; + if (GameManager.instance.currentGame != "karateMan") return; if (status != FlyStatus.Fly || gameObject == null) return; var joe = KarateMan.instance.Joe; if (joe.GetComboId() != comboId || !joe.inCombo) @@ -995,7 +995,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan public void KickChargeJustOrNg(PlayerActionEvent caller, float state) { - if (GameManager.instance.currentGame != "karateman") return; + if (GameManager.instance.currentGame != "karateMan") return; var joe = KarateMan.instance.Joe; joe.Punch(ItemPunchHand()); @@ -1028,13 +1028,13 @@ namespace HeavenStudio.Games.Scripts_KarateMan public void KickChargeThrough(PlayerActionEvent caller) { var joe = KarateMan.instance.Joe; - if (GameManager.instance.currentGame != "karateman") return; + if (GameManager.instance.currentGame != "karateMan") return; if (status != FlyStatus.Fly || gameObject == null) return; BeatAction.New(joe.gameObject, new List() { new BeatAction.Action(startBeat + 2f, delegate { joe.SetFaceExpression((int) KarateMan.KarateManFaces.Surprise); - SoundByte.PlayOneShotGame("karateman/karate_through", forcePlay: true); + SoundByte.PlayOneShotGame("karateMan/karate_through", forcePlay: true); }), new BeatAction.Action(startBeat + 5f, delegate { if (joe.wantFace == -1) @@ -1054,7 +1054,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan public void KickJustOrNg(PlayerActionEvent caller, float state) { - if (GameManager.instance.currentGame != "karateman") return; + if (GameManager.instance.currentGame != "karateMan") return; var joe = KarateMan.instance.Joe; joe.Kick(Conductor.instance.songPositionInBeatsAsDouble); @@ -1094,7 +1094,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan public void KickThrough(PlayerActionEvent caller) { - if (GameManager.instance.currentGame != "karateman") return; + if (GameManager.instance.currentGame != "karateMan") return; if (status != FlyStatus.Fly || gameObject == null) return; BeatAction.New(KarateMan.instance.Joe.gameObject, new List() { diff --git a/Packages/manifest.json b/Packages/manifest.json index 3fd746bde..390cdb5d7 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -5,7 +5,7 @@ "com.unity.assetbundlebrowser": "https://github.com/Unity-Technologies/AssetBundles-Browser.git", "com.unity.collab-proxy": "2.0.1", "com.unity.ide.rider": "3.0.18", - "com.unity.ide.visualstudio": "2.0.17", + "com.unity.ide.visualstudio": "2.0.20", "com.unity.ide.vscode": "1.2.5", "com.unity.nuget.newtonsoft-json": "3.0.2", "com.unity.postprocessing": "3.2.2", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 318b26058..d64d7261a 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -47,7 +47,7 @@ "url": "https://packages.unity.com" }, "com.unity.ide.visualstudio": { - "version": "2.0.17", + "version": "2.0.20", "depth": 0, "source": "registry", "dependencies": {