From 3a54d2023f772de6170e39da85516889f9aabb73 Mon Sep 17 00:00:00 2001 From: PopSlime Date: Tue, 15 Nov 2022 17:17:30 +0800 Subject: [PATCH] Pull down popup from common. --- Assets/Cryville/Common/Unity/CallHelper.cs | 8 ---- Assets/Cryville/Common/Unity/Popup.cs | 34 --------------- Assets/Cryville/Common/Unity/PropItem.cs | 4 +- .../Crtr/Browsing/LegacyResourceManager.cs | 2 +- .../Cryville/Crtr/Browsing/ResourceBrowser.cs | 4 +- Assets/Cryville/Crtr/ChartPlayer.cs | 3 ++ Assets/Cryville/Crtr/Popup.cs | 39 ++++++++++++++++++ .../{Common/Unity => Crtr}/Popup.cs.meta | 0 Assets/Menu.unity | Bin 134261 -> 135149 bytes Assets/Resources/Common/Popup.prefab | Bin 9972 -> 16768 bytes 10 files changed, 47 insertions(+), 47 deletions(-) delete mode 100644 Assets/Cryville/Common/Unity/Popup.cs create mode 100644 Assets/Cryville/Crtr/Popup.cs rename Assets/Cryville/{Common/Unity => Crtr}/Popup.cs.meta (100%) diff --git a/Assets/Cryville/Common/Unity/CallHelper.cs b/Assets/Cryville/Common/Unity/CallHelper.cs index 4d85c87..5463f75 100644 --- a/Assets/Cryville/Common/Unity/CallHelper.cs +++ b/Assets/Cryville/Common/Unity/CallHelper.cs @@ -9,14 +9,6 @@ namespace Cryville.Common.Unity { return (num2 & num) == num; } - public static void ShowException(Exception ex) { - ShowMessageBox(ex.ToString()); - } - - public static void ShowMessageBox(string message) { - GameObject.Instantiate(Resources.Load("Common/Popup")).GetComponent().Message = message; - } - public static void Purge(Transform obj) { foreach (Transform i in obj) GameObject.Destroy(i.gameObject); diff --git a/Assets/Cryville/Common/Unity/Popup.cs b/Assets/Cryville/Common/Unity/Popup.cs deleted file mode 100644 index bb5fb1b..0000000 --- a/Assets/Cryville/Common/Unity/Popup.cs +++ /dev/null @@ -1,34 +0,0 @@ -using UnityEngine; -using UnityEngine.UI; - -namespace Cryville.Common.Unity { - public class Popup : MonoBehaviour { - - public string Message = ""; - - LayoutElement layout; - - float timer = 0; - - const float DURATION = 5.0f; - const float DURIN = 0.4f; - const float DUROUT = 0.4f; - const float HEIGHT = 50f; - -#pragma warning disable IDE0051 - void Start() { - layout = GetComponent(); - GetComponentInChildren().text = Message; - transform.SetParent(GameObject.Find("PopupList").transform); - layout.minHeight = 0; - } - - void Update() { - if (timer <= DURIN) layout.minHeight = timer / DURIN * HEIGHT; - else if (timer >= DURATION) GameObject.Destroy(gameObject); - else if (timer >= DURATION - DUROUT) layout.minHeight = (DURATION - timer) / DUROUT * HEIGHT; - timer += Time.deltaTime; - } -#pragma warning restore IDE0051 - } -} diff --git a/Assets/Cryville/Common/Unity/PropItem.cs b/Assets/Cryville/Common/Unity/PropItem.cs index 5f24887..e0066e9 100644 --- a/Assets/Cryville/Common/Unity/PropItem.cs +++ b/Assets/Cryville/Common/Unity/PropItem.cs @@ -133,10 +133,10 @@ namespace Cryville.Common.Unity { prop.SetValue(Target, v, new object[]{ }); } catch (TargetInvocationException ex) { - CallHelper.ShowMessageBox(ex.InnerException.Message); + // CallHelper.ShowMessageBox(ex.InnerException.Message); } catch (Exception ex) { - CallHelper.ShowMessageBox(ex.Message); + // CallHelper.ShowMessageBox(ex.Message); } } UpdateValue(); diff --git a/Assets/Cryville/Crtr/Browsing/LegacyResourceManager.cs b/Assets/Cryville/Crtr/Browsing/LegacyResourceManager.cs index e136ec6..7f8786d 100644 --- a/Assets/Cryville/Crtr/Browsing/LegacyResourceManager.cs +++ b/Assets/Cryville/Crtr/Browsing/LegacyResourceManager.cs @@ -121,7 +121,7 @@ namespace Cryville.Crtr.Browsing { resources = converter.ConvertFrom(file); } catch (Exception ex) { - CallHelper.ShowMessageBox(ex.Message); + Popup.Create(ex.Message); return false; } foreach (var res in resources) { diff --git a/Assets/Cryville/Crtr/Browsing/ResourceBrowser.cs b/Assets/Cryville/Crtr/Browsing/ResourceBrowser.cs index 44ad453..503be2a 100644 --- a/Assets/Cryville/Crtr/Browsing/ResourceBrowser.cs +++ b/Assets/Cryville/Crtr/Browsing/ResourceBrowser.cs @@ -59,11 +59,11 @@ namespace Cryville.Crtr.Browsing { private void OnAddDialogClosed() { if (_dialog.FileName == null) return; if (ResourceManager.ImportItemFrom(_dialog.FileName)) { - CallHelper.ShowMessageBox("Import succeeded"); + Popup.Create("Import succeeded"); OnPathClicked(ResourceManager.CurrentDirectory.Length - 1); } else { - CallHelper.ShowMessageBox("Import failed"); + Popup.Create("Import failed"); } } } diff --git a/Assets/Cryville/Crtr/ChartPlayer.cs b/Assets/Cryville/Crtr/ChartPlayer.cs index ba06139..766657c 100644 --- a/Assets/Cryville/Crtr/ChartPlayer.cs +++ b/Assets/Cryville/Crtr/ChartPlayer.cs @@ -142,6 +142,7 @@ namespace Cryville.Crtr { } catch (Exception ex) { Game.LogException("Game", "An error occured while playing", ex); + Popup.CreateException(ex); Stop(); } } @@ -396,6 +397,7 @@ namespace Cryville.Crtr { } catch (Exception ex) { Game.LogException("Load/Prehandle", "An error occured while prehandling the data", ex); + Popup.CreateException(ex); Stop(); } } @@ -417,6 +419,7 @@ namespace Cryville.Crtr { catch (Exception ex) { if (!logEnabled) ToggleLogs(); Game.LogException("Game", "An error occured while stopping", ex); + Popup.CreateException(ex); } finally { if (started) { diff --git a/Assets/Cryville/Crtr/Popup.cs b/Assets/Cryville/Crtr/Popup.cs new file mode 100644 index 0000000..3bf6957 --- /dev/null +++ b/Assets/Cryville/Crtr/Popup.cs @@ -0,0 +1,39 @@ +using System; +using UnityEditor.VersionControl; +using UnityEngine; +using UnityEngine.UI; + +namespace Cryville.Crtr { + public class Popup : MonoBehaviour { + public string Message = ""; + CanvasGroup group; + float timer = 0; + + const float DURATION = 5.0f; + const float DURIN = 0.4f; + const float DUROUT = 0.4f; + + void Start() { + group = GetComponent(); + group.alpha = 0; + GetComponentInChildren().text = Message; + transform.SetParent(GameObject.Find("PopupList").transform); + } + + void Update() { + if (timer <= DURIN) group.alpha = timer / DURIN; + else if (timer >= DURATION) GameObject.Destroy(gameObject); + else if (timer >= DURATION - DUROUT) group.alpha = (DURATION - timer) / DUROUT; + timer += Time.deltaTime; + } + + + public static void CreateException(Exception ex) { + Create(ex.Message); + } + + public static void Create(string msg) { + Instantiate(Resources.Load("Common/Popup")).GetComponent().Message = msg; + } + } +} diff --git a/Assets/Cryville/Common/Unity/Popup.cs.meta b/Assets/Cryville/Crtr/Popup.cs.meta similarity index 100% rename from Assets/Cryville/Common/Unity/Popup.cs.meta rename to Assets/Cryville/Crtr/Popup.cs.meta diff --git a/Assets/Menu.unity b/Assets/Menu.unity index 4c700bff0933903ab2173e462033949259c6d24b..8036f37cf2df0afc6caaf94ac2871b55fab068fb 100644 GIT binary patch delta 5293 zcmY+I4RBP|702&Q7qSotDXy+3MxqUk#gX3#-K9bQsF#!q?Wyv>L#5;ngMsMWUAD6NhgrL4qgS`M$An*eeldY zDpbGCqq)GPFa%ezS*Z_5xu-M0t5!2rDoyGnEdy6|Oml(D!F}MIxmlzo4L?}Oe%;_Z z>E1!{)pQt2*05Qr1StnD170P=*UvmSv13UvRnfpF?p>* zXQBy)c!=F|Q#0K2tsnC90Qj?X&jJ1h9@)TF+K!~Wc;5&2JxmWIGBtk(?=U<%wvRu6 z!L!j+kkow$9t4lm>b;R%%B!o*k+sSA|C9>uPzCrC;4)=1!M&S}zgg@w|85wvFi7Cn zj(lkXY%vwO5a1kmH@HmAdGJ8k`12eWlV-pZ;Qcg!BH|aA^ZJk2CwJ~(c^wtJ+sH^F z9ojkMun*l3xOC`IaJAj|%ZPV@C%~mcyTyM8pT8tB_m9DlCIgEE{^a8gcHmKP+4rA< zhg*%m1ilJh@?*mXsNjA7nY05=?MLmi`nhX2+OG#s#8l{_g6HxCcm`YooCFW?8A@`A zbSh~A-1jKc+`yg(9|f0z)lQ7o*smGSE>l4k(aMR2C&4A~D)749#=ngU-uJ7)hr#QJ z@&10Q;YGWBAE%5&UUKc=*(eM=0^TbG8l$qHdn(~rRCt6#|=+Y;Uuj9kL)#EQo3Qlxspi|T+WGy z!2_H!62y(FjWAq;fm2sZ+9DNrPDmViX4`B6ult$d(xJ`Zt|tta4wWv6*&V6^AIpTz zDLn%)phv0<6=FX(4M~T}!3V%4a0PhBlV1(|QuP}9OCk#{nK%U=dW!scdgK7l?H>g1A{!6jD)=>Unaa<=MnnC z+8QP!;IfGR3?AX0kVxPGaQ80^m%x7!fABQNcajdm;I&Kz2|UsNE@xeZz&Q?&xB%RK zebTc8o&=ugCP*TICyPI?LJ}Epv=D|g3=;TXu3c-{aTHueJPIEBC0lcg_ut^YLx$H< zQAqkRcn7!y{>1R8syb{cNZ^9|{}5yn1DC*)z+JyG{<3Q(gJ;1da3Q$6$M|zXCXr47 zPuraGFM*@;de^b*C@S#4In^=njw5W%jd%}uRoup^1t;d?;OV1=%ZT@ahktFj9hc|7 z4Tb~^b;OEEANYKW`RqJqDoBUcg2%x#WajPK03JMU{N)`H1n&oz3^fwx_{#H~sUSUF zhYG{slA%L4y_6Vu!mi%mm z;L_2%{u|lOekEu4s+8#vt^d1WNW&l_r~(hCOob#BlS!9?yE!!^wWNH~Ed!5$OXjM< zy}x7c+9ei&`VYat`Qo{0U<1i8c!utIwFklDuhIiah;$BVdHAE<{OtTaUzO@2 z<#sB-Dku7fcBZk_y%2RZK=_P)@ZGEI{3c=%ip3)tdYFDddt>YpZry zfq-_NIjS$_Sxs;1qSU}K9h+!-TESD=%{^3?t(~XzMk`#S9aejN?~J#;7^JTFJGE1%;wgP`s#QNk{iU%xQoG;O$EQ#ZW)13l ft=)sV#ro$Uwe@zK2Q;Mbu`V8?y5S)`?zaB}!zD*O delta 4960 zcmY+I4RBP|702(*>?8{;7$jf_Bw6q)ZE3shl$pg+`_xQ{$>1y+WU;_5m}o@6fP_ZD z*^S1!BIqI?Z!Jm|#jsK;32WIc4Y+DMvoqDs_B#d9v`xpednHY@4I_<|Iz2ZlyJvqUB0wmv6OkboV#8+GT6}iZo2V<_HsQVeeBZ83SE_U z{WpJwo|$>8O26VN-@=Zw(%avSyYv-l&*;~tWO`<6-?Xw@wB2_Lx#h3b*3`(E{82x9 zCIfs`YB#Bi^enh<8B?WRA*~>N6?_alLCiy%1CQQH4U&bVlSp3&&w}?7t0kR%?$jc> zMU-_L-AE*GjWMVK_$b*p@Eq`LD|;)IC3Ta|1@BzWv=q1&JO#drY;~m7q3gfRe(u}( z8d2&2x^c#{VTd^frBcK=a1FR`1vN-Ekj^Dt^jhl;+)jc^0@s22f^02S?wjCa;BRZC zswlo%3`717$6rZFzXcxtuHjPBidCC#WRd`Xh(2=yZt!YOl|&Ml1fB!WlWjWbWa1oO z#a8pRRJyjCE;MpG2QHblg9p~IwUpUi;O>y&JVVn+?*i4fPHMCS6>6>luz zb|B1Gr5+{a%zgtt9Hs_|WcFL|=vu>j={AS-ci`@IhD+di2j6REVu5#Yd=4-lhAa%S z+OGlcywg0$qFX)b+6DbBOa{Pv=rccO9k{=Zt)&Xx2|f-k3AaUHNVS^|GSZPlUtP*% z1pFEL%mMxc9=(gLG)1JmNdF9O-AxS=nS#H7C%|QGje{woX};7MAgUUI2z zX>oQ4_j=zq2DtV5J^n&g(x1g9QHgqkEjdMR0k)FM@a9|Nnt6fqSqHW!FdT(lkNd;+QHsRb&$>@t#J=Jfd{}P@EmZ9=a57an+rY` zfnfxzv=)XuFAS0_shhM8JQ}42iInu7VfS)wXQO;oO7@BM;K3flCGfrA>S4npT)LU0 z8>9mat}^r5Yy=N;?MY-no4~7iBOs9h)ig$(0R_M(DgizMjsZo~To_{CHxH5l)k+6& z30w!Bc+B`q;2*WDbiTL?;8KZ~!8>EdU-pj^4yQ6VJZ=oKst3@a2yT(No^%l0zti~3 zfKGysgUf(+9X{lo3>uy={)2Sm4Q)602y>q1Pf2+-J}HJ>)F4?!I-m3@aEoh65+%Ko zG!C8v4-vbHbPu@qNotU^kzP&uGiCxdSA{bb_|E`e9Z z*}Jr=KLO8z%T)eL{P!4tsa)~>p@f@$)c) z1Pl_`1K#ihww6vZQ^7~TCGa$G|3Tx=@jaxMffv9h0xvqTj?59|e%5r5_cdw^Dg`bX z_kf3=GyWT}V?GRCIApkF{0Mlg&u|Ic3!Za0)jvq~nWU@#eV=oht4^8@GN3i!S@0a0 z`E?C}cORw(iF`+d!NX3#J3_oc#Jd3!Vj+ zZ?i+-u_MOcqFX&_5IR;|<`$;1b|Q@aRj%U#9XV z@duZ{jo|TP#(yEl=httq&TnLthoOr;b0zkHTR&uL>A1ZgTpc%DO8SMeuRF&}KltNh z=I4A7JP+>t_9OnK2n?y0&4Xm53&6uC43_|322X&?+p&44wV6Ew1IAw#?-uZJaH-t= z;E@D>Es+FBuOZzE!x*@fveo~&}I`AyGl)4@~{1f&r?KfWL{QhNOkY6hE&>{9y z$A99;H6Pp>GF&o?2BtWt$ZqgQ$;<=l0as^?zYORR@D%Y`Y?9LT!Vo^2*||iYFSGYF z>!97QpRTf#TXdy864369_lW*kncbMwRheSHj!r&sn|9mL zLG87V59&61=p;3RhqcGH*6W5za{4K^KU}6~+ndhmW_G#GzJ9eXx4i-FvaMg}#RqPs zUc@WyPlFVGIIX`?ZeM(XVt7yMH)q(R{krPZFLmlNU19$!t!LOn7xZEm|4(3#U(j2r iyUX^BP!^(f<2erdgi(=R5jy-~RyG4GjkX diff --git a/Assets/Resources/Common/Popup.prefab b/Assets/Resources/Common/Popup.prefab index 30f4ecd077a1de6bc8ac9b745f5c021485a8827c..4019e2ec5e925553e32750eb686f4dd0be281a75 100644 GIT binary patch literal 16768 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 literal 9972 zcmeHNZH!gL8J@Erd`Sf>wN?do5oH&31qGEBWEXH@aaYz|J`B~ahrMU-9=vc{6cWOPdxqE$v&ZK00;kls5&y zhsYd$b@@dbkBzPk(@Uf0`VTH^e0chS<@0tPcxdMBQ!l(X{o*x{tM-(_e>K@t#p{(S zqS+}Fkt6P@?^mnh)2OQfL^+fAtJE97r{i9QL|G5Hx6twelqp~B;7#C}i!%FWxJ-+$ zR;l7IEKjW?@A6D?aF=It3HQ_z@DwZ$pV2Z#f2KOP%QLNndulKGc?Wnn!gG+k7Be>L z;b!3MJI5?~=*M&4vCsV!a9)*qI9Fo^cb|*dEAgxY|5Me?)FLUs{n6Gc4Oub)Dyv_87>tYXz=y-24tdAH<=bp@ig- zT^(hjSj8%>wkcn=M%nxtKkt)8vZgtUnjCjq+a2x*B%2?}Fuy9ut9ia6y8wx?(mx=BHxH*XPVQ&Iz53@n{px+y2(-6>& z{|&Y7>HFbT?=~!2z2>h!e`V6~$6g*ddd0B^Zd`fjJG;N~uGfC>VVd_NR2kBQdpEBe zn*D@(PcFCdxOeJ}ZiTj_-Me-dp5pRH*r447-MeuY247`yx_1}9#p1@jlhereSe)+N zmA~8Kbnh;{)8cgR#K-Fv2721k*(eU${gG(MF4-+%D&KEb@46sN_Y>}ngT5e+gOpU3 zfRadSCKwL4Wdf0qvK3%7HhTUO;n8Q+(i^7UaqNk&-MV5&XYY(v(`sJ3`=tv~+3M+s z=zNbNO{`K0+9raq|K}jg$68>pRfl9&dva4z4|uE~vK)kYIyjz;z??x0gD~+L^kN8( z^;*+GnDt`Bzie?Ggjt-y)-K@W(LtCFN{qMKZSistX6$yq<)ODUL6zyx(^kHb_$TmI zpCE`aqTPdWm=74Tn4IxsxgahCExEy3aX+C0kX>BH$^EO|U#=sb3~4{rUT3f!BGFYGgxmOEK1+GS(KXZ~XDNxj+td=C z)b%t6p9>cZcU$CMo@XiMOr}P==RLrwE4q5Y=Rz4r6g@gpQV6G_?IJ38>Ov}#jk_y=F|Dh zXDLa3+B!o+^8XC_fq844>0n#q$=9Q{b&I?D(Y9`Rc$Ot+BlOY2PyFvVBck4Pu&tW) zbK5bJFIhPT+ms*gn&C!!U@*#>%`ZZ3{mR+sr@Qm9+0VB1Mp?XgZt)9PU;QG{mTT$F zhlPNXuYP^s{`O6K)_?KA*3An#j@G1UOx$&_BfPlS8cbIIQdws@xTK++>EM#@eh$7G zi5zlJ#RCj31lAecQ)fH46rRe1OW_&s!KLt&7n?aa6CPP?tNm=j&vgaaR1ibIn%=Qxj5FCmZy0d z9M8piyah#aYdAS$6S7{Yx2{Nx$?rV{n!}%^kc5P z@Y9b8Ki?yFp(yX{7HvJJzq1XVe2>tN3H}@V9$`P}#|&=XBQlTlV}jG~$vo1J8QfFk zDWFUq((@bEoORF=N*)Rk}(&fkYJ=eJ(trp=pp?t>`Pp1B=S>h$^2+Ytws z`Qr19yr;~e*Bb=#r zMR`Au!(uh8M$`_)<5rD#M!8Vqw%iR_?sr!AhnZ9y@b%P+BW3;S>WZTLh8T_(U`w{Q zKZT!z1fUwG7ZtT^&aC9dUb)d}Bd*gV z9sNl^&v9_Ba_J}A82MTq<;5tIpWfH-PfGNY-q&kpo5`AA`bqC=cqS*lq|y7j{9OIy zr}rI;zZ^v-`O8sclD`~98a><(UXDrcnD`8p)C0Y*=*QIqy|2N|eCBBYH)0D(_Cwv5Q7;<2Z2JuyA#6?x!kJCY34ca<>vQh;b+(sWIk=8IMb}`ieYhDVnNR*RwcAkY z2f**GsGD9qq#HG$0bMeUii?cb=btongQ(kuGEco@&8*aWZ=1S*q3%x9@w-(F=fi8b z^RT|(hAusU9RFk?)~*i`|JH7HO?#{c-0+GnS+!p)s$kjvHFh5e4f@uzA@^x{Li-zLffM2E0c*%G;s8K5=x}h$4iHzBxhUy!o7OaBEez5p&HrTaou#w8M!WzLoTJBubCdCqIo^-Hf= Swq)_*Wjts2m`n6b-v0oe!=t