From f0666a507244f98178d1955d68aee48f525c3f55 Mon Sep 17 00:00:00 2001 From: cakipaul Date: Mon, 30 Jun 2025 18:33:40 +0800 Subject: [PATCH] =?UTF-8?q?demo=200.1=20=E7=BB=86=E8=8A=82=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pro_animated_sprite.gd | 2 +- asset/art/gif/c01_书店外街道/报童给报纸/0.png | Bin 2085 -> 2159 bytes asset/art/gif/c01_书店外街道/报童给报纸/1.png | Bin 2136 -> 2200 bytes .../art/gif/c01_书店外街道/报童给报纸/10.png | Bin 1747 -> 1814 bytes .../art/gif/c01_书店外街道/报童给报纸/11.png | Bin 1729 -> 1794 bytes .../art/gif/c01_书店外街道/报童给报纸/12.png | Bin 1722 -> 1779 bytes .../art/gif/c01_书店外街道/报童给报纸/13.png | Bin 1701 -> 1758 bytes .../art/gif/c01_书店外街道/报童给报纸/14.png | Bin 1722 -> 1779 bytes .../art/gif/c01_书店外街道/报童给报纸/15.png | Bin 1701 -> 1758 bytes .../art/gif/c01_书店外街道/报童给报纸/16.png | Bin 1722 -> 1779 bytes .../art/gif/c01_书店外街道/报童给报纸/17.png | Bin 1701 -> 1758 bytes .../art/gif/c01_书店外街道/报童给报纸/18.png | Bin 1790 -> 1848 bytes .../art/gif/c01_书店外街道/报童给报纸/19.png | Bin 1703 -> 1752 bytes asset/art/gif/c01_书店外街道/报童给报纸/2.png | Bin 2080 -> 2147 bytes .../art/gif/c01_书店外街道/报童给报纸/20.png | Bin 1751 -> 1807 bytes .../art/gif/c01_书店外街道/报童给报纸/21.png | Bin 1791 -> 1850 bytes .../art/gif/c01_书店外街道/报童给报纸/22.png | Bin 1780 -> 1838 bytes .../art/gif/c01_书店外街道/报童给报纸/23.png | Bin 2075 -> 2152 bytes .../art/gif/c01_书店外街道/报童给报纸/24.png | Bin 2136 -> 2200 bytes asset/art/gif/c01_书店外街道/报童给报纸/3.png | Bin 2136 -> 2200 bytes asset/art/gif/c01_书店外街道/报童给报纸/4.png | Bin 2075 -> 2152 bytes asset/art/gif/c01_书店外街道/报童给报纸/5.png | Bin 1780 -> 1838 bytes asset/art/gif/c01_书店外街道/报童给报纸/6.png | Bin 1791 -> 1850 bytes asset/art/gif/c01_书店外街道/报童给报纸/7.png | Bin 1751 -> 1807 bytes asset/art/gif/c01_书店外街道/报童给报纸/8.png | Bin 1703 -> 1752 bytes asset/art/gif/c01_书店外街道/报童给报纸/9.png | Bin 1790 -> 1848 bytes asset/art/prop/c02/海报特写/青岛啤酒.png | Bin 23769 -> 19729 bytes .../prop/c02/海报特写/青岛啤酒(未用).png | Bin 0 -> 23769 bytes .../c02/海报特写/青岛啤酒(未用).png.import | 34 ++++++++++ asset/dialogue/c01.csv | 2 +- asset/dialogue/c01.dialogue | 2 +- asset/dialogue/item_description.csv | 3 +- asset/dialogue/item_description.dialogue | 2 +- manager/scene/global_functor.gd | 8 +-- manager/scene/scene_manager.gd | 26 +++---- project.godot | 1 + scene/character/main_player.gd | 3 +- scene/character/reenter_lock.gd | 2 +- scene/dialog/balloon.gd | 14 +--- scene/dialog/balloon_debug.gd | 2 +- scene/effect/shading_layer.gd | 4 +- scene/effect/黑手.gd | 2 +- scene/entity/npc.gd | 51 ++++++++++---- scene/entity/npc.tscn | 5 +- scene/entity/ux/sign_snapper.gd | 8 +++ scene/ground/camera/camera_focus_marker.gd | 64 +++++++++++------- scene/ground/camera/camera_focus_marker.tscn | 2 +- scene/ground/ground_loader.gd | 63 ++++++++++------- scene/ground/ground_loader.tscn | 1 + scene/ground/scene/animation_root.gd | 4 -- scene/ground/scene/c01/s05_院长房间.gd | 10 +-- scene/ground/scene/c01/s06_孤儿院长廊围墙.gd | 26 ++++--- scene/ground/scene/c01/s07_书店外.gd | 10 ++- scene/ground/scene/c01/s07_书店外.tscn | 2 +- scene/ground/scene/c01/s08_书店.gd | 25 ++++--- scene/ground/scene/c01/s11_黄包车演出.gd | 22 +++--- scene/ground/scene/c01/s11_黄包车演出.tscn | 2 +- scene/ground/scene/c01/s12_书店外_诡异版.gd | 16 ++--- scene/ground/scene/c02/s01_公寓门口.gd | 2 +- scene/ground/scene/c02/s03_院子.gd | 8 +-- scene/ground/scene/c02/s04_保卫科.gd | 2 +- scene/ground/scene/c02/s06_二楼.gd | 2 +- scene/ground/scene/c02/s07_二楼内侧楼道.gd | 8 --- scene/ground/scene/c02/s08_瞎子卧室.gd | 2 +- scene/ground/scene/c02/s09_裂缝.gd | 2 +- scene/ground/scene/c02/s13_盒子猫二楼.gd | 8 +-- scene/ground/script/c01/s10_鬼差探头.gd | 2 +- scene/ground/script/c01/s12_飘动的寻人启事.gd | 4 +- scene/ground/script/c02/s00_煤油灯.gd | 6 +- scene/ground/script/c02/刮海报_过道.tscn | 1 + scene/ground/script/c02/小手讨东西.gd | 10 +-- scene/ground/script/c02/敲门游戏.gd | 2 +- scene/ground/script/c02/水盆特写.gd | 2 +- scene/ground/script/c02/裂缝议论文字.gd | 2 +- scene/ground/script/c02/谢幕演出.gd | 6 +- scene/ground/script/c02/追猫猪头怪.gd | 6 +- scene/little_game/书架/书架.gd | 2 +- scene/little_game/八音盒/八音盒.gd | 8 +-- scene/little_game/八音盒/八音盒_old.gd | 8 +-- scene/little_game/弹珠游戏/弹珠游戏.gd | 15 +--- scene/little_game/拼凑信件.gd | 4 +- scene/settings/settings.gd | 2 +- scene/ux/memory/clips/clip2.gd | 2 +- scene/ux/panel/ux_panel.gd | 18 +++-- scene/ux/panel/ux_panel.tscn | 2 +- scene/ux/tabs.gd | 25 +++++-- util/canvas_util.gd | 14 ---- util/canvas_util.gd.uid | 1 - util/debug_label.gd | 22 ------ util/debug_label.gd.uid | 1 - util/dialogue_util.gd | 30 -------- util/dialogue_util.gd.uid | 1 - util/util.gd | 58 ++++++++++++++++ util/util.gd.uid | 1 + 94 files changed, 388 insertions(+), 319 deletions(-) mode change 100755 => 100644 asset/art/prop/c02/海报特写/青岛啤酒.png create mode 100755 asset/art/prop/c02/海报特写/青岛啤酒(未用).png create mode 100644 asset/art/prop/c02/海报特写/青岛啤酒(未用).png.import delete mode 100644 util/canvas_util.gd delete mode 100644 util/canvas_util.gd.uid delete mode 100644 util/debug_label.gd delete mode 100644 util/debug_label.gd.uid delete mode 100644 util/dialogue_util.gd delete mode 100644 util/dialogue_util.gd.uid create mode 100644 util/util.gd create mode 100644 util/util.gd.uid diff --git a/addons/property-inspector/pro_animation_sprite2d/pro_animated_sprite.gd b/addons/property-inspector/pro_animation_sprite2d/pro_animated_sprite.gd index c4735850..b26245b5 100644 --- a/addons/property-inspector/pro_animation_sprite2d/pro_animated_sprite.gd +++ b/addons/property-inspector/pro_animation_sprite2d/pro_animated_sprite.gd @@ -127,7 +127,7 @@ func _on_animation_finished() -> void: var next = auto_checkout_dict[intro].animation_next if wait_time > 0: pause() - get_tree().create_timer(wait_time).timeout.connect(play.bind(next)) + Util.timer(wait_time, play.bind(next)) else: play(next) diff --git a/asset/art/gif/c01_书店外街道/报童给报纸/0.png b/asset/art/gif/c01_书店外街道/报童给报纸/0.png index dff2e11863d9b4541662d5f4fc0aea1bd24e4c6c..9e60efa9e057c00532951466b9d95b009b27653f 100644 GIT binary patch delta 1962 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 aw(>vA@Z-IQ)oA1~ delta 1585 zcmV-12G04G4$}>PiBL{Q4GJ0x0000DNk~Le0001g0003#2nGNE0Hn^(ZU6uP0drDE zLIAGL9O(c628~HXK~#90?cL9B6lEO8@lUZkY`SY(%C;%fA1G-N0ns$ZM7eMv#1IJo z0tY-O2SPX)PKKKoE*|^`yqXXUA!_twxS0(v|Fg6l`wn1w>IqXm^;-3b^Ce5NbERD7*t*s;U-^>44uD#wD<92& znGXN!lY9Qx`_`EbUy?eCe@31MKaYQPJ+|lglF@zssl)rrDim~i@|jNTt=+`>4iIPN zDt}_Q*Pqf&r^989fSXRhCD_}QsBB|80q?cLq3 zt`+>Ndf#2SuB4NY94A~au3q_G9`57U;y9A$>Bxb>a8YitsNZr=!|+RmVohg|;#2*m z_W3WZD(JPukQ|TG%?(}NsVc5W>59xd23d7sZdmQoz4*#_A0+#T?a^}Q&j${ zS3dmg+*0Fn^3@6t_VaEgpv1izS>>5yJv}fag8{Gy>gdZq*D^1@|jc$!p{@C`U#y%KVX0#`KNYar* z>lvdxp2@`dE1aKrT@~zKv$&$bfu;FhmkpeFRxCS4qh@Ae$q)q7dnnE9CX8% z^+)^na*s80e^H;l<4Vh(c8_%H_&4#m!^hOHU&C=!@>cwcA0AS9cu10ebnfg4oj!du zJPSB?_Jovhw0opm;~&1Q^6-#8es9?H(9H za&i+})*kFuzND+S{V!YkLR?|9gm~f5Y; z&;I!{$6D3QwqfFwCK&dE@bCTYe@n+nbjn+)d^4x_bw^t9G&YidseE|3;Lq<@xtDt! zi_<-G!~U(==$~B4q>_~v2}d*c7n}Z$QFmJ`rg%+-pL7y>@!Zd>zUn1u>8Yo&!ETLh zPgXiWUDd~lsqiJ~t%2sZX3xy$rLMHbMl$P;0M?lcKiF3XRqrG^mG_?Mjeh^`otgQ3 zxbE0UMl?a7Rj=&arUOa5+PusfEcfT{4S)dw&6qrqCsCDon* z#Dtmfo8HBn@F#sTsbu6JFwV?`U#~voT+vhB^DF=6-6h?;yVT&5zVENknLp1rF~iri z>Z>IjpYaso538@TLy4;d{#^RbQmNyAYkrFD#cNNoo0W|89TZ<}|KN zn4HS&?oe5hI$rZ%mskH2t$ew%y}>$xbWb{*``@f~wwlQe?de<%c1z`u=85+rvaR8I jRqL*`9+9y%7jf_}zaitjKhjl#00000NkvXXu0mjf8Cy*h diff --git a/asset/art/gif/c01_书店外街道/报童给报纸/11.png b/asset/art/gif/c01_书店外街道/报童给报纸/11.png index 8e5b7bba8f8ec939c877cd2aa90f7723ca7bc915..e80e634bdd5914a0d5171dc3510fe9b4267de3ed 100644 GIT binary patch delta 1661 zcmV-@27>v)4T27TiBL{Q4GJ0x0000DNk~Le0001>0003#2nGNE01DI_ssI200drDE zLIAGL9O(c62E0i`K~#90?cB|4T-O-~;Mb|PsArMn`WrV#-u8#i{GscR{=qG;4%WM{g# zn$dhnvK`GxrssKJ(9E49bGZEco^#K+R}qo1a(}=xZ_jRb;8}5YW~|YD?CR`2=V!o@ zKf%+_4>#K0=WmMp@}IR8Asn#ePww>d!;R^09of8r5DwIHyWN3j!S#R5?{*iGC4dpJ zWd&>w#|*^KZg=2W(5!&%K~xoYM)DP~R(%xjoj)BBdFYz2h=}*jpN?Af(JuDx|DOuD zrhgeic2@EgklmGh0Dp7-)V987dy)@eM8uxzXFczmKi~NEHEVzalx_n5y06yi<__4 ztyQ|_ystbuoL9g*i>)TbtPr*OYJbPjJ#%7gfIUt}5&?|JL%3-WyF%Dq0hj(;ixk4L7vg8%Ek~@>>h+jBSd8Jx zy{$u)TOalOUipQWA|m1!f4m+M*CQfg?q1a#un&^2fRED*AA=!)5pns-ttV=C>EgKo z_ar?6xMrges(yo)OaOc4e_xX-*k8#6u*U|sVO_p*E6Ojt)Os;^Nq=1hN923K#nNzm zcxyiP7xzY17>e=I`f0fS*V*{pZ2nB}J8!?fTir}XGD``~A-Ea9+y7aLh={B(6!q1I zt#${#nMJJDW9r!G`Y*36=lj8JZdV>yis^$Shu{xy<%`el;Ts(;MnuHomwEVZe7dmZ zzcE=pXgjVCk_%ulD}TgSkG9Uujk`-Rb-1`5!mjE^|0EZ{h=^~G<+oHdt6x?ailzF) zIDRC*3H8R^rHFl{C#r;OPm%#_pSxv+&g-zOFw`23BO(vs-K9K~^j&fRY`-nPJA4s& zRqQ@KH9itk<0Go!03;W{O%?KW!O`Jj$5nB=jw@sOBB=m&KYx_e9kfcd9!vG!3drC% z)7=VLROavRiBF;t5%J3L&7Tkc!?ios0k;(@>vH{$PpzS;XjEGpRNBPL1$KUm` zvb;0>Nl4NGY~Kl~RPOc!toeOqaoH8{fF!>TIFjYJVl{QI@pTN#?hEX@qyt!AsYUz! zEuYLU_Ow}EsYOIYDe}GI@{vP3)44<>yP`j`C*SMc^Dd42bK_C|bE&a@PMU3+O8ZOe zd&TrcvL|x?&|0{jTb~AhQU9vve6-rNwcV&4k+Ccoz-ImjlIr4==1<@+00000NkvXX Hu0mjfiLhUL delta 1568 zcmV+*2H*LD4#5q7iBL{Q4GJ0x0000DNk~Le0001g0003#2nGNE0Hn^(ZU6uP0drDE zLIAGL9O(c6275_FK~#90?cKp|(`FpT@u#dYQIn;mv{gt$>8iG4z}OT`lQyJ@140u5 z^VVgJCclMqvdwrM*}yG<305h1lFViZc&(bATXbdgiY4z8WV zZql-;O?dtNNKsSgEqdMO{rRu7ZccEYL5K*hi9#?<3b?0Yjt z{{qJL#VR%Loj1`g=WA&-^aH@?ogdp5tBk$T-?%}@2f(gYcVN3s|GCiWF0?J@s%&h8vv+h zbbsZeIith>`s~5~^||Sc4quWwijM;C-LGf9x*6JQe96!`|J;cq6%`7)o?X+#q556) z4}dT;uJSYK9%o569{0923i{lMBbCg^KqWI0T>B3LqYiss@RBkI)3WnV^-eOP@!>?E z?e*-MrtUosY@fOpp5q+uOEO zDC(o}q*8q`DY;jY^xfo5MXiWrS*mOAey{LU|0}qe*X5Zn3C8 za?iZ5ONClNE+Zto>YCy$RAzshIs37^lEV<}bk4C-3^FJ%V0sso@aF3mp)tO0y^Q{RxeI@Rlm+L4Evg+UUg{mr<4P_ug=?etlBX zhw0#F=RY~&y}x|nw3N;6V9(lvxs@;J#vSJmG;S@=>DKa`782n&i{C0^D!=v-E=iJY zYiLhYv7z1GrrhkEz|W-)9DkN1eg4C=q-jY~_HmIp-*j&9VP$;y*CuDT)b7&7iEZvl z`!POzY2yJ9_Ntc*2|qC3|3_h~ej~yU*x**~waHnf4jlGgFz9Swa@O{v@tAJUE~q=Y zTUMk~$#``ar+=B!w^PnD`iZb@ZZ zqx<`+KfGFS*7s{X$SsHBa?iNK{_R<3VW&3uzF1U}wDQaee&*p~(|=uyyheo| zwIX`)ym@9b^LdT#jaCPMuj<3ZsPHA}%>n1OtXuU~q*Hl&O~d`p0~|B+d8sSDr6Yjp zj0?YZuC^le=d)I%(|?-+Bsl|MKJN^O5Hc$K+DEzk!As83z`uPonb2r55z3>0QQ|a?yDk6M~53fzyJNs zIpeSMjR?Q#v->qt{k_U9RR31*_eZPFo3isvU$enrA|t}zRDap_=KT$~N1T=_*i!KA)skxO)7@WK3A8D!mLy4WIcxu^{@$JGT$?a*H7n8Ktlf9K=6qjS z|9_P7mFoVwZCvs0cy;YRB#hkA?#}gKcU4bmp4u-0`|7o;X}eK7k+C%w!r)*0P2!aI Sa#N-N00000003#2nGNE01DI_ssI200drDE zLIAGL9O(c62CYd%K~#90?cL35T-O-~;8&?;GFYml+Om+x@<)x7m^e5=lrC!8dSP4$ zl#)f)H6-0Me?b*-pMiG&*a(_IDk-Z+kv*NYInQCX-pOmejd03%|@ z3fQ$ydNi`BA)k;cP_ILf80-hFg4`!5m^@JPtP`+N-O2~cj=2};416o_CVGNVgJ&agmi{)Cmms9IFk4aZhxJ4 zbg5Us=5a)vKe<05wklyI+w55ZBUHhDrBwktbq1;)#EYNai-@S*7e+)OpNmSiS^K=+ zXYs^L>H1`bvH^Y<>qBMV(U`PSC>`=%;z6JyUpk0oioL@rq4?E>;JI~B!=$%wc-)Ul=@xd1*+@z|-SYNtPGO+uo!sLZn?xd86uw}1F( zuZNHv0c`Qs&(H1k5RxN+Uw_dXZ~xH@cmUF#g!EVs?6urt0x~@5R=~!ix0Xk6!nga< z4PX!NU;KQphmafr+=1#hd`aC%KXzwyM7)0f&=dWx;;~aEA_I`_B&2f-R{dDj+g-^8 zu##;?VSFt9b>mJ<7M_oMZZu}cw@$;Azb!R4qDE}L5rM%-E`SY_g@3J(eRjXnJbrJf z6!CEuKl|y65z%{Q%-|$-53@KoRjp*3apmqtGl2QrXk?oYV|uI*E9FW|eY3tUxS7TL zk?Gp;#(Hg6bPs>IbTg@QIA}@Eg1>xJn~OBU*J|~PEaqn?V*WrOuKstW*0@dh=wFfn zd~s%M$Iq|cT8r2>9)I&krnf@KP$U(=O19bdzES=1xzSk59>(#5QxQ=QVBP$Y>9~4p zt*wp0Nh*L1%eTwT`?h?peIAz2jmGp?p{;Fxb|U6yCse~BNHTy8o#Bh9RmEQI5wSHX zVPKM3hIwgbtlC=ny5wrJ-^Og1-I44P!t_|78qrb(b6d+Vt$$7*pW60!Sc2(aG8OQN zOwb8nBIha+#m^HhvLEgQM%Letp^>IaV6Uy|5(1N@(oDR zlaMx>+k9D3qdn&fD~BQJ0B$$i?NSe6u{isfjy$cT1IXSJz$dlcC7Qk@8^D!vWosgl z%h!HdLRMN`Z-0JXoU$2VSdtB3FM_uF1TZ3EGmGNE{g2;vwXwcC<4H);0c_n1SSsD> z3RvUw((1Yy@Q@_G5IvEvZN+NnTx4#$EZdkma7hO++o(kA2CM6LR=fJFZ`3v>j7LPN zT)$K^Fv&hrniz>{M8wE9YVWI$YOib6t#i`o(=a|c-XDBcyj$b^x=Z#%PL9^Y_1xBN s@Pq8juJh6C*V4CFKasI47=Z2kABhdeJ~uqrR{#J207*qoM6N<$f*wOcMgRZ+ delta 1560 zcmV+z2Iu+n4Z00~iBL{Q4GJ0x0000DNk~Le0001g0003#2nGNE0Hn^(ZU6uP0drDE zLIAGL9O(c626Rb8K~#90?cL976lWaA@lR}aT(a9_8#iHHqf>yR z2KzmL=PkFyB+P**W9_>Yx1xk`DLaosi<=^f7kTs;jMA|muJfT8`LUdW|qf?Zr_jF<||db zv#p?FJ|h*@Ns@j%b3th@C3&7&`bV$jPWHd_J2^Fx3pxTB@jS`*b!bl^ZYs}J^;h{} z9PC=9+Bz8;T$liM3cmKhFQ+Zgu6pTbce2Rq(8&CFThgH&qmr6OfSO`xvQ8jkNTDtK*!PU*HZf0UK(+*5h38lMWJ=IOyQJDKl!D_8NJr{nvJEloGe z_jU68b?qHWX>7^Y{&i_50xub;_N6Xs{VtQBR;lW%_a+rgY>3+~-oF)Z@2d{P?K&!`&{hyCeW3jrIxHtx{wK^`?plwyi3L55lI)H>sVI`6k1ppX zF6$EbPBw$z#i_Hm`#pqJf5(~Nw{tz~B_r4NrKk8tkEA1q)<4zHDsJB8MA2un;A_8) z+t?=CTbT-e&95t+&FIe?vl>aSm6sY+A=})=E5A<1U*eE@-_&u1so+OO(#-(hykCpA zPfnMm^S(a%aJ!`LD*%_6Ij>DkXr@ivpjt@X%MOFs#zLw66X$7dG|?ybH_)fBSf5 z+4ryBS(JvdDs9X+CxD~O1i$9jTV6+5@1+K{=s(hyv7Dqv@Eb}S^SXLxv8Bx=W`ZA? zxm%6T(_X5zp7m0Lf68alEp4U3uu6qtCyxT=f*)xQyc8Y{y0uGc7Jv>hvDDi+o(Yl} z-ys!N`BBx6kjbS?K9dflME0keOT45#TXH>rhV^BhWF+&STFO&-c7C9k%LbD4$MuD{ zU6S@}aO-dJIu-ol*r>|0iQmR)J0i^aqxya3s`-qMm@W8Pf7E;Y;%3yIa`TThm<@if zs=h;G0u+md6*}5uHuzW>!IyfU7K}3){JCnaS+u3R@R0~`d7%=&U(9i1$2^yV+>8C- z*L@YoMpwRdyHt5G<5@+_20wW(zg)i45!~qg@TR!dp0000< KMNUMnLSTYE6+C$W diff --git a/asset/art/gif/c01_书店外街道/报童给报纸/13.png b/asset/art/gif/c01_书店外街道/报童给报纸/13.png index 975d9b55b33fafd6acaba075a82a2718e1120966..f7afaca2af76ed625933da8b1346e6969b3d3a7b 100644 GIT binary patch delta 1624 zcmV-e2B-O@4c-lZiBL{Q4GJ0x0000DNk~Le0001>0003#2nGNE01DI_ssI200drDE zLIAGL9O(c62AD}iK~#90?cL35T-O-~;8&?N87v{GvLxj3XN{DaI5V8x+oN3w~YuZ*f@6LPK+&osTwidu`^v< z&DCgTB-_!9WO|+lhPiX**c=W&z4xATuj~ksv2uUlxi_@e19)D%u`tu@Z2QyVZSyl= z$xrb7!I5U$aeh$VpTF1FgmA!;pWOL_BhC45OmE#m2nXtgy&k~x;L4|W_Ie1(62OSq zwgR?J#|*^2y&k~xpj83egQzO*j^ry~z4kcXy>K=n^3b(j5fSfRI2-la<2@YR|34LQ zT`PZt?5^Z1AbTtM0RH;I$sK*q&Lkheh=`%uf4Yua??3qEC3}Dal zSlzopB_yez#>&Q z@9!;E<9C1fwD?Z=1}mv+n1#a=&3e{|D|gq5>X$VhMMT8ZNI8~k^@xageSRvge!d)Y zN2c;WxVD-<72U(1FWpRP4*M<13i##Y?SGN&>aCTSJ5Y|RpD*VPTZE6DOEQ4poXLN$ zqgDM%!~0?-dlbi~CnA3$4`A#cjkzOJ8zE#Mk_uowYjm}hhWB-So*F3^pXZKD#noFY zc_`_-qypHobh|bb(H*{syef9K&&`g--0YZYH~>iou&3dCBYJA2T%4La6^j!3CYgP} zmuE(rt;*NZS?#K|ETTsRWN?z1>CW(NX}A>CJNJg-dNd;2dBpbk9 z1a0>TU_?YCi^_lW(rJAH{0v z+~eDHTJ~IE-z6QuY^@&c&$nE^^PsEG>RSGk^l0SwiYwETyEC{%B)g+OHk9A%9r{}S zx%oJMUuka4NvluG==kWyy<++z*@+zAw;rw+HZFr7W?u<*%}3F%t#7Y>k+CfoTlpU+ W8_bI5&)5tA0000 z#po|!d^lNc*!DIO-QIh-WPJxP`ryZhlhyIp2RE-^c?Wo<-3{1nx9={sy9pi3_~37u z`Th`KsjhZ6V7K|1-`EK_8+eS){BrTBE}lCj$qTsulBA30PN`gc+Q!zkpYfS5Dd+%b zW_0F%V{1kS|Lb#y{?~rf86A8{iWUE9+4kSx|8mCKYkbMjG5`GOBUKd&x-z?=4-PjU zVz>j?%(%>-9O?6xbW^FIY_mY0KYgS+IW| zl&utsdgow9*>qCM3`mlGygH+V6PFxEP4)fHvM2jr`h%Pt>8rK`(&spm>uTy~CMe1; z7xj1k-yqoKLb16s)Y#Ag%$e|o1HY9}pl$Wi_wL3?UW;1h2iuaS4)sf_p8?8lB{K7W zCG)f2oXigk2eZ}*uH9OZByS!dDdEIbb}QcgTAj(UA^+XzOF%Pb`wM?} zGTT&iKfkI=zt8JfcU*%dS0@J&Rs>!$V74zsT6gqnTt?T3t|fbVAvlUP(80wXL1NsNioWJ38@P<)$-d!Y6OR z20Ld|@VD~Sx7XX`A6( zzQ3H?u&hhqTbUXB2$!!tYH)sL zT2{&R-Y-q(_1zD5gMBs!UNUUVFS`}peq0K&-mPp%lG4e9mWyRc(uwhZwB{ZxE4MH0 z{a~r!Ja0&fH3g8#;l_Z*&|^-jD? z>+XgQ4E9O#g0JqBa{JQt4qz!`f?swkEoDx;tL1Y#nFv1T_N6tqxbAfb3mFr9-|VAe zOll3h{ouN{s$R<&aZhJwPE4t zUc3G+UOR$caf1N2@XIT%mfe2+F*|2`#`}z&@a=ePuhee(WHZ};R5XvV!N>Lpz7%A? zZHx^5a5C!u{9U4!GD^;%!(-sL?QqH002ovPDHLkV1m=^B|!iH diff --git a/asset/art/gif/c01_书店外街道/报童给报纸/14.png b/asset/art/gif/c01_书店外街道/报童给报纸/14.png index 1803a4742d683e5d7cd3d30ce89cf14b39f3f068..7fac76a39e63e2fd421addfbcb444caac5c47705 100644 GIT binary patch delta 1646 zcmV-!29f!?4f73uiBL{Q4GJ0x0000DNk~Le0001>0003#2nGNE01DI_ssI200drDE zLIAGL9O(c62CYd%K~#90?cL35T-O-~;8&?;GFYml+Om+x@<)x7m^e5=lrC!8dSP4$ zl#)f)H6-0Me?b*-pMiG&*a(_IDk-Z+kv*NYInQCX-pOmejd03%|@ z3fQ$ydNi`BA)k;cP_ILf80-hFg4`!5m^@JPtP`+N-O2~cj=2};416o_CVGNVgJ&agmi{)Cmms9IFk4aZhxJ4 zbg5Us=5a)vKe<05wklyI+w55ZBUHhDrBwktbq1;)#EYNai-@S*7e+)OpNmSiS^K=+ zXYs^L>H1`bvH^Y<>qBMV(U`PSC>`=%;z6JyUpk0oioL@rq4?E>;JI~B!=$%wc-)Ul=@xd1*+@z|-SYNtPGO+uo!sLZn?xd86uw}1F( zuZNHv0c`Qs&(H1k5RxN+Uw_dXZ~xH@cmUF#g!EVs?6urt0x~@5R=~!ix0Xk6!nga< z4PX!NU;KQphmafr+=1#hd`aC%KXzwyM7)0f&=dWx;;~aEA_I`_B&2f-R{dDj+g-^8 zu##;?VSFt9b>mJ<7M_oMZZu}cw@$;Azb!R4qDE}L5rM%-E`SY_g@3J(eRjXnJbrJf z6!CEuKl|y65z%{Q%-|$-53@KoRjp*3apmqtGl2QrXk?oYV|uI*E9FW|eY3tUxS7TL zk?Gp;#(Hg6bPs>IbTg@QIA}@Eg1>xJn~OBU*J|~PEaqn?V*WrOuKstW*0@dh=wFfn zd~s%M$Iq|cT8r2>9)I&krnf@KP$U(=O19bdzES=1xzSk59>(#5QxQ=QVBP$Y>9~4p zt*wp0Nh*L1%eTwT`?h?peIAz2jmGp?p{;Fxb|U6yCse~BNHTy8o#Bh9RmEQI5wSHX zVPKM3hIwgbtlC=ny5wrJ-^Og1-I44P!t_|78qrb(b6d+Vt$$7*pW60!Sc2(aG8OQN zOwb8nBIha+#m^HhvLEgQM%Letp^>IaV6Uy|5(1N@(oDR zlaMx>+k9D3qdn&fD~BQJ0B$$i?NSe6u{isfjy$cT1IXSJz$dlcC7Qk@8^D!vWosgl z%h!HdLRMN`Z-0JXoU$2VSdtB3FM_uF1TZ3EGmGNE{g2;vwXwcC<4H);0c_n1SSsD> z3RvUw((1Yy@Q@_G5IvEvZN+NnTx4#$EZdkma7hO++o(kA2CM6LR=fJFZ`3v>j7LPN zT)$K^Fv&hrniz>{M8wE9YVWI$YOib6t#i`o(=a|c-XDBcyj$b^x=Z#%PL9^Y_1xBN s@Pq8juJh6C*V4CFKasI47=Z2kABhdeJ~uqrR{#J207*qoM6N<$f*wOcMgRZ+ delta 1560 zcmV+z2Iu+n4Z00~iBL{Q4GJ0x0000DNk~Le0001g0003#2nGNE0Hn^(ZU6uP0drDE zLIAGL9O(c626Rb8K~#90?cL976lWaA@lR}aT(a9_8#iHHqf>yR z2KzmL=PkFyB+P**W9_>Yx1xk`DLaosi<=^f7kTs;jMA|muJfT8`LUdW|qf?Zr_jF<||db zv#p?FJ|h*@Ns@j%b3th@C3&7&`bV$jPWHd_J2^Fx3pxTB@jS`*b!bl^ZYs}J^;h{} z9PC=9+Bz8;T$liM3cmKhFQ+Zgu6pTbce2Rq(8&CFThgH&qmr6OfSO`xvQ8jkNTDtK*!PU*HZf0UK(+*5h38lMWJ=IOyQJDKl!D_8NJr{nvJEloGe z_jU68b?qHWX>7^Y{&i_50xub;_N6Xs{VtQBR;lW%_a+rgY>3+~-oF)Z@2d{P?K&!`&{hyCeW3jrIxHtx{wK^`?plwyi3L55lI)H>sVI`6k1ppX zF6$EbPBw$z#i_Hm`#pqJf5(~Nw{tz~B_r4NrKk8tkEA1q)<4zHDsJB8MA2un;A_8) z+t?=CTbT-e&95t+&FIe?vl>aSm6sY+A=})=E5A<1U*eE@-_&u1so+OO(#-(hykCpA zPfnMm^S(a%aJ!`LD*%_6Ij>DkXr@ivpjt@X%MOFs#zLw66X$7dG|?ybH_)fBSf5 z+4ryBS(JvdDs9X+CxD~O1i$9jTV6+5@1+K{=s(hyv7Dqv@Eb}S^SXLxv8Bx=W`ZA? zxm%6T(_X5zp7m0Lf68alEp4U3uu6qtCyxT=f*)xQyc8Y{y0uGc7Jv>hvDDi+o(Yl} z-ys!N`BBx6kjbS?K9dflME0keOT45#TXH>rhV^BhWF+&STFO&-c7C9k%LbD4$MuD{ zU6S@}aO-dJIu-ol*r>|0iQmR)J0i^aqxya3s`-qMm@W8Pf7E;Y;%3yIa`TThm<@if zs=h;G0u+md6*}5uHuzW>!IyfU7K}3){JCnaS+u3R@R0~`d7%=&U(9i1$2^yV+>8C- z*L@YoMpwRdyHt5G<5@+_20wW(zg)i45!~qg@TR!dp0000< KMNUMnLSTYE6+C$W diff --git a/asset/art/gif/c01_书店外街道/报童给报纸/15.png b/asset/art/gif/c01_书店外街道/报童给报纸/15.png index 975d9b55b33fafd6acaba075a82a2718e1120966..f7afaca2af76ed625933da8b1346e6969b3d3a7b 100644 GIT binary patch delta 1624 zcmV-e2B-O@4c-lZiBL{Q4GJ0x0000DNk~Le0001>0003#2nGNE01DI_ssI200drDE zLIAGL9O(c62AD}iK~#90?cL35T-O-~;8&?N87v{GvLxj3XN{DaI5V8x+oN3w~YuZ*f@6LPK+&osTwidu`^v< z&DCgTB-_!9WO|+lhPiX**c=W&z4xATuj~ksv2uUlxi_@e19)D%u`tu@Z2QyVZSyl= z$xrb7!I5U$aeh$VpTF1FgmA!;pWOL_BhC45OmE#m2nXtgy&k~x;L4|W_Ie1(62OSq zwgR?J#|*^2y&k~xpj83egQzO*j^ry~z4kcXy>K=n^3b(j5fSfRI2-la<2@YR|34LQ zT`PZt?5^Z1AbTtM0RH;I$sK*q&Lkheh=`%uf4Yua??3qEC3}Dal zSlzopB_yez#>&Q z@9!;E<9C1fwD?Z=1}mv+n1#a=&3e{|D|gq5>X$VhMMT8ZNI8~k^@xageSRvge!d)Y zN2c;WxVD-<72U(1FWpRP4*M<13i##Y?SGN&>aCTSJ5Y|RpD*VPTZE6DOEQ4poXLN$ zqgDM%!~0?-dlbi~CnA3$4`A#cjkzOJ8zE#Mk_uowYjm}hhWB-So*F3^pXZKD#noFY zc_`_-qypHobh|bb(H*{syef9K&&`g--0YZYH~>iou&3dCBYJA2T%4La6^j!3CYgP} zmuE(rt;*NZS?#K|ETTsRWN?z1>CW(NX}A>CJNJg-dNd;2dBpbk9 z1a0>TU_?YCi^_lW(rJAH{0v z+~eDHTJ~IE-z6QuY^@&c&$nE^^PsEG>RSGk^l0SwiYwETyEC{%B)g+OHk9A%9r{}S zx%oJMUuka4NvluG==kWyy<++z*@+zAw;rw+HZFr7W?u<*%}3F%t#7Y>k+CfoTlpU+ W8_bI5&)5tA0000 z#po|!d^lNc*!DIO-QIh-WPJxP`ryZhlhyIp2RE-^c?Wo<-3{1nx9={sy9pi3_~37u z`Th`KsjhZ6V7K|1-`EK_8+eS){BrTBE}lCj$qTsulBA30PN`gc+Q!zkpYfS5Dd+%b zW_0F%V{1kS|Lb#y{?~rf86A8{iWUE9+4kSx|8mCKYkbMjG5`GOBUKd&x-z?=4-PjU zVz>j?%(%>-9O?6xbW^FIY_mY0KYgS+IW| zl&utsdgow9*>qCM3`mlGygH+V6PFxEP4)fHvM2jr`h%Pt>8rK`(&spm>uTy~CMe1; z7xj1k-yqoKLb16s)Y#Ag%$e|o1HY9}pl$Wi_wL3?UW;1h2iuaS4)sf_p8?8lB{K7W zCG)f2oXigk2eZ}*uH9OZByS!dDdEIbb}QcgTAj(UA^+XzOF%Pb`wM?} zGTT&iKfkI=zt8JfcU*%dS0@J&Rs>!$V74zsT6gqnTt?T3t|fbVAvlUP(80wXL1NsNioWJ38@P<)$-d!Y6OR z20Ld|@VD~Sx7XX`A6( zzQ3H?u&hhqTbUXB2$!!tYH)sL zT2{&R-Y-q(_1zD5gMBs!UNUUVFS`}peq0K&-mPp%lG4e9mWyRc(uwhZwB{ZxE4MH0 z{a~r!Ja0&fH3g8#;l_Z*&|^-jD? z>+XgQ4E9O#g0JqBa{JQt4qz!`f?swkEoDx;tL1Y#nFv1T_N6tqxbAfb3mFr9-|VAe zOll3h{ouN{s$R<&aZhJwPE4t zUc3G+UOR$caf1N2@XIT%mfe2+F*|2`#`}z&@a=ePuhee(WHZ};R5XvV!N>Lpz7%A? zZHx^5a5C!u{9U4!GD^;%!(-sL?QqH002ovPDHLkV1m=^B|!iH diff --git a/asset/art/gif/c01_书店外街道/报童给报纸/16.png b/asset/art/gif/c01_书店外街道/报童给报纸/16.png index 1803a4742d683e5d7cd3d30ce89cf14b39f3f068..7fac76a39e63e2fd421addfbcb444caac5c47705 100644 GIT binary patch delta 1646 zcmV-!29f!?4f73uiBL{Q4GJ0x0000DNk~Le0001>0003#2nGNE01DI_ssI200drDE zLIAGL9O(c62CYd%K~#90?cL35T-O-~;8&?;GFYml+Om+x@<)x7m^e5=lrC!8dSP4$ zl#)f)H6-0Me?b*-pMiG&*a(_IDk-Z+kv*NYInQCX-pOmejd03%|@ z3fQ$ydNi`BA)k;cP_ILf80-hFg4`!5m^@JPtP`+N-O2~cj=2};416o_CVGNVgJ&agmi{)Cmms9IFk4aZhxJ4 zbg5Us=5a)vKe<05wklyI+w55ZBUHhDrBwktbq1;)#EYNai-@S*7e+)OpNmSiS^K=+ zXYs^L>H1`bvH^Y<>qBMV(U`PSC>`=%;z6JyUpk0oioL@rq4?E>;JI~B!=$%wc-)Ul=@xd1*+@z|-SYNtPGO+uo!sLZn?xd86uw}1F( zuZNHv0c`Qs&(H1k5RxN+Uw_dXZ~xH@cmUF#g!EVs?6urt0x~@5R=~!ix0Xk6!nga< z4PX!NU;KQphmafr+=1#hd`aC%KXzwyM7)0f&=dWx;;~aEA_I`_B&2f-R{dDj+g-^8 zu##;?VSFt9b>mJ<7M_oMZZu}cw@$;Azb!R4qDE}L5rM%-E`SY_g@3J(eRjXnJbrJf z6!CEuKl|y65z%{Q%-|$-53@KoRjp*3apmqtGl2QrXk?oYV|uI*E9FW|eY3tUxS7TL zk?Gp;#(Hg6bPs>IbTg@QIA}@Eg1>xJn~OBU*J|~PEaqn?V*WrOuKstW*0@dh=wFfn zd~s%M$Iq|cT8r2>9)I&krnf@KP$U(=O19bdzES=1xzSk59>(#5QxQ=QVBP$Y>9~4p zt*wp0Nh*L1%eTwT`?h?peIAz2jmGp?p{;Fxb|U6yCse~BNHTy8o#Bh9RmEQI5wSHX zVPKM3hIwgbtlC=ny5wrJ-^Og1-I44P!t_|78qrb(b6d+Vt$$7*pW60!Sc2(aG8OQN zOwb8nBIha+#m^HhvLEgQM%Letp^>IaV6Uy|5(1N@(oDR zlaMx>+k9D3qdn&fD~BQJ0B$$i?NSe6u{isfjy$cT1IXSJz$dlcC7Qk@8^D!vWosgl z%h!HdLRMN`Z-0JXoU$2VSdtB3FM_uF1TZ3EGmGNE{g2;vwXwcC<4H);0c_n1SSsD> z3RvUw((1Yy@Q@_G5IvEvZN+NnTx4#$EZdkma7hO++o(kA2CM6LR=fJFZ`3v>j7LPN zT)$K^Fv&hrniz>{M8wE9YVWI$YOib6t#i`o(=a|c-XDBcyj$b^x=Z#%PL9^Y_1xBN s@Pq8juJh6C*V4CFKasI47=Z2kABhdeJ~uqrR{#J207*qoM6N<$f*wOcMgRZ+ delta 1560 zcmV+z2Iu+n4Z00~iBL{Q4GJ0x0000DNk~Le0001g0003#2nGNE0Hn^(ZU6uP0drDE zLIAGL9O(c626Rb8K~#90?cL976lWaA@lR}aT(a9_8#iHHqf>yR z2KzmL=PkFyB+P**W9_>Yx1xk`DLaosi<=^f7kTs;jMA|muJfT8`LUdW|qf?Zr_jF<||db zv#p?FJ|h*@Ns@j%b3th@C3&7&`bV$jPWHd_J2^Fx3pxTB@jS`*b!bl^ZYs}J^;h{} z9PC=9+Bz8;T$liM3cmKhFQ+Zgu6pTbce2Rq(8&CFThgH&qmr6OfSO`xvQ8jkNTDtK*!PU*HZf0UK(+*5h38lMWJ=IOyQJDKl!D_8NJr{nvJEloGe z_jU68b?qHWX>7^Y{&i_50xub;_N6Xs{VtQBR;lW%_a+rgY>3+~-oF)Z@2d{P?K&!`&{hyCeW3jrIxHtx{wK^`?plwyi3L55lI)H>sVI`6k1ppX zF6$EbPBw$z#i_Hm`#pqJf5(~Nw{tz~B_r4NrKk8tkEA1q)<4zHDsJB8MA2un;A_8) z+t?=CTbT-e&95t+&FIe?vl>aSm6sY+A=})=E5A<1U*eE@-_&u1so+OO(#-(hykCpA zPfnMm^S(a%aJ!`LD*%_6Ij>DkXr@ivpjt@X%MOFs#zLw66X$7dG|?ybH_)fBSf5 z+4ryBS(JvdDs9X+CxD~O1i$9jTV6+5@1+K{=s(hyv7Dqv@Eb}S^SXLxv8Bx=W`ZA? zxm%6T(_X5zp7m0Lf68alEp4U3uu6qtCyxT=f*)xQyc8Y{y0uGc7Jv>hvDDi+o(Yl} z-ys!N`BBx6kjbS?K9dflME0keOT45#TXH>rhV^BhWF+&STFO&-c7C9k%LbD4$MuD{ zU6S@}aO-dJIu-ol*r>|0iQmR)J0i^aqxya3s`-qMm@W8Pf7E;Y;%3yIa`TThm<@if zs=h;G0u+md6*}5uHuzW>!IyfU7K}3){JCnaS+u3R@R0~`d7%=&U(9i1$2^yV+>8C- z*L@YoMpwRdyHt5G<5@+_20wW(zg)i45!~qg@TR!dp0000< KMNUMnLSTYE6+C$W diff --git a/asset/art/gif/c01_书店外街道/报童给报纸/17.png b/asset/art/gif/c01_书店外街道/报童给报纸/17.png index 975d9b55b33fafd6acaba075a82a2718e1120966..f7afaca2af76ed625933da8b1346e6969b3d3a7b 100644 GIT binary patch delta 1624 zcmV-e2B-O@4c-lZiBL{Q4GJ0x0000DNk~Le0001>0003#2nGNE01DI_ssI200drDE zLIAGL9O(c62AD}iK~#90?cL35T-O-~;8&?N87v{GvLxj3XN{DaI5V8x+oN3w~YuZ*f@6LPK+&osTwidu`^v< z&DCgTB-_!9WO|+lhPiX**c=W&z4xATuj~ksv2uUlxi_@e19)D%u`tu@Z2QyVZSyl= z$xrb7!I5U$aeh$VpTF1FgmA!;pWOL_BhC45OmE#m2nXtgy&k~x;L4|W_Ie1(62OSq zwgR?J#|*^2y&k~xpj83egQzO*j^ry~z4kcXy>K=n^3b(j5fSfRI2-la<2@YR|34LQ zT`PZt?5^Z1AbTtM0RH;I$sK*q&Lkheh=`%uf4Yua??3qEC3}Dal zSlzopB_yez#>&Q z@9!;E<9C1fwD?Z=1}mv+n1#a=&3e{|D|gq5>X$VhMMT8ZNI8~k^@xageSRvge!d)Y zN2c;WxVD-<72U(1FWpRP4*M<13i##Y?SGN&>aCTSJ5Y|RpD*VPTZE6DOEQ4poXLN$ zqgDM%!~0?-dlbi~CnA3$4`A#cjkzOJ8zE#Mk_uowYjm}hhWB-So*F3^pXZKD#noFY zc_`_-qypHobh|bb(H*{syef9K&&`g--0YZYH~>iou&3dCBYJA2T%4La6^j!3CYgP} zmuE(rt;*NZS?#K|ETTsRWN?z1>CW(NX}A>CJNJg-dNd;2dBpbk9 z1a0>TU_?YCi^_lW(rJAH{0v z+~eDHTJ~IE-z6QuY^@&c&$nE^^PsEG>RSGk^l0SwiYwETyEC{%B)g+OHk9A%9r{}S zx%oJMUuka4NvluG==kWyy<++z*@+zAw;rw+HZFr7W?u<*%}3F%t#7Y>k+CfoTlpU+ W8_bI5&)5tA0000 z#po|!d^lNc*!DIO-QIh-WPJxP`ryZhlhyIp2RE-^c?Wo<-3{1nx9={sy9pi3_~37u z`Th`KsjhZ6V7K|1-`EK_8+eS){BrTBE}lCj$qTsulBA30PN`gc+Q!zkpYfS5Dd+%b zW_0F%V{1kS|Lb#y{?~rf86A8{iWUE9+4kSx|8mCKYkbMjG5`GOBUKd&x-z?=4-PjU zVz>j?%(%>-9O?6xbW^FIY_mY0KYgS+IW| zl&utsdgow9*>qCM3`mlGygH+V6PFxEP4)fHvM2jr`h%Pt>8rK`(&spm>uTy~CMe1; z7xj1k-yqoKLb16s)Y#Ag%$e|o1HY9}pl$Wi_wL3?UW;1h2iuaS4)sf_p8?8lB{K7W zCG)f2oXigk2eZ}*uH9OZByS!dDdEIbb}QcgTAj(UA^+XzOF%Pb`wM?} zGTT&iKfkI=zt8JfcU*%dS0@J&Rs>!$V74zsT6gqnTt?T3t|fbVAvlUP(80wXL1NsNioWJ38@P<)$-d!Y6OR z20Ld|@VD~Sx7XX`A6( zzQ3H?u&hhqTbUXB2$!!tYH)sL zT2{&R-Y-q(_1zD5gMBs!UNUUVFS`}peq0K&-mPp%lG4e9mWyRc(uwhZwB{ZxE4MH0 z{a~r!Ja0&fH3g8#;l_Z*&|^-jD? z>+XgQ4E9O#g0JqBa{JQt4qz!`f?swkEoDx;tL1Y#nFv1T_N6tqxbAfb3mFr9-|VAe zOll3h{ouN{s$R<&aZhJwPE4t zUc3G+UOR$caf1N2@XIT%mfe2+F*|2`#`}z&@a=ePuhee(WHZ};R5XvV!N>Lpz7%A? zZHx^5a5C!u{9U4!GD^;%!(-sL?QqH002ovPDHLkV1m=^B|!iH diff --git a/asset/art/gif/c01_书店外街道/报童给报纸/18.png b/asset/art/gif/c01_书店外街道/报童给报纸/18.png index b4ab1f5a4a9b4305a54da2fe18935809d42e9cdd..ad56ef7205524b22cb4dc3c36def24d7c5f0f28a 100644 GIT binary patch delta 1714 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 diff --git a/asset/art/gif/c01_书店外街道/报童给报纸/19.png b/asset/art/gif/c01_书店外街道/报童给报纸/19.png index c463505ec7ba01a73739a4f4280f65e37dee93e9..73d1b4fbc36f0dd08f7d4d062a74aad5b1e67892 100644 GIT binary patch delta 1619 zcmV-Z2CVs~4cHBTiBL{Q4GJ0x0000DNk~Le0001>0003#2nGNE01DI_ssI200drDE zLIAGL9O(c629ilcK~#90?cL97+vgnz@Q=Gl6OrPW#5RtSlq_?)Yzs{Y>&BK#4`qzN zZoTaiMo;|*w%gdPmtF?jsqDN%E`t%q80?g?!7$xYLRq~jG+i=bY!e(;5}NEpJLtD1 zIcXxvA!Z0y~4V`bg(nXu#! z@VOKDM$hZ!i`?PnbFC_b6PEnJJ$EACIQO-M(G7%fqFy=Z4!j6H{cPi)yO1majEH?J zVEc5;L>xNk4!j836|gsms^WAcUjb{CNAdo(HzT4My7nU?;{9uHMy>Mb0DJfHQvqAr ze<5VLlCOXqtmFgun``Hv>wTV2@&Sy9n5q1C;C1`?$G`f>9N+{cAHd(=-W}MtH-t=1 z(gA$utqYAPmm^|y*xq^T!oWRZ#wXbTUOqL~3|65K|GK*!5rZKdRvj6yB(HBe;fsjN z=TAj_`(bQ6co^?qJ=5GVLcJQ-{hvS34-c9njO+s=N zaBuh`qAz?ML&6skv9ewrd!JI4Q~-yCZ&c8tUhh8k{yS#}S5Nb7k_zC{C~a1Te^!F_YL3Z&-CvQ!ih*CfKPJ$#;v~XTDcM{ z_qPtHH)#>TA##QMU0Dn<)m2wM@%rcf2n}elV$+hS|RM4_lv<%aIL-*wffFfyOxSHPr>^r z&gbJh5mBxFFYdH%`{oMysFf=R+OL;Y5*2Xe{?_Q#DbIfm4uf1>AE-58_38EbC6sOeTUJXCV(mdS>N~q}_1g>G)zCZ5)9>PJ zGk~l2w&T)?*_c~e?0k0qf7PS$^PgU6y!YFizNGYwk`G`Z*QsgolQ-UozkGH(uCJ6L zGTDe~IpT03qFRpSB}j(zua#vHh&dASIEb$&o^S>NIvR2-CsbMJCcpq zsmJo^`R<2WLA+Ef418zgy&In-cMQiV=|RZRTzBGmKHsf`k;%sDf4$AVwySH~as6+1 zx+6UFU`jC@mx2AhYPX1G#io0#%rf% zqDMh zvK4T>@@OD@5fSyB-J$y z6~Oi#kha&)jJ_ZI$B*tOd;G>F`D?%dnQW9c9?TTy3XO<}e}CTH>gSdRJ8ql= zaF61`u_$fyEYIIl88_?4;_tUtRlYGv@)~fcoe^vQ+WRxU4?GD;2XNGAcR(wI#p2Qg zdy}T51IWP>z^66p6wPxZ6ILn_e)!4Bj5>1ej<7{+gys(ws(@b@3j1+ z3dxt2bO7tsTJ$cgy1Oy>!{p^^Eg~Wc5mBnNPSuP}vbU6GXQB}iG4qw?cH>d=dArd) zChazDg`- RFQ|$l% delta 1543 zcmV+i2Kf2d4W|u%iBL{Q4GJ0x0000DNk~Le0001g0003#2nGNE0Hn^(ZU6uP0drDE zLIAGL9O(c624P7=K~#90?cKp|lXV=&@y~F5Y}V2(&@H13f^$Pu0%Q@5a^XOXA@Rn| z3o)Mj2lQsVap7X3C*s)y7ZXE_G4TY^#55>mAyQ$;Y?f^&Sw?A_`gEfno<41#K79s> z(stkH{Yn=4Jbg-j?dSLXJ-_GIhamxxv1pONAAcAbbOZX~{K8bDd*8MEYAoLSPE3CQ z^9NFmj>q1E)*nkHN#PFAYgC9EbLYHP@RAme&B!f1(%Qx&eSChl zbaz**&%>lJ$xR?*WTQZ#rSH7=f1c<|V-~7!S z7Z!4X?OM5_d`yS=Zgwj_;xcc?%8wa)l^=C&-xOK-uKU#2T4S&BBNlIbRDPSi@O{k= z5V)>ac(z}2>#Di+zBX-G*coAfwpTfVq)mGQzaJS^$dfs7`mr&_Pg9v;`HAD(Gk`ue)r8#+ygpH8-FSs$D} zt)K2M>T13yB^;?*md4UjwSTO+{YlNeIX}Rb4u+{-{o0iG+qaVGlx{s()8yWi+5S&~C)*uhEPt)J>5P_#zcWTD`ojfMPf3h8&TVbW-1%4*x0sVnB}0?II5T-UlT9TXQpd304Bubb^PM;ny}tkb z&1I9HO()am{E&pB;@ZYYZX(@~q~Dh|Tl*#H#KCy|F5Xy$pPSsL;#$WoU0ox>y1P%m zE*8vJywBV@zo&Y{clZAOM7-|T_n8epYE~c8>;Spk^mA;@aDOrzKAw*7rRdXwaVEoG zuhiO;wuIyTbOc=7EVrJ|O{DwVxFKRP{9fW5auoaF*Inf%_jz~i?4(-mPkV-l+3-7; zaf`*3P`Li{#m#aoXZn)yMV^e~eVyy;Ucd>Q3Z6DH7-Tklw^~!@m$OT2;a|d3uGS<; zX-UOO^YjoSCODTeGb3t9(#Q+mcBA>9Xq6i6_v;_yOOK~pYybUf=b)K_aTq4(N4uH)EV#{rSCG#C&E{{l!Q!v-4%R*V1u002ovPDHLkV1h3PKmh;% diff --git a/asset/art/gif/c01_书店外街道/报童给报纸/2.png b/asset/art/gif/c01_书店外街道/报童给报纸/2.png index f2782982d6b8562af642a78626728aa6ba60d814..090b08a570e7ebaa3407e156808164fb53f188ab 100644 GIT binary patch delta 1871 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 n0003#2nGNE01DI_ssI200drDE zLIAGL9O(c62FXc8K~#90?cKp^9M>HO@SjreWRX-^wPjV7?clm{+N7olCTVF6C4n4D zp!Cv1AQvCtHzE{WyQ$KuGr4XRu8LL zX?G<#wss|>_xZrGJ2SiD@%Zwad2imXB9XCje}E@m-$6IvN%8u{(e?IyQ`3w3r^k}- z;PWR3*0;QFyeRiKo@=W@*kj3e?)j4g>*v37V&^vqVNX4E&<%JJ{PW*;4!Q}+62OSq zwE`BWV|wDqK{wz@P*lLJK~xp@NAeZ0R=pqZUVbGa8lfv55fSfRekE$v`v=&%!%qd= ze^7*w{gr$L$M9V_lW79k|+N%dPVC36biDSQ#p62A6h?WPx3yV|bQB@@6$f0pN) zk2V+2b*`S~@gxzzZL8l7=9jA5SH$+eDTG~d=mYrB@a1`P@KN~ljk}v0S+;Ezq&p6M z03X-I)5EPhgs>+BFd`(L$yjZrk!&4MS2x5f6H3t_>K*Bj(B&ifOJ)Q6|ksmJ4`f3>{0>qeAmzM z=+dizgZ z9Up&wFNU&`1qk~f%?h|Nx_#;FvH0lA)`~YiG7wSEV`c4uxxjspW&k%#{k`!kSRa4- zub8}YEhevAi-?F{{rGG|e?;7_tu=4mm9tV~5VK{K^u=?d2h#4tB&jdgJU=?HzV+K~ zpZ|9y^80HsST09iUyIj&aH6>ydh(OGm^d@i{Os(lrFik=Pz;Z4hHm7UqY)AD&hI}; zsvo;4xe8cJ#a#bSqxub&%gtkNzWj1TL}Mge$|6=PjRUKdm^faJe~BNRkCA7NHXrO= zvV)ML<;^+2yuKDA1Lb)04^uJx%`Bpxw^YA~i0B`TSopHzJ0tH*-BA7ZAh`+{v044H z(visPtv|o9{8b)N%3}7`Qp^6?g_W56WG-IlFU5(~JT4tC3ttx`8NdhkcVEanF*Xzv z$IF``>>rGYv7v}ke-_W48H)2ic`nvZpNgNqc-o5SJxVfw-y3b5LW}B`m5#(pz7}Us zG^Sl<7gidfJ2TQ!2`9#e_P?=*T#^CYDk~l7*q&WjX>L!P8Hw42m6m;UPm+U>nZ;_~ z$Uu3$J$w@2Zr=(sHHm+T8Mb`~DxEYW=ref4X|xG|V0)RRO<_ z@e{{dca*Zmqn^jLFZ?uHx2b@IdfvPa+;;y)2$%9>@wb^-m9I;Zu7EoYHagTBt6#>) z$9mYBG$kECe-54ieqD8|qkAFQ04`N)o7Zt$uJH=<%a!Kw@!`RsH#R#}ZlAi}0${I_t3hi@zEvMy&RY)FL z(gDm@Yq51*%iNvL--WKMHomqw7>#?y9d}CDlVoS~Jcs&XJtCs-8;$Mt`;F(7_02vh z-cuMnIv7#PV*bwEWc#h#lI_T&M>fLs)aGUIz5GE(e>C5><-Oaz50SAf7+@#=2MHhG UwE0gJGXMYp07*qoM6N<$g3WbcegFUf delta 1590 zcmV-62Fdx44%ZETiBL{Q4GJ0x0000DNk~Le0001g0003#2nGNE0Hn^(ZU6uP0drDE zLIAGL9O(c629ZfbK~#90?cM)x6LlQN@z-!YnzeRw>*gpMnYf`K5wd_rNem?XU`UL= z_=5?*@B{yc;Wzw&UrgjDV*CU43x+Jl$d3?7OalWKq7x@4jAo9qjM6Uk+EIVF-L-eu zc7EHseeU^4nzeWB^0~h5{khNQdfgnB8f2iVo=25h!petXjCCTv^Ahu^mH z-9tb`b$7Y}o6W8K#+`uPz+rUdmrHB9bnc`iCvf*BNte!@RJpX)!Pa%2@s%&h+X3Kb zbbsZeJ)^_FeD2NvwBB?^hc8K8rN^QB?$3|DxE2pr$CX?Q>RzaUXeK>T^KT3=W-wi%{e?gLD7oO?o`GTbI4sdn0y2Y*A zevAq~==y9 z=Gtw=t(at4_1Enm(v|P;8TDTL9mZ^MFnCFlW$AEww-f%lT)w1xx#zy{z27m^qbonm z8}puQ#E5RcRq&F0!3Wm`WtUd}*LH1pMuh*5*>?RFFu6Z`)sLxmeE3bPzJ*-A)PKAu z2>#B9>;OAD{0)P*ZEv9G`tJU6{efjQt^TOk(c%AFlOuip1rgl=j1PZm`mXPBxmZ$m zVWmT@*$rP8Li zYbV(8;k!2Kx)b|$Z&6Ej4r9V^=fa7Mj=VCWscf#(P1#n=4&SnL;Y7xJ_4a3V zRj9sTt}heAUpM`e^KIOlcYf8>^%+fFpOGYe^6r=KT zy_Jl)Sn<$MqSkm-?!!L{vVYgAO2*@|D^;C&YtXxjXX@6x#z)iMYv&&2b#zZkeZ%#@ z)BAcQNf*DmVa$6JWK`w5)4jXDJ5`^I$GvrDj~|yLXT%?~q}8IcVzsF8fw;!snNWIP zuXl?ABL{rF@%o(Ju2hvy#C7)TY4yEqNfp~y^^&BXq_p@nbdBG|>3{piR=s3c!!tvt7-n5DT#dEfH6#e$}8&Fe@{OoOYoP7K724_-1b{1-@VSmPj-^hw}haS%@7QDyfqiM}87JSR1#JB<9>{6*Koru?h!AteQ zUn95T=N{$tr6k?WhhAqYqbh%PsnmRs7IWtQ=|nu#8@NI7F_=JUjLtB{r2_(Q$3Sp2K)UBVt{%zT#cRR(`92T}Z|G6fct*-o(~yPsWCijS;@&Re#hN8GgQ0 zt{=A>j_I!4O3_=N=}RiAj10e-D2LpN`QcY=XNuReLHO>)9T8$|_>E`sa=FD&xbFJg zN->fneaY~7erL*ZKF)Oo=kUHm!A3oUfs75`UM;Kf^SSva;lIOETy-w(PRcp=A36hQ zI3v$yrMgs;q^_5o$F=qUqg1HXx7U4+E7_ZrVwQ4GmW_N*nlW-id%M?z-BlmbJhNYf ow$*!H!*iQG50SAn7=S4F3yMA9w9!kdumAu607*qoM6N<$f~{UwA^-pY diff --git a/asset/art/gif/c01_书店外街道/报童给报纸/21.png b/asset/art/gif/c01_书店外街道/报童给报纸/21.png index eb32fe14e3cf2368625f4c565b52760272f5c7bc..463df1568f9d0c5e10f35a46811b0b95ff0c05fc 100644 GIT binary patch delta 1717 zcmV;m21@z=4Z040iBL{Q4GJ0x0000DNk~Le0001>0003#2nGNE01DI_ssI200drDE zLIAGL9O(c62J}fpK~#90?cLvNTjv=E@W)+rB4W+)6326#A7q)mbu4rtjEy!o9h5Nw zV>i3lWhlMtKd`&eyY8YlgY>3lce@LWjuJ-67-O_-qnK3Qu*{y^<#c~uDeEcuf=eRQ}w{k0?A4-mq>dTzHH@GSV(r}Mkrgk%X| zL~L6D>)kPZv2V8<@GPiTz|BEa6$c~v3Ro^Zh_^1j91*q9)gKWNZ(V#j%B2Up*t)$> z1>8`74n;1+LrDK58^CkNM{Bp>3WbR19=6wBIn!~EnBGY;fc5ar+`JnR5tZfp5z!gK z_R2`_B^khWf4EVMx3Ao4+4qb0i!pQSUd-Hox~B^EQIZ$fjqZ2D;z}ug_R`lQCJskL z#P8m}7Wpg}k!8*IoF0#NuYQu``Rb?SPH21hA|fKo;)l;4YHSu4O7ThYikc983(K*#P+lp;jKB?q z3b=)QVYssb)@=%=>%g5$y8>=ZwJffbT6U{|gOg?j%(9kwzC(r9QSY`Dke*7j0@kZr zm&xX?6|hq2K5@-cNwWghb?IhRz`;p>D}dYFcH2DnS6(T_i$8g(xm{U{a%HXGtxHmR zU2yxva$C1LIW`>M-FW``>lY#-;?g@;que%7p*NBU;LP2np@?m!O*Vya_~ibWKDmEz zjZ0iwU2w#`XEN+)|cBd8HJ;{K2WH9zWLD{n6+5V~~g z>yc$~W^8}t3&Zi@|H`cgtyN-q{h_(Q0Z6I>mRCx(0B*SQ&-pm{)scvZ_~`Hdj^aXX zfb!GtpNh*f#kgBuZ;X!fQJW8c%-7$XWpVEGc+A|oH^6_v-jh@SyZPYeV$3bBMrCb1 zE_{3AI|A2g-S7BFEr7FkmgDTvkrm52j{h}D&tI-HMxsqania_je= zB>v~tN5J*lY5Br%eE#3%h=|B?`=YYe{04;4FJ}>Jm6$p)*8Bwxj{%o#P!cQzkYXYIN#jJWifkaq2=}2x#hV0*W2-(1GzY|T8Z%7OiheLeF8GP$vMA0k4o!|0su2&2xNBj7$sej<7#t1ZQ3s%xKQZt0dERUvs|Ne8g9 zT8_;Nt8ULPbsV#@TKmj!AtH*Ujjo!WN%oe~$WT-xB8I+H+pa#S{amg#&q@85y28Oi z<6iNg+PT*ydm<0++X&Zl&CB5Xm4_YYqjB7(W4AgEk+Ccopqu{#RMzF-2Kbh$00000 LNkvXXu0mjf%zuYn delta 1630 zcmV-k2BG=74*v~*iBL{Q4GJ0x0000DNk~Le0001g0003#2nGNE0Hn^(ZU6uP0drDE zLIAGL9O(c62DwQ@K~#90?cM)t8+9DV@mFVa4NXjIo7OJ^`{wDiv{;*$!?UxOI^S6OaMv*ZQkqwm*rkkZIVC}lChT7KBWl0E^Zt;i9 zCAmwJZfcw6bI%8qCYMY3Twb5|=k7jtZ6%ShY>~hme{Icfz;2kD=r8)0%_LU>vF(i* z{Q->cj})sOI}gI0&i8yS@EySDjUV41DUQF?SAT_ocYuA(Zop3a{qAbBo3LjYAAZBi zcXt5+)!ys|>@>IXt2+Usfy3y^&u1U&?DTO-PT=mBB%Pf;u6*`!6I<7O##g?iatDBy z(Up(Je~b?Q{Pe;9^t$Pc4quYmvVYb*cE7*>`K`d7<4XpIfAYkk;^m(=ba{5uv)tbS zg3QS9Cx*J6Y29d4QvIM$o;Xx9=N}}-h3^KRoLiD4+3AOpYCC{`LD_}p<)^8&tnQ>9dBQKhzrRx#e_S-`Gik(_VZUDRTdK1>xsv-o zo3!T{6aF)??aG(W#DUtoeoSRV_*+)}7E)_jCE}6oe_lX3K+A`}ZScP8zB;#Fd16^x ze^!4`w0!vg#>7y!cR@fqKp-yZR?BCyN(MA+zra;~I2x&~d{RDOjy;WwDd ztvZo%#|Cj5G?&aG>C zJtw=csj1gXzoTDphW!4R6aM^zf3%M5kEwg0zx=-VNS8kOc(Qori|fYT&}mfodAp#n zW$E_4Rdt0sw7l-zkZBh-_2u-GzPmfCOUaZJvZP!_>WoUcjK+Gy8hdNJ$*tdgE#Ir% zBYk&@HXM!U{$FWHk`-!~U8wwKPWSVcRIoKR9IyOLqF8 zk*%?Tn8td;l@8Du)!0Bx3R!w(IHvKVucf4kE5rbhdm^ZNPaba|bz;kf3P)1GBP($Yu!{%PIWm28_N z#UtUOdRwA9 zT9l+;7dOhwCF$^Bu>KZrpu$h|^(eJkbw`hHL|C(XbaQsz_=I>fJ9)$1)~2E) zwLRxNFP8p^R=QZ(UUwZ=v@2Sk``@j0Hk*+f+SOhPc3s770)q0V! cH5UZIKZI@N;HNxzq5uE@07*qoM6N<$f?~8>TmS$7 diff --git a/asset/art/gif/c01_书店外街道/报童给报纸/22.png b/asset/art/gif/c01_书店外街道/报童给报纸/22.png index 86e9139fa46682257b19b1e63d0c02d135828e7a..00603f7b01c01a6db63d67c8309072986f661795 100644 GIT binary patch delta 1704 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 T!l<{d00000NkvXXu0mjf7#4E4 diff --git a/asset/art/gif/c01_书店外街道/报童给报纸/23.png b/asset/art/gif/c01_书店外街道/报童给报纸/23.png index 1c84ab793bdaee80faf32dc9638ae3b7a9f6a5fc..180e49edab18d3d2b69339813e418a45cf70e486 100644 GIT binary patch delta 1951 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 delta 1919 zcmV-_2Y~qK5StKxiBL{Q4GJ0x0000DNk~Le0001g0003#2nGNE0Hn^(ZU6uP0drDE zLIAGL9O(c62h~YLK~#90?cL979OoU!@y{mO$yB?Q6nW)JYq?g9WSqpcjoP$HPc4X~ zD1;J7A!#px>d@jppvj^1&_jJm3k8Qle_RT252nE-h++~o3I$UNMfgXvh)9*~SXnEQ zY~<~(*p7Zo52M+g*9{rr3Ge(!^+ zI`(@9nj!Sv_t<{#z)sK*c1PQW|AV*QP3-qRn67QZm!$lyk19V?{f}N-hcAU203NNj z4*w^=zDn1>iz4yn{_KaR-0YEOBt6_%V0`po-63OgYB3V8eK)mr<^R7%22$?GK+2uD zQ>resJ0-ibVS|X9f5^1{hpGONfs{M)rM~7HlviWj0~lTTk~DK;srgE~bMJPf4Mi&a zzQTR=74GZLZ@si_mpw9&awVx{<;Pqk!hdu8xSRX?{6jr==EhRX>L35cP;8I=Z9BK` zdvpA_D@jMbay+#B^-~Aj^H=Y-JYJVe8?sZ6OWLOUkEyl~e?RE_->yi-vLtEjwHI~% z>bots_k;Jn{l+&#kI$U@P`3+Z27GOA;jXUydqqz_Kd7(tGdU3a^`63^jm>u@mmZ*a>&yxgqyrZe73l?nr3++6EA3 zk!ks(gFRlrmZeu-7?33SGk)iO^MOW>9&Gr$?>y~|Y2DPJy1*~y*7e&D{uP<`;8BZ2 zQ=QTCASa-;Xo5+RlAOC~L{xfIB>$jVpSF*!4|aySeo5->eX{ys;jXlBS6?0Kt@}MwbBh{1deD84 zc>@zfe`AJe#ySV!3b}|AYUHRw#G%HCe zJ8KX2M8~Oq)fhb*pAUINI{e&XDUn+&B_yu_Y}W|#%caIWL5;XHfJlemNT>lgj?{l3 zwEoicz3KzYYFPboVMO@B9$+U%2YbQ`V%h+Ve+b`~TP!7N2Y(kPuZJF&izQ9Xuk7V+ zwJoE<-w8XNs;_)spa+P%& z+c75m?N0MvIytESmdaFrfHC3MDi^DlZ}ZFEG5%XmeL>RJ$iBrj{kSkM{H;-ZqrqM_ zlakgP71lR7*O!UmZ<+k4@m;yEetk%ie>7iS_Zo_2$+nW-XW67yfZm!-q4K=g!_<*6D#R_4HQ*&wR04l63a>myLOk zY8g4hcm39qy6q>Fw(ZKY??3yj{(2+l4fv9lv|5xp)6!~D!v|~)e{H12Z#0uJf2}%L z`Ja5|-KAqCJLIfY@674>yd|wUp{n;A!Rc(e?lXR8C#Q{he;P6F#U&q4xZU;>lB(fn zQnr>$WiNaw+yGXKnk{TfYmR>O<*X#>*x@d{{0H;z;5BZ*x4E&^0n}8zB(40%(Qtp4 zh7Z`9y}j%$>`ZI8ze`G5I(E2Ae{!wE;+8 z1Be;p!e1_Ve`Ck5dMnwXg0rrnKJUDKcA-$&cKC2cvkQgLvN$nvwC}T$9d(a0H9do0 z@w2y=bxxA5FDovLt9)N=@RHXXG+Hhxd(nl(MbveT=7=4Oqrcwan@`D;zC+55|r@%p^J&)D#rjq2-cHGpike;4R6-$caKc=U0lc9O+AjPx5qG-sN0h?F3HfP_SLkU?5||cUH>^ zUYxzTRR5<~imTrL>q$$>m$nWMF=FIYW>-S4Bqg@~zmmJ*eJ{AxCfDn4<4bp^D|7#Q zwV(UV$QRn(u@&rN)gjG&XS43LR<;Xl+h{wH!8I4+;D1*^WBo-fpuhkC002ovPDHLk FV1f)r`xXEI diff --git a/asset/art/gif/c01_书店外街道/报童给报纸/24.png b/asset/art/gif/c01_书店外街道/报童给报纸/24.png index 59d23c4fbc56b05b8ff58ca655461f371253900d..562b1b099bf71dc2da0c05ed5166ba0227493405 100644 GIT binary patch delta 2008 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 delta 1919 zcmV-_2Y~qK5StKxiBL{Q4GJ0x0000DNk~Le0001g0003#2nGNE0Hn^(ZU6uP0drDE zLIAGL9O(c62h~YLK~#90?cL979OoU!@y{mO$yB?Q6nW)JYq?g9WSqpcjoP$HPc4X~ zD1;J7A!#px>d@jppvj^1&_jJm3k8Qle_RT252nE-h++~o3I$UNMfgXvh)9*~SXnEQ zY~<~(*p7Zo52M+g*9{rr3Ge(!^+ zI`(@9nj!Sv_t<{#z)sK*c1PQW|AV*QP3-qRn67QZm!$lyk19V?{f}N-hcAU203NNj z4*w^=zDn1>iz4yn{_KaR-0YEOBt6_%V0`po-63OgYB3V8eK)mr<^R7%22$?GK+2uD zQ>resJ0-ibVS|X9f5^1{hpGONfs{M)rM~7HlviWj0~lTTk~DK;srgE~bMJPf4Mi&a zzQTR=74GZLZ@si_mpw9&awVx{<;Pqk!hdu8xSRX?{6jr==EhRX>L35cP;8I=Z9BK` zdvpA_D@jMbay+#B^-~Aj^H=Y-JYJVe8?sZ6OWLOUkEyl~e?RE_->yi-vLtEjwHI~% z>bots_k;Jn{l+&#kI$U@P`3+Z27GOA;jXUydqqz_Kd7(tGdU3a^`63^jm>u@mmZ*a>&yxgqyrZe73l?nr3++6EA3 zk!ks(gFRlrmZeu-7?33SGk)iO^MOW>9&Gr$?>y~|Y2DPJy1*~y*7e&D{uP<`;8BZ2 zQ=QTCASa-;Xo5+RlAOC~L{xfIB>$jVpSF*!4|aySeo5->eX{ys;jXlBS6?0Kt@}MwbBh{1deD84 zc>@zfe`AJe#ySV!3b}|AYUHRw#G%HCe zJ8KX2M8~Oq)fhb*pAUINI{e&XDUn+&B_yu_Y}W|#%caIWL5;XHfJlemNT>lgj?{l3 zwEoicz3KzYYFPboVMO@B9$+U%2YbQ`V%h+Ve+b`~TP!7N2Y(kPuZJF&izQ9Xuk7V+ zwJoE<-w8XNs;_)spa+P%& z+c75m?N0MvIytESmdaFrfHC3MDi^DlZ}ZFEG5%XmeL>RJ$iBrj{kSkM{H;-ZqrqM_ zlakgP71lR7*O!UmZ<+k4@m;yEetk%ie>7iS_Zo_2$+nW-XW67yfZm!-q4K=g!_<*6D#R_4HQ*&wR04l63a>myLOk zY8g4hcm39qy6q>Fw(ZKY??3yj{(2+l4fv9lv|5xp)6!~D!v|~)e{H12Z#0uJf2}%L z`Ja5|-KAqCJLIfY@674>yd|wUp{n;A!Rc(e?lXR8C#Q{he;P6F#U&q4xZU;>lB(fn zQnr>$WiNaw+yGXKnk{TfYmR>O<*X#>*x@d{{0H;z;5BZ*x4E&^0n}8zB(40%(Qtp4 zh7Z`9y}j%$>`ZI8ze`G5I(E2Ae{!wE;+8 z1Be;p!e1_Ve`Ck5dMnwXg0rrnKJUDKcA-$&cKC2cvkQgLvN$nvwC}T$9d(a0H9do0 z@w2y=bxxA5FDovLt9)N=@RHXXG+Hhxd(nl(MbveT=7=4Oqrcwan@`D;zC+55|r@%p^J&)D#rjq2-cHGpike;4R6-$caKc=U0lc9O+AjPx5qG-sN0h?F3HfP_SLkU?5||cUH>^ zUYxzTRR5<~imTrL>q$$>m$nWMF=FIYW>-S4Bqg@~zmmJ*eJ{AxCfDn4<4bp^D|7#Q zwV(UV$QRn(u@&rN)gjG&XS43LR<;Xl+h{wH!8I4+;D1*^WBo-fpuhkC002ovPDHLk FV1f)r`xXEI diff --git a/asset/art/gif/c01_书店外街道/报童给报纸/5.png b/asset/art/gif/c01_书店外街道/报童给报纸/5.png index 86e9139fa46682257b19b1e63d0c02d135828e7a..00603f7b01c01a6db63d67c8309072986f661795 100644 GIT binary patch delta 1704 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 T!l<{d00000NkvXXu0mjf7#4E4 diff --git a/asset/art/gif/c01_书店外街道/报童给报纸/6.png b/asset/art/gif/c01_书店外街道/报童给报纸/6.png index eb32fe14e3cf2368625f4c565b52760272f5c7bc..463df1568f9d0c5e10f35a46811b0b95ff0c05fc 100644 GIT binary patch delta 1717 zcmV;m21@z=4Z040iBL{Q4GJ0x0000DNk~Le0001>0003#2nGNE01DI_ssI200drDE zLIAGL9O(c62J}fpK~#90?cLvNTjv=E@W)+rB4W+)6326#A7q)mbu4rtjEy!o9h5Nw zV>i3lWhlMtKd`&eyY8YlgY>3lce@LWjuJ-67-O_-qnK3Qu*{y^<#c~uDeEcuf=eRQ}w{k0?A4-mq>dTzHH@GSV(r}Mkrgk%X| zL~L6D>)kPZv2V8<@GPiTz|BEa6$c~v3Ro^Zh_^1j91*q9)gKWNZ(V#j%B2Up*t)$> z1>8`74n;1+LrDK58^CkNM{Bp>3WbR19=6wBIn!~EnBGY;fc5ar+`JnR5tZfp5z!gK z_R2`_B^khWf4EVMx3Ao4+4qb0i!pQSUd-Hox~B^EQIZ$fjqZ2D;z}ug_R`lQCJskL z#P8m}7Wpg}k!8*IoF0#NuYQu``Rb?SPH21hA|fKo;)l;4YHSu4O7ThYikc983(K*#P+lp;jKB?q z3b=)QVYssb)@=%=>%g5$y8>=ZwJffbT6U{|gOg?j%(9kwzC(r9QSY`Dke*7j0@kZr zm&xX?6|hq2K5@-cNwWghb?IhRz`;p>D}dYFcH2DnS6(T_i$8g(xm{U{a%HXGtxHmR zU2yxva$C1LIW`>M-FW``>lY#-;?g@;que%7p*NBU;LP2np@?m!O*Vya_~ibWKDmEz zjZ0iwU2w#`XEN+)|cBd8HJ;{K2WH9zWLD{n6+5V~~g z>yc$~W^8}t3&Zi@|H`cgtyN-q{h_(Q0Z6I>mRCx(0B*SQ&-pm{)scvZ_~`Hdj^aXX zfb!GtpNh*f#kgBuZ;X!fQJW8c%-7$XWpVEGc+A|oH^6_v-jh@SyZPYeV$3bBMrCb1 zE_{3AI|A2g-S7BFEr7FkmgDTvkrm52j{h}D&tI-HMxsqania_je= zB>v~tN5J*lY5Br%eE#3%h=|B?`=YYe{04;4FJ}>Jm6$p)*8Bwxj{%o#P!cQzkYXYIN#jJWifkaq2=}2x#hV0*W2-(1GzY|T8Z%7OiheLeF8GP$vMA0k4o!|0su2&2xNBj7$sej<7#t1ZQ3s%xKQZt0dERUvs|Ne8g9 zT8_;Nt8ULPbsV#@TKmj!AtH*Ujjo!WN%oe~$WT-xB8I+H+pa#S{amg#&q@85y28Oi z<6iNg+PT*ydm<0++X&Zl&CB5Xm4_YYqjB7(W4AgEk+Ccopqu{#RMzF-2Kbh$00000 LNkvXXu0mjf%zuYn delta 1630 zcmV-k2BG=74*v~*iBL{Q4GJ0x0000DNk~Le0001g0003#2nGNE0Hn^(ZU6uP0drDE zLIAGL9O(c62DwQ@K~#90?cM)t8+9DV@mFVa4NXjIo7OJ^`{wDiv{;*$!?UxOI^S6OaMv*ZQkqwm*rkkZIVC}lChT7KBWl0E^Zt;i9 zCAmwJZfcw6bI%8qCYMY3Twb5|=k7jtZ6%ShY>~hme{Icfz;2kD=r8)0%_LU>vF(i* z{Q->cj})sOI}gI0&i8yS@EySDjUV41DUQF?SAT_ocYuA(Zop3a{qAbBo3LjYAAZBi zcXt5+)!ys|>@>IXt2+Usfy3y^&u1U&?DTO-PT=mBB%Pf;u6*`!6I<7O##g?iatDBy z(Up(Je~b?Q{Pe;9^t$Pc4quYmvVYb*cE7*>`K`d7<4XpIfAYkk;^m(=ba{5uv)tbS zg3QS9Cx*J6Y29d4QvIM$o;Xx9=N}}-h3^KRoLiD4+3AOpYCC{`LD_}p<)^8&tnQ>9dBQKhzrRx#e_S-`Gik(_VZUDRTdK1>xsv-o zo3!T{6aF)??aG(W#DUtoeoSRV_*+)}7E)_jCE}6oe_lX3K+A`}ZScP8zB;#Fd16^x ze^!4`w0!vg#>7y!cR@fqKp-yZR?BCyN(MA+zra;~I2x&~d{RDOjy;WwDd ztvZo%#|Cj5G?&aG>C zJtw=csj1gXzoTDphW!4R6aM^zf3%M5kEwg0zx=-VNS8kOc(Qori|fYT&}mfodAp#n zW$E_4Rdt0sw7l-zkZBh-_2u-GzPmfCOUaZJvZP!_>WoUcjK+Gy8hdNJ$*tdgE#Ir% zBYk&@HXM!U{$FWHk`-!~U8wwKPWSVcRIoKR9IyOLqF8 zk*%?Tn8td;l@8Du)!0Bx3R!w(IHvKVucf4kE5rbhdm^ZNPaba|bz;kf3P)1GBP($Yu!{%PIWm28_N z#UtUOdRwA9 zT9l+;7dOhwCF$^Bu>KZrpu$h|^(eJkbw`hHL|C(XbaQsz_=I>fJ9)$1)~2E) zwLRxNFP8p^R=QZ(UUwZ=v@2Sk``@j0Hk*+f+SOhPc3s770)q0V! cH5UZIKZI@N;HNxzq5uE@07*qoM6N<$f?~8>TmS$7 diff --git a/asset/art/gif/c01_书店外街道/报童给报纸/7.png b/asset/art/gif/c01_书店外街道/报童给报纸/7.png index 8ed3563963d8abac63f4a2f314dc917f7c8bae82..d1c4e9b989ebef56be1c8637f63264a4f8349b2c 100644 GIT binary patch delta 1674 zcmV;526g$@4UZ0giBL{Q4GJ0x0000DNk~Le0001>0003#2nGNE01DI_ssI200drDE zLIAGL9O(c62FXc8K~#90?cKp^9M>HO@SjreWRX-^wPjV7?clm{+N7olCTVF6C4n4D zp!Cv1AQvCtHzE{WyQ$KuGr4XRu8LL zX?G<#wss|>_xZrGJ2SiD@%Zwad2imXB9XCje}E@m-$6IvN%8u{(e?IyQ`3w3r^k}- z;PWR3*0;QFyeRiKo@=W@*kj3e?)j4g>*v37V&^vqVNX4E&<%JJ{PW*;4!Q}+62OSq zwE`BWV|wDqK{wz@P*lLJK~xp@NAeZ0R=pqZUVbGa8lfv55fSfRekE$v`v=&%!%qd= ze^7*w{gr$L$M9V_lW79k|+N%dPVC36biDSQ#p62A6h?WPx3yV|bQB@@6$f0pN) zk2V+2b*`S~@gxzzZL8l7=9jA5SH$+eDTG~d=mYrB@a1`P@KN~ljk}v0S+;Ezq&p6M z03X-I)5EPhgs>+BFd`(L$yjZrk!&4MS2x5f6H3t_>K*Bj(B&ifOJ)Q6|ksmJ4`f3>{0>qeAmzM z=+dizgZ z9Up&wFNU&`1qk~f%?h|Nx_#;FvH0lA)`~YiG7wSEV`c4uxxjspW&k%#{k`!kSRa4- zub8}YEhevAi-?F{{rGG|e?;7_tu=4mm9tV~5VK{K^u=?d2h#4tB&jdgJU=?HzV+K~ zpZ|9y^80HsST09iUyIj&aH6>ydh(OGm^d@i{Os(lrFik=Pz;Z4hHm7UqY)AD&hI}; zsvo;4xe8cJ#a#bSqxub&%gtkNzWj1TL}Mge$|6=PjRUKdm^faJe~BNRkCA7NHXrO= zvV)ML<;^+2yuKDA1Lb)04^uJx%`Bpxw^YA~i0B`TSopHzJ0tH*-BA7ZAh`+{v044H z(visPtv|o9{8b)N%3}7`Qp^6?g_W56WG-IlFU5(~JT4tC3ttx`8NdhkcVEanF*Xzv z$IF``>>rGYv7v}ke-_W48H)2ic`nvZpNgNqc-o5SJxVfw-y3b5LW}B`m5#(pz7}Us zG^Sl<7gidfJ2TQ!2`9#e_P?=*T#^CYDk~l7*q&WjX>L!P8Hw42m6m;UPm+U>nZ;_~ z$Uu3$J$w@2Zr=(sHHm+T8Mb`~DxEYW=ref4X|xG|V0)RRO<_ z@e{{dca*Zmqn^jLFZ?uHx2b@IdfvPa+;;y)2$%9>@wb^-m9I;Zu7EoYHagTBt6#>) z$9mYBG$kECe-54ieqD8|qkAFQ04`N)o7Zt$uJH=<%a!Kw@!`RsH#R#}ZlAi}0${I_t3hi@zEvMy&RY)FL z(gDm@Yq51*%iNvL--WKMHomqw7>#?y9d}CDlVoS~Jcs&XJtCs-8;$Mt`;F(7_02vh z-cuMnIv7#PV*bwEWc#h#lI_T&M>fLs)aGUIz5GE(e>C5><-Oaz50SAf7+@#=2MHhG UwE0gJGXMYp07*qoM6N<$g3WbcegFUf delta 1590 zcmV-62Fdx44%ZETiBL{Q4GJ0x0000DNk~Le0001g0003#2nGNE0Hn^(ZU6uP0drDE zLIAGL9O(c629ZfbK~#90?cM)x6LlQN@z-!YnzeRw>*gpMnYf`K5wd_rNem?XU`UL= z_=5?*@B{yc;Wzw&UrgjDV*CU43x+Jl$d3?7OalWKq7x@4jAo9qjM6Uk+EIVF-L-eu zc7EHseeU^4nzeWB^0~h5{khNQdfgnB8f2iVo=25h!petXjCCTv^Ahu^mH z-9tb`b$7Y}o6W8K#+`uPz+rUdmrHB9bnc`iCvf*BNte!@RJpX)!Pa%2@s%&h+X3Kb zbbsZeJ)^_FeD2NvwBB?^hc8K8rN^QB?$3|DxE2pr$CX?Q>RzaUXeK>T^KT3=W-wi%{e?gLD7oO?o`GTbI4sdn0y2Y*A zevAq~==y9 z=Gtw=t(at4_1Enm(v|P;8TDTL9mZ^MFnCFlW$AEww-f%lT)w1xx#zy{z27m^qbonm z8}puQ#E5RcRq&F0!3Wm`WtUd}*LH1pMuh*5*>?RFFu6Z`)sLxmeE3bPzJ*-A)PKAu z2>#B9>;OAD{0)P*ZEv9G`tJU6{efjQt^TOk(c%AFlOuip1rgl=j1PZm`mXPBxmZ$m zVWmT@*$rP8Li zYbV(8;k!2Kx)b|$Z&6Ej4r9V^=fa7Mj=VCWscf#(P1#n=4&SnL;Y7xJ_4a3V zRj9sTt}heAUpM`e^KIOlcYf8>^%+fFpOGYe^6r=KT zy_Jl)Sn<$MqSkm-?!!L{vVYgAO2*@|D^;C&YtXxjXX@6x#z)iMYv&&2b#zZkeZ%#@ z)BAcQNf*DmVa$6JWK`w5)4jXDJ5`^I$GvrDj~|yLXT%?~q}8IcVzsF8fw;!snNWIP zuXl?ABL{rF@%o(Ju2hvy#C7)TY4yEqNfp~y^^&BXq_p@nbdBG|>3{piR=s3c!!tvt7-n5DT#dEfH6#e$}8&Fe@{OoOYoP7K724_-1b{1-@VSmPj-^hw}haS%@7QDyfqiM}87JSR1#JB<9>{6*Koru?h!AteQ zUn95T=N{$tr6k?WhhAqYqbh%PsnmRs7IWtQ=|nu#8@NI7F_=JUjLtB{r2_(Q$3Sp2K)UBVt{%zT#cRR(`92T}Z|G6fct*-o(~yPsWCijS;@&Re#hN8GgQ0 zt{=A>j_I!4O3_=N=}RiAj10e-D2LpN`QcY=XNuReLHO>)9T8$|_>E`sa=FD&xbFJg zN->fneaY~7erL*ZKF)Oo=kUHm!A3oUfs75`UM;Kf^SSva;lIOETy-w(PRcp=A36hQ zI3v$yrMgs;q^_5o$F=qUqg1HXx7U4+E7_ZrVwQ4GmW_N*nlW-id%M?z-BlmbJhNYf ow$*!H!*iQG50SAn7=S4F3yMA9w9!kdumAu607*qoM6N<$f~{UwA^-pY diff --git a/asset/art/gif/c01_书店外街道/报童给报纸/8.png b/asset/art/gif/c01_书店外街道/报童给报纸/8.png index c463505ec7ba01a73739a4f4280f65e37dee93e9..73d1b4fbc36f0dd08f7d4d062a74aad5b1e67892 100644 GIT binary patch delta 1619 zcmV-Z2CVs~4cHBTiBL{Q4GJ0x0000DNk~Le0001>0003#2nGNE01DI_ssI200drDE zLIAGL9O(c629ilcK~#90?cL97+vgnz@Q=Gl6OrPW#5RtSlq_?)Yzs{Y>&BK#4`qzN zZoTaiMo;|*w%gdPmtF?jsqDN%E`t%q80?g?!7$xYLRq~jG+i=bY!e(;5}NEpJLtD1 zIcXxvA!Z0y~4V`bg(nXu#! z@VOKDM$hZ!i`?PnbFC_b6PEnJJ$EACIQO-M(G7%fqFy=Z4!j6H{cPi)yO1majEH?J zVEc5;L>xNk4!j836|gsms^WAcUjb{CNAdo(HzT4My7nU?;{9uHMy>Mb0DJfHQvqAr ze<5VLlCOXqtmFgun``Hv>wTV2@&Sy9n5q1C;C1`?$G`f>9N+{cAHd(=-W}MtH-t=1 z(gA$utqYAPmm^|y*xq^T!oWRZ#wXbTUOqL~3|65K|GK*!5rZKdRvj6yB(HBe;fsjN z=TAj_`(bQ6co^?qJ=5GVLcJQ-{hvS34-c9njO+s=N zaBuh`qAz?ML&6skv9ewrd!JI4Q~-yCZ&c8tUhh8k{yS#}S5Nb7k_zC{C~a1Te^!F_YL3Z&-CvQ!ih*CfKPJ$#;v~XTDcM{ z_qPtHH)#>TA##QMU0Dn<)m2wM@%rcf2n}elV$+hS|RM4_lv<%aIL-*wffFfyOxSHPr>^r z&gbJh5mBxFFYdH%`{oMysFf=R+OL;Y5*2Xe{?_Q#DbIfm4uf1>AE-58_38EbC6sOeTUJXCV(mdS>N~q}_1g>G)zCZ5)9>PJ zGk~l2w&T)?*_c~e?0k0qf7PS$^PgU6y!YFizNGYwk`G`Z*QsgolQ-UozkGH(uCJ6L zGTDe~IpT03qFRpSB}j(zua#vHh&dASIEb$&o^S>NIvR2-CsbMJCcpq zsmJo^`R<2WLA+Ef418zgy&In-cMQiV=|RZRTzBGmKHsf`k;%sDf4$AVwySH~as6+1 zx+6UFU`jC@mx2AhYPX1G#io0#%rf% zqDMh zvK4T>@@OD@5fSyB-J$y z6~Oi#kha&)jJ_ZI$B*tOd;G>F`D?%dnQW9c9?TTy3XO<}e}CTH>gSdRJ8ql= zaF61`u_$fyEYIIl88_?4;_tUtRlYGv@)~fcoe^vQ+WRxU4?GD;2XNGAcR(wI#p2Qg zdy}T51IWP>z^66p6wPxZ6ILn_e)!4Bj5>1ej<7{+gys(ws(@b@3j1+ z3dxt2bO7tsTJ$cgy1Oy>!{p^^Eg~Wc5mBnNPSuP}vbU6GXQB}iG4qw?cH>d=dArd) zChazDg`- RFQ|$l% delta 1543 zcmV+i2Kf2d4W|u%iBL{Q4GJ0x0000DNk~Le0001g0003#2nGNE0Hn^(ZU6uP0drDE zLIAGL9O(c624P7=K~#90?cKp|lXV=&@y~F5Y}V2(&@H13f^$Pu0%Q@5a^XOXA@Rn| z3o)Mj2lQsVap7X3C*s)y7ZXE_G4TY^#55>mAyQ$;Y?f^&Sw?A_`gEfno<41#K79s> z(stkH{Yn=4Jbg-j?dSLXJ-_GIhamxxv1pONAAcAbbOZX~{K8bDd*8MEYAoLSPE3CQ z^9NFmj>q1E)*nkHN#PFAYgC9EbLYHP@RAme&B!f1(%Qx&eSChl zbaz**&%>lJ$xR?*WTQZ#rSH7=f1c<|V-~7!S z7Z!4X?OM5_d`yS=Zgwj_;xcc?%8wa)l^=C&-xOK-uKU#2T4S&BBNlIbRDPSi@O{k= z5V)>ac(z}2>#Di+zBX-G*coAfwpTfVq)mGQzaJS^$dfs7`mr&_Pg9v;`HAD(Gk`ue)r8#+ygpH8-FSs$D} zt)K2M>T13yB^;?*md4UjwSTO+{YlNeIX}Rb4u+{-{o0iG+qaVGlx{s()8yWi+5S&~C)*uhEPt)J>5P_#zcWTD`ojfMPf3h8&TVbW-1%4*x0sVnB}0?II5T-UlT9TXQpd304Bubb^PM;ny}tkb z&1I9HO()am{E&pB;@ZYYZX(@~q~Dh|Tl*#H#KCy|F5Xy$pPSsL;#$WoU0ox>y1P%m zE*8vJywBV@zo&Y{clZAOM7-|T_n8epYE~c8>;Spk^mA;@aDOrzKAw*7rRdXwaVEoG zuhiO;wuIyTbOc=7EVrJ|O{DwVxFKRP{9fW5auoaF*Inf%_jz~i?4(-mPkV-l+3-7; zaf`*3P`Li{#m#aoXZn)yMV^e~eVyy;Ucd>Q3Z6DH7-Tklw^~!@m$OT2;a|d3uGS<; zX-UOO^YjoSCODTeGb3t9(#Q+mcBA>9Xq6i6_v;_yOOK~pYybUf=b)K_aTq4(N4uH)EV#{rSCG#C&E{{l!Q!v-4%R*V1u002ovPDHLkV1h3PKmh;% diff --git a/asset/art/gif/c01_书店外街道/报童给报纸/9.png b/asset/art/gif/c01_书店外街道/报童给报纸/9.png index b4ab1f5a4a9b4305a54da2fe18935809d42e9cdd..ad56ef7205524b22cb4dc3c36def24d7c5f0f28a 100644 GIT binary patch delta 1714 zcmV;j22J_?4Y&?}iBL{Q4GJ0x0000DNk~Le0001>0003#2nGNE01DI_ssI200drDE zLIAGL9O(c62J%TnK~#90?cKp^9M>HO@UK&AA}m!_ZCS``IdxJwZIh4$lN4G*n?ndC zP}DX5QO3s|1m;a(}q%9op{(+%29xH@@Dv?c(&j{^_&g zJNWF$q4jOgn@>&5 z4J%;lbWC3y-tPw74O$g&dk|H{y-|DxT&Z8r%g;ZRq#3%_Pm;X+{8L$}U*E^p9egU_ zhJRKF*;~a|K=xPh0et28@7&RT?o9CkOp-(OPr9DB9)I%Nx6J|eQL)#6FFgIodX|>* z`pjB>`cQi}bcT@rDY62dn;dO^{5Cwixox+wz3}uSU7r!tJH-XC6~5{BE+=8d^be=wiv59U?DJ}T}4d-L?W z;p$R7KYVZ^wXvaO;&_tePj9@P!D=9>s;&1uFrHWc`fhRk)o(?0XlMA6BvqA1#_nwf zaKqd}J@3wa*%rXf-!Xn9um0mwQT^6W#hik73ty79@OAF%G(ErE({`1vm;m0gMt@`L zr^C4ix>rwgdx{9)j@54$a|`vID`MyG6vCc3@BzGO_!^DP!AHwq-n+W>qN;YRg7n6L z58&-OH#yqAK?wUo0Fzv}_)gpFm8E*7FJIfI)|5p6cQ80S)Lj8vwpBvcfp@Oh#R#ow zma9wk{QL*sYTLE4RL`_i?w%;G0)JLj+Z^Aq;qDRd4J#l$RbB;bRkmFwnv)w;z((VS z@8i~$R{>jYaEes{_fEM1Y^kdDdB1dzf>#==S!t~9b<2uy-~%{)`P%La2X?4}wXvZ* zapqVa7~Q&79NghLk={7)0Zf`9+%OeFtg5UuR`cTdTGl5|WqtBglH~pAt2cQgy;NoZH%7NloH>>^KVNCv zRT~@1Yk&ApUi;&Rs^1VMvbhsKB2x8H2^(Wi@f;YVkZG#8>KTg&q=OwVO%VkGm6 z8&frnMphcD&6|~yq^jJg)B{Cz-cA8*TwlxZ;9wf7YkBtJ6I%g%>r$ppk8Qqp_Tz;- zesUzE6XToP#_l_sBzfugZx+>$y;R&Fq*=wPeDrDaX7pD0lH?apK7X0Ne>l?|2@h1s z@=|hSI9XoG)bYVgeedjkHvK><>M!@9@#Z(;zyJAijt(~G{HlS&X{@egY-lhG^_7f% zy-HRaZPl+8#K&vHUH6Q9c!+6*-32FHd5cMN8d_K`6?QB(js!`C?io~t*q*jU?nWK3TaJB=_lG`OB@I}HzP zyV+=UYo+v~XLi3gwP zz?RiUdll^5zJE~_7aGlg?s4l5tfB+B+hC*1MhI&sj`g=e1uAL~!reyz|6i-VE2bZc z4d6n3W$QX_plZ9$OOm;3OPl*^qr;&;iVfgS1a0pLV3Mphngfg@HwobK(%!VEAVmjo z`zIcAb62_o*4jUJZ7H?d#GbaT6h%+NB*{qCT#D7wIb_Gzc3Qq!h2)kM9l*x&O17_S zx%650_d+i%H*eb#9rLrlL}GuoX5BB10IP zx4{nc;72J<8X&+B0hDPwHxBup5=O(|{`Em}h;t+8}53E@d=c6jn6d7dQg z+}0-jJ?|G3n@D8x6-3{1kcke%GcN036@!@Y+ z`R*kkpt{@LfUV|Metjq4Y~V1u@{9R(T|9e2k`uW5B}o_0o=`Er-p1CopYfG1soDYH zWpsb#V`D~#f9dQS|LJ+t86CbPb>$y5eDD7I!Iw7!JI9v{z2=`gd8n*hPFLsF^x*;T zF8Vt_kQrC`Q)7M3E!}9ex~)~v=T07KxaS`vMuqPNpSrUsNwTwl>Cc6%q{a?#b#85& zTi1Dv3g7RixwL*;D(TYfJM6fsC70K``-hc?N2K8a zNz!-MZYperB+IJ3Z{LtE|9IP|WARTIv%~)2B}ta0L-E~C_!a3)UboZFJmFV=#!!zg z|FU4rG1-g}r~OvJOY#Kof6gzpT=-wx)#;1~|ApCh?aOCsU*oDDQ|RlZx%EpFmS8&rS3ZEyHK6PZ={t_@D>RDO+_;kzu$JFi#cXuoKe zRJ2Rm-Lj6bqr*=vuD1RVrb+cD;t?I2=-0l!+Snl6WLyvwJ34&H=>RP|L8SxutAB1e zzvb=P33hz=uFX!}kv+S&sUHECa3x(Nr_hvwxwB}!pzFIEEVmN&QB*)9vfA8Y*dnTH?^|K z8-vBX@GGPEV-x+l{fC!1lAJ{x zQf*1sOe(G9a7@eD%5>1SRkVLg&caSfvaCQX>NIBOnuTw#uPGW1%Py_y^ufVe_%{}m z9FJGuJO41Fqa!i(4G&ef#rO0|k}iCG-I!zKXVietsa{JD9y`CN;RY{BpBz7~pYP8( zBmR&j6>?HfR4U|@90)7<)?_=I-WJC6>H|a0U*5X=w4mOwGpDyg-Lij6Yl=t0%H)gc zd)bmowx{adPH;34ZCK-XVfKzO$EO+N27J%goi!M4@C`zi<{xG}o936Ynz^x{BRwGv z7HmxqgpChgGBEtthg#pOUwvjPIUG}RAYAJJJy9ixV^YY{{_&V5-+oi&u~EH$bjSy_WC$n~O#s zn|j7x^P5Qw_UqTV`L0A?v@A)#Kl1)c_TkZB{Vm>LgkQ3~)$iY4IU8hbr*mv`>)OWH z@LLV+8dN$!Vz7T}8`Ob}8Svr75x(RZ1O|zb;b-#2+I2f*d9Le{lwQqMpHK8f6;wus z-%OB0ZpHlYOSXSAnCsaj{6cPf+S5Ud4Zr?QUOK(h5U%@tdNrp+Vt8BI)+vmg>Pb?} zaz4&=`RDMSOTlJm1_K!zzFjD){`0woCyjrHCs%Nmc1Pvh`w!Y&-^jaJu`ZP*sp}=@ zak=vUC}qpF{dHgCiuOjOkfrpK6(f&HGe+)cZ+9iwU9}G(&0qHOhJCHRuI{zXUI&q} dG#Ee-{0*%%<{`)kTF3wZ002ovPDHLkV1h(DQ8)kq diff --git a/asset/art/prop/c02/海报特写/青岛啤酒.png b/asset/art/prop/c02/海报特写/青岛啤酒.png old mode 100755 new mode 100644 index 1eb361723364eccf61ce9357f55e2409afadc189..5d62e75161862f9391bc20c4fb05235991e4ede0 GIT binary patch literal 19729 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“y;4LpOE`TZd zFa{uM<_1Q!@^w@-kcQ>Pz%?aE;;3JA=F%TcB8eC{8YTes*$7 z)avxHeS}1UN$O(90^>!-Z5rhgd0?GS5k<2cyOPhF`t$*+E^ksl?@}EN^6>Ofp%Vs9 z>>1OxyeO^soQDA-7-AnrovV%S>NnB%e33e9!;Mwz>g60Cg(S)n{*ml^Y>7O0>K3;8 z=oXPY3q(E+l8jUP8B0~_$H8%Htkw$!P8vkbiR}8gHJ1HWg|yQhL`7d+(yT4OgzOD|@=-%E9iG|Fmk0`NfiiqFu#0aFR5XB+R zpDgH1q#!v8Q*(W&uE7Ucu+Xb6qUJ;fW|8_0d5X`dZII?z&oe>?sjGjT)g8Ac=xnd| zj$K=Mr)#g(J4mX>_I>`#B?m*DDrxT7U&oVG-0P>vvSv zv9?p5_NrFCj)u{_yP@27+{^i`J^M>jZtd;fhNz10orV@V*qhD+oB zv3(^DO)HziM#ivbkK0Wu78D~vmpZOgjKoG%{oI{;Yq%o}$#)dAS=+MU{`X!$yq zr03=esDnLaj!Os8{fhKJbz}0|-}~lJ*9Ksd&D)rfz4e6@QX6*EMB;9{O_~ZOifA-r zZ!B4q*zEu)Zbm>Am+XTb8oknrb)vWLr8|~zWSSE+YsB)7_g9N*$UqL=?G09c@Tb}N zel|hzc)QjgyF2P9t#)c7zvpc^x-(>NDJ(mU1u#aCumP(G#&fNh7-un_UKXcJY z3U{h=7*rh+jqwKtiu$T#Gb4L5heMWlMcrB_waV;lgiR9xKS}OHYgkP#Aa0AQph1o2 zRM)a0Wq=YjM%nYJ&$9Z1KlO{0EyN>4Hf8dO&$9C7pE7m&bH1U9W_Pf@r8NEw4O1sF zGk=%VpRXhJ{d&9f;$$j)$dOK_(%vXt%Zihy*MGD^kD;hjX z#cedaU&8lv-^lR@+FnDgW%7y75=AW+ZW@67*{6x37SbFi%mLJwSH?1qvF47#!``KvFB%>!k7kX8f2jb(j;m%-TumH;y^U6<2VD% zB8@TP=C~VQWugGOonm-`Ymi2>U*uRHksgm{b?jb#mFCe;kl1ky3C05IR*w~M0EE=X z{RkE#4IeJz0@&lm2$N5IE_-6s97P&qS^I>JkHd|4d~Ycqe$l;d3(2lb>w#SKH>XGw zMNC=}w>iLWhYOcWKgFs8_wF5k93{3AV^fQ9s#6g|x07I64JS^mWFpT6kXj#NqW&f^ z(%9pcw067YnupAz;^S1U_#i2Ry0w&oQ?0db(^XYe z{9b^nNSZhhLgm%fxRe*7QtR-w7&(yz9~-~TvKXvU7wU+3K+7BPR;k-{z>4HMDXDji zs0tE~5yulCN>?MsPktIzOSfxKn_$zhTSP*>d3z2 z?Xj5Cq~q501mS7BxYV_tYkembglz>%_Rf zVTnnKASQ9o^3j%QHV;kKgG(*}t)kb1JXWYZ;w>kSfK2 zWzooOa-bF!h$I4^$k_qq_FuDU;$9>GD=sH+c!A<9PA-|;q(QbNwl#=RQcY-#P4xtf zhp<$U{9n}+yptqJ65_~pMxsa|a*Kt$Qgef{j>Ohk?P|MX(~fG=1ynpEh_&ilH1!#5 z#7#qzA_*C&R`Cv90Xj}?WLSnFpR2ho<8Qbs)IXcw=SRjmbMNYj+axED__68l|3(G-ayYE1ir*D6=(dOmEI45=q{d>qme@pCZ6l`XHh)n=HNSNYbT#BTUM!=N zd%>o3Qz4E7CnJ>29}QjZ6Jw)n<}Fi~*YxHJYRyzjvK> zoJdc*7;#A$Q!gB?S|YWi-419%V`PjZ$N`@)LDedX7`2G;QAE6c-=U2BPjLjY-^*b#J&@hTo1x-kk)Q|Grw$+-r3@tY8 k(rh+Si3Ag2aU0M4KlhCe8Nb-|p8x;=07*qoM6N<$g5sv_V*mgE literal 23769 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 END diff --git a/asset/dialogue/item_description.csv b/asset/dialogue/item_description.csv index 7e60feec..a84f192b 100644 --- a/asset/dialogue/item_description.csv +++ b/asset/dialogue/item_description.csv @@ -19,11 +19,12 @@ setting_日志,笔记(B),,,,,Open the Log setting_记忆,记忆(G),,,,, setting_全屏游戏,全屏游戏,,,,,Full Screen setting_窗口置顶,窗口置顶,,,,,Top Window +ux_panel_笔记,线索,,,,, index_新游戏,新游戏,,,,,New Game index_继续游戏,继续游戏,,,,,Resume index_退出游戏,退出游戏,,,,,Exit ux_panel_继续,继续,,,,, -ux_panel_笔记,笔记,,,,, +ux_panel_线索笔记,线索,,,,, ux_panel_设置,设置,,,,, ux_panel_返回主菜单,返回主菜单,,,,, ux_panel_退出游戏,退出游戏,,,,, diff --git a/asset/dialogue/item_description.dialogue b/asset/dialogue/item_description.dialogue index a4b21fbb..b720dc57 100644 --- a/asset/dialogue/item_description.dialogue +++ b/asset/dialogue/item_description.dialogue @@ -5,7 +5,7 @@ 退出游戏[ID:index_退出游戏] 继续 [ID:ux_panel_继续] -笔记 [ID:ux_panel_笔记] +线索 [ID:ux_panel_线索笔记] 设置 [ID:ux_panel_设置] 返回主菜单 [ID:ux_panel_返回主菜单] 退出游戏 [ID:ux_panel_退出游戏] diff --git a/manager/scene/global_functor.gd b/manager/scene/global_functor.gd index d52588b8..1d4a7d3f 100644 --- a/manager/scene/global_functor.gd +++ b/manager/scene/global_functor.gd @@ -25,7 +25,7 @@ func c02_cat_play_with_door(): var knock_stream = preload("uid://6q5qi1qon35r") AudioManager.play_sfx(knock_stream) SceneManager.lock_player(1.5, 6, true) - await get_tree().create_timer(1.5).timeout + await Util.wait(1.5) knocking = false @@ -59,14 +59,14 @@ func _on_c02_fire_count_down_timeout(): c02_fire_count_down_timer.stop() AudioManager.stop_bgm_music("霸凌救小蝉倒计时") DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_未完成拯救小蝉的游戏", [GlobalConfig.DIALOG_IGNORE_INPUT]) - await get_tree().create_timer(1.0).timeout + await Util.wait(1.0) SceneManager.show_black_hand(true, 0.5) - await get_tree().create_timer(3.0).timeout + await Util.wait(3) SceneManager.unlock_player() SceneManager.get_ground_loader().transition_to_scene("c02_s03", "4") # TODO 音效 # res://asset/audio/BGM/心跳背景音.mp3 - await get_tree().create_timer(3.0).timeout + await Util.wait(3) SceneManager.pop_debug_dialog_info("音效", "霸凌救小蝉倒计时") AudioManager.loop_bgm_music("霸凌救小蝉倒计时", c02_fire_count_down_sfx, 5) c02_fire_count_down_timer.start() diff --git a/manager/scene/scene_manager.gd b/manager/scene/scene_manager.gd index 825ce7c0..bd47a2d7 100644 --- a/manager/scene/scene_manager.gd +++ b/manager/scene/scene_manager.gd @@ -9,7 +9,7 @@ enum VIBE { # 从 ground loader 控制该信号 signal ground_ready(ground: Ground2D) -signal ground_start(ground: Ground2D) +signal ground_start() func _ready(): @@ -25,6 +25,12 @@ func get_ground_loader() -> GroundLoader: return get_node_or_null("/root/Main/GroundLoader") as GroundLoader +func toggle_ground_mask( + display: bool, wait_time := 1.5, ease_min_duration := 0.5, mask_color := Color.BLACK +) -> Tween: + return get_ground_loader().toggle_mask(display, wait_time, ease_min_duration, mask_color) + + # restart scene in debug launch... func is_restarting() -> bool: var ground = get_ground() @@ -233,7 +239,7 @@ func pop_os_with_str(translation_key: String, auto_lock := true, auto_unlock := var player = get_player() as MainPlayer if player: var msg = tr(translation_key).replace("
", "\n") - var lines = await DialogueUtil.generate_lines(msg) + var lines = await Util.generate_lines(msg) player.pop_os(lines, auto_lock, auto_unlock) else: printerr("Player node not found") @@ -293,12 +299,9 @@ func checkout_index_page(transition := true): # 保存后,渐隐切换场景 ArchiveManager.save_all() if transition: - var ground = get_ground() - if ground: - var tween = create_tween() - if GlobalConfig.DEBUG: - print("transition to index page") - tween.tween_property(ground, "modulate:a", 0.0, 1.0) + var ground_loader = get_ground_loader() as GroundLoader + if ground_loader: + var tween = toggle_ground_mask(true) tween.tween_callback(_jump_back_to_index_and_quit_main) else: _jump_back_to_index_and_quit_main() @@ -387,12 +390,11 @@ func toggle_pause_counter(plus := true): func quit_game(): ArchiveManager.save_all() - var ground = get_ground() - if ground: - var tween = create_tween() + var ground_loader = get_ground_loader() as GroundLoader + if ground_loader: + var tween = toggle_ground_mask(true, 2.0, 1.0) if GlobalConfig.DEBUG: print("quit_game with transition") - tween.tween_property(ground, "modulate:a", 0.0, 1.5) tween.tween_callback(get_tree().quit) else: get_tree().quit() diff --git a/project.godot b/project.godot index 5060e1de..2265fbdc 100644 --- a/project.godot +++ b/project.godot @@ -43,6 +43,7 @@ buses/default_bus_layout="res://config/default_bus_layout.tres" [autoload] +Util="*res://util/util.gd" DebugMenu="*res://addons/debug_menu/debug_menu.tscn" GlobalConfigManager="*res://manager/config_manager/global_config_manager.gd" ArchiveManager="*res://manager/archive_manager/archive_manager.gd" diff --git a/scene/character/main_player.gd b/scene/character/main_player.gd index e3bd087f..4b1619da 100644 --- a/scene/character/main_player.gd +++ b/scene/character/main_player.gd @@ -424,8 +424,7 @@ func _os_load_line(line, duration): os_tween.pause() if os_pausing_timer and os_pausing_timer.timeout.is_connected(os_tween.play): os_pausing_timer.timeout.disconnect(os_tween.play) - os_pausing_timer = get_tree().create_timer(duration) - os_pausing_timer.timeout.connect(_on_os_line_timeout, CONNECT_ONE_SHOT) + Util.timer(duration, _on_os_line_timeout) func _on_os_line_timeout(naturally := true): diff --git a/scene/character/reenter_lock.gd b/scene/character/reenter_lock.gd index 19b33dc1..d378b01f 100644 --- a/scene/character/reenter_lock.gd +++ b/scene/character/reenter_lock.gd @@ -44,7 +44,7 @@ func _exit_tree() -> void: func _create_timer(duration: float, callable: Callable): if duration > 0 and callable: - get_tree().create_timer(duration).timeout.connect(callable) + Util.timer(duration, callable) # Freeze 相关方法 diff --git a/scene/dialog/balloon.gd b/scene/dialog/balloon.gd index 45a62b05..c6bf1e2b 100755 --- a/scene/dialog/balloon.gd +++ b/scene/dialog/balloon.gd @@ -243,23 +243,11 @@ func apply_dialogue_line() -> void: # eg. [#wait=2.5] if wait: wait_time = wait.to_float() - await get_tree().create_timer(wait_time).timeout + await Util.wait(wait_time) # 在 translation key 仍旧是当前 line 时跳转;如果不再是当前 line,则不跳转 if dialogue_line.translation_key == initial_translation_key: next(dialogue_line.next_id) - # var time = next_dialogue_line.text.length() * 0.2 if next_dialogue_line.time == "auto" else next_dialogue_line.time.to_float() - # await get_tree().create_timer(time).timeout - - # elif dialogue_line.time != "": - # var time = dialogue_line.text.length() * 0.02 if dialogue_line.time == "auto" else dialogue_line.time.to_float() - # await get_tree().create_timer(time).timeout - # next(dialogue_line.next_id) - # else: - # is_waiting_for_input = true - # balloon.focus_mode = Control.FOCUS_ALL - # balloon.grab_focus() - ## Go to the next line func next(next_id: String) -> void: diff --git a/scene/dialog/balloon_debug.gd b/scene/dialog/balloon_debug.gd index cf3a6bbf..4cd5bfa1 100644 --- a/scene/dialog/balloon_debug.gd +++ b/scene/dialog/balloon_debug.gd @@ -148,7 +148,7 @@ func apply_dialogue_line() -> void: is_waiting_for_input = true # balloon.focus_mode = Control.FOCUS_ALL # balloon.grab_focus() - await get_tree().create_timer(2.0).timeout + await Util.wait(2.0) # debug line 不需要下一行,直接释放(避免触发 dialogue_ended 信号) queue_free() diff --git a/scene/effect/shading_layer.gd b/scene/effect/shading_layer.gd index ad90f81c..e3f60a8c 100644 --- a/scene/effect/shading_layer.gd +++ b/scene/effect/shading_layer.gd @@ -210,11 +210,11 @@ func flash_palette(duration := 0.5) -> void: if not is_node_ready(): return add_mode("palette") - get_tree().create_timer(duration).timeout.connect(erase_mode.bind("palette")) + Util.timer(duration, erase_mode.bind("palette")) # glitch 闪烁 func flash_glitch(duration := 1.0) -> void: if not is_node_ready(): return add_mode("glitch") - get_tree().create_timer(duration).timeout.connect(erase_mode.bind("glitch")) + Util.timer(duration, erase_mode.bind("glitch")) diff --git a/scene/effect/黑手.gd b/scene/effect/黑手.gd index be792dbe..4b7597ac 100644 --- a/scene/effect/黑手.gd +++ b/scene/effect/黑手.gd @@ -17,5 +17,5 @@ func run_effect(play_sfx := true, queue_free_delay := 0.0): func _on_animation_finished(_a, queue_free_delay): if queue_free_delay > 0: - await get_tree().create_timer(queue_free_delay).timeout + await Util.wait(queue_free_delay) queue_free() diff --git a/scene/entity/npc.gd b/scene/entity/npc.gd index 9f3288ed..13cd065f 100644 --- a/scene/entity/npc.gd +++ b/scene/entity/npc.gd @@ -55,6 +55,31 @@ var dialogue_res = preload("res://asset/dialogue/npc.dialogue") var base_scale := Vector2.ONE var base_mod := Color.WHITE_SMOKE +var speaking_sign_tween: Tween + +# 0 hide; 1 silent; 2 speaking +var speaking_sign_mode := 0: + set(val): + if speaking_sign_mode != val: + speaking_sign_mode = val + if speaking_sign_tween and speaking_sign_tween.is_valid(): + speaking_sign_tween.kill() + speaking_sign_tween = create_tween() + if val == 0: + speaking_sign_tween.tween_property(speaking_sign, "modulate:a", 0.0, 0.3) + elif val == 1: + speaking_sign_tween.tween_property(speaking_sign, "modulate", base_mod, 0.3) + speaking_sign_tween.parallel().tween_property( + speaking_sign, "scale", base_scale, 0.3 + ) + speaking_animation.play("speaking") + elif val == 2: + speaking_sign_tween.tween_property(speaking_sign, "modulate", Color.WHITE, 0.3) + speaking_sign_tween.parallel().tween_property( + speaking_sign, "scale", base_scale * 1.3, 0.3 + ) + speaking_animation.play("speaking") + func _ready() -> void: # sign position @@ -69,10 +94,14 @@ func _ready() -> void: sign_snapper.action_on_arrived = action_key sign_snapper.radius = walk_to_edge_width sign_snapper.enabled = snap_to_edge + # 设置 speaking_sign 默认值 + base_scale = speaking_sign.scale + base_mod = speaking_sign.modulate + speaking_sign.modulate.a = 0.0 if Engine.is_editor_hint(): # editor 下都显示 speaking_sign.visible = true - speaking_sign.modulate.a = 1 + speaking_sign.modulate.a = 1.0 speaking_sign.get_node("Sprite2D").position.x = -60.0 speaking_sign.get_node("Sprite2D").frame = 2 sign_mark.display_sign = true @@ -80,10 +109,6 @@ func _ready() -> void: # setup default value ground_archive = ArchiveManager.archive.ground_archive() icount = ground_archive.get_value(name, "icount", 0) - # 默认为 0 - speaking_sign.modulate.a = 0.0 - base_scale = speaking_sign.scale - base_mod = speaking_sign.modulate if snap_to_edge: sign_snapper.arrived.connect(_on_interacted) else: @@ -106,10 +131,10 @@ func _align_signs_status(): func _on_toggle_active(activated: bool) -> void: - if activated: - speaking_animation.play("speaking") - # icount 影响 visible; activated 影响 modulate - speaking_sign.modulate.a = 1 if activated else 0 + if activated and speaking_sign_mode == 0: + speaking_sign_mode = 1 + elif not activated and speaking_sign_mode > 0: + speaking_sign_mode = 0 func _on_interacted() -> void: @@ -122,13 +147,9 @@ func _on_interacted() -> void: ground_archive.set_pair(name, "icount", icount) DialogueManager.show_dialogue_balloon(dialogue_res, dialogue_title) interacted.emit() - var tween = create_tween() - tween.tween_property(speaking_sign, "modulate", Color.WHITE, 0.5) - tween.parallel().tween_property(speaking_sign, "scale", base_scale * 1.3, 0.3) + speaking_sign_mode = 2 await DialogueManager.dialogue_ended - tween = create_tween() - tween.tween_property(speaking_sign, "modulate", base_mod, 0.5) - tween.parallel().tween_property(speaking_sign, "scale", base_scale, 0.3) + speaking_sign_mode = 1 if GlobalConfig.DEBUG: print("[" + name + "] call lock") SceneManager.unlock_player() diff --git a/scene/entity/npc.tscn b/scene/entity/npc.tscn index 3a80463a..68452025 100644 --- a/scene/entity/npc.tscn +++ b/scene/entity/npc.tscn @@ -116,7 +116,7 @@ script = ExtResource("4_j5svs") [node name="Sign" parent="." instance=ExtResource("4_nokx4")] unique_name_in_owner = true -sign_mark_offset = Vector2(0, -60) +sign_mark_offset = Vector2(0, -10) [node name="SpeakingAnimationPlayer" type="AnimationPlayer" parent="."] unique_name_in_owner = true @@ -141,7 +141,7 @@ scale = Vector2(0.07, 0.07) [node name="Sprite2D" type="AnimatedSprite2D" parent="SpeakingSign2D"] light_mask = 16 -position = Vector2(60, 0) +position = Vector2(-60, 0) sprite_frames = SubResource("SpriteFrames_k7dca") offset = Vector2(60, 0) @@ -158,5 +158,6 @@ unique_name_in_owner = true script = ExtResource("8_7lwt5") radius = 25.0 walk_to_edge = true +face_inside_on_edge = true action_on_arrived = 4 metadata/_custom_type_script = "uid://cnt01hiw52bmn" diff --git a/scene/entity/ux/sign_snapper.gd b/scene/entity/ux/sign_snapper.gd index 72b6f7f8..5668a340 100644 --- a/scene/entity/ux/sign_snapper.gd +++ b/scene/entity/ux/sign_snapper.gd @@ -13,6 +13,8 @@ signal arrived @export_range(0.0, 20.0, 0.1) var radius := 0.0 # 让玩家走到边缘,特别适用于 npc 对话等情景 @export var walk_to_edge := false +# 如果 walk_to_edge 为 true,那么走到 edge 后面朝内侧 +@export var face_inside_on_edge := false @export var action_on_arrived := 3 @export_tool_button("debug 检查玩家触发位置") var debug_check_player_pos = _debug_check_player_pos @@ -65,6 +67,12 @@ func _on_interacted(): tween = create_tween() else: tween = player.walk_to(target_pos) + if walk_to_edge and face_inside_on_edge: + # 玩家向右走到 target_pos.x 后,向左看向 global_position.x + if player_x < target_pos.x and target_pos.x > global_position.x: + tween.tween_callback(player.set_facing_direction.bind(Vector2(-1, 0))) + elif player_x > target_pos.x and target_pos.x < global_position.x: + tween.tween_callback(player.set_facing_direction.bind(Vector2(1, 0))) if delay_arrived > 0: tween.tween_interval(delay_arrived) if action_on_arrived != 3: diff --git a/scene/ground/camera/camera_focus_marker.gd b/scene/ground/camera/camera_focus_marker.gd index 880df4e5..07e9f041 100644 --- a/scene/ground/camera/camera_focus_marker.gd +++ b/scene/ground/camera/camera_focus_marker.gd @@ -22,7 +22,6 @@ var _tweeked_position := Vector2.ZERO var zoom_tween: Tween var focus_offset := Vector2.ZERO -var shaked_offset := Vector2.ZERO var shake_ignore_boundary := false @@ -31,7 +30,7 @@ func _ready() -> void: push_error("Focusing node not found") -func shake_camera(strength := 7.0, recovery_speed := 4.0, ignore_boundary := false): +func shake_camera(strength := 6.0, recovery_speed := 2.0, ignore_boundary := true): shake_strength = strength shake_recovery_speed = recovery_speed shake_ignore_boundary = ignore_boundary @@ -56,43 +55,56 @@ func tweak_position(velocity, facing_direction): _tweeked_position.y = facing_direction.y * abs(velocity.y) * 0.2 +# 处理过程的当下理想位置 +var progressing_position: Vector2 + + func _physics_process(delta: float) -> void: if not focusing_node: return - # handle shake, via _shaked_position - if shake_strength > 0.0: - shake_strength = lerpf(shake_strength, 0.0, shake_recovery_speed * delta) - shaked_offset = Vector2( - randf_range(-shake_strength, shake_strength), - randf_range(-shake_strength, shake_strength) - ) - else: - shaked_offset = Vector2.ZERO - shake_ignore_boundary = false - # set camera's position - var target_position = ( - focusing_node.global_position - + _tweeked_position - + force_offset - + focus_offset - + shaked_offset - ) + # 最终目标位置 + var target_position = focusing_node.global_position + _tweeked_position + force_offset if focusing_node is MainPlayer: # player 的焦点在脚底,所以需要偏移 player 的高度。注意 y 轴是向下的,所以是减去 player 的高度 target_position.y -= focusing_node.current_animation_config.os_height * 0.7 # clamp the position - if not shake_ignore_boundary: - var margin = half_screen_size / zoom_ratio - margin.y += shaded_height - target_position.x = clamp(target_position.x, limit_left + margin.x, limit_right - margin.x) - target_position.y = clamp(target_position.y, limit_top + margin.y, limit_bottom - margin.y) + target_position = _clamp_boundary(target_position) # easing with speed - global_position = lerp(global_position, target_position, speed * delta) + progressing_position = lerp(progressing_position, target_position, speed * delta) + global_position = progressing_position + + # handle shake + if shake_strength > 0.0: + # 让 shake_strength 逐帧衰减 + shake_strength = lerpf(shake_strength, 0.0, shake_recovery_speed * delta) + # [-shake_strength, +shake_strength] 范围内的同时,尽可能偏离中心 + # 在 0 – 2π 之间随机一个方向,在 _last_shake_angle 的对角范围 + # _last_shake_angle = wrapf(_last_shake_angle + randf_range(-2.0, 2.0), 0, TAU) # TAU = 2π + var _last_shake_angle := randf_range(-TAU, TAU) # TAU = 2π + var shaked_offset := ( + Vector2(cos(_last_shake_angle), sin(_last_shake_angle)) * shake_strength + ) + # var shaked_offset := Vector2( + # randf_range(-shake_strength, shake_strength), + # randf_range(-shake_strength, shake_strength) + # ) + global_position += shaked_offset + if not shake_ignore_boundary: + global_position = _clamp_boundary(global_position) + # var taget_zoom = lerpf(zoom.x, zoom_ratio, speed * delta) # zoom = Vector2(taget_zoom, taget_zoom) zoom = Vector2(zoom_ratio, zoom_ratio) +func _clamp_boundary(target: Vector2) -> Vector2: + var margin = half_screen_size / zoom_ratio + margin.y += shaded_height + target.x = clamp(target.x, limit_left + margin.x, limit_right - margin.x) + target.y = clamp(target.y, limit_top + margin.y, limit_bottom - margin.y) + return target + + func tween_zoom(ratio: float, duration := 1.5): if zoom_tween and zoom_tween.is_running(): zoom_tween.kill() diff --git a/scene/ground/camera/camera_focus_marker.tscn b/scene/ground/camera/camera_focus_marker.tscn index 92e5f9b5..1c73f089 100644 --- a/scene/ground/camera/camera_focus_marker.tscn +++ b/scene/ground/camera/camera_focus_marker.tscn @@ -3,5 +3,5 @@ [ext_resource type="Script" uid="uid://dphabatkubjgf" path="res://scene/ground/camera/camera_focus_marker.gd" id="1_7t4e6"] [node name="CameraFocusMarker" type="Camera2D"] -process_mode = 3 +process_mode = 1 script = ExtResource("1_7t4e6") diff --git a/scene/ground/ground_loader.gd b/scene/ground/ground_loader.gd index 2440f6ef..efd40c40 100644 --- a/scene/ground/ground_loader.gd +++ b/scene/ground/ground_loader.gd @@ -18,7 +18,6 @@ class_name GroundLoader extends Node2D var has_entered := false var ground: Ground2D -var display_mask_sec = 0.0 # 场景名字映射到路径 static var GROUND_SCENE_PATH_DICT = { @@ -52,9 +51,11 @@ static var GROUND_SCENE_PATH_DICT = { func _ready() -> void: - mask_layer.layer = GlobalConfig.CANVAS_LAYER_GROUND_MASK mask.visible = true mask.color.a = 0.0 + mask_layer.layer = GlobalConfig.CANVAS_LAYER_GROUND_MASK + # mask layer 独立的 always 处理模式,可以保证转场正常运行 + # toggle_mask = mask_layer.toggle_mask ground = get_node_or_null("Ground") as Ground2D if ground: print("GroundLoader remove old ground:", ground.scene_name) @@ -69,6 +70,35 @@ func _ready() -> void: # transition_to_scene(current_scene, entrance_portal, 0.0) +# # var toggle_mask:Callable +# func toggle_mask(display: bool, mask_color: Color, wait_time: float) -> Tween: +# return mask_layer.toggle_mask(display, mask_color, wait_time) + +var display_start_sec = 0.0 + +# wait_time 包含 ease in + wait + ease out 完整时长 +# ease duration = min(ease_min_duration, wait_time * 0.5) +func toggle_mask( + display: bool, wait_time: float, ease_min_duration := 0.3, mask_color:= Color.BLACK +) -> Tween: + var tween = get_tree().create_tween() + mask_color.a = mask.color.a + mask.color = mask_color + var duration = min(ease_min_duration, wait_time * 0.5) + if display: + display_start_sec = Time.get_ticks_msec() * 0.001 + tween.tween_property(mask, "color:a", 1.0, duration).set_trans(Tween.TRANS_CUBIC) + else: + # 转场至少 0.6s, 除去 0.3s 最后的淡出,需要 0.3s 的等待时间(包含 mask 的淡入) + if wait_time: + var time = Time.get_ticks_msec() * 0.001 + wait_time = max(wait_time + display_start_sec - time - 0.3, 0.0) + if wait_time: + tween.tween_interval(wait_time) + tween.tween_property(mask, "color:a", 0.0, duration).set_trans(Tween.TRANS_CUBIC) + return tween + + func _load_save(): # 强制覆盖 archive 记录 if force_archive_scene or force_archive_portal: @@ -82,27 +112,8 @@ func _load_save(): entrance_portal = ArchiveManager.archive.entrance_portal -func toggle_mask(display: bool, mask_color: Color, wait_time: float) -> Tween: - var tween = get_tree().create_tween() - mask_color.a = mask.color.a - mask.color = mask_color - var duration = min(0.3, wait_time * 0.5) - if display: - tween.tween_property(mask, "color:a", 1.0, duration).set_trans(Tween.TRANS_CUBIC) - display_mask_sec = Time.get_ticks_msec() * 0.001 - else: - # 转场至少 0.6s, 除去 0.3s 最后的淡出,需要 0.3s 的等待时间(包含 mask 的淡入) - if wait_time: - var time = Time.get_ticks_msec() * 0.001 - wait_time = max(wait_time + display_mask_sec - time - 0.3, 0.0) - if wait_time: - tween.tween_interval(wait_time) - tween.tween_property(mask, "color:a", 0.0, duration).set_trans(Tween.TRANS_CUBIC) - return tween - - func transition_to_scene( - scene_name: String, portal: String, wait_time := 1.4, mask_color := Color.BLACK + scene_name: String, portal: String, wait_time := 1.4 ) -> void: if ground: print("GroundLoader transition_to_scene: pause prev ground.") @@ -119,11 +130,11 @@ func transition_to_scene( _update_archive() if wait_time > 0.0: # 转场效果,在 _load_ground_node 之前播放 - var tween = toggle_mask(true, mask_color, wait_time) + var tween = toggle_mask(true, wait_time) tween.tween_callback(_do_transition.call_deferred.bind(scene_name)) _allow_ground_start = false # 等到 toggle_mask 结束,再重置 freeze 状态 - toggle_mask(false, mask_color, wait_time).tween_callback( + toggle_mask(false, wait_time).tween_callback( func(): _allow_ground_start = true ) else: @@ -141,7 +152,7 @@ var _allow_ground_start := false: if val: if ground.process_mode != Node.PROCESS_MODE_INHERIT: # ground_start 信号 - SceneManager.ground_start.emit(ground) + SceneManager.ground_start.emit() ground.process_mode = Node.PROCESS_MODE_INHERIT print( "GroundLoader _allow_ground_start: unfrozen. frozen duration(ms):", @@ -177,7 +188,7 @@ func _do_transition(scene_name: String) -> void: _add_ground() if _allow_ground_start: # 如果不阻塞,直接 ground_start 信号 - SceneManager.ground_start.emit(ground) + SceneManager.ground_start.emit() # 预先加载邻居场景 _post_transition() if GlobalConfig.DEBUG and not Engine.is_editor_hint(): diff --git a/scene/ground/ground_loader.tscn b/scene/ground/ground_loader.tscn index 7b71f20b..5c0510ae 100644 --- a/scene/ground/ground_loader.tscn +++ b/scene/ground/ground_loader.tscn @@ -25,6 +25,7 @@ color = Color(0, 0, 0, 1) [node name="MaskLayer" type="CanvasLayer" parent="."] unique_name_in_owner = true +process_mode = 3 layer = 14 [node name="Mask" type="ColorRect" parent="MaskLayer"] diff --git a/scene/ground/scene/animation_root.gd b/scene/ground/scene/animation_root.gd index d27ac868..b21f7ca5 100644 --- a/scene/ground/scene/animation_root.gd +++ b/scene/ground/scene/animation_root.gd @@ -56,10 +56,6 @@ func _on_ground_ready() -> void: pass -func _on_ground_start() -> void: - pass - - func _on_ready() -> void: if Engine.is_editor_hint(): return diff --git a/scene/ground/scene/c01/s05_院长房间.gd b/scene/ground/scene/c01/s05_院长房间.gd index be3c1b71..aa1063d4 100644 --- a/scene/ground/scene/c01/s05_院长房间.gd +++ b/scene/ground/scene/c01/s05_院长房间.gd @@ -21,7 +21,7 @@ func intro_start(): await animation_finished SceneManager.release_player() $"../DeployLayer/床".enabled = true - await get_tree().create_timer(1.0).timeout + await Util.wait(1) show_interact_help() func play_intro_dialogue(): @@ -37,7 +37,7 @@ func _on_ground_ready() -> void: piano = $"../DeployLayer/钢琴" if data["oneshot_animation_played"]: $"../DeployLayer/床".enabled = true - get_tree().create_timer(1.0).timeout.connect(show_interact_help) + Util.timer(1.0, show_interact_help) # 画框是否已经正位 data.frame_relocated = ambush.played and ambush.one_shot # 禁用鸡毛掸子 @@ -81,15 +81,15 @@ func cant_read(): func _on_note_read(): frame.enabled = false # 稍加延时后显示鸡毛掸子 - get_tree().create_timer(4.5).timeout.connect(func(): ambush.enabled = true) + Util.timer(4.5, func(): ambush.enabled = true) func _on_ambush_triggered(): ambush.enabled = false frame.note_key = "c01_摆正的洋相片" - get_tree().create_timer(5.5).timeout.connect(func(): frame.enabled = true) + Util.timer(5.5, func(): frame.enabled = true) # 鸡毛掸子 4.5s,再等待 3s 后掉落纸片 - get_tree().create_timer(8).timeout.connect(_play_paper_animation) + Util.timer(8, _play_paper_animation) func lock_on_use_stick(): SceneManager.lock_player(4.0) diff --git a/scene/ground/scene/c01/s06_孤儿院长廊围墙.gd b/scene/ground/scene/c01/s06_孤儿院长廊围墙.gd index 5aeb33bc..d12e0e68 100644 --- a/scene/ground/scene/c01/s06_孤儿院长廊围墙.gd +++ b/scene/ground/scene/c01/s06_孤儿院长廊围墙.gd @@ -97,12 +97,12 @@ func pre_game_intro(): camera.tween_zoom(1.5, 3.0) var p = $"../DeployLayer/四小孩画鬼差的对话ambush/FocusPoint" camera.focus_node(p, 3.0) - await get_tree().create_timer(1.5).timeout + await Util.wait(1.5) DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s06_四个小孩画鬼差的对话") await DialogueManager.dialogue_ended # 重置镜头 SceneManager.focus_player_and_reset_zoom(2.5) - await get_tree().create_timer(1.5).timeout + await Util.wait(1.5) await SceneManager.pop_os_with_str("c01_s06_熟悉的墙画") SceneManager.unlock_player() @@ -117,7 +117,6 @@ func game_intro() -> void: var camera = SceneManager.get_camera_marker() as CameraFocusMarker camera.tween_zoom(1.5, 3.0) camera.focus_node(focus_point, 3.0) - # get_tree().create_timer(1.0).timeout.connect(camera.focus_node.bind(focus_point, 3.)) standing_kid1.play("【站立小孩-1】挠痒呼吸") standing_kid2.play("【站立小孩-2】转身") # 只有 1、2 是跟班,3 不参与 @@ -144,7 +143,7 @@ func _game_counting_down(_res = null): var player = SceneManager.get_player() as MainPlayer var left = player.global_position.x player.player_movement_rect.position.x = left - get_tree().create_timer(2.0).timeout.connect(_kids_start_run) + Util.timer(2.0, _kids_start_run) cat.visible = true cat.play("【墙上黑猫】跑步") cat.get_node("猫咪嘶吼音效").play() @@ -175,7 +174,7 @@ func _on_talked(): # 三个小孩都对话完毕 await DialogueManager.dialogue_ended SceneManager.lock_player() - await get_tree().create_timer(1.0).timeout + await Util.wait(1) await SceneManager.pop_os_with_str("c01_s06_四小孩对话结束") SceneManager.unlock_player() @@ -243,6 +242,7 @@ func obstacles_ambush3_triggered(): game_kid.sprite_frames.set_animation_loop("【胖小孩背着残疾小孩】摔倒", false) game_kid.animation_finished.connect(_on_kid_fall_finished, CONNECT_ONE_SHOT) + # 残疾小孩冲刺 func _on_kid_fall_finished(): obstacles.get_node("遮盖").visible = true @@ -258,7 +258,6 @@ func _on_kid_fall_finished(): tween.tween_property(cat_shadow, "modulate:a", 0.0, 4.0) - func _on_mid_ambush_success(): obstacles_success = true # TODO 获得成就 @@ -273,11 +272,10 @@ func game_restart(): game_kid.play("【胖小孩背着残疾小孩】侧面呼吸") SceneManager.freeze_player(0) SceneManager.pop_debug_dialog_info("音效", "玩家被抓住,猫鼠游戏重新开始") - await get_tree().create_timer(1.5).timeout - var ground_loader = SceneManager.get_ground_loader() + await Util.wait(1.5) # 过场黑屏 - ground_loader.toggle_mask(true, Color.BLACK, 0.5) - await get_tree().create_timer(0.5).timeout + SceneManager.toggle_ground_mask(true) + await Util.wait(0.5) # 重置桌椅 obstacles_pushed = false obstacles_success = false @@ -288,13 +286,13 @@ func game_restart(): standing_kid1.global_position.x = kids_start_run_initial_x[0] standing_kid2.global_position.x = kids_start_run_initial_x[1] game_kid.global_position.x = kids_start_run_initial_x[2] - ground_loader.toggle_mask(false, Color.BLACK, 1.0) - await get_tree().create_timer(1.0).timeout + SceneManager.toggle_ground_mask(false) + await Util.wait(1.0) # 开始跑 SceneManager.release_player() $"Sfx猫鼠游戏".set("parameters/switch_to_clip", "Intro") DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s06_猫鼠游戏倒计时") - await get_tree().create_timer(1.5).timeout + await Util.wait(1.5) _kids_start_run() @@ -369,7 +367,7 @@ func transport_player_to_next_scene(win: bool): _show_next_scene(true) SceneManager.pop_debug_dialog_info("音效", "猫鼠游戏胜利,无缝转场") else: - get_tree().create_timer(0.7).timeout.connect(_show_next_scene.bind(false)) + Util.timer(0.7, _show_next_scene.bind(false)) SceneManager.pop_debug_dialog_info("音效", "猫鼠游戏失败,传送下一场景") diff --git a/scene/ground/scene/c01/s07_书店外.gd b/scene/ground/scene/c01/s07_书店外.gd index ad016eec..a07dc05a 100644 --- a/scene/ground/scene/c01/s07_书店外.gd +++ b/scene/ground/scene/c01/s07_书店外.gd @@ -34,7 +34,7 @@ func _on_ground_ready() -> void: var camera = SceneManager.get_camera_marker() camera.limit_left = -400 create_tween().tween_property(camera, "limit_left", 0, 5.0) - get_tree().create_timer(5.0).timeout.connect(_on_fog_disappear) + Util.timer(5.0, _on_fog_disappear) seller = $"../DeployLayer/报童" as AnimatedSprite2D ambush_seller = $"../DeployLayer/报童/Ambush报童" as Ambush2D bookstore_portal = $"../DeployLayer/portal_2" @@ -67,9 +67,9 @@ func _on_luren_animation_finished() -> void: func _knock_door(): # 6 号动作:敲门 SceneManager.lock_player(3.5, 6) - await get_tree().create_timer(2.2).timeout + await Util.wait(2.2) $"敲门音效".play() - await get_tree().create_timer(1.2).timeout + await Util.wait(1.2) var stream = preload("res://asset/audio/sfx/交互/序章/03_书店外黄昏_开门.wav") AudioManager.play_sfx(stream) @@ -80,8 +80,6 @@ func _on_fog_disappear() -> void: var chapter_title = preload("res://asset/art/scene/c01/s02_旧版序章/f_序章标题.png") SceneManager.pop_center_texture(chapter_title) fog.tween_fog(0, Color.TRANSPARENT, Fog2D.FOG_OFFSET_DEFAULT, 15.0, true) - # await get_tree().create_timer(5.0).timeout - func seller_interacted(): bookstore_portal.holding = false @@ -90,7 +88,7 @@ func seller_interacted(): seller.play("报童给报纸") # 提前写入 prop 中,防止存档 bug,稍后播放获得动画 SceneManager.enable_prop_item_silently("prop_信碎片2") - await get_tree().create_timer(1.5).timeout + await Util.wait(1.5) $"报童音效".play() SceneManager.pop_os_with_str("c01_s07_获得报纸") await SceneManager.get_player().os_finished diff --git a/scene/ground/scene/c01/s07_书店外.tscn b/scene/ground/scene/c01/s07_书店外.tscn index 5f3e99d9..9358361b 100644 --- a/scene/ground/scene/c01/s07_书店外.tscn +++ b/scene/ground/scene/c01/s07_书店外.tscn @@ -210,7 +210,7 @@ loop = true metadata/_custom_type_script = "uid://wapo47a1oddf" [node name="Npc吉祥话4" parent="Ground/DeployLayer/陆仁舞刀" instance=ExtResource("6_fw22n")] -position = Vector2(-22, 51) +position = Vector2(-14, 51) enabled = false speaking_sign_height = 47.0 dialogue_title = "c01_s07_陆仁吉祥话" diff --git a/scene/ground/scene/c01/s08_书店.gd b/scene/ground/scene/c01/s08_书店.gd index 02ca2f31..6a7b8fb2 100644 --- a/scene/ground/scene/c01/s08_书店.gd +++ b/scene/ground/scene/c01/s08_书店.gd @@ -91,7 +91,7 @@ func _on_envolope_table_interacted() -> void: func first_enter_door() -> void: SceneManager.freeze_player(0) - await get_tree().create_timer(1.5).timeout + await Util.wait(1.5) DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s08_书店进门老板台词") await DialogueManager.dialogue_ended SceneManager.release_player() @@ -100,7 +100,7 @@ func first_enter_door() -> void: func assign_tasks() -> void: # 放报纸动作 SceneManager.freeze_player(0, 8, false) - await get_tree().create_timer(4.5).timeout + await Util.wait(4.5) $"放报纸音效".play() DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s08_书店老板任务") await DialogueManager.dialogue_ended @@ -126,7 +126,9 @@ func _on_shelf_game_exiting() -> void: create_tween().tween_property(mask, "color:a", 0.0, 1.0).from(1.0) SceneManager.release_player() -var fall_off + +var fall_off + func _on_shelf_game_success() -> void: ArchiveManager.archive.set_global_entry(&"c01_shelf_game_success", true) @@ -146,31 +148,35 @@ func _on_shelf_game_success() -> void: fall_off.play() fall_off.animation_finished.connect(_on_fall_off_finished) # 从 sfx_生死簿演出 中退出时播放不出来,需要在此处播放 - $"摔倒音效".play() + Util.timer(0.5, $"摔倒音效".play) _check_portal() + func _on_fall_off_finished() -> void: fall_off.visible = false # 最后释放玩家 SceneManager.release_player() SceneManager.get_player().hide_sprite = false - await get_tree().create_timer(1.2).timeout + await Util.wait(1.2) SceneManager.pop_os_with_str("c01_s08_书架游戏完成") + func _setup_weird_bookstore() -> void: # 切换背景音效 $"环境音".stop() $"诡异环境音".play() # 光变红 $"../AmbientLayer/PointLight2D".color = Color.html("#ff2719") - + coin.enabled = true ladder.enabled = false manager.visible = false mice.visible = true $"../DirectionalLight2D".energy = 0.7 $"../BGSprite2D".texture = preload("res://asset/art/scene/c01/s08_书店/夜晚版/bg_书店夜晚.png") - $"../ParallaxForeground/FGParallaxLayer/FGSprite2D".texture = preload("res://asset/art/scene/c01/s08_书店/夜晚版/fg_书店夜晚前景.png") + $"../ParallaxForeground/FGParallaxLayer/FGSprite2D".texture = preload( + "res://asset/art/scene/c01/s08_书店/夜晚版/fg_书店夜晚前景.png" + ) ladder.texture = preload("res://asset/art/scene/c01/s08_书店/夜晚版/e_梯子 夜晚.png") @@ -199,10 +205,9 @@ func _on_envelope_game_success() -> void: func pay_off_wage() -> void: SceneManager.enable_prop_item("prop_银元") SceneManager.enable_important_item("prop_银元") - SceneManager.get_inspector().quit_and_hidden.connect( - _on_quit_inspect_coin, CONNECT_ONE_SHOT - ) + SceneManager.get_inspector().quit_and_hidden.connect(_on_quit_inspect_coin, CONNECT_ONE_SHOT) _check_portal() + func _on_quit_inspect_coin() -> void: SceneManager.pop_os_with_str("c01_s08_获得袁大头后") diff --git a/scene/ground/scene/c01/s11_黄包车演出.gd b/scene/ground/scene/c01/s11_黄包车演出.gd index 7bf0365e..67e6fa13 100644 --- a/scene/ground/scene/c01/s11_黄包车演出.gd +++ b/scene/ground/scene/c01/s11_黄包车演出.gd @@ -27,25 +27,26 @@ func _ready() -> void: func _on_ground_ready() -> void: + var camera = SceneManager.get_camera_marker() + camera.limit_top = -1000 + camera.limit_bottom = 158 + await Util.wait(1.0) + # 相机抖动 + camera.shake_camera() # 不显示玩家,锁定玩家移动 SceneManager.freeze_player(0) main_character = $"../DeployLayer/车夫与吕萍" footstep_sfx = $"黄包车Sfx" chapter_sfx = $chapter_sfx - SceneManager.get_camera_marker().limit_bottom = 158 - SceneManager.get_camera_marker().limit_top = -158 - SceneManager.set_camera_boundary(Rect2(0, -1000, 11360, 1158)) - await get_tree().create_timer(1.0).timeout - # 相机抖动 - SceneManager.get_camera_marker().shake_camera(8.0, 2.0) # 注意第一段 dialog 在鬼差探头阶段播放 play("intro") - + # ## test 测试最后运镜 ## # main_character.global_position.x = target_x # await get_tree().create_timer(1.0).timeout # _on_finished() + func dialog1() -> void: DialogueManager.dialogue_ended.connect(_start_running, CONNECT_ONE_SHOT) # 注意第一段 dialog 在鬼差探头阶段播放 @@ -102,6 +103,7 @@ func dialog3() -> void: dialogue_c01, "c01_s11_车夫对话3", [GlobalConfig.DIALOG_IGNORE_INPUT] ) + func dialog4() -> void: DialogueManager.show_dialogue_balloon( dialogue_c01, "c01_s11_车夫对话4", [GlobalConfig.DIALOG_IGNORE_INPUT] @@ -126,17 +128,19 @@ func _on_finished(): tween.tween_property(marker, "global_position:y", target_y, building_duration) tween.tween_callback(_show_chapter) + func final_dialog(): - await get_tree().create_timer(2.0).timeout + await Util.wait(2.0) DialogueManager.show_dialogue_balloon( dialogue_c01, "c01_s11_车夫对话5", [GlobalConfig.DIALOG_IGNORE_INPUT] ) + # 展示章节转场 func _show_chapter(): chapter_sfx.play() SceneManager.pop_center_texture(chapter_title) - get_tree().create_timer(3.5).timeout.connect(_transition) + Util.timer(3.5, _transition) func _transition(): diff --git a/scene/ground/scene/c01/s11_黄包车演出.tscn b/scene/ground/scene/c01/s11_黄包车演出.tscn index eca70692..fcbadf9b 100644 --- a/scene/ground/scene/c01/s11_黄包车演出.tscn +++ b/scene/ground/scene/c01/s11_黄包车演出.tscn @@ -547,7 +547,7 @@ character = "小小蝶" [node name="CameraFocusMarker" parent="Ground" index="6" node_paths=PackedStringArray("focusing_node")] focusing_node = NodePath("../DeployLayer/车夫与吕萍") -force_offset = Vector2(50, -48) +force_offset = Vector2(30, -30) [node name="点缀 黄包车车夫" type="Sprite2D" parent="Ground/ParallaxForeground/BGParallaxLayer" index="0"] position = Vector2(687, 77) diff --git a/scene/ground/scene/c01/s12_书店外_诡异版.gd b/scene/ground/scene/c01/s12_书店外_诡异版.gd index faf88ab8..211932d0 100644 --- a/scene/ground/scene/c01/s12_书店外_诡异版.gd +++ b/scene/ground/scene/c01/s12_书店外_诡异版.gd @@ -56,7 +56,7 @@ func intro() -> void: begger.play("杂戏团夜晚_小孩举碗呼吸") # SceneManager.freeze_player(0) # SceneManager.focus_node(begger, 5.) - get_tree().create_timer(1.).timeout.connect(_intro_dialog) + Util.timer(1., _intro_dialog) func _intro_dialog() -> void: @@ -70,7 +70,7 @@ func _intro_dialog() -> void: func ambush_begger_interacted(): begger.play("杂戏团夜晚_小孩放下碗") SceneManager.lock_player(0) - await get_tree().create_timer(1.).timeout + await Util.wait(1) DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s12_小孩放下碗") await DialogueManager.dialogue_ended SceneManager.unlock_player() @@ -83,7 +83,7 @@ func _on_interactable_bowl_interacted() -> void: DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s12_鬼差来之前对话") await DialogueManager.dialogue_ended _ghost_move() - await get_tree().create_timer(1.0).timeout + await Util.wait(1) # 害怕过渡 -> 害怕 begger.play("举碗小孩害怕过渡") var kids = $"../DeployLayer/其余小孩" @@ -91,7 +91,7 @@ func _on_interactable_bowl_interacted() -> void: var kid = $"../DeployLayer/举腿小孩" kid.play("夜晚举腿小孩杂耍到害怕过渡") $"Sfx鬼差出场".play() - await get_tree().create_timer(1.0).timeout + await Util.wait(1) DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s12_鬼差来了") var tween = create_tween() var camera = SceneManager.get_camera_marker() @@ -143,14 +143,12 @@ func player_been_catched(transition := true) -> void: SceneManager.pop_debug_dialog_info("美术", "玩家被鬼差抓住") # 等待动画播放完成 # TODO 添加转场前效果? - await get_tree().create_timer(1.5).timeout - var ground_loader = SceneManager.get_ground_loader() + await Util.wait(1.5) # 传送到起点,继续跑 - ground_loader.toggle_mask(true, Color.BLACK, 0.5) - await get_tree().create_timer(0.5).timeout + await SceneManager.toggle_ground_mask(true).finished # 恢复花朵 flower.reset_all_blooming() - ground_loader.toggle_mask(false, Color.BLACK, 1.0) + await SceneManager.toggle_ground_mask(false).finished # reset player and ghost position ghost.global_position.x = ghost_start_x + 100.0 SceneManager.get_player().global_position.x = player_start_x diff --git a/scene/ground/scene/c02/s01_公寓门口.gd b/scene/ground/scene/c02/s01_公寓门口.gd index f1d8856a..dc35e5e6 100644 --- a/scene/ground/scene/c02/s01_公寓门口.gd +++ b/scene/ground/scene/c02/s01_公寓门口.gd @@ -14,7 +14,7 @@ func _ready() -> void: return # if not data["received_letter"]: # SceneManager.freeze_player(1.5) - # get_tree().create_timer(1.5).timeout.connect(_give_letter) + # Util.timer(1.5, _give_letter) # elif GlobalConfig.DEBUG: # print("_give_letter 已发放") diff --git a/scene/ground/scene/c02/s03_院子.gd b/scene/ground/scene/c02/s03_院子.gd index 9d482f93..9985ea2d 100644 --- a/scene/ground/scene/c02/s03_院子.gd +++ b/scene/ground/scene/c02/s03_院子.gd @@ -86,7 +86,7 @@ func _on_ground_ready() -> void: if EventManager.get_stage("c02_madman_interacted") == 1: SceneManager.lock_player(0) # 等待转场 - await get_tree().create_timer(1.0).timeout + await Util.wait(1) small_shoe.enabled = true var y2 = small_shoe.position.y var y1 = y2 - 150 @@ -175,16 +175,16 @@ func eavesdrop() -> void: # 12 c00_吕萍_蹲下 13 c00_吕萍_蹲下呼吸 14 c00_吕萍_起立 SceneManager.lock_player(0, 12) # play("eavesdrop") - await get_tree().create_timer(1.0).timeout + await Util.wait(1) SceneManager.player_action(13) # 对话 DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_04_李氏癞子") await DialogueManager.dialogue_ended eavesdrop_window.visible = false - await get_tree().create_timer(1.0).timeout + await Util.wait(1) SceneManager.player_action(14, true) ArchiveManager.set_global_entry(&"c02_eavesdrop_finished", true) - await get_tree().create_timer(1.5).timeout + await Util.wait(1.5) SceneManager.unlock_player() diff --git a/scene/ground/scene/c02/s04_保卫科.gd b/scene/ground/scene/c02/s04_保卫科.gd index aac9a6fc..230be9d5 100644 --- a/scene/ground/scene/c02/s04_保卫科.gd +++ b/scene/ground/scene/c02/s04_保卫科.gd @@ -27,5 +27,5 @@ func _on_closeup_tin_coin_exited(arg = null): if arg == true: ArchiveManager.set_global_entry(&"c02_tin_coin_taken", true) SceneManager.enable_prop_item_silently("prop_锡箔元宝") - await get_tree().create_timer(0.5).timeout + await Util.wait(0.5) SceneManager.enable_prop_item("prop_锡箔元宝") diff --git a/scene/ground/scene/c02/s06_二楼.gd b/scene/ground/scene/c02/s06_二楼.gd index 911839ad..225cff94 100644 --- a/scene/ground/scene/c02/s06_二楼.gd +++ b/scene/ground/scene/c02/s06_二楼.gd @@ -44,7 +44,7 @@ func _on_ground_ready() -> void: mice_hole.enabled = false gas_light_upon_hole.lighted.connect(func(): mice_hole.enabled = true - get_tree().create_timer(1.5).timeout.connect( + Util.timer(1.5, SceneManager.pop_os_with_str.bind("c02_二楼血脚印") ) ) diff --git a/scene/ground/scene/c02/s07_二楼内侧楼道.gd b/scene/ground/scene/c02/s07_二楼内侧楼道.gd index d5fae4ba..7270f635 100644 --- a/scene/ground/scene/c02/s07_二楼内侧楼道.gd +++ b/scene/ground/scene/c02/s07_二楼内侧楼道.gd @@ -43,12 +43,4 @@ func take_off_flyer(immediatelly = false): flyer.visible = false var hand = $"../DeployLayer/小手讨东西" hand.enabled = true - # if hand.icount == 0: - # await get_tree().create_timer(1.0).timeout - # hand.icount += 1 - # SceneManager.lock_player() - # await hand.do_first_interact(immediatelly) - # SceneManager.unlock_player() - - diff --git a/scene/ground/scene/c02/s08_瞎子卧室.gd b/scene/ground/scene/c02/s08_瞎子卧室.gd index 31d954e1..acdd7a29 100644 --- a/scene/ground/scene/c02/s08_瞎子卧室.gd +++ b/scene/ground/scene/c02/s08_瞎子卧室.gd @@ -98,7 +98,7 @@ func eavesdrop_start() -> void: var node = $"../DeployLayer/瞎子小蝉对话" node.visible = true # 偷听动作 - await get_tree().create_timer(2.0).timeout + await Util.wait(2.0) # 动作后先出声音 DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_05_瞎子与小蝉") var tween = create_tween() diff --git a/scene/ground/scene/c02/s09_裂缝.gd b/scene/ground/scene/c02/s09_裂缝.gd index 624e6812..1f694250 100644 --- a/scene/ground/scene/c02/s09_裂缝.gd +++ b/scene/ground/scene/c02/s09_裂缝.gd @@ -36,7 +36,7 @@ func _on_ground_ready() -> void: var half_length = rope_length / 2.0 rope_range.x = rope.global_position.x - half_length rope_range.y = rope.global_position.x + half_length - await get_tree().create_timer(0.1).timeout + await Util.wait(0.1) var player = %MainPlayer # 玩家位置更新时,更新麻绳隆起 player.position_updated.connect(_on_player_position_updated) diff --git a/scene/ground/scene/c02/s13_盒子猫二楼.gd b/scene/ground/scene/c02/s13_盒子猫二楼.gd index 71d092d5..db1811bb 100644 --- a/scene/ground/scene/c02/s13_盒子猫二楼.gd +++ b/scene/ground/scene/c02/s13_盒子猫二楼.gd @@ -24,12 +24,12 @@ func knock_light_door(): for _i in range(100): AudioManager.play_sfx(knock_stream) SceneManager.lock_player(0, 6) - await get_tree().create_timer(0.5).timeout + await Util.wait(0.5) # 被抓时打断 if not player.visible or player.hide_sprite: _outtro_show() break - await get_tree().create_timer(0.5).timeout + await Util.wait(0.5) # 被抓时打断 if not player.visible or player.hide_sprite: _outtro_show() @@ -42,10 +42,10 @@ func _outtro_show(): # 禁止猪头怪动画播放结束后重开游戏 $"../DeployLayer/追猫猪头怪_传送".allow_restart_game = false $"Sfx结尾演出".play() - await get_tree().create_timer(8.0).timeout + await Util.wait(8.0) $"../盒子猫CanvasLayer".show_footprint() $"Sfx脚印".play() # 盒子猫逃脱成功/被抓走,游戏结束,解锁瞎子卧室门 - await get_tree().create_timer(10.0).timeout + await Util.wait(10.0) ArchiveManager.set_global_entry(&"c02_the_blind_room_unlocked", true) SceneManager.get_ground_loader().transition_to_scene("c02_s08", "1") diff --git a/scene/ground/script/c01/s10_鬼差探头.gd b/scene/ground/script/c01/s10_鬼差探头.gd index 6d56a25e..d5e06cef 100644 --- a/scene/ground/script/c01/s10_鬼差探头.gd +++ b/scene/ground/script/c01/s10_鬼差探头.gd @@ -22,7 +22,7 @@ func play_bgm(): func pre_finished(): # 在 animation player 结束前 1 秒调用 - CanvasUtil.shake_layer(self, 2.0, 4.0, 15.0) + Util.shake_layer(self, 2.0, 4.0, 15.0) # debug 模式允许跳过 if GlobalConfig.DEBUG: DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s11_车夫对话1") diff --git a/scene/ground/script/c01/s12_飘动的寻人启事.gd b/scene/ground/script/c01/s12_飘动的寻人启事.gd index 472ba5f8..8f4f452f 100644 --- a/scene/ground/script/c01/s12_飘动的寻人启事.gd +++ b/scene/ground/script/c01/s12_飘动的寻人启事.gd @@ -71,8 +71,8 @@ func _on_interacted() -> void: $SfxOpen.play() var inspect_texture = preload("res://asset/art/scene/c01/s07_书店外/纸片_正面.png") var res = preload("res://asset/dialogue/inspect_content.dialogue") - var lines = await DialogueUtil.get_lines(res, "c01_飘落的寻人启事") - var note = DialogueUtil.concact_content_from_lines(lines) + var lines = await Util.get_lines(res, "c01_飘落的寻人启事") + var note = Util.concact_content_from_lines(lines) SceneManager.get_inspector().pop_standard_inspection(inspect_texture, null, note, false) diff --git a/scene/ground/script/c02/s00_煤油灯.gd b/scene/ground/script/c02/s00_煤油灯.gd index ca7ae739..57bcd800 100644 --- a/scene/ground/script/c02/s00_煤油灯.gd +++ b/scene/ground/script/c02/s00_煤油灯.gd @@ -135,14 +135,14 @@ func _gaslight_interacted(): else: # 高位 5 号 SceneManager.freeze_player(2.0, 5) - await get_tree().create_timer(0.8).timeout + await Util.wait(0.8) sfx_success.play() - await get_tree().create_timer(1.0).timeout + await Util.wait(1) _switch_gaslight(true, true) lighted.emit() if not ArchiveManager.get_global_value(&"c02_gaslight_first_lighted"): ArchiveManager.set_global_entry(&"c02_gaslight_first_lighted", true) var scene = ArchiveManager.archive.current_scene if scene == "c02_s02" or scene == "c02_s03": - await get_tree().create_timer(1.0).timeout + await Util.wait(1) SceneManager.pop_os_with_str("c02_使用煤油灯") diff --git a/scene/ground/script/c02/刮海报_过道.tscn b/scene/ground/script/c02/刮海报_过道.tscn index 0e485781..12c8ca43 100644 --- a/scene/ground/script/c02/刮海报_过道.tscn +++ b/scene/ground/script/c02/刮海报_过道.tscn @@ -52,6 +52,7 @@ texture = SubResource("ImageTexture_cffxi") stretch_mode = 5 [node name="Sfx撕海报" type="AudioStreamPlayer" parent="."] +process_mode = 1 stream = ExtResource("5_xjg44") bus = &"game_sfx" script = ExtResource("6_cffxi") diff --git a/scene/ground/script/c02/小手讨东西.gd b/scene/ground/script/c02/小手讨东西.gd index 76708492..198ffc80 100644 --- a/scene/ground/script/c02/小手讨东西.gd +++ b/scene/ground/script/c02/小手讨东西.gd @@ -66,7 +66,7 @@ var icount: int: # 9 小手交互,吓摔倒 SceneManager.lock_player(0, 9, true) SceneManager.pop_os_with_str("c02_小手出现摔倒") - get_tree().create_timer(1.5).timeout.connect($"Sfx摔倒".play) + Util.timer(1.5, $"Sfx摔倒".play) await SceneManager.get_player().animation_finished SceneManager.unlock_player() elif stage == 1: @@ -194,7 +194,7 @@ func _on_interacted() -> void: SceneManager.pop_debug_dialog_info( "美术", "叠成纸杯: 小手_锡箔_hide + 小手_纸杯_show + 小手_纸杯_idle" ) - await get_tree().create_timer(2).timeout + await Util.wait(2.0) # 稍等片刻再给小鞋子 SceneManager.enable_prop_item("prop_小鞋子1") await SceneManager.get_inspector().quit_and_hidden @@ -210,7 +210,7 @@ func _on_interacted() -> void: # 先设置允许 pickable,然后再设置可见性,等待动画播完再显示 tin_coin_drop = true coin.visible = false - await get_tree().create_timer(1.5).timeout + await Util.wait(1.5) coin.visible = true if not ArchiveManager.get_global_value(&"c02_little_hand_dropped_tin"): SceneManager.pop_os_with_str("c02_小手要东西") @@ -224,7 +224,7 @@ func _on_interacted() -> void: SceneManager.disable_prop_item("prop_老虎钳") animated_sprite.play("小手_老虎钳_hide") SceneManager.pop_debug_dialog_info("美术", "小手_老虎钳_hide + 小手_弹珠_show + 小手_弹珠_idle") - await get_tree().create_timer(1.5).timeout + await Util.wait(1.5) holding_prop = "prop_弹珠" EventManager.set_stage_if_greater("handnote_stage", 4) elif id == 0 and key == "prop_弹珠" and not pliers_to_ball: @@ -233,7 +233,7 @@ func _on_interacted() -> void: SceneManager.disable_prop_item("prop_弹珠") animated_sprite.play("小手_弹珠_hide") SceneManager.pop_debug_dialog_info("美术", "小手_弹珠_hide + 小手_老虎钳_show + 小手_老虎钳_idle") - await get_tree().create_timer(1.5).timeout + await Util.wait(1.5) holding_prop = "prop_老虎钳" if interacted_success: diff --git a/scene/ground/script/c02/敲门游戏.gd b/scene/ground/script/c02/敲门游戏.gd index eede0b98..e8a7edcf 100644 --- a/scene/ground/script/c02/敲门游戏.gd +++ b/scene/ground/script/c02/敲门游戏.gd @@ -59,7 +59,7 @@ func _on_button_pressed() -> void: button.disabled = true # 肉落下的声音,然后自动退出界面 SceneManager.pop_debug_dialog_info("音效", "肉落下的声音(敲门游戏成功)") - await get_tree().create_timer(2.0).timeout + await Util.wait(2) exit.emit(true) else: SceneManager.pop_debug_dialog_info("音效", "敲门:" + str(current_id)) diff --git a/scene/ground/script/c02/水盆特写.gd b/scene/ground/script/c02/水盆特写.gd index ac6f3111..d566bce0 100644 --- a/scene/ground/script/c02/水盆特写.gd +++ b/scene/ground/script/c02/水盆特写.gd @@ -25,7 +25,7 @@ func _ready() -> void: tween.tween_property(child_sprite, "modulate:a", 0.0, 0.5) else: child_sprite.modulate.a = 0 - await get_tree().create_timer(1.5).timeout + await Util.wait(1.5) _try_ripple() func _try_ripple(): diff --git a/scene/ground/script/c02/裂缝议论文字.gd b/scene/ground/script/c02/裂缝议论文字.gd index e6b4319d..d6730d7b 100644 --- a/scene/ground/script/c02/裂缝议论文字.gd +++ b/scene/ground/script/c02/裂缝议论文字.gd @@ -28,7 +28,7 @@ func _on_area_entered(_body): if not _body is MainPlayer: return label.visible = true - await get_tree().create_timer(randf()).timeout + await Util.wait(randf()) var tween = create_tween() tween.tween_property(label, "position:y", 3.0, 0.6).set_trans(Tween.TRANS_BOUNCE) tween.tween_property(label, "position:y", 0.0, 0.6).set_trans(Tween.TRANS_BOUNCE) diff --git a/scene/ground/script/c02/谢幕演出.gd b/scene/ground/script/c02/谢幕演出.gd index c451aaea..2798fbc1 100644 --- a/scene/ground/script/c02/谢幕演出.gd +++ b/scene/ground/script/c02/谢幕演出.gd @@ -72,7 +72,7 @@ func start(): #### part3: 小蝉捂眼,瞎子、胖子声音 # 小蝉身体回正、捂眼 DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_s11_谢幕交谈2") - get_tree().create_timer(5.0).timeout.connect(_hand_cover_eyes) + Util.timer(5.0, _hand_cover_eyes) await DialogueManager.dialogue_ended SceneManager.pop_debug_dialog_info("音效", "小蝉笑声/耳鸣") await create_tween().tween_interval(3.0).finished @@ -100,9 +100,9 @@ func _on_got_dialogue(line: DialogueLine): if speak: if first_speak: first_speak = false - await get_tree().create_timer(2.0).timeout + await Util.wait(2) else: - await get_tree().create_timer(1.0).timeout + await Util.wait(1) toggle_speak(speak) diff --git a/scene/ground/script/c02/追猫猪头怪.gd b/scene/ground/script/c02/追猫猪头怪.gd index 603ebd7f..2e7b01dd 100644 --- a/scene/ground/script/c02/追猫猪头怪.gd +++ b/scene/ground/script/c02/追猫猪头怪.gd @@ -92,7 +92,7 @@ func _on_ground_ready(): # 禁用传送过来的 portal 3s _disable_portal_a_few_seconds(portal_node) # 3 秒后传送 - get_tree().create_timer(1.0).timeout.connect(_do_transfer) + Util.timer(1.0, _do_transfer) if GlobalConfig.DEBUG: print("猪头怪 Transfer to: " + portal) else: @@ -108,7 +108,7 @@ func _on_footstep_timer_timeout() -> void: footstep_count += 1 if footstep_count % 2 == 0: # shake camera - camera.shake_camera(4.0, 5.0) + camera.shake_camera() if abs(signed_x_diff) > 250: if footstep_count % 3 == 0: sfx_footstep.play() @@ -177,7 +177,7 @@ func do_catch(front: bool): # 其次 catch_nearby 播放 猪头怪抓盒子猫后段 sprite2d.play("猪头怪抓盒子猫后段") # 被抓音效 - get_tree().create_timer(0.5).timeout.connect($"Sfx猫被抓".play) + Util.timer(0.5, $"Sfx猫被抓".play) # 呼吸声渐隐 $"Sfx喘气".easing_kill() SceneManager.pop_debug_dialog_info("音效", "抓取过程。 从捡小猫开始=" + str(front)) diff --git a/scene/little_game/书架/书架.gd b/scene/little_game/书架/书架.gd index 2a44064d..c1119540 100644 --- a/scene/little_game/书架/书架.gd +++ b/scene/little_game/书架/书架.gd @@ -249,7 +249,7 @@ func _success() -> void: func _on_target_book_pressed(): $"Shelf/生死簿".play("书架扶正") - await get_tree().create_timer(1.5).timeout + await Util.wait(1.5) $"生死簿".show() # 完成后释放信号 $"生死簿".finished.connect(_on_success_finished) diff --git a/scene/little_game/八音盒/八音盒.gd b/scene/little_game/八音盒/八音盒.gd index e5762e67..a62cf2a2 100644 --- a/scene/little_game/八音盒/八音盒.gd +++ b/scene/little_game/八音盒/八音盒.gd @@ -119,7 +119,7 @@ func _on_drawer_picked(_node): box_animation.play() drawer_btn.visible = false await box_animation.animation_finished - await get_tree().create_timer(1.0).timeout + await Util.wait(1) box_animation.visible = false box_broken.visible = false box_drawer.visible = true @@ -200,7 +200,7 @@ func _on_wheel_rotated(radiant: float) -> void: sfx_music.play() else: sfx_music.stream_paused = false - get_tree().create_timer(playing_step_sec).timeout.connect(_on_playing_step_finished) + Util.timer(playing_step_sec, _on_playing_step_finished) func _on_playing_step_finished(): @@ -211,7 +211,7 @@ func _on_playing_step_finished(): return if continue_playing: continue_playing = false - get_tree().create_timer(playing_step_sec).timeout.connect(_on_playing_step_finished) + Util.timer(playing_step_sec, _on_playing_step_finished) else: playing = false sfx_music.stream_paused = true @@ -226,7 +226,7 @@ func _checkout_auto_play(): # var audio_len = audio_auto.get_length() # 音效 9.5 秒时关闭盒子 var audio_len = 9.5 - get_tree().create_timer(audio_len).timeout.connect(_on_auto_play_finished) + Util.timer(audio_len, _on_auto_play_finished) func _on_auto_play_finished(): diff --git a/scene/little_game/八音盒/八音盒_old.gd b/scene/little_game/八音盒/八音盒_old.gd index f62136a8..859d8243 100644 --- a/scene/little_game/八音盒/八音盒_old.gd +++ b/scene/little_game/八音盒/八音盒_old.gd @@ -66,7 +66,7 @@ func _ready() -> void: # # test close shaking effect # ArchiveManager.archive.bayinhe_mode = "playing" # _chechout_mode(true) - # get_tree().create_timer(1.0).timeout.connect(_on_auto_play_finished) + # Util.timer(1.0, _on_auto_play_finished) func _on_visibility_changed() -> void: @@ -224,7 +224,7 @@ func _on_wheel_rotated(radiant: float) -> void: audio_player.play() else: audio_player.stream_paused = false - get_tree().create_timer(playing_step_sec).timeout.connect(_on_playing_step_finished) + Util.timer(playing_step_sec, _on_playing_step_finished) func _on_playing_step_finished(): @@ -235,7 +235,7 @@ func _on_playing_step_finished(): return if continue_playing: continue_playing = false - get_tree().create_timer(playing_step_sec).timeout.connect(_on_playing_step_finished) + Util.timer(playing_step_sec, _on_playing_step_finished) else: playing = false audio_player.stream_paused = true @@ -250,7 +250,7 @@ func _checkout_auto_play(): # var audio_len = audio_auto.get_length() # 音效 9.5 秒时关闭盒子 var audio_len = 9.5 - get_tree().create_timer(audio_len).timeout.connect(_on_auto_play_finished) + Util.timer(audio_len, _on_auto_play_finished) func _on_auto_play_finished(): diff --git a/scene/little_game/弹珠游戏/弹珠游戏.gd b/scene/little_game/弹珠游戏/弹珠游戏.gd index 39ca182b..c3cee8c2 100644 --- a/scene/little_game/弹珠游戏/弹珠游戏.gd +++ b/scene/little_game/弹珠游戏/弹珠游戏.gd @@ -245,13 +245,13 @@ func game_win() -> void: # 0:默认 1:寻找弹珠(老虎钳可以换弹珠) 2:给出弹珠 3:游戏结束 ArchiveManager.set_global_entry(&"c02_ball_game_stage", 3) %"Sfx结尾小孩跑".play() - CanvasUtil.shake_layer(self, 2.0) + Util.shake_layer(self, 2.0) # 弹珠雨 $BallsFalling.emitting = true pivot.visible = false DialogueManager.show_dialogue_balloon_scene(self, dialogue_c02, "c02_弹珠游戏4") await ball_dialogue_ended - await get_tree().create_timer(3.0).timeout + await Util.wait(3.0) exit.emit(true) @@ -303,15 +303,4 @@ func apply_dialogue_line() -> void: tween.tween_property(label, "modulate:a", 1.0, 0.5) tween.tween_interval(2.0) tween.tween_property(label, "modulate:a", 0.0, 0.5) - # # 因为版权问题,有些 mp3 文件打不开,所以使用 ogg 格式 - # var audio_path = "res://asset/audio/peiyin/ogg/%s.ogg" % translation_key - # if FileAccess.file_exists(audio_path): - # var stream = load(audio_path) - # audio_player.stream = stream - # audio_player.play() - # await audio_player.finished - # await get_tree().create_timer(1.0).timeout - # else: - # push_warning("No audio file found for " + translation_key) - # await get_tree().create_timer(3.0).timeout ball_dialogue_ended.emit() diff --git a/scene/little_game/拼凑信件.gd b/scene/little_game/拼凑信件.gd index e2358a9a..ba23f867 100644 --- a/scene/little_game/拼凑信件.gd +++ b/scene/little_game/拼凑信件.gd @@ -32,7 +32,7 @@ func _ready() -> void: func _enter_tree() -> void: SceneManager.pop_center_notification(tr("input_拼凑信件")) - await get_tree().create_timer(4.0).timeout + await Util.wait(4.0) SceneManager.pop_center_notification(tr("ui_press_q_to_exit")) func _setup() -> void: @@ -144,7 +144,7 @@ func _post_success(): SceneManager.enable_important_item("prop_院长的信") whole.visible = false # 1s 后退出 - await get_tree().create_timer(1.0).timeout + await Util.wait(1.0) if get_parent() != null: success.emit() get_parent().remove_child(self) diff --git a/scene/settings/settings.gd b/scene/settings/settings.gd index c4b9f9fa..31c4b8f2 100644 --- a/scene/settings/settings.gd +++ b/scene/settings/settings.gd @@ -76,9 +76,9 @@ func _ready(): # navigation return_btn.pressed.connect(_on_return_btn_pressed) return_btn.grab_focus() + SceneManager.toggle_pause_counter(true) # open $"Sfx打开".play() - SceneManager.toggle_pause_counter(true) func _on_master_bus_slider_value_changed(value: float) -> void: diff --git a/scene/ux/memory/clips/clip2.gd b/scene/ux/memory/clips/clip2.gd index bcdf2649..58571784 100644 --- a/scene/ux/memory/clips/clip2.gd +++ b/scene/ux/memory/clips/clip2.gd @@ -11,7 +11,7 @@ func run_clip(card_mode: bool): tween.tween_interval(5.0) tween.tween_property($"井", "modulate:a", 1.0, 5.0) if not card_mode: - await get_tree().create_timer(3.0).timeout + await Util.wait(3.0) # 增加配音 dialog_node = DialogueManager.show_dialogue_balloon(dialogue_res, "c02_s11_井边疯子对话") dialog_node.process_mode = Node.PROCESS_MODE_ALWAYS diff --git a/scene/ux/panel/ux_panel.gd b/scene/ux/panel/ux_panel.gd index 9c40a82d..0ad34a9a 100644 --- a/scene/ux/panel/ux_panel.gd +++ b/scene/ux/panel/ux_panel.gd @@ -12,10 +12,10 @@ func _ready() -> void: $SfxOpen.play() layer = GlobalConfig.CANVAS_LAYER_UX_PANEL SceneManager.toggle_pause_counter(true) - continue_btn.pressed.connect(quit) + continue_btn.pressed.connect(_continue) note_btn.pressed.connect(SceneManager.show_note) settings_btn.pressed.connect(SceneManager.show_settings) - main_menu_btn.pressed.connect(SceneManager.checkout_index_page) + main_menu_btn.pressed.connect(_index_menu) quit_btn.pressed.connect(_quit_game) func _quit_game() -> void: @@ -23,16 +23,22 @@ func _quit_game() -> void: ArchiveManager.notification(NOTIFICATION_WM_CLOSE_REQUEST) # 退出游戏过程隐藏界面 # 隐藏 panel - quit() + _continue() -func quit(): - $SfxOpen.global_play() +func _continue(): + $SfxClose.global_play() SceneManager.toggle_pause_counter(false) queue_free() +func _index_menu(): + SceneManager.checkout_index_page() + # 允许 ground loader 运行 transition + _continue() + + func _unhandled_input(event: InputEvent) -> void: # panel 界面接受所有输入事件 get_viewport().set_input_as_handled() if event.is_action_pressed("cancel") or event.is_action_pressed("escape"): - quit() + _continue() diff --git a/scene/ux/panel/ux_panel.tscn b/scene/ux/panel/ux_panel.tscn index f87e9c13..b02ad0f9 100644 --- a/scene/ux/panel/ux_panel.tscn +++ b/scene/ux/panel/ux_panel.tscn @@ -99,7 +99,7 @@ theme_override_fonts/font = ExtResource("4_mns6r") theme_override_font_sizes/font_size = 20 theme_override_styles/hover = SubResource("StyleBoxLine_v1oku") theme_override_styles/pressed = SubResource("StyleBoxLine_a3uyd") -text = "ux_panel_笔记" +text = "ux_panel_线索笔记" flat = true [node name="MarginContainer3" type="MarginContainer" parent="Bag"] diff --git a/scene/ux/tabs.gd b/scene/ux/tabs.gd index 3a9f8fd7..fa90d4c7 100644 --- a/scene/ux/tabs.gd +++ b/scene/ux/tabs.gd @@ -81,10 +81,23 @@ func _on_tab_memory_pressed(): root.quit() -func _exit_tree() -> void: - sfx_close.global_play() +var play_close_on_exit_tree = true -# func _unhandled_input(event: InputEvent) -> void: -# if event.is_action_pressed("memory") and current_type != "回忆": -# get_viewport().set_input_as_handled() -# SceneManager.show_memory() +func _exit_tree() -> void: + if play_close_on_exit_tree: + sfx_close.global_play() + + +func _unhandled_input(event: InputEvent) -> void: + if event.is_action_pressed("memory") and current_type != "回忆": + get_viewport().set_input_as_handled() + play_close_on_exit_tree = false + _on_tab_memory_pressed() + elif event.is_action_pressed("note") and current_type != "线索": + get_viewport().set_input_as_handled() + play_close_on_exit_tree = false + _on_tab_note_pressed() + elif event.is_action_pressed("bag") and current_type != "物品": + get_viewport().set_input_as_handled() + play_close_on_exit_tree = false + _on_tab_bag_pressed() diff --git a/util/canvas_util.gd b/util/canvas_util.gd deleted file mode 100644 index a2cd7ab1..00000000 --- a/util/canvas_util.gd +++ /dev/null @@ -1,14 +0,0 @@ -class_name CanvasUtil extends Object - - -static func shake_layer(layer: CanvasLayer, duration: float, delta := 2.0, fps := 20.0) -> void: - var tween = layer.create_tween() - # shake layer's offset - var origin_offset = layer.offset - var count = int(duration * fps) - var delta_t = 1.0 / fps - for i in range(count): - var offset = Vector2(randf_range(-delta, delta), randf_range(-delta, delta)) - tween.tween_property(layer, "offset", origin_offset + offset, delta_t) - # tween back to origin - tween.tween_property(layer, "offset", origin_offset, delta_t) \ No newline at end of file diff --git a/util/canvas_util.gd.uid b/util/canvas_util.gd.uid deleted file mode 100644 index 67b46eeb..00000000 --- a/util/canvas_util.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://l4egv2jc0vjb diff --git a/util/debug_label.gd b/util/debug_label.gd deleted file mode 100644 index c2b68da9..00000000 --- a/util/debug_label.gd +++ /dev/null @@ -1,22 +0,0 @@ -class_name DebugLabel extends Label - -@export var enabled := false: - set(value): - enabled = value - if enabled: - _display() - else: - _hide() - - -func _ready() -> void: - if not GlobalConfig.DEBUG: - return - - -func _hide(): - visible = false - - -func _display(): - pass diff --git a/util/debug_label.gd.uid b/util/debug_label.gd.uid deleted file mode 100644 index b2679654..00000000 --- a/util/debug_label.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cgi8uhk7ii5o6 diff --git a/util/dialogue_util.gd b/util/dialogue_util.gd deleted file mode 100644 index bff3a6da..00000000 --- a/util/dialogue_util.gd +++ /dev/null @@ -1,30 +0,0 @@ -class_name DialogueUtil extends RefCounted - -static func concact_content_from_lines(lines:=[]): - if lines.is_empty(): - return "" - var content = "" - for i in range(len(lines) - 1): - var line = lines[i] as DialogueLine - content += TranslationServer.tr(line.translation_key) + "\n" - # last line without "\n" - content += TranslationServer.tr(lines[-1].translation_key) - return content - -static func get_lines(res: DialogueResource, title: String) -> Array: - var lines = [] - var current_line = await res.get_next_dialogue_line(title) - while current_line: - lines.append(current_line) - if current_line.next_id != "end": - current_line = await res.get_next_dialogue_line(current_line.next_id) - else: - break - return lines - -# pop os lines -static func generate_lines(content: String) -> Array: - var text = "~ title\n" + content + "\n=> END" - var res = DialogueManager.create_resource_from_text(text) - return await get_lines(res, "title") - diff --git a/util/dialogue_util.gd.uid b/util/dialogue_util.gd.uid deleted file mode 100644 index 5266ee96..00000000 --- a/util/dialogue_util.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://ckwvshyrj4vns diff --git a/util/util.gd b/util/util.gd new file mode 100644 index 00000000..658d03be --- /dev/null +++ b/util/util.gd @@ -0,0 +1,58 @@ +extends Node + + +#### Timer +func wait(duration: float) -> void: + await get_tree().create_timer(duration).timeout + + +func timer(duration: float, callable: Callable) -> SceneTreeTimer: + var t = get_tree().create_timer(duration, false) + t.timeout.connect(callable) + return t + + +#### Canvas +func shake_layer(layer: CanvasLayer, duration: float, delta := 2.0, fps := 20.0) -> void: + var tween = layer.create_tween() + # shake layer's offset + var origin_offset = layer.offset + var count = int(duration * fps) + var delta_t = 1.0 / fps + for i in range(count): + var offset = Vector2(randf_range(-delta, delta), randf_range(-delta, delta)) + tween.tween_property(layer, "offset", origin_offset + offset, delta_t) + # tween back to origin + tween.tween_property(layer, "offset", origin_offset, delta_t) + + +###### Dialogue +func concact_content_from_lines(lines := []): + if lines.is_empty(): + return "" + var content = "" + for i in range(len(lines) - 1): + var line = lines[i] as DialogueLine + content += TranslationServer.tr(line.translation_key) + "\n" + # last line without "\n" + content += TranslationServer.tr(lines[-1].translation_key) + return content + + +func get_lines(res: DialogueResource, title: String) -> Array: + var lines = [] + var current_line = await res.get_next_dialogue_line(title) + while current_line: + lines.append(current_line) + if current_line.next_id != "end": + current_line = await res.get_next_dialogue_line(current_line.next_id) + else: + break + return lines + + +# pop os lines +func generate_lines(content: String) -> Array: + var text = "~ title\n" + content + "\n=> END" + var res = DialogueManager.create_resource_from_text(text) + return await get_lines(res, "title") diff --git a/util/util.gd.uid b/util/util.gd.uid new file mode 100644 index 00000000..ee8a1871 --- /dev/null +++ b/util/util.gd.uid @@ -0,0 +1 @@ +uid://cqkbvu00n5ao8