From f0a0bc15223c645a8f1b5dd07fd034424c319a4a Mon Sep 17 00:00:00 2001 From: claude Date: Sun, 25 Oct 2026 17:13:32 +0100 Subject: [PATCH] =?UTF-8?q?M13:=20titelsk=C3=A4rm,=20spr=C3=A5kval,=20tuto?= =?UTF-8?q?rial,=20tips=20och=20pausmeny?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Björns feedback efter v0.1.0. Titelskärm med premissen i text och menyn Fortsätt/Starta, Tutorial, Inställningar, Avsluta (Enter två gånger); språkval första gången spelet startar. Tutorial i fem sidor med riktiga sprites och en exempelskylt där resmålet markeras och resten tonas ned, plus nyckeln 番線/方面/改札 och biljettipset. Kontextuella tips i spelet tills första banan är klarad, och resmålets tecken markeras på skyltar och avgångstavlor under tiden. Esc i en bana öppnar en pausmeny (Fortsätt, Lämna banan, Inställningar, Avsluta spelet) i stället för att lämna banan; Esc på bankartan går till titeln. Kortare lägestexter så att bankartans rader ryms på svenska. Test för markeringen, docs, wiki och skärmdumpar. Co-Authored-By: Claude Fable 5.1 --- CHANGELOG.md | 6 + README.md | 13 +- doc/img/items.png | Bin 14517 -> 17412 bytes doc/img/lang.png | Bin 0 -> 12455 bytes doc/img/map.png | Bin 16782 -> 17284 bytes doc/img/pause.png | Bin 0 -> 28131 bytes doc/img/skills.png | Bin 16062 -> 17333 bytes doc/img/tips-sign.png | Bin 0 -> 27717 bytes doc/img/tips.png | Bin 0 -> 20160 bytes doc/img/title.png | Bin 0 -> 16706 bytes doc/img/tutorial.png | Bin 0 -> 18525 bytes doc/img/words.png | Bin 16010 -> 17175 bytes doc/mal-och-tester.md | 6 +- doc/roadmap.md | 38 ++++++ doc/spelbeskrivning.md | 14 +++ internal/game/game.go | 8 +- internal/game/scene_level.go | 37 ++++-- internal/game/scene_map.go | 3 +- internal/game/scene_title.go | 211 ++++++++++++++++++++++++++++++++ internal/game/scene_tutorial.go | 92 ++++++++++++++ internal/game/text.go | 23 ++++ internal/game/text_test.go | 16 +++ internal/game/tips.go | 85 +++++++++++++ resources/text/en.json | 47 ++++++- resources/text/sv.json | 47 ++++++- tools/shots/main.go | 8 +- 26 files changed, 622 insertions(+), 32 deletions(-) create mode 100644 doc/img/lang.png create mode 100644 doc/img/pause.png create mode 100644 doc/img/tips-sign.png create mode 100644 doc/img/tips.png create mode 100644 doc/img/title.png create mode 100644 doc/img/tutorial.png create mode 100644 internal/game/scene_title.go create mode 100644 internal/game/scene_tutorial.go create mode 100644 internal/game/text_test.go create mode 100644 internal/game/tips.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ed4d6a..08a7d9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Ändringslogg +## Oreleaset + +- Titelskärm med premissen, språkval första gången, tutorial i fem sidor + (skyltläsning med markering av resmålet), kontextuella tips i första + banan, pausmeny på Esc, Avsluta i menyerna, kortare texter på bankartan. + ## v0.1.0 – 2026-10-25 Första versionerade releasen: hela storyn från Narita till Narita. diff --git a/README.md b/README.md index 3cc141b..dbdfa92 100644 --- a/README.md +++ b/README.md @@ -24,9 +24,16 @@ bankartan: lottade resmål på storyns stationer tills man förlorar, egen poänglista) och **New Game+** (G två gånger: om från början med skills kvar och ett större sällskap). Version 0.1.0 har ljud (stationsmelodier, effekter, menymusik), inställningar (S: volymer, språk sv/en, skala, fullskärm) och -fönsterikon. Kvar i roadmapen är M10b (bussar). Se +fönsterikon. Efter Björns speltest kom titelskärm med premissen, språkval +första gången, en tutorial som lär ut hur man läser skyltarna (resmålet +markerat, resten nedtonat) med tips i första banan, pausmeny på Esc och +ett sätt att avsluta spelet. Kvar i roadmapen är M10b (bussar). Se [doc/roadmap.md](doc/roadmap.md) och [CHANGELOG.md](CHANGELOG.md). +![Titelskärmen](doc/img/title.png) + +![Tutorial: så läser du en skylt](doc/img/tutorial.png) + ![Bankartan](doc/img/map.png) ![Skylt på japanska med delvis översättning](doc/img/sign.png) @@ -207,7 +214,9 @@ döljer/visar minikartan, P på kartan lägger kortet i telefonen, N på kartan växlar navigeringsläge (lista/skyltar), O på kartan startar oändligt läge och G (två gånger) New Game+ när storyn är klar, S på kartan öppnar inställningarna (volymer, språk, skala, fullskärm), F11 växlar fullskärm -överallt, Esc går tillbaka, R spelar om. Gamepad +överallt. Esc pausar banan (Fortsätt, Lämna banan, Inställningar, Avsluta +spelet), på bankartan går Esc till titelskärmen, och Avsluta kräver Enter +två gånger. R spelar om från resultatskärmen. Gamepad med standardlayout fungerar: d-pad/vänster spak, A = välj, B = tillbaka, Y = hjälp, X = ordlista, Back/Select = karta. diff --git a/doc/img/items.png b/doc/img/items.png index a219c8e8f838a4d996bd067b30e1fee2f978ac9b..b59784b78a20b7cfb6ae012d4d4f86fc16f7a433 100644 GIT binary patch literal 17412 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 literal 14517 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 literal 0 HcmV?d00001 diff --git a/doc/img/map.png b/doc/img/map.png index 3a6e5fb0335e2df47d1cf757083e426464466ea5..2beb89babc825ca50bdda29d45d757f52194c457 100644 GIT binary patch literal 17284 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 literal 16782 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 DA}lzH diff --git a/doc/img/pause.png b/doc/img/pause.png new file mode 100644 index 0000000000000000000000000000000000000000..3f8e45fbebe2226acf2d49397a7ca48060853f1a GIT binary patch literal 28131 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 H?mhk=F(|kb literal 0 HcmV?d00001 diff --git a/doc/img/skills.png b/doc/img/skills.png index 33ad79e6b9c09228031722f6b947cefe0e4f68ea..32438e16447069b1f14f3459eb94c13eea0dfcf3 100644 GIT binary patch literal 17333 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 HYr+2k$^;UE literal 0 HcmV?d00001 diff --git a/doc/img/tips.png b/doc/img/tips.png new file mode 100644 index 0000000000000000000000000000000000000000..9b7d4cb9bdcdc9bb4533b67c45241dc9fcb38776 GIT binary patch literal 20160 zcmdVC2SAg_)-a49f|O7ML_~_9C{=n-=qO4TDFUHN69gii5K#~W2`Wm5Ac$1yy$Xnc zlz>#JQbP|tgaG+*ci+A18t>h`_kREPz0Vn*$xO)1nRCv}GtVjWL`O@Vnu3Lbh=_># z+Eo=jA|jIaL`1}_(@@+I()L|$y92(jxT$*rTv(YfpZFw6zOhOdw>{O zJW1yti@xc5@rf*}4DS7^-Sl!f^otEn1Vnx$(MSrn>%SepvT=l>A(92O9=58%NX z5=}mERgmIfr3H|a1(7r!`)RR7f?Rz9JUQP;b6y%k*SpB#1Ps}*-P^}3n+2=7`wu1y z<1IhSIaX3d@b%>-^!l&IOA5Ge=nSsPs@#mFJOWid2qM?(WG3Gcz+*vx$(` zR^gL;UMu4pfdXyP8CM1GF!Fg(&$hNTZ&}Uf(qZ0UHQPHK47Cc~sa9wOY-e64ikgnR z>-ZxpzT?c61sMw=s@#3-TGCBCa@iA^FxMDH5$;iyYCG#~|E1(Y#)V4eMU8RMDG9mM zrH^tnjBTn6y_*T%p{>%V9d~7PE!lYQl=>g>0={y~Ji`jZ7k17*(1Ouq+(uOkUZd5X z>+niDZI*8%H#*Uq>qEo`?s}hp!J2Kyml6$c?|S4OlrKw-EE_(U5b07-^VS7 zO<90)Zl>m|OzBJEgpKkR!>2OQe4pFuYAY~cFS2-t!054XW31+_>s|XM7)F8Ofp<6V zUz~-Ju1^36aVxp+r`(ccqoHe6`N*r*!_fT6=Tg0NZI$3?h%#mK7BdTDv-#9UsJ=%R zJ{fZ7O4w45+)KOC+};=Z9mArjjmn-VLKDQ!D+N~Ug}KyoT#@x7qg>Dv^)<)26KW^s zl8toAXdN$CwInC4t{XDev~Qv6SoVG9j$LMD08o$xKWbE*OmWqby7Z4?MN;E)`Ji1| zWmPXtcvqA)B5$^k7dVp?&U>r$E;D2!D$jt&Z}PB3dZcPLG&*dy85;K5*=}qj)LUdR zG<7P}Kf<|v`Wl-I)K-)e^78M@etTSF|)c+Z`lH2!q4^Y7@?IviH_@k2nBCP=|Nf%^EaAA8W&<&6IymF|KY=dV4}5C~Pvh z#o_wEOcv&Ol(A3lEk)F@d{wjRjObli-RRGe(|(e#bFYjtfK z3HqZ~ATJWHxw!43(B*b9@$Nyisn*N8T#N~IvIN+cL|AC%-??_2UGEf5og=YjQ#Z`h z3Q>NFi)6#^qZ>vHg^(Q#8WD-CZb^*ilOdxeS#ze2GavLOb8B8s_;E|Bc6x5;b<8y0 zx(bg^F#qJ(1?4Qe8`}U<O@}Nlom$VoPuW)Z(r)eo zDzQgR4zVgE2+o*0<5~Z;piP?WM=|()?ejf*{C{?1-))~H#kxZV^T%T0AZlrHtTJphwGNC2m508xB*Xb4!ijd#8ecyHT!=~`JZ)I5K*_X#^ z9Y=JSPgpRHtPC|PQ4N$06lH8CsLB6e0RjiH(yCfDBiu;HJy0T9d8XllC6tE8SyPQ!aGV z+n+2sZbB>&7_D&qC&emHV(M<9?~@Zz6%_A!8kc1Bs0TA7n73e)*lAdfk%bO^Wnc8l&h0}uEhPH5ms=L7#P0{@l&Hz(;{88RC9kV)YN_2YWJx@=VW03-hkFBnCm= zM!7}H7eZVFJQ=_YAbcfv6xAgA)hkaLfih1Z-Jh{m>(u@(Gxko^zu;kL_C$)8GDg# zo0K+%sKARPn!i-ccb%~(CIs^jiS}T2+MwuR{n z55mq5Iuu=@4LL2ZN`tv2T4H`1d|weNBF9i4qPIHgA~&&+b@YCIbV=RicyN&b2$H85@{Xou@4HTK z_T8O%PKnHz>yvJnfg6&}ZlCwB{BqMB@ufnphpXq=+874$cFz9o8Ik_iIeGY9Rjinebpe#d;=gz^Z3L= z*1`T^q$;m}Z3*n5^QpTpSj`k8M@&l);&0gSE)|~@{4BB)dbHe^*QKR*Do*9e9XL8l zxUb~U@I3B2WjebHagr5R7wshfz=KPj@ovhGM})Rd(oQHxuu4Icr{upE*gr_Hdy<}ocz3Im zQ7EvVw|XYFN9*R3+x$lo(3eeh;`+j29O83>1^{AhKZTPvs#wf7Si9UR%oQtoG{}nd zs+(X%UHvc#Jvx;k*Fapm?1dsgKGG{j@~%<1#Gp(31NFCo&zZE?%P z;aAT|uf1c`dC>ZY73mKQ);v*VdxGVEc=`jAS5sY&2Sp^Z6o#p*dc2pdmn3UN0Dbsj zmoneYyu3Nu==sqv@bh)KQpXrxnk+7?3! z9F((mP?~K)jKgCX!U-zrf6~;U`kvXh{eVz*l(6Fp3W$f%(Q@DSRda1rBQj%jm6rJ| z`rfp#uUzR@x&uVWQ%({9O5*ufXQpezKb4M8lbRy-yDQr}!6(|=d*`mY^EUFbF>3hkq@93%Wc~#yeQlm<>b={JN-X8h-_)I9ySYtK_%V|`> zIxpW}oy%5>1|4i{*EuPzS&&6K6g8w=^1w^vg?{?=1v z%~X$ts#4y!y8n_)aFd_R3mF@=0>ki&)whZ7?arhg?R+#}>r2VFOS_kl5qDbaiqZUJ zIX-Rk!$3#Ky77fxz*@~F3ubiH=kx^Hs~mx1$F1HU10?R!`yc-h$ah-H|16MBDe>{w z2lKSbB!LRUfrYEuC+Lg812x%BJTB93>QVAvD~u;Dm#N=MPNdpxD8IaQr9H0rErm02 zuo41IHL0qxh3kby)8;#0k%G617;p10S~&MJaXHzd%LUHAOx>C$o>8P$bh{!`(9Atk zF>wYHI<3{mhzsGd1|jtx0RiU#X8Px*F%>@RlTNQqMr4ZK6# zdHlDEW2ffLgCHuetR-ugD`GH{kN+jX@R(Kt(E7T}WtCV@Gt^F1E*6nDWPcKdvUEQsTBkjC7BAb9e zTs8&QgQsexrMiC(9|KQJ5)p)0%Eq2CyhE8MK=4bI6wfk$k|b#>^*5k#S0*{T(Zgz9 ze!NmQX|($)QOP%W&`tcaemXr<6r~gh0KKx5XI*WvYT7m*=C0c<$_j{1{=JFzXXxa* zm`PVmWL9BMeT7YUQll`UzOK+it$Z~;sVgaM>ipbF0?iErlIerB{x{`UN^*6d(6ECC zhkPA5V+sK+Njdjup#^=dVA8!bHSkp#YF$}Dfd?d&8G%cer+s~7zpa-d`l%Qos%W57G3_i9Bi zW&>*BqeV`S=0HeRJ&K5xzH zaC2GM;ri$9cVsIYo^M`9y4_bwabC;xV z-JAEnzXZh2Tl0?J+S_w0S-slSgH$Z6Ep`Y$)%$EQOBa0^Ffe_=`PEsC zgE5bYF5}2*Z7aP~IS99ue}KM63ckn-m{Z88$UKNWb)LdS(6B*4!F5_=&CUOqWS;-o ziEFOYpWi>IAa^lqW+m;!UfGNj>d)}I<8rY+TXV!LBd4mm%cy)$mXU*1LF$3)k>EBS z3nC#WqXiJC$Ov@JR0w%b^ZITuEIB{<{j0bHdrUjh&ybfLy4x_`QKh#o%hI;n31_J~ z=#k6mU;L7g^y%51=sc~w*hzVlLEqXlRqF@U@H{?1T=V8ZSWXStUmc=YD%kHIo0~O3MZs$|S_^HPwXS=ExovjQf zo zUYl&Rn(fsYN~$|I2MlygUcc3p67}&7I{%Nr874q)3hx2^an%IH3AjO(bK~^D20-5IM@fN_D<<$%1jn5`nmdJx9*OlGQfO-q8(;h!`Hm}I4faN@X^p5X9qk<(&Y(~`ZzH|9VC3gHFSa+;u3Dq~4 zm&~DGSXq>)71y+~S@~H6?>3|6UH{?UcwJHgZVR`v(j*6=`Sk&IToKuu%}d^Nh3Z?% zPsC4Z8mwJ`Nz4{&*Nr;aw|>c&?n}b~*eOJka{VrteU&i;#!}Ce>$WppifeLfetOZe zjej~tNm=o&e#Ml)qVXJk6^2Hn-H4K^eIc>3$a>OEKK(ILE^Pm+|5a+3HVNs>$F;HU zZsAHRwE~|CPeYc+`)<^vXMB``o3sP#$5y!)-7L#1pEMFjwjF-N4wGOHGu83nRnrtU z3>4s(`I zsK^M&cGU@f#LIefGUZ=YO&i>td|=7^*peB@Nm;;|$07OCjdDEIeaH!xpR7556y=u7 z9IU1fh3bwEvhU94iUj6Q<%H}Q{A8mS73k8gaO$T}ze}`tZ)cVH!b4_?_XXpYl<$I$ z`Q@hsN2s69%{`qPWDB==$N{7be}5yjh98`58Gc1JDmZe2jJKPjg!r8T-~V43-Y!rJ z6M56|vRj-LLJv4qE=`2M|KH9et!6 zD^1pN%lZ+~tZ)m&x5-Oia z^7^2B{keKHb`~oRT-q~FOOAvN}DLj>-ZejR-j#poSIn|7a@xP45j)WQ6zK0VXsT^^9tc z_;grquwdKxK&yu4nCk%>pCXs^p-}(2jXi%|0zW2bh3$!G?7_+JvM+Jpsqvz1=f30N zd?7j_nSttYlhnX`TXTKSCAbfWy#~>efs(oi+Spv!Z!MM+(oddM517fQ-v7>^`@43Y zfVuZuM_x&eW<1tUh2M^|vb!`FCE~U_jiNU(d%V#C^>gzx{L$Yzb9|@O=jr|_K}Hf5 zswe8JlJ>r8r`;&Z>+c&&t?r>ZC2xz&~t!rz3Oe7T~gycjf&dPK^s+zY96y&4&wYVbul28V;6RMwf4ukpw=V zEh1K=RmxN4e-V3T1GzgU7PIF4bcP-XAUpq4Tf-K`$&$ZdEoh17Wd(uRy~+!_y5`y( zoJ5dzP2TrBckX#+)L(GhK7-aoZSTW!e{R~~iBljE`%ly0$!@&ouwNmM@a>T?qo~+v zbD>-Mk1Ej^YY)(>-2%=Hxmr2u7vSq3TDl=EB^TCzAT|@=kAJg&kVZfwPe@Dutxi`n zn5&Xq&%w?ow^%elXznmU)%^MaXhn->V4}lY%u(}gLjG3AqtrDyN_p+*n2pM61jrYZ z_3g8J$Z91Mre(*5EGVeTr&cB5SiSe-jCklw&M^FAW0bBUBLW%+^n{ zu%=-14<^`}8fxoTKQ%MSq#ysAJ^TZsD(MG@R%o~Z3;9E-r}-AnjH$N*A0$Npl_=Wp z0|W2He*WAgNgI^%iuR$AG36Awgj?-s{8;|ka>9udEr3JG{i5c&=u zsBrs@)$=e_UZyOgUq7faWsQ!3KCEL*@^38^U+i@-RsNa##SURhy1ntFQ9b{3ML&LP z+xT+lR0>OGqE|d-Twfd00}|NQc7D}s?E{VVt%?kA$wENJ9mf5%<;T?V^N7hU8bbaY z1lK-W2Kb|>9^=HE%(UritT~xESUGrhV3isFR3>Z-iNL9YmQbAA#fLqhy$ny&L;9$*DjIE_qaJ%-w*XZLm+&Lg>c8zAQoBh6Wezb}TyVoqqw|*f)H8Z3%Gz1>H}7I|j1G!X2h%>ozHI+> z%*N8|dGKj|{~9m! zm>&`|UYoywF&IW$H(LH>cy8BN7=HaSPf~nEUGn-k@(|&5i0yhfam|2nP`gWtDgl+1 zkbgLL8-$m{&tTTiO<*(7-stgaOftIG58R8+DVb;qYWmB-g$zQW6zjht1YU2$&YlXo_rQ>e1!~MpgB5#v!$o2*l ze-elp9d`xn`yX8Ye_vqsN=Wy31s$c^aSSoWFuNRBJM^#`$$Z)%Q5@|vhF@xgj%ZigCRv#m!0&I2jV8+{iik>>tH6 z)5c?eb{+YXC&~Ys;=#cL>*vZa?7`CK!Z7I_s7yR{hXeEHp2HzTKh7GlQVbO=M~>$^ z*MgIg(V&lKhJrgVD)10CQ5oevwq3g1>p9ur8*{@y_Wue=VR@sShMFScv-hz zXvgw@RD)gYpDMW>zO;s#`I+TNO&LzP!}O2LOx=B z!Z;tsFp^uBKlKH?xxSgfd^Wwq&%A5A*@!2h^X<^wa;|Qv>^ctX0g7Y;J$e4ajvz@X zh0&hWB=FXES)NXckm(XQQaaqUPUfj__-MintCu9L2@7IsIBOU$IucrTBu%wPNaTZS zLkpEY?Vk?D$Bn0(KQ*3tiAEhh3K9O1NBZQ1bY6@U_az%-U(5}xR14pEK55Tjo#Y>T zaM-+aXhDlyw5c>=81cvM2_(0{huCqwHn5M9_ddinqh5^wM-T@%E?n<;eZE$P{`3g5 zU^1emnE%D%h$!#aW84=XkYB)KJQh1TAAPRHjrAy@`rrhVZoeX+a&&F9zv_|tctaG1 zm-z9~Ar=VK`$nbtGKwwjomC5QH;$(yQrroWv<Y8#(_3ZV}`yOYL**_3H2g31E74{MHIt z7EoLcH!WItr=ERK+juZ?(_jEwgecmH8d>6t>M2`6m79xc%0&-;>^f_E@V|4DXTL)g4z#9{N6_dXWS+$%PXMuUa>0|y8~ zT`k~0euw^d-om%Y73?s|yttK%Z;f*|%dV9m#suFQ%jMr(dcy)4i(JacU24JdF8P1a zHpW$sF6As$#lo58>!aOa7}{R3G^df+WL9S!Tko~$nl!iZo{;eDGhwXq16qAsh-rweanH9><*++KC=vcQ1_aLcy-!1lENE04Nd{Q;R6 zKWM*)XRLH~cAmAb`%Qya+;Lad?O9*Y%liS}h&-0d=Ujk~!nKipyORe#pIu(+eREE) zDkc8se4dvk*?UxrQ+K#XJ}t%eqUQ2=$%|W8ozskNhn8B*o?Px7@g~!@yx>iDkG6o` z3jQ^ZX~XC^)f3q#qSXky_z=~>1JP=K>?%!2;GL8+_9x>1MK)rW5^{3q^*7}DqpPaw zo_dz9qFvH7_rVvL3H|!E(|@Y2{15e=^8!S}O1w;Zh0nr*Z}Pvf;$)=EGP;@$q0Ev4 z%Bi+1h;~znk#znkLw{BXcMT-~FIgvz>blaLw?wlJZ{>TjX)=|z3E%THm&bi+59mM? z%|+r21`d9i(}SDa)!8|`!%6sChj#IcHF_%qNIZXox`aH00I0Xo!ABh{jZ{W5&F36| zQCUTw_AfgfR)B5CgwV?9rhJU0L9P02*M5(4&S{P<{ktPe#ci^tLCSv_(zxj0y~W}7 z#hFbDV#8|Sc)-P|p@I4K!Opu(BSlilqj{0j#xS``d2kDlde0p0!U8{C&OMqULZFGBQJc6dGNY^}*9GxC3roPSWDx{XzVWdf&Qx#{Lw50Kg@*rA(5p(*V^3o@pb6)NTLu ztWD-5asJ5*wQ%}L^<*El$~ZDYNPIsr?&GNb9cA->@i%5fDcWZ9=1<2%6TxQT!=a|^ zRH<;g={Da!4e$#QtS#RXjbv(AUtIafh;G6mc5m&_tS=riyI7ieUWC%8xb#e^0$_(G zRpR{h_UpQ~pDNu@<~IqfcuQCQA))_+{X8*IEpz(ig`GX!mf~_zxpiS5t=Fi9yj&Fl z(T|s6N)LCN>!?F6tcu3fj*X=qK2dT*l#OQ$=FdWeUm*?6>^7RW4%={tZtNI`8R&~Q zL>+Gy(9acbyx9HXT_h&|Yiq_vnKNR={Cw+3EN_^(Gg6@14!>x8ner;pTHQOQntwVAAF=vId-6u-^n4KZwM_)pS1SL)xabj)m+AmXTY334x_ zybf-HVQ2Wun$;X#DJpxC;Rg~a)PFmhFQu6u9&7Bu?+GvJAueyj((eN`#4&83NEz`1 z^LzV=WnP|B;?GNMlP9p)E>+$wd3~fI?o)qeSIlPr)6EN=pO8KF8)xGXia!$fn@-z~ zmJmv!C${RE$h1}RRm%X*>hDwq%SLonSrCTR)w)SSsCF!`f1TXGwl{X!q3k<8&0*SiwbR>a_`Zu7cAorNW4>l)YgjJAM5fM_+TNB9y$P z?upP~k0D){mdrdaQ-^kpX@hD!EWTu7#oeI5fpei{QY`vVz)ZH@aa?}d&0uuiS|sTs zI=cfiCYOlr!Z^!Jc-iUgJuUrUlct;7d7~3%v|>;qX&l{bV!N@QcGZ!rv}pLHUM>tX z;JjhXLC9`(o%_F_-+&U|N3AxlyVmcmL)v_N!tTu?`u03w`ZO)m-mFNW7KjIwE@vt7 z7tn5A(oRMdmI3X`n<44mpBr46Vf#pjeQ(F{;I#FY{VkD!feC~rkn*O~Ux(o=SEBzb zoB96(ouWH0q6)pN0FkId7V9#97p8C{Sz)hs+uV<_;~gVQkleS0XV8(>D<5(v29L-{ zre19HV;Iyt+lB6yfn91bPL6c3x4Pc5@a(HZWNMzh^@1ml^|IIatZb{+N|3N{t7Fm*(QiBPZP}hGX_-L@$gS z#UvTGCE`LtT%~PGH6c=YUXjIJ`=$usra=JcD2z(0EfEY0z$1FS#+=UOX1hW@#Y>}_ zddpp)bENyr` zJ(v#BmdG=%ak;f6e}b%>;YSU{trSU}6uN)a-jMv{RcRG}+x50IPv2w*$mdNP;PpT0 zI(|WLPllA`pJH}|HGJ$8TwpQyrq`Qty~^j~df#bGejBFw^?yA~YfO-JxL+T;-jmbo zW^OIF3DBIc+feW)R4)<8qMeP+2WvOhU6F zu{3$fcQ3&i$Fu|5S)C}2kOfS8L+MNM&u~ z#?g?;sP34FeP)T1(2WIkOR~K?J}v=3wzKmIt29ifr-gAtEx?_^NT_2SG92nzc1UqM zHLlxUjL+esjWJL7zK@5%-HgK#BO2K%s7BTtu4dTIXSTc`7>^+HHT-yFwHE%^=X~7$ zn8^dC6w*Irf^;bfjI57ByFQ~qP{uNy1U&fUZ6&ArfU{*fe6YL0n)lgx&L2Ulik6B& z=ibEWrU5N%vfAa&8l2~l(h3Mjep{(nwAYey`|D)DkP3#tquF0V90zaXE!e^Vc^PgnXGS)wgB01T@ zOb@4l`O1pZj3C($lH&G+*aNyAf@jokP8_U`cl9=uvQ90Zo-dwMAANlTfZDHF^LzRe zM`z75_S~$090M6W;Ma<+Xx9o}@=GYz`%wiVO#)y> ztAN1VFH@hRyQ;{F#;?tRU`*j)(1GYVClTrU^9&8lhKjA+spKd8E~qwhDVnL0hi)sq zuXK?RQ!|Ta2W9cweH_)MV~;Us9aOpDFLp9uMe&-J8Gsr9Ox}c&f;GMx2h4myrgJ^4 z8r4?ds(8Nd=fzT#LP>N5YERmYuGOW#B5p5F6|D%y)`tIt8#XC8yOig@%hT_?_$FY& z)F;))s%5MABu6dRm;mhjAoFqo-i>T;hQ3=Y!lqA*6FnH=sb6$rG#nc8h7yb0BOQ$b z^d#A%^oiSrv6r*qq@uTu4{GgiZ#ZVy#BJVs_TE2WYh}jNVVe6mCel9iHG9LAyFiIi zim%8dHIT=P7Z&nVUnxu3ST{(l_?JN6j)@{7dcXg3+M)o<>r8NAO)DygD?wo3A(wc< z4UZ^RDnnq`WuHh3)nYf(Y>&k7j_dA$HcG+8=Dn%IiE`S`b0mCLvHH>;0wG?nXBFB5 zqpg7^@Q=23MdSm@?>r85*2u_y3|s!qfR*0*YTmJQ*rFO#6kOL>)AQUFAuSZGEZTmd%nsd0WsBKOxM$ zWe&iz^LdR|M8%6o7xPK9_^z-#rtvq~y*kuwl#+0QKro<3OgMDy78-uv!u zbGdqK{3_V=jWy-&d!8s{FHfZY=0`R;|CjOVUr%))%P0Jk;#>A>wVe+FwZ#z@3j+tE zA5J7n9o|91by>(8FTu&8QrH?AKYmoBETxa+Fd826q4J}#%CCL*&XD#)*GI}XR~e2} zH>7PgccPZN(9llxzFAIAx$%83>p~-brtoGfY%u}ffF#-!GSa*rhfW!MM_iKPS`!Uu zdpGXfj%~8Boz`3G0A7s#CnE?R(F{B$gU2=@8w2Kia+Lqd8D8HGit3?iEcDc#92y-K zbbaN{0thL*lf=;HFX_}7a4`z$9pTuwfVIt4QE~pf(&>>qQ3dmdmr8<2dq#T=U)&tk zzNK;HmmSsHGP>{fQolUPWH=RQC`=!P9$hkTxGj_kc^NyU;GI%937j{ko zAO8VyZwt3R%!_DLeC0GYj*Oe)=|_&VFGWrm@4!A$7HL z7YPW6-VhKF0?7$?T3*Xv5Fj8>q)_U0H!z9$~?DhT;wZ* zeC8L`?j2W8boU`(Nj>m?pMQ%4dJdHJ%G~aMW+4KTA>=D)5dzZ0mN=shsjvsV0)ArV zkeDaFqjhHy^gf>K)6kV=k`rnp15|NkmzB@8X4IKa@xbEJS}~i^(!d7TV<2{8lb7{C zq`!&+S1N4>xgD_>Ah_9o!*4;=Y`9{xqjo+|Qmc6y1btPUv$*VZQU64sq@hDI zSRZ9s;Ot%O>~FF(ywvb4w9pDeMaJ?Ql$8STvf0Lw3U7!?=7#ogVtqeFLA7u$E4YRS zu~?V+jhwUxNyK% zQ|>NrK5r(=GF3yvEl9!0Kjf+${DO)M|BsuCLcqiDLD%rU=)>=Jtu_~PZ_9IZ)Tdf6;rV(PES<<&4@8)G%~D11{djp%5T3Yr7v9>Tm0t?`Ga>@>X2IV zvzk#$Rk~%x6zLRuN``nV8h#?}b9+lfxoEf|Vz&ai1x?rWwl zHlY#2qZal@+m9V;KKFR(T|KffdU^erpT~Nzm?7d_!g>{XVDCCOM>W(qEB@Bm^pUr~ z1aPYJ9`N`SK#C;5gI>WPE)BOY8e3Pv;wEMz0B;Ue-KBh+ZocaK0!O4^-Z6)ij?2vG zPvYv`?hR1Gc-0?P2C{FxI0#va5F3ARqWZK}M1d5sqN1C*pGVxf!&(b6P(s|;Dzs^)QG&-te&T2HaUG>rH(?pA4-H#3xej%hA6j(2m5Nq^ZjU!JC9 z5Pw+pHmCz17(gAzfcVg=1UeovvOY;wf3RU?(w9En{u&jeD;&^}e)v=i9VxZcvukUM z5;E>X9tISHA?B2n_o$H1QIMEd@1WEDtqydGO!f2Np=cR0mQ*U~yC=Ao{Ko@N#3>Nn zSD-6BR+O}Id0Ns-JbC(a;lSYO1na6(Y{Kv1w%7&Fxw!=;xhPm-)ysj>6?OYI@w$tP zL4u1YWN?_guBM?ITN=GaB+acgK@;b9VO>G*Y=c4%<-_5gQW<2E>1>K2lHR z0MY=+$%2Rw2ax_?1< z9fp*))2qvaTn?M4x@ii}MZaVTx*v`2B|Xs!N`KJ(={2xz4xlrxZdJIL>`=S*T(}7z zVS8iFS+-XLlvd0i+buYSFhNgUzodKdhfktR#ef1kK~cT8pSGWWnC41=L;}) z&o=4{@ZncRTgt{alI^z#iU01zPcPfuMQs{bKDEx`NUMG5&?Dn9wuW z4H<)@{2_x7Klz^i3W+R33*CVdMEc4Lr{Dv|njbpvJz5Jh-B7Xa$9a0UppAXen^^t9 zRpoP!^jnNv#gx%~U6QUT#x}5L<4KP;F1<6o-zRmW+eAl<0n%oqZLFe!9;f5>XoDEr z%uWe>*TYY0QPoLhwj)gpu=%Nwd#g~rxrY3(rFm}WUp9YZ&{c-|6tCXg@Glb9(4m|CEGA_CRC>E8S-Fyj{$N)>^amsTOGke0)<3Atigw^W6)15L zSTOlN4Pl@Wc!OPhK@i9-qNS;&tR;kLKxMfyL@ChO5o)DUhz0O;5GVd$<$p{D>3f8=>UAyplu zh6j!uNG5fvms-w@=EUzFjp441Fdco=*?2%ErZ_`13@A|`w!n8&92=bEaI205EBAv{z2mfCHm366RiIIq^D!R=F`IeB-8$6}^`rdgl7g!6l;8ZQ{*d zmm**J&Pr=9a5&_|Le-8^HX`_53>1f>IOJE`sRCaHdtlhGFQ4sj+v z`E9hSA8ihMovjo@+wz~Z`b&TJN3m2x=&Y{V%*x;U%AQ|(?p8ttLU&y-2Npvd^0=9 z@qpL<_`qhUfZJHy#Iz5#J7hkZ*602tA&UDjfy<401ov=0d zHWe8oKnQ3GDglF$Lx{KE8ek12;0mLA8qZrZzoD{wtjJcviR>Ff+lq-O$o?@JJdW>B z$CiVS{S@;4a;Bd>EQPn@XI6gTt{Y8%;gh&n5EB-8>1LYcA5Ei2SToal6FdtiSCb}@&HRwIoW$oV=SB(XBKaRr z^^F%E3wf`Gu6@-+Z8oGR#ZLclfX;R~Z?!%U+T774*hq$t{SB5q6=hNaP7BiIKbH7x zraOeK_ltagse%+#+_r$n5%(ss>`(^aZ-P+rCHY%z+?Qe8q)%l%HRj&1&S8tk1Dri+ zXw=rHrn9)TgyJ~Tv$C&;HP(>enbrI}(u^ymnkZ}Q2ne!VIHiHr+qUOYz1{VqOPN_gtC?b^ zuQsot!+OOPfmti=d6&FO!z&lB)ewD3{8Sg0RUm5o__9!eImNJkmaHkoBYiPr%F9(K zmZ%PzJ*M^>DMW`52k>BCE~qBzpj*z6hM+UQ2_#MTvNCXGA*Afo!zWMTWp9_f5__0i z$v1pqR>~;-;ONfZthzhSRQZ0;uPG2UrE4~MZ1U-IHn(GX^T!vQc@gtQ&L{G(rS~P& zXKAZgk2RY`)LlbEZU=W<$?Z3zYu@?pUHntW!6^m&Q}7CEWJk*3IXt1Y&fu|S7tVr0-uRe)r1=dzwx_conoye<+iR@Hg zs_s9O)#YxZNQx+yPE zqsEkpv86W-#$_WP7#gI_r|WyBoUdtSQe2EV2;YcnZ3IEuTUnCthGy5oH?yXy0 zg7K3Dh?JCT$MbeW?OX9Gke#M_gbY98$X8lYQXyGgWcbB}1c(WDR46PGwo?82(C-<5 z#h|0ip*WuN^AT{ez+=fQJy?}omg&!|#|Iz!a)g^VhC(jjn_}A)+eFPzE@15YF!4id{yJ_nteS$Z;LHmO-uCva z-SyO3E0bS#hoT{{IToKtkLvmnr?E8({6o<;7h!IY5=H1?05|YF=sx%a@&e+?w+2}I zeeiMKQviElcg~p{+OtIn%%WL!I~%6EAspX88L3cAQKZ7hl4+OrG$!nqhXs@hpR28o zD8I@nNXlAtiO21Np*nX*W*yC{xJ3?D+2fJLW4^{&F**^K?>>J0VN~blV3l$4nxfn) zKxYJ}gE!UjKC`DhY)wIyMcNn70?9wxI?mZH2EAJ@>gZtnJ29hSJ zs~W!3q_HUKPgnWT*EUYD8RXd=c0QH;(#2YzyWYM2IZChdc%kty#7ZbKo=1qgaIBX0 zuBT(skv`tM+LEi*qwHzArOL{uc?TFy1X1!aS2M(;9FZfh&r1`ob>r7w>#cT`X?GbvQhxFZ*6SUu%-*;L@GZ>&Fv} zr}hvTl+Nzg+~vDbRv?1m;=^jATeP8aR&7mQ9hIyV4_u!z*R@y;Hg68!m0~{}m*Aki z1rzj13C9#xzn!Rl3yI2G&e|l+s8+-`?HR8oU)ovSGP^Mk1eyrlFhRt^{o-dU%^gQDZW0@YZLTVsP&CvU(sN_lysBA!P0p7ah& zYD>Qzqna#1`YzgzjP!S>I3m!uw;_9dIJ ziFk*VOPmpte;NxsQ|eCoZseR!RoC4l;0P+&5~bxaiuwTe+^8xazBoH^T=kqwOkt*b z^EfIZ;=|M@v8ypjuB5d_;_MN_w9c8au|6&?yu*323;vDbjLSQ8?9E+bPQRSthnMgR zjV5cK+QY#)JC5K5>yZv9c6%GQTuh^qgDBdP7W_Fu{JXZT zo?7}t&iX?znrC7JXnh#ynO6N0^_so^Q`Cya{0=6zF5-!9enNZs@3+L*!wsphXD0aF zL%c=z%Fn(tC0ifN1#m9uraP9x9pe)Z^L%W#>M1Phx;E+SK2j}>*V+~-@T>Qa%)3F9 zLUlSxyWGO~5(qj^Radm=JM*E=1ipqISjPGFte(ZsvpMl+MLxhq=jgE8mw;)*#~8>m zL27kBG`aLE@?pN*{UYho$1t;m$aCPYy4uxu(p_)C|J2jRSE6oJIBcW^EL}1k7 zNb{X{J#szVg?J_a+p>f+M*zj(lHeLapd%7Y6>0+NLm+=@YG@Y(I=`V;)pmj?u)p8& zVylc#x2wubCucLZ;PQ*QbIyLTr|_s*B~_Sbk6F7;Jea-#=uH2fIqo(WPg$5Qd}!{~ z15VG8=P>j;_^B1j0Xxy2`jgV)jIIo3N28FR!h^iJK2J+ope8g6j_5_OkVN?ky7E3F zpN*I_%!ufmh7VbGU3sXguh~g4+ttS`{xa!BW8cFwmQS-!Px7p!UJOr^Ji<<~IM>G@ zD8(ayW;W6WH3Ms0!EJr&cXp3yORRf2dMr1Pq_-VSSei~g>t;Pg%qXgCz+1w^W@bOo z1T@>}h3;G;CRt?R+?a-}y!Lz=d?+Sr!L9iY`{Q>zkNMVZqF$acB4rZZ$=P&CEsbW9 z6tkY9vSltBv_P|YIMb^!WyE;%72>Ee$0^+#^iY%PriC$vFWJeF6f!lgJ@x8%h6=xf zd(5*ugM+MQrcx{Aj|9z}@7D5pZ<|!#uNjI6Xsv6Fe(W*0!%FL{` z!l#^;I9=UF4)JD zcFaV){UMy&M!rqQ^G$!tII*gxV-ws3+z=MTdb>yVRD)@Pr{5c0iv|+Ln!>2VW2c5y zMU_`}NJLgVsEifqp%W~n`g?Zwr!vOdY3*3?Vf-!WMzuK(hh2wIwale#e-OCj`lLb+ zvxM-N9Q8wvZb)Jb9kKg0!2TF>AIhm&PkD#9heydYoM7t|_v-h?S}+$!x!c2Js&PvD z^^cdl2%l8G%4xpN3>1;hwX*FR`4)xBqm_(Mm3Z?^XhYqvPky`>#~Iw=@Xe zTL^>9#Ak;!#ZEmmRY{IDuj2}f!N|T&F351&4x@gu<{MVLaHmPomB)OYcD>E3t@pB7 zEU%N=KJw9_vHLaI|NhEpQ-to#iF&M)A3yfuG;LI5yfvztKGuppfzg1$YI?!z54^DB*TX+tIYw0AfV~ZjVMz z#>VY@rk84T7dz5sVuHk-Y^bv-|&eZ(lqIPMgn zkGy~fz4?e3OwJ>Z))tR#x^*V6v7nE#I&vz>nNADfyb%C<@q*~2(stK$C-Spb$?WN} zio7gpFSL!g!8SU?ou``FO#HJunisR*+l6WD4jB6%NhSHIAUm)zGqSyiF0?j+_B@x5 z4pmLq-}WQ}B!X+`0eT=!q{uH1D~}KsMjHC!LN_EohId-*yBX#|Z-4@3>cf^YA? zi?&_zFA5glBabkk!+g45Gz+0XAEHZTFictdxqhbPSh1CrppjztVe-D~q|eA>HF>0p zy^tKomyx0W3%2~C1Uq^>dxsrY4P>R!rX#GOPO^vhv3GZ3V>RXfZ(*I!5r^0wz^!9O z*S%_Sys0#pLtS}G=NT`CWUzRHI&PLD!v2Z8fId^!cTJI~=)h+J2Y(3#*3?5C zq;@}4r%1RYpi1~X=TvtTbG;k|jXXZZ)Wnwelwr2Y5-H|^wsLM=$sxHCgoeJ*6z{9nddkzgKAqd4GywJRo7zMptCrg8@axHuQU4E8!FBAGbfgS zTa=-CpdLAW1Qx`TP;Bd&FaYME@sN6b{$*x7xy4U=>SjA9 zNdD;hPm-`&34#mx89vlpVqb|BuhW+MP3X`{9V9XSRhVBXzKa7dDI%H?9Lr&AnNV3j zmcGJ|Y!#e4<$kgCn@o2C><>!*OXrW7QmHdW(#;a`7ni$*!Sq{XnEblv>c% zGfxg6ue{Hw#7`)gN>b#1q=V2{fy(Z{zrVsr=qhn-2bC%t>%r<0 zLyXKj6TmLd{3QnYG1$=o@B&s!p*mq?=z%I8j`QV74u)ooYF1p{=t4ZKs`;(e)9gt# ziWitJU*L5|>Rih;&XfrsetBmexsNU-7#!zslJ4>1ubN*nKCpeY$5ESxG?0Lj-!L%n zNa}Wv6%pIbvoxm@I-^D91zIFs!FQc2<=Av~JIq=#_@>CzM|!^+6N^WsU@ z>4+`9s>Fr1cTJKFv1{QVRDwpV(=KjyA8^7l*%2H{Js{>!+CjjgK=iHRb|7^XJ>m{J z-EmNis8!)N#gYr@pI`im%D=B7M6hH5dhiTAUr{aZk?>)rhwdNf<@G*#aqCVow9kFj z-S&l1#v}Rzh$hJ5QeOZG;}F*1oWS$esIa_SGKZTACE+DALGPX|EoAOK0EIh;cdS{u z>hHJdiQ8IVZDAnsl6xsyB7Cz^{)Ja~r{(XwjE%g=3^a|fU<8zddxL9)fVYq@s6zj0 zDk=wGdU|0Q5vxqKPL^z}xli=_#w}3*-bi~GCV@1RdX)SmF|@MWMXTzbQ^CuzDy~7u zs8x>dn4XT~Y;#>}Vp)+3cbbjCf?=(P0IiuX`v9e;b1!Ai2J$7rmu&@VH?U*qH;=g*l{imyM`5)HU`>FyJe z2+k5>5;Ol<=o!a10gu2JOJjpHNP_M+W$Ml+yL~B)s%c*yu4{2J*Dh{>SNO={HfpuG z;_FfDboAE=7sKH-+l`MJDp%xOEp7+gKHQ71|U;B z4~El}WWTYgJO9(ewg>T2X@$U2g?#=(*_qX;!iu&z@nK%-_441Pp5AnO4rbj!T+9*& zKgrf&!UnbXG^_6l(W5A$2*nFkdqn5*aX9P@?y~%H=&G!lITtn^t0~*mt}eGn8dprb z(UNyG>l|Z{GtkC5S0CP*sx=3wwJBiANPtx6z_=ta~=T8qfk9#+}lOw=&^O7s&WF8Ie5CUon!w&y8TM37Dy8>-czWa zG9KT0v*9|4VVQBm-rC0zzex5^( zvxQRZ`R&gAV_i@DbRhRK?zNxPiPKnMSguB8E?it-`yHPH5qR=YRzh!QPv0XRbTD%s z;ICm|_lgDXB%TB@#Q(~bD`vG23ABYfqrvak;OT%CP$Oab1$#X>~tMN6TV9cUl(h;N})!wK@5 z3&2ngl-O+Y+a|?1aNcZSxdGkzgo;-VsamWXl@s!IO>6UdsSI``#sT{K6v+Y|1c&}N zeER897lpU2+6V8k8$iIz)%+clMTEHu`xmMwcXiF|z__ezaslhW3|n@eT>FK6Wb>EY ziureu`OnMj%mL{P4DYQPpGvE^Y@hm37L9!s^X=suC=%~$7?`f{-KQXck45wKzQEwf zNJA6Q5TSr+?wzYvGkgL!iyn}qHAyLlC^$aQoDFiiDdahj4fWkp#2a{ER1d+mR$7Ct z+cY}AH}hP4X3m+~(vE>v7%ZMSls|ub{~)#Fe*IZ^e3qZEOjfq4)@L&kY9+hsx9!f} zp3Q|_C&Y35-fd1(;qg7r)N;?9g+~DSXFk-Dj(sK0BlVH2l8!bNqDYZ{3{Ynfm!R}R zY4-K(ttRu)c0$SZ2Lt=80e??$91ZZyk{J$|$yHU2{E#8+nGUt{;)zIM{<8xE^8cOh z3l)2`%Ruu{(ejSN--OXua(&FEChzDYk%L4QOmWB369r;;?5|DI5MICNLnq1d=ISOX zjoOVZQwmoiSvkKQF=|%+XT-;J8cAU1Px}A*GrqMgJpY$(?i=C8{YZA*zhotV_(1*s zTLd1nxA$PxMz0K`*FV0hKVACW*mkVWb^g&veNfFmhSgG#((l8-*AVV=NlF|ENO%)GipO;M}ZV*y05eAw!@m>q-tyqceaTRmjus`W9mtjFN-u)$Us)L|aa zF@i`1c@4bRAKc&pem=gvv$rCIJ)q4Y(6B5$_bf;6k9c-}zu(Y+aQ=OH;>Y9Vk)#{j z4b&-YDQMFQn@8>pkDv%{%n&!mEJ_F+H`Am!!aM71X^(sClVs7xZxVA|fL$uG8?`9= znih-lGd|G1xy(DV$FZIr37k2XT8Zyw#kb2A0+3)X^RU)3;qXz~XzGobD51ls&62Fm z;z{Gs7fpBTB#a-vhB+Sp(0vWhp85Ap;^MvTn`m$Y1=|f=oK02(8%23TRP-5IqP%Er zubmKRm$E@CU$K|U=X@*cg)%gDwY0l-xnS!7qq9l~Vj;=u))myNBVNkVQXi~hRpYDQ zgt42Ir`+WFa$+Tki_z8cxnW%B%ep;TsuJ1b*gy#^2=4ySUBJa~>zw`bxo*^i9Dg{c z3vu7zqJFqiqf&uv$gmPyv;I3NiA#p|3vMZK%Cu61vly@Jb(#gq;8#34=2uYS_a=

38r$n%uxK0mio)g=FX z@>2g)_H0GPFlIphLj_v)es0`Vm}#$?!k=&0ct*TIEwg%WSYao8J}9mEem!XCb}j;D z-j9lvRQghoK_?t$u3P|q@sD8If^dHAez^!$#sa==oBO5I`uyXpEx2a>Fk#Nu%F+B` z+l|M%rk%13I$`31dVl)WZbvjAP7J<{2P4me;r6H_hMmIva%|xvQ4fqIhjWa$s51>RsK#@NjejNb z1J!qGzdsbl62P`I-w`{Yr9k&n;Xyv$Lr`NLaa^dtzIW&UMj%jE);^ba_G;jN00|(q A$^ZZW literal 0 HcmV?d00001 diff --git a/doc/img/tutorial.png b/doc/img/tutorial.png new file mode 100644 index 0000000000000000000000000000000000000000..e72bc8da248a8c3cc041e9f79a6194b5c7f04b04 GIT binary patch literal 18525 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 cq7^BYnItKxg&q9E3$&Xz`fyj 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 0 && r.Time-r.TransferAt < transferBannerSec && r.Mini == nil && r.Outcome == sim.Ongoing { txt := g.Assets.T("hud.transfer_done") w := g.Assets.Width(txt) + 16 @@ -517,6 +523,7 @@ func (s *LevelScene) drawHUD(g *Game, screen *ebiten.Image) { } box = image.Rect(0, y, ScreenW, y+h) } + s.infoBox = box if !s.hideMap { s.drawMinimap(g, screen, box, hasBox) } @@ -553,7 +560,11 @@ func (s *LevelScene) infoLines(a *Assets) (lines []line, accent color.Color, bar if tr, at, secs := r.PlatformHere(); tr != nil { // Avgångstavlan är en skylt som alla andra: japanska, sedd genom kunskapen. rd := lang.Render(a.Dict, r.Know, tr.BoardText(), UILang) - lines = append(lines, a.wrapLine(shownLine(rd.Original, colText, r.Know.ShowsReadings()), maxW)...) + if s.highlight { + lines = append(lines, a.wrapLine(highlightLine(tr.BoardText(), lvl.Destination.Get("ja"), colGood, colDim), maxW)...) + } else { + lines = append(lines, a.wrapLine(shownLine(rd.Original, colText, r.Know.ShowsReadings()), maxW)...) + } lines = append(lines, a.wrapLine(shownLine(rd.Partial, colText, false), maxW)...) if english { lines = append(lines, a.wrapLine(plainLine(fmt.Sprintf("%s: Track %s %s for %s", a.T("hud.english"), tr.Track, @@ -594,7 +605,11 @@ func (s *LevelScene) infoLines(a *Assets) (lines []line, accent color.Color, bar accent = colKnown } rd := lang.Render(a.Dict, know, sg.Text["ja"], UILang) - lines = append(lines, a.wrapLine(shownLine(rd.Original, colText, r.Know.ShowsReadings()), maxW)...) + if s.highlight { + lines = append(lines, a.wrapLine(highlightLine(sg.Text["ja"], lvl.Destination.Get("ja"), colGood, colDim), maxW)...) + } else { + lines = append(lines, a.wrapLine(shownLine(rd.Original, colText, r.Know.ShowsReadings()), maxW)...) + } lines = append(lines, a.wrapLine(shownLine(rd.Partial, colText, false), maxW)...) if english { lines = append(lines, a.wrapLine(plainLine(a.T("hud.english")+": "+sg.Text.Get("en"), colEnglish), maxW)...) diff --git a/internal/game/scene_map.go b/internal/game/scene_map.go index 5ed23a0..4278426 100644 --- a/internal/game/scene_map.go +++ b/internal/game/scene_map.go @@ -91,7 +91,8 @@ func (m *MapScene) current() *level.Level { func (m *MapScene) Update(g *Game) error { switch { case backJustPressed(): - return ebiten.Termination + g.SetScene(NewTitleScene()) + return nil case wordsJustPressed(): g.SetScene(NewWordsScene(g.Assets, m)) return nil diff --git a/internal/game/scene_title.go b/internal/game/scene_title.go new file mode 100644 index 0000000..3339b50 --- /dev/null +++ b/internal/game/scene_title.go @@ -0,0 +1,211 @@ +package game + +import ( + "fmt" + "image/color" + "math" + + "github.com/hajimehoshi/ebiten/v2" + "github.com/hajimehoshi/ebiten/v2/vector" + + "gitea.brasse-pc.eu/brasse/metro-puzzle-jp/internal/buildinfo" +) + +// TitleScene är titelskärmen: premissen i text och menyn Fortsätt/Starta, +// Tutorial, Inställningar, Avsluta (Enter två gånger). +type TitleScene struct { + sel int + t float64 + confirm bool // Avsluta valt en gång +} + +// NewTitleScene öppnar titelskärmen. +func NewTitleScene() *TitleScene { return &TitleScene{} } + +const titleItems = 4 + +func (s *TitleScene) Update(g *Game) error { + s.t += dt + if mv := menuMove(); mv != 0 { + s.sel = (s.sel + mv + titleItems) % titleItems + s.confirm = false + } + if backJustPressed() { + s.confirm = false + } + if !confirmJustPressed() { + return nil + } + g.Audio.Play(SoundConfirm, 0.6) + switch s.sel { + case 0: + g.SetScene(NewMapScene(g)) + case 1: + g.SetScene(NewTutorialScene(s)) + case 2: + g.SetScene(NewSettingsScene(s)) + case 3: + if s.confirm { + return ebiten.Termination + } + s.confirm = true + } + return nil +} + +func (s *TitleScene) Draw(g *Game, screen *ebiten.Image) { + a := g.Assets + screen.Fill(color.RGBA{24, 20, 37, 255}) + // Räls längs nederkanten med ett tåg som rullar förbi. + railY := ScreenH - 28 + for x := 0; x < ScreenW; x += TileSize { + var op ebiten.DrawImageOptions + op.GeoM.Translate(float64(x), float64(railY)) + screen.DrawImage(a.Rails, &op) + } + tx := math.Mod(s.t*40, float64(ScreenW+6*TileSize)) - 3*TileSize + for i := 0; i < 3; i++ { + var op ebiten.DrawImageOptions + op.GeoM.Translate(tx+float64(i*TileSize), float64(railY-TileSize+4)) + screen.DrawImage(a.Train, &op) + } + a.DrawBig(screen, a.T("game.title"), 16, 8, colKnown) + ver := fmt.Sprintf("%s (%s)", buildinfo.Version, buildinfo.Mode) + a.Draw(screen, ver, ScreenW-8-a.Width(ver), 10, colDim) + y := 30 + for _, l := range a.wrapLine(plainLine(a.T("title.premise"), colText), ScreenW-32) { + a.drawLines(screen, []line{l}, 16, y) + y += LineH + } + start := a.T("menu.continue") + if g.Progress.TotalStars() == 0 && len(g.Progress.Levels) == 0 { + start = a.T("menu.start") + } + items := [titleItems]string{start, a.T("title.tutorial"), a.T("menu.settings"), a.T("menu.quit")} + y += 6 + for i, it := range items { + col := colText + if i == s.sel { + vector.DrawFilledRect(screen, 12, float32(y-2), 130, LineH, colBar, false) + col = colKnown + a.Draw(screen, "▶", 14, y, colKnown) + } + a.Draw(screen, it, 26, y, col) + y += LineH + } + if s.confirm { + a.Draw(screen, a.T("title.quit_confirm"), 150, y-LineH, colWarn) + } + a.Draw(screen, a.T("title.hint"), 8, ScreenH-12, colDim) +} + +// LangScene visas första gången spelet startar: välj språk. +type LangScene struct{ sel int } + +var langChoices = []string{"sv", "en"} + +func (s *LangScene) Update(g *Game) error { + if mv := menuMove(); mv != 0 { + s.sel = (s.sel + mv + len(langChoices)) % len(langChoices) + } + if confirmJustPressed() { + g.State.Settings.Lang = langChoices[s.sel] + g.applySettings() + g.Save() + g.Audio.Play(SoundConfirm, 0.6) + g.SetScene(NewTitleScene()) + } + return nil +} + +func (s *LangScene) Draw(g *Game, screen *ebiten.Image) { + a := g.Assets + screen.Fill(color.RGBA{24, 20, 37, 255}) + a.DrawBig(screen, a.T("game.title"), 16, 10, colKnown) + a.Draw(screen, "Välj språk / Choose language", 16, 50, colText) + y := 72 + for i, l := range langChoices { + col := colText + if i == s.sel { + vector.DrawFilledRect(screen, 12, float32(y-2), 130, LineH+2, colBar, false) + col = colKnown + a.Draw(screen, "▶", 14, y, colKnown) + } + a.Draw(screen, a.T("lang."+l), 26, y, col) + y += LineH + 1 + } + a.Draw(screen, "Pilar + Enter / Arrows + Enter", 16, y+8, colDim) +} + +// PauseScene är pausmenyn i en bana (Esc): Fortsätt, Lämna banan, +// Inställningar, Avsluta spelet (Enter två gånger). Esc igen fortsätter. +type PauseScene struct { + from *LevelScene + sel int + confirm bool +} + +const pauseItems = 4 + +// NewPauseScene pausar banan. +func NewPauseScene(from *LevelScene) *PauseScene { return &PauseScene{from: from} } + +func (s *PauseScene) Update(g *Game) error { + if backJustPressed() { + g.SetScene(s.from) + return nil + } + if mv := menuMove(); mv != 0 { + s.sel = (s.sel + mv + pauseItems) % pauseItems + s.confirm = false + } + if !confirmJustPressed() { + return nil + } + g.Audio.Play(SoundConfirm, 0.6) + switch s.sel { + case 0: + g.SetScene(s.from) + case 1: + if s.from.endless { + g.endEndless() + } + g.SetScene(NewMapScene(g)) + case 2: + g.SetScene(NewSettingsScene(s)) + case 3: + if s.confirm { + return ebiten.Termination + } + s.confirm = true + } + return nil +} + +func (s *PauseScene) Draw(g *Game, screen *ebiten.Image) { + s.from.Draw(g, screen) + a := g.Assets + vector.DrawFilledRect(screen, 0, 0, ScreenW, ScreenH, color.RGBA{0, 0, 0, 120}, false) + vector.DrawFilledRect(screen, 40, 40, ScreenW-80, 104, colPanel, false) + vector.DrawFilledRect(screen, 40, 40, ScreenW-80, 2, colWarn, false) + a.DrawBig(screen, a.T("pause.title"), 48, 46, colText) + items := [pauseItems]string{a.T("pause.resume"), a.T("pause.leave"), a.T("menu.settings"), a.T("pause.quit")} + y := 68 + for i, it := range items { + col := colText + if i == s.sel { + vector.DrawFilledRect(screen, 44, float32(y-2), ScreenW-88, LineH+2, colBar, false) + col = colKnown + } + a.Draw(screen, it, 50, y, col) + y += LineH + 2 + } + msg := a.T("pause.hint") + if s.confirm { + msg = a.T("pause.quit_confirm") + } + for _, l := range a.wrapLine(plainLine(msg, colDim), ScreenW-96) { + a.drawLines(screen, []line{l}, 48, y+2) + y += LineH + } +} diff --git a/internal/game/scene_tutorial.go b/internal/game/scene_tutorial.go new file mode 100644 index 0000000..45156a0 --- /dev/null +++ b/internal/game/scene_tutorial.go @@ -0,0 +1,92 @@ +package game + +import ( + "fmt" + "image/color" + "strings" + + "github.com/hajimehoshi/ebiten/v2" + "github.com/hajimehoshi/ebiten/v2/vector" + + "gitea.brasse-pc.eu/brasse/metro-puzzle-jp/internal/level" +) + +// TutorialScene är genomgången av grundmekaniken i fem sidor: målet och +// stationen, hur man läser en skylt (med resmålet markerat och resten +// nedtonat), kort/biljetter/spärrar, sällskapet och tåget, lägen och +// tangenter. ←/→ bläddrar, Esc går tillbaka. +type TutorialScene struct { + back Scene + page int +} + +const tutorialPages = 5 + +// NewTutorialScene öppnar tutorialen. +func NewTutorialScene(back Scene) *TutorialScene { return &TutorialScene{back: back} } + +func (s *TutorialScene) Update(g *Game) error { + if backJustPressed() { + g.SetScene(s.back) + return nil + } + dx, _ := miniMoveXY() + if confirmJustPressed() { + dx = 1 + } + if dx != 0 { + s.page += dx + if s.page >= tutorialPages { + g.SetScene(s.back) + return nil + } + if s.page < 0 { + s.page = 0 + } + g.Audio.Play(SoundConfirm, 0.4) + } + return nil +} + +func (s *TutorialScene) Draw(g *Game, screen *ebiten.Image) { + a := g.Assets + screen.Fill(color.RGBA{24, 20, 37, 255}) + vector.DrawFilledRect(screen, 0, 0, ScreenW, 22, color.RGBA{38, 43, 68, 255}, false) + key := fmt.Sprintf("tutorial.p%d", s.page+1) + a.DrawBig(screen, a.T(key+".title"), 8, 5, colText) + a.Draw(screen, fmt.Sprintf(a.T("tutorial.page"), s.page+1, tutorialPages), ScreenW-70, 8, colDim) + y := 28 + for _, para := range strings.Split(a.T(key), "\n") { + for _, l := range a.wrapLine(plainLine(para, colText), ScreenW-16) { + a.drawLines(screen, []line{l}, 8, y) + y += LineH + } + y += 3 + } + switch s.page { + case 0: // rutlegend med riktiga sprites + x := 12 + for _, t := range []struct { + tile level.Tile + key string + }{{level.Sign, "tile.sign"}, {level.Gate, "tile.gate"}, {level.TicketMachine, "tile.machine"}, {level.Toilet, "tile.toilet"}, {level.Kiosk, "tile.kiosk"}, {level.Platform, "tile.platform"}} { + var op ebiten.DrawImageOptions + op.GeoM.Scale(2, 2) + op.GeoM.Translate(float64(x), float64(y)) + screen.DrawImage(a.Tiles[t.tile], &op) + a.Draw(screen, a.T(t.key), x, y+2*TileSize+2, colDim) + x += 52 + } + case 1: // exempelskylten: resmålet markerat, resten nedtonat + sample := "14番線 山手線 渋谷方面 → 南東口 改札" + body := append([]line{highlightLine(sample, "渋谷", colGood, colDim)}, a.wrapLine(line{{"→ ", colDim}, {a.T("tutorial.p2.sample"), colText}}, ScreenW-28)...) + vector.DrawFilledRect(screen, 8, float32(y), ScreenW-16, float32(LineH*len(body)+8), colPanel, false) + a.drawLines(screen, body, 14, y+4) + y += LineH*len(body) + 12 + for _, l := range a.wrapLine(plainLine(a.T("tutorial.p2b"), colText), ScreenW-16) { + a.drawLines(screen, []line{l}, 8, y) + y += LineH + } + } + a.Draw(screen, a.T("tutorial.hint"), 8, ScreenH-12, colDim) +} diff --git a/internal/game/text.go b/internal/game/text.go index 547db1b..ecabef9 100644 --- a/internal/game/text.go +++ b/internal/game/text.go @@ -135,3 +135,26 @@ func (a *Assets) drawLines(dst drawTarget, lines []line, x, y int) { } } } + +// highlightLine är tutorialens sätt att läsa en skylt: resmålets japanska +// tecken i markeringsfärg, allt annat nedtonat. +func highlightLine(text, needle string, hi, dim color.Color) line { + if needle == "" || !strings.Contains(text, needle) { + return plainLine(text, dim) + } + var l line + for { + i := strings.Index(text, needle) + if i < 0 { + if text != "" { + l = append(l, span{text, dim}) + } + return l + } + if i > 0 { + l = append(l, span{text[:i], dim}) + } + l = append(l, span{needle, hi}) + text = text[i+len(needle):] + } +} diff --git a/internal/game/text_test.go b/internal/game/text_test.go new file mode 100644 index 0000000..e53ab6d --- /dev/null +++ b/internal/game/text_test.go @@ -0,0 +1,16 @@ +package game + +import "testing" + +func TestHighlightDestination(t *testing.T) { + l := highlightLine("14番線 山手線 渋谷方面 → 南東", "渋谷", colGood, colDim) + if len(l) != 3 || l[0].text != "14番線 山手線 " || l[1].text != "渋谷" || l[1].col != colGood || l[2].col != colDim { + t.Fatalf("spans = %+v", l) + } + if l := highlightLine("渋谷 渋谷", "渋谷", colGood, colDim); len(l) != 3 || l[0].col != colGood || l[2].col != colGood { + t.Fatalf("flera träffar: %+v", l) + } + if l := highlightLine("東京方面", "渋谷", colGood, colDim); len(l) != 1 || l[0].col != colDim { + t.Fatalf("ingen träff: allt nedtonat, fick %+v", l) + } +} diff --git a/internal/game/tips.go b/internal/game/tips.go new file mode 100644 index 0000000..9e81bf7 --- /dev/null +++ b/internal/game/tips.go @@ -0,0 +1,85 @@ +package game + +import ( + "strings" + + "github.com/hajimehoshi/ebiten/v2" + "github.com/hajimehoshi/ebiten/v2/vector" +) + +// Tutorialtips i spelet: visas en gång var, i ordning när villkoret +// uppfylls, tills första banan är klarad. {dest} och {ja} byts mot +// resmålet i latinska bokstäver respektive japanska tecken. +type tipDef struct { + key string + when func(s *LevelScene) bool +} + +var tutorialTips = []tipDef{ + {"tip.start", func(s *LevelScene) bool { return true }}, + {"tip.sign", func(s *LevelScene) bool { return s.run.SignHere() != nil }}, + {"tip.party", func(s *LevelScene) bool { return len(s.run.Party.Urges()) > 0 }}, + {"tip.gate", func(s *LevelScene) bool { return s.run.DeniedAt >= 0 || s.run.GatePasses > 0 }}, + {"tip.platform", func(s *LevelScene) bool { tr, _, _ := s.run.PlatformHere(); return tr != nil }}, +} + +const tipShowSec = 7.0 + +type tipState struct { + shown map[string]bool + current string + since float64 +} + +// tutorialActive: tipsen och skyltmarkeringen gäller tills första banan är +// klarad (och aldrig i oändligt läge). +func (s *LevelScene) tutorialActive(g *Game) bool { + return !s.endless && !g.Progress.Cleared("001-flygplatsen") +} + +// updateTips väljer nästa tips som ska visas. +func (s *LevelScene) updateTips(g *Game) { + if !s.tutorialActive(g) { + return + } + r := s.run + t := &s.tips + if t.shown == nil { + t.shown = map[string]bool{} + } + if t.current != "" && r.Time-t.since < tipShowSec { + return + } + t.current = "" + for _, d := range tutorialTips { + if !t.shown[d.key] && d.when(s) { + t.shown[d.key] = true + t.current, t.since = d.key, r.Time + return + } + } +} + +// tipText fyller i resmålet i ett tips. +func (s *LevelScene) tipText(a *Assets, key string) string { + d := s.run.Level.Destination + return strings.NewReplacer("{dest}", d.Get("romaji"), "{ja}", d.Get("ja")).Replace(a.T(key)) +} + +// drawTip ritar det aktuella tipset under HUD:en. +func (s *LevelScene) drawTip(g *Game, screen *ebiten.Image) { + t := &s.tips + if t.current == "" || s.run.Mini != nil || s.run.Outcome != 0 { + return + } + a := g.Assets + lines := a.wrapLine(highlightLine(s.tipText(a, t.current), s.run.Level.Destination.Get("ja"), colGood, colText), ScreenW-16) + h := 6 + LineH*len(lines) + y := 26 + if s.infoBox.Dy() > 0 && s.infoBox.Min.Y < ScreenH/2 { + y = s.infoBox.Max.Y + 2 // inforutan ligger upptill: lägg tipset under den + } + vector.DrawFilledRect(screen, 4, float32(y), ScreenW-8, float32(h), colPanel, false) + vector.DrawFilledRect(screen, 4, float32(y), 2, float32(h), colKnown, false) + a.drawLines(screen, lines, 10, y+3) +} diff --git a/resources/text/en.json b/resources/text/en.json index 8265d4f..c26166e 100644 --- a/resources/text/en.json +++ b/resources/text/en.json @@ -15,7 +15,7 @@ "level.failed": "You missed too many trains…", "level.cleared": "Arrived!", "menu.choose_level": "Choose a level:", - "menu.hint": "Arrows/WASD: select Enter: start L: word list Esc: quit", + "menu.hint": "Arrows: choose Enter: select", "hud.time": "Time", "hud.steps": "Steps", "hud.controls": "Esc: menu M: map", @@ -202,8 +202,8 @@ "hud.mode_signs": "Sign mode: work out the train yourself, +50 % score", "hud.terminal": "Lines from here (terminal):", "menu.mode": "N: navigation %s", - "mode.list": "list mode (next train shown)", - "mode.signs": "sign mode (+50 % score)", + "mode.list": "list", + "mode.signs": "signs (+50 %)", "result.bonus": "sign bonus", "result.lost_wrong_direction": "Wrong direction.", "result.lost_too_far": "Too far away.", @@ -235,8 +235,8 @@ "hud.staff_busy": "Staff on the way...", "hud.staff_unlocked": "The staff unlocked the cards - you can leave.", "hud.unlocked_prompt": "Cards unlocked: you can leave. Entering again costs again.", - "map.endless": "O: endless mode", - "map.endless_best": "best %d points, %d goals", + "map.endless": "O: endless", + "map.endless_best": "best %d pts, %d goals", "map.ngplus": "G: New Game+", "map.ngplus_level": "NG+%d", "map.ngplus_confirm": "Press G again: the story restarts with skills and XP kept. Items, stars and money reset, the party grows.", @@ -256,5 +256,40 @@ "settings.hint": "Arrows: pick row / change Enter: toggle Esc: back", "settings.keys": "Arrows/WASD walk, Enter select, Esc back, H help, L words, T skills, I wardrobe, B shop, M map, N mode, O endless, G NG+, S settings, F11 fullscreen. Gamepad: A select, B back, Y help, X words, Back map.", "lang.sv": "Svenska", - "lang.en": "English" + "lang.en": "English", + "title.premise": "A few friends are on holiday in Japan. Every station is a maze where almost everything is written in Japanese: read the signs, keep the party fed, watered and out of the toilet queue, find the right platform and board the right train before it leaves. In the end you have to get back to the airport.", + "title.tutorial": "Tutorial", + "title.quit_confirm": "Enter again to quit, Esc cancels.", + "title.hint": "Arrows: choose Enter: select F11: fullscreen", + "pause.title": "Paused", + "pause.resume": "Continue", + "pause.leave": "Leave the level (progress on it is lost)", + "pause.quit": "Quit the game", + "pause.hint": "Esc: continue Enter: select", + "pause.quit_confirm": "Enter again to quit the game, Esc cancels.", + "tutorial.hint": "←/→ or Enter: next page Esc: back", + "tutorial.page": "page %d/%d", + "tutorial.p1.title": "The goal and the station", + "tutorial.p1": "Every level is a station. Your destination is shown in the HUD, in Latin letters and Japanese. Find the platform with the right train, pass the gate and board when the train is in.\nSigns (blue boards on a pole) show the way. This is what a sign, gate, machine, toilet, kiosk and platform look like:", + "tutorial.p2.title": "How to read a sign", + "tutorial.p2": "You do not need to know Japanese. Memorise the characters of your destination in the HUD and look for exactly those characters on the signs. Everything else can fade away:", + "tutorial.p2.sample": "track 14, Yamanote Line, for Shibuya, south-east exit, gate", + "tutorial.p2b": "Three words appear everywhere: 番線 = track, 方面 = for (direction), 改札 = gate. Standing on a sign you can press H to ask someone for help. Words you read often are learned and then translated automatically.", + "tutorial.p3.title": "Cards, tickets and gates", + "tutorial.p3": "The gate charges the fare from your card when you enter the paid area. Empty card? Top up at the machine (T): find the チャージ button and feed notes with Enter.\nOn ticket levels you buy a ticket at the machine: pick the row whose characters match the destination in the HUD, character by character. Everyone in the party needs a ticket.\nWith individual cards everyone needs a balance, and at the kiosk you choose who pays. At some stations the gate will not let you out again: Enter at the gate calls the staff.", + "tutorial.p4.title": "The party and the train", + "tutorial.p4": "Your friends follow you. The meters top right show food, drink and toilet: the kiosk (K) fills food and drink, the toilet (W) solves toilet needs. Hungry, thirsty and desperate friends slow you down.\nWhen the train is in: let people off first, pick a car with the arrows (few people gives a bonus, the pink car is women only) and press Enter at your destination during the ride. Do not ride past it!", + "tutorial.p5.title": "Modes and keys", + "tutorial.p5": "List mode shows which train to take. Sign mode lets you work it out yourself for +50 % score, but do not go the wrong way. The terminal at the machine shows the lines with neighbouring stations.\nArrows/WASD walk, Enter select, Esc pause, H help at a sign, L words, T skills, I wardrobe, B shop at a kiosk, M minimap. On the level map: N mode, S settings, O endless mode, G New Game+.", + "tile.sign": "sign", + "tile.gate": "gate", + "tile.machine": "machine", + "tile.toilet": "toilet", + "tile.kiosk": "kiosk", + "tile.platform": "platform", + "tip.start": "Tip: the destination is {dest}. On the signs it reads {ja} - look for those characters. Blue boards on a pole are signs.", + "tip.sign": "Tip: reading the sign - {ja} is the destination (highlighted), 番線 = track, 方面 = for. Press H to ask for help.", + "tip.party": "Tip: someone in the party needs something. The kiosk (K) gives food and drink, the toilet (W) solves toilet needs.", + "tip.gate": "Tip: the gate charges the fare from your card when you enter. Top up an empty card at the machine (T).", + "tip.platform": "Tip: wait for the train and press Enter when it is in. Let people off, pick a car with the arrows." } diff --git a/resources/text/sv.json b/resources/text/sv.json index 51eea77..db7e306 100644 --- a/resources/text/sv.json +++ b/resources/text/sv.json @@ -15,7 +15,7 @@ "level.failed": "Du missade för många tåg…", "level.cleared": "Framme!", "menu.choose_level": "Välj bana:", - "menu.hint": "Pilar/WASD: välj Enter: starta L: ordlista Esc: avsluta", + "menu.hint": "Pilar: välj Enter: välj", "hud.time": "Tid", "hud.steps": "Steg", "hud.controls": "Esc: meny M: karta", @@ -202,8 +202,8 @@ "hud.mode_signs": "Skyltläge: lista ut tåget själv, +50 % poäng", "hud.terminal": "Linjer härifrån (terminal):", "menu.mode": "N: navigering %s", - "mode.list": "listläge (nästa tåg visas)", - "mode.signs": "skyltläge (+50 % poäng)", + "mode.list": "lista", + "mode.signs": "skyltar (+50 %)", "result.bonus": "skyltbonus", "result.lost_wrong_direction": "Fel håll.", "result.lost_too_far": "För långt bort.", @@ -235,8 +235,8 @@ "hud.staff_busy": "Personalen kommer...", "hud.staff_unlocked": "Personalen låste upp korten - du kan gå ut.", "hud.unlocked_prompt": "Korten är upplåsta: du kan gå ut. Ny inpassering kostar igen.", - "map.endless": "O: oändligt läge", - "map.endless_best": "bästa %d poäng, %d mål", + "map.endless": "O: oändligt", + "map.endless_best": "bästa %d p, %d mål", "map.ngplus": "G: New Game+", "map.ngplus_level": "NG+%d", "map.ngplus_confirm": "Tryck G igen: storyn börjar om med skills och XP kvar. Items, stjärnor och pengar nollställs, sällskapet blir större.", @@ -256,5 +256,40 @@ "settings.hint": "Pilar: välj rad / ändra Enter: växla Esc: tillbaka", "settings.keys": "Pilar/WASD gå, Enter välj, Esc tillbaka, H hjälp, L ord, T skills, I garderob, B butik, M karta, N läge, O oändligt, G NG+, S inställningar, F11 fullskärm. Gamepad: A välj, B tillbaka, Y hjälp, X ord, Back karta.", "lang.sv": "Svenska", - "lang.en": "English" + "lang.en": "English", + "title.premise": "Några polare på semester i Japan. Varje station är en labyrint där nästan allt står på japanska: läs skyltarna, håll sällskapet mätt, torrt och på toa, hitta rätt perrong och kliv på rätt tåg innan det går. Till slut ska ni hem till flygplatsen.", + "title.tutorial": "Tutorial", + "title.quit_confirm": "Enter igen för att avsluta, Esc avbryter.", + "title.hint": "Pilar: välj Enter: välj F11: fullskärm", + "pause.title": "Paus", + "pause.resume": "Fortsätt", + "pause.leave": "Lämna banan (framsteg på banan försvinner)", + "pause.quit": "Avsluta spelet", + "pause.hint": "Esc: fortsätt Enter: välj", + "pause.quit_confirm": "Enter igen för att avsluta spelet, Esc avbryter.", + "tutorial.hint": "←/→ eller Enter: bläddra Esc: tillbaka", + "tutorial.page": "sida %d/%d", + "tutorial.p1.title": "Målet och stationen", + "tutorial.p1": "Varje bana är en station. Resmålet står uppe i HUD:en, på latinska bokstäver och japanska. Hitta perrongen med rätt tåg, passera spärren och kliv på när tåget står inne.\nSkyltarna (blå tavlor på stolpe) visar vägen. Så här ser skylt, spärr, automat, toalett, kiosk och perrong ut:", + "tutorial.p2.title": "Så läser du en skylt", + "tutorial.p2": "Du behöver inte kunna japanska. Memorera resmålets tecken i HUD:en och leta efter exakt samma tecken på skyltarna. Allt annat kan du tona bort:", + "tutorial.p2.sample": "spår 14, Yamanote-linjen, mot Shibuya, sydöstra utgången, spärr", + "tutorial.p2b": "Tre ord återkommer överallt: 番線 = spår, 方面 = mot (riktning), 改札 = spärr. Står du på en skylt kan du trycka H och fråga någon om hjälp. Ord du läser ofta lär du dig, och då översätts de automatiskt.", + "tutorial.p3.title": "Kort, biljetter och spärrar", + "tutorial.p3": "Spärren drar avgiften från tågkortet när du går in i det betalda området. Tomt kort? Fyll på i automaten (T): hitta knappen チャージ och mata in sedlar med Enter.\nPå biljettbanor köper du biljett i automaten: välj raden vars tecken matchar resmålet i HUD:en, tecken för tecken. Alla i sällskapet behöver biljett.\nMed egna kort måste alla ha saldo, och i kiosken väljer du vem som betalar. På vissa stationer släpper spärren inte ut dig igen: Enter vid spärren kallar på personal.", + "tutorial.p4.title": "Sällskapet och tåget", + "tutorial.p4": "Dina polare följer efter dig. Mätarna uppe till höger visar mat, dryck och toa: kiosken (K) fyller mat och dryck, toaletten (W) löser toabehov. Hungriga, törstiga och kissnödiga saktar ner dig.\nNär tåget står inne: låt folk kliva av först, välj vagn med pilarna (lite folk ger bonus, rosa vagn är bara för kvinnor) och tryck Enter vid ditt resmål under resan. Åk inte förbi!", + "tutorial.p5.title": "Lägen och tangenter", + "tutorial.p5": "Listläge visar vilket tåg du ska ta. Skyltläge låter dig lista ut det själv för +50 % poäng, men åk inte åt fel håll. Terminalen vid automaten visar linjerna med grannstationer.\nPilar/WASD gå, Enter välj, Esc paus, H hjälp vid skylt, L ordlista, T skills, I garderob, B butik vid kiosk, M minikarta. På bankartan: N läge, S inställningar, O oändligt läge, G New Game+.", + "tile.sign": "skylt", + "tile.gate": "spärr", + "tile.machine": "automat", + "tile.toilet": "toalett", + "tile.kiosk": "kiosk", + "tile.platform": "perrong", + "tip.start": "Tips: resmålet är {dest}. På skyltarna står det {ja} - leta efter de tecknen. Blå tavlor på stolpe är skyltar.", + "tip.sign": "Tips: så läser du skylten - {ja} är resmålet (markerat), 番線 = spår, 方面 = mot. Tryck H för att fråga om hjälp.", + "tip.party": "Tips: någon i sällskapet behöver något. Kiosken (K) ger mat och dryck, toaletten (W) löser toabehov.", + "tip.gate": "Tips: spärren drar avgiften från kortet när du går in. Tomt kort fylls på i automaten (T).", + "tip.platform": "Tips: vänta in tåget och tryck Enter när det står inne. Låt folk kliva av, välj vagn med pilarna." } diff --git a/tools/shots/main.go b/tools/shots/main.go index c594764..a6fd27e 100644 --- a/tools/shots/main.go +++ b/tools/shots/main.go @@ -55,7 +55,7 @@ type shot struct { // bilderna överlever ändringar i banorna. var shots []shot -var demo string +var demo, fresh string func buildShots(levelsDir string) error { l, err := level.LoadFile(filepath.Join(levelsDir, "001-flygplatsen.json")) @@ -169,6 +169,8 @@ func buildShots(levelsDir string) error { {"007-akihabara", toKiosk7 + "; urge Ville; press enter; wait 5; press right; wait 3; shot $OUT/payer.png; quit", []string{"-seed", "7"}}, {"", "wait 10; shot $OUT/endless.png; quit", []string{"-endless", "-seed", "7", "-mode", "list", "-save", "$DEMO"}}, {"", "wait 10; press s; wait 5; press down; wait 3; shot $OUT/settings.png; quit", []string{"-save", "$DEMO"}}, + {"", "wait 10; shot $OUT/lang.png; press enter; wait 30; shot $OUT/title.png; press down; press enter; wait 5; press right; wait 5; shot $OUT/tutorial.png; quit", []string{"-save", "$FRESH"}}, + {"001-flygplatsen", "wait 40; shot $OUT/tips.png; " + toSign + "; wait 5; shot $OUT/tips-sign.png; press esc; wait 5; shot $OUT/pause.png; quit", []string{"-seed", "7", "-save", "$FRESH"}}, {"005-ueno", toPlatform5 + "; " + toGateBack + "; wait 5; push " + pushOut + " 30; wait 3; shot $OUT/no-exit.png; press enter; wait 150; shot $OUT/staff.png; quit", []string{"-seed", "7"}}, } return nil @@ -252,6 +254,8 @@ func main() { demo = filepath.Join(root, "build", "demo-save.json") must(os.MkdirAll(filepath.Dir(demo), 0o755)) must(demoSave(demo)) + fresh = filepath.Join(root, "build", "fresh-save.json") // finns inte: första starten (språkval, titel, tips) + os.Remove(fresh) must(buildShots(filepath.Join(root, "resources", "data", "levels"))) build := exec.Command("go", "run", "./tools/build", "-mode", "debug") @@ -280,7 +284,7 @@ func main() { args = append(args, "-level", s.level) } for _, a := range s.args { - args = append(args, strings.ReplaceAll(a, "$DEMO", demo)) + args = append(args, strings.ReplaceAll(strings.ReplaceAll(a, "$DEMO", demo), "$FRESH", fresh)) } run := exec.Command(exe, args...) run.Dir, run.Stdout, run.Stderr = filepath.Dir(exe), os.Stdout, os.Stderr