From d16a8657aa69c4fc6ffb3d252c58ae03cfdc20d2 Mon Sep 17 00:00:00 2001 From: Noah Petherbridge Date: Thu, 30 Dec 2021 16:31:45 -0800 Subject: [PATCH] Window Icon, UI Polish * SDL2 builds of the game now set their app window icon. * Create/Edit Level window is updated to show a tabbed UI to create a new Level or a new Doodad. The dedicated main menu button to create a new doodad (which immediately prompted for its size) is replaced by this new tab's UI. * Edit Drawing/Play Level window is more responsive to smaller screen sizes by drawing fewer columns of filenames. * Bugfix: the Alert and Confirm modals always re-center themselves on screen, especially to adapt between Portrait or Landscape mode on a mobile device. --- assets/icons/1024.png | Bin 0 -> 91582 bytes assets/icons/128.png | Bin 0 -> 8066 bytes assets/icons/16.png | Bin 0 -> 785 bytes assets/icons/256.png | Bin 0 -> 17053 bytes assets/icons/32.png | Bin 0 -> 1725 bytes assets/icons/512.png | Bin 0 -> 39872 bytes assets/icons/64.png | Bin 0 -> 3903 bytes assets/icons/96.png | Bin 0 -> 6039 bytes cmd/doodle/main.go | 11 + pkg/balance/theme.go | 2 + pkg/editor_ui_menubar.go | 2 +- pkg/enum/enum.go | 8 + pkg/main_scene.go | 97 +-- pkg/menu_scene.go | 6 + pkg/modal/modal.go | 10 +- pkg/windows/add_edit_level.go | 1025 +++++++++++++++++------------- pkg/windows/levelpack_open.go | 25 +- pkg/windows/open_level_editor.go | 17 +- 18 files changed, 692 insertions(+), 511 deletions(-) create mode 100644 assets/icons/1024.png create mode 100644 assets/icons/128.png create mode 100644 assets/icons/16.png create mode 100644 assets/icons/256.png create mode 100644 assets/icons/32.png create mode 100644 assets/icons/512.png create mode 100644 assets/icons/64.png create mode 100644 assets/icons/96.png diff --git a/assets/icons/1024.png b/assets/icons/1024.png new file mode 100644 index 0000000000000000000000000000000000000000..7d0ea83926040abb36561f7919dfc851084b7b0d GIT binary patch literal 91582 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 UzliVU@m>nO!By1I5me@+Z< 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 literal 0 HcmV?d00001 diff --git a/assets/icons/16.png b/assets/icons/16.png new file mode 100644 index 0000000000000000000000000000000000000000..46428d23e5a5068200cfc0aff0005a6d2c323371 GIT binary patch literal 785 zcmV+s1Md8ZP)ZADUTn_3*OHX3c;kn|lFCeK(eTsZKb;hyi@qq@7h_r*MK zOCcWj0es&lm&=8s(dam(BO>^|Pvucc`T2bQs*c5CEpgXfD9I!ug6DZ0I(Cvt(HONg z)vRw?M>?Gj5{XD)E2RuABB4t0-1!SM>^Oj~tw-!pu0FWN^hb|qZEgK0xMYV6&qLV` z*tU?#WEu1{Os?nE*`pNoBod9=c=_fXwk%tVYqbZ9Cd3qqBWS7 ziTeHttsy*R8pFdwSe9T}LO2YTC1~x7;W)l>T!n25EiK#0-oH(uAk?keL|@x=JWoi> zUruM|g~-wkGX{feli&dnao=bA3wtE)f=d7 z+>G*ze7JFum@~qjJ^O>;A3t(0{%N5MDH5q>?#f2u)9ZM4ayQ!2%xKxg(C}AG(+^q* zg~r8jT?rtTA+@)65=k$?YFI{M#vDcm`Y0A5JarbYUuSS#Rf1^zg;+VB6)TqV^?5s5 z3-yf~`PgxjP)JCvTu(>Gy$Xo_ABYpdq*5uyhWY@|iD`KD7yv^LZ_(V`9QXnlg@XF8 z1;>FzB+9_`%XmM3F?;7B?7;zQwIZ2JRr~`(ss8@{Cvn$ZJYF${a`v8{9`3Z=<;yRJ z(eK|led+{S>p&kF8F{L@y1Mp8Yf8=PSPf9a^JSk(Lne P00000NkvXXu0mjfgW70( literal 0 HcmV?d00001 diff --git a/assets/icons/256.png b/assets/icons/256.png new file mode 100644 index 0000000000000000000000000000000000000000..0b8e7b3c5c82b36b451bbc86b1a856215c7861cc GIT binary patch literal 17053 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 literal 0 HcmV?d00001 diff --git a/assets/icons/32.png b/assets/icons/32.png new file mode 100644 index 0000000000000000000000000000000000000000..2899bfcf7edc96619d0f12499eeef471a5a070d5 GIT binary patch literal 1725 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 literal 0 HcmV?d00001 diff --git a/assets/icons/64.png b/assets/icons/64.png new file mode 100644 index 0000000000000000000000000000000000000000..b98f72962795053d51eab64f0493749ccd96822c GIT binary patch literal 3903 zcmV-F55Vw=P){&^~pSGQD#xr z@o>#k&N)^Bf^yVAQNihIkXi|KN3;5g{?gz348LdXwbt{z z&$|$4BkR|%cNYXCj$hbLn%E|bZ+iJ}-TN|Mya%gf8dQGv?J%1B8`L6Rg! zj1EUGm$QBQcH-jVxc~n9S+HOM$B!RJqtX1YB@f`?;o<4*?A%8LL`Mc%v}h4cO-(%Y zAIVJLmdBcN>cRgXEK;2U%ki2ulv*|JMiFP!EcK`22@Q6rGA3w;}t?2{=M3{|j4!2}eQ{#N+0{Ho<=-XG@#t2Yq zaJshZLgNRrekzr2%^lFG^sR)K{J7b2I-d178Nu7SZub$UlkMGyo^FJGqR=L;4$ zFuful!_Cc&+S*!<9Xrg(${a^#3b zPL}wZ6QdWvlC$XOX!`f>k5;SYw?ki>4WQL(aq8KJ;IQEUl;oJd3$$7-8dpyqnG^-+ z+G}&1tl?`8w|g%Te``{7D$Dc*XlpZKs_wQvn(-A_5hHkV0sz_B*)%sdTNT3|-0mun zkf0-Y{_GjlmA_fE35c4GlamuyE6Ta~!&!^^J;qGN!^4Bd#zyk;@~q}%D{glc7&>$) z0|ySg^%#6(*`|9hLPw4Q;Bvdiz?iGl-*$G{q1w&D`N)vHdZ)$KZ_Tb-cl zis>#ZGBTdam*3~;H(%2&c2S#E<2HlF&ERyw33Ai-;{W^y2u`AzZVfbAcK|#+ds9{> zwpp{SD>R1x{(HMlP$o0HLRy6y>E1?E{&!zF{ndQwr9?ja?0tT^be=9Ze@5)x-)Q1` z={9W|(g%yEslJNq)k55djy9^N)oO8Ws3HGfdvJDkX7S>=^zN-Oh;53KwYZa$;_gn+ zl2QA$z`#HT4;~D_F9*$60|2`AWO(>k0Dd@Nyc+2J|G0ZSEiEm?$H&vVcW<-2{*)?U zYHixIX#f=N``W~fZzy3?bT7}`^gT2c>^C5w_wS-^C3EWr0FsiD%<}qEs(`sQeKojr z@dDbiA5Gfp#czBZzJ7kx)z$I#^V9k2+3~0^8qNi;?%&SuH8q5XhZ7PK(rL+q6;;5J z!vO;ZFl5LO0DeAbymvS7<9#m+bAM#P>c4Yuj~<*kS;!mlkFsy>WVHXjh$KMHrgZ?k z{PN44nmkyT2wCe;e-|7{-;Ic6eU0RT-?X_bJ@h@#%zqU(H#Z9NkFsp?NYY=7;fG6? z=-sh&SC843AY~H*XwOZ{Eu5CrwvSrJhzJ14h?&ITY zsGw3IWoDwf^?aL>_6{`~4TleB^3g}jxOS}!fS`v)5S5&Q^N_Ko_Cb1YcZdN^=W;o) z<~4pPy#&Dh_YY#;yw{mHG0vtWjY&;S71h;e=L%c4Y?(7+#E8#jGMS;FQi-%<2dd|u zv+F7=6bd$M*ubh)t7vFw0ASR(NTOa}ja&a9iv;x|sFhS?Y+}zRtEjH724K*jK}M&> zmN>PQYuBz(R8%zAVFx4aaTgaC=FOW&N=gaOr4c3k zrp;yH;R`(e^lSi1OG~M(t?e*Zuuuie5wjLQbm$NONsC`+`m?%^Ei%5`#5<1$QT*vL z)Qt^R`O>(05dP-h@%8mZtyYtroozR#w&IW~U#6)+|_IXSenwD54)aFjh{ zI^Dj5h)CVR+q-iJ4hiLt`g%6L_cvCA_@cQfw@7+$v~IFgP*6ZsRh3=IJ7gqg4W5~q z3Bd5lafWMvOYk_J*pbg0>$V_@BCV~h)SW(TlC)mjf=1FuCPSmq-1Qh(;$&>iVaMa` z@#f}czWw%F1VO-me4J4|jUeDXeg@I;x?lDC1K$|cGq6G6ktw>zAR{BgYEGusI;{#E zJa~|sH*XRg5(+;4CP@JdiP7~M#}DN|OOsh$fPuFjgVU!^Q(1YZn%J|aamewwF?`>? zeE^JziZw|}Z_|C$B)WF(N^^5Fzn{plsP8%`lz@Ky&}cNb*7+zJSD{o~#SKwW5>Gal>hsR7NFM9{4zWIhRAu}xK!?1C2{Pyb_ zcJIz0CT5<=1WhGxFcb9kRnn)A#?VNq!TH`slzrRbRt91|d&Bq4!}&1<-D;lF|3kjZ3L@zUc?P7124JFyDH#>V2} z;zI59>&U-5ZqcU8@bPr(-ksLgR(?Oe-=e-WU>FY!2t=#Z-hK@1;oB)y0KnVZn}~=A z04}r{fSUB>-B0D` zp}J9LQGY;`ZV*#cR781sxm|o6S_Rs#O_?$US65f+YHPW1#`y78Tk#Hwpl8pXC=?2+ zj%HcZZ!FP$PB&n{0DOFW9J?9nXz~DFUS5nJulv~H`vX>-8;DMfj(H4#q8#%BR;jU$ z4JmH|uzK}soSmI*;%jy!=7{9=qJIpI9LU01tuU(7RswI`)@P3AqrOpRQt#BK%ej92 zI*Eyij2Sb=CQc6B3s|y=iHX78-JOPp2L3pcYtn~aziaSV?(^|MsZ>%^aL}lp`lqvG z?AV64w>Qg|FSnUfTj@|0u*SyS-JJ;&CIC>h-}1Kvf+#X=!5f4>I)NS`Mt)h9ie1Z- z(P%U*U%nh4A0L}JwUyhQpzd_IO~|tZ z)uAIXM<%bwXUv$vJ@?#$TrTI!e|*eaQ%AEQHkgusrl7g$y%B#Ns@WU7HQ+DMFk&%(a#>QHVVGAy7*|Oz@u&}TVetzvfb5|;H z*|iJBGtYF&z@)9H)oM|xfdS$KJQasKRSlnMo} zyz+{}k_TvNYLaU-nsP~{Qk^I(E2|3(40PC^&UFNrB#Fq#NFpL4P$(4S<>ir|pU?dH z^Bo%d+O=zSo}QisVp3AlO_fUZQBhG*y)}lNjkjHMad9C!I+|6hR^j5};;r zMe5T}KfM;(^|5>Q?763*p(Uy5A;yP`-eSV=@h1q%sk3^o)gGIQp)N1v=t?@-sM5$DwP$&or3aaB~4eToAmM>pU zW@aV;jT<*6X8sD)KK_g-xy{v#%^cmbp1o$<;s=#`};F==uqO~ z;)ski9yCXEas+2DMri^ko1wje3kwVR7Wpnmj=3|W-S{G-3~ z?mxbv`;)y;DD)vqQBe^qSFU8tm@$Negz(BMuaKUeF3I_KF+PABKyk4bCr&7;fQ^G> zx5B0fr`-|jRSll21=A)38)Ih9oK8_u5dhtujHI;9817v))w>b&e3iaEUnTtdWv*sy z;6(a*PG@IIh+DUAN&gvvfsYU#9?Mft#nGXI@t|4L$zHP8_{GIuczfSNk(88F&&|#4 z)(bDZpfm>taQoyFgeg-H8#Hi8a9Ua#F)=X!`1ttnSy~oCw|&pBqNW-#v6H}UfFlJwZPaieU#<>H+AjxqZZ zcDCR%XU<4Izf!5>h1uUAs2q>|D&=WW;NG?;ou|zwe8^Dg`GyS}YOV3Xh5>LyuvV+( zt+(EieEu;L5^!(dORi{}<#ic0TDm@d{J8XAXAdt|V`L40qk;{6{=mkK=`s25a>Uv# zuVKGve0}xnNXf~`cJp#I#_9k#D!8i8pYXT&2z4wc{ch}9%dV+oxxRCaT{;QwUi6PN zo`%fP!!$lv831Ppo;GcoXp8uY{4>mZ<3)C+ZseQyUPml7PRPlfUpq#R zlCHC}v&l8#u0CwzgM*QB?P2(Ie$kALrD2nw;v*Q4>Hbn4baYG-X;D_bWc{XDz~ANsV^ zHk^iPi}At4060tVoH=tO@1sq-b~gF^J)hA}9|v~tL@c=@yRRX2H1LLUa&kCx=1i?J zK2#Y1XEDvm$zkEbg*pLBCC`7p2(1l1e{j@jluDgy<>lpE%h)WtuOa#O97O&4^`*9@ zmvJRMv_Q;ROa(z;)TmLC&p&!X0-iSd{Hg{)bnU6{^Xry%HubM0t;&P&q0dNdYXeZL z12H)yiX!vo%_BcQ9{`m~#gkL)^Z9!`Z7>b(NkhDQ%Pu})!}NUe^71%!>Xb>`!&=~x z($U%3=Ep)5MSVKj-!!f=#p~e_D%}$Vf%E&%;L*OfETs&2xrdELrFtJh&`?oP!O3-7 zXc+a90Y)A#WzbXj`!}ShNVnLZl$6Y?uXZ${yLFwMfvLn57klC3Q=%IHU*B@V!n78d zx(8lG(@u@ppgPV_aEA_YELqZ=KmPawfLp(=rAwszDM;egv>`qE^da+?3;=#VyoRv& z7iII&^HLHK8_T*CO9A-hm$iKT^~cg$!NdB?KYzX)L2yAJrcfvtK76>;-kq`zrPh4i zk0o9`pV50UnHlMD=SI~ovUs&0s-K4P^Yb}z;)F?ga&)p6V-Dw%Ky1_~{SPku>n}=9 z?6-^8BZJ~_e^866(P+4`+j36F9Iv`v`qQLIkkpo&A$7I!!9{^s*REY@(V~UaKDA}7 zUA#oU20Ym>TxuWLY~33&#Y<2q2_F_Cwb!j%XZ1JMgz>?JftcYmv}e;sR9e#&+SYjW zFbK+y9N33=`!BonYHyGmx^m?T$BrGdi;pcBIXIUDVgMsXjF7Hx+_=G=V|(r56*Mpw zPft%k=T#N#GVRM-u!o|md=|=KZQIhOO&h75 zZN(chM_M00`V1T-wGVBw?!_4Dq`ZS{gJypU9wsUb4RvxaDPr^LpQQGrNt0yhEf?b`FS`RVxww`s zThgIJ2dVw*W;>@L@4EDljFQ^9=g#r*gt7eaY(JDIGEgZ@>y)=?u;I&i&$cait4n3csLE^bXGu)@_;1v$t6w+HI)04zM@5l5F&fpy6GnYJ zMK!4_qz#Eonl!0a86T>oqbpO&CV>X&XiGR_!8%O4cB4=zW+93q_wL=}^!lB6^^cRC zQr3|IsE2#xbYANjPu}VUY+LhB)M}k;yFVkHgZp~ZD?FAbU!Q}fNifAb*K+l$uI##5 zvlcXI62-}rmi-P_xSFP@S~|Kz2g@1D%5=20zV*yzRpr9M9;0*T&SYg}0dOU2E&aw0 zH`UcDF94c0ATaSW`XszW`d5kUNKHl*MYLKi2hulk^uQKIzZ_5YVSO3<)Txu`*ii&( z$Bs-{>1byPHuQ#eZ{LQm+6f!*nuRjp%b!S0-piAH`$@MeDk}JC$$xV)TQ?>7`};F? z>{!QS*?@C;ASRbA366`4lNLcrOG{bw>>x@G?=(A++44g@+jJ*x*$!s?yoq)OFZ@c< zXf&)@v&QUxk#?rHU_wF%u>Qs97?rm3rmc2U3!MMCO)DW|F?OLWzohsGugYM-yeOO=8-yH{+ z^Bk6^RVWDk@PG#HzYII00cKr8pXZB2Wh96`0j^BgMRerQKF-x ziHnOPCnrai?ykbPv^LZnrdhLQEL^yd%*;%qjHz0!X5IfRCvjjqPA&WhWvOvRoIS3e z#@m-xuYJO-JtrCQ!g!-Ctr-~^^zYxFH{N)IYuBm|x~q*3F02iegK6EmH7i!EVCT-A z^y;OroG2|V<%e$;F!!l;T>Sn^lDsj` z8@Oyq(w6zPXV0E&-@ctyt5zAUCEvVxlcd=*SvaHvH@5zO(t2&RRawf% z+7P*L9W&PKq)T^w5pY>q8L6qML`6l_s101QBx&!~| z`S}^u_-Ft2E3?K9BlVSGl;{2?OO7R3S`qxhW0}5wuN0%G)oQkH-)=K6TQQYXBb)SW z!5RAL!^b|)r|G8||JGD#VIJUMMmn>e=|kGP&rxyJ@&-IPI;jI6qpQJmR1*vKl~iMa zm>irS2yEH1MQXQ?8iCrk0j=Me&FASS81vG2scc;oMbb7U^I2pUGXM4_>YLTeRb=Y~ z^m^K0{d)Iq?%us?GcS8=P-B6Z9Nhl>`?-GoI-uK4>Cr*&8L1mKr^}3gF=tZ-eZvPx z_bVzYNcnL&b0gZbecHOQ2ceKby9?oiYbXBGvjjo_>TVYfk?aWYK5Cje#((i!YQp`Y#($=u>qyOU09bM3Ndi$zeHK0?hD`GoZ`IxXeQR{ORz z-S-QmXK($$TiRjoEE~A2Hq;hgTCJ8%n>I=J!=mEMburBc=x5-?{IVq(h0Hw(RjJ1? z{ld|{efx}#(Ujyl(FQK74YdVx`0!zA`f1Rh0luC4%93NqCv=G3aD|11-2HW*Y#xTZ z9*r1*hldBCTga(84LQ>W;N%rCxq_==45y#)!9ys;;#qtC~uqqus(Eik~L}kN{nIM(5dWf6a~4}Fmfm~dW>{^r>KZqM|Rt#Qm0AwfPeaAU#oRo!%dUZJ(yFa=EsCNPEIKo2m33GL zfXDSms5tEo{+4qzjwsitQ3QT|0o=WN8-PPUZ{X4K?QQ3!Xi1A!VO)5Ssy?`SJ>6Qx zR>xT&l?VqD6Qy=U#Av*|dvWrlbBr(hu#QUdXn2{5wiSpC9IGz2j8PI3GmIa9{1Jfc z{cGv<;S3A)%;ssp$Prwas~dn5nOhkaP>j;6j+I_|y1#clM>2JbGQPgPELbp;#*Nih z`^mMzrAszcN4s*`sY-@B>@S=@k9aBDY9CV+95u?Q82HA)9kTm+-7jJ3XEUVsj2Sa% zY*1@zj+`Ed*~`=sO#lAePvsUV6z&4;KVtjxcou63mCQh74mo8mw(%n|fL#+)phw0n5uhE>FvrXO#S5;n~jhpf2=L?7$F`6mM)AG3dEer)EOAVY3R!3%c##Bbx58y+COhPw{Gc9 zW*jhJfKiIv9(gveh}9npJtA=y+?=w39wZZs?)Vg(Ro_OL3 z-h1yojvP5cYHBJeDJe!36?x~*k#}w`ESO8H&?o3UY&dOVo=0oqy9Kw?H?a4?Ax^%& zzI^)Wr*`S?=E312}Tenz?9+5{<66$B4MSSql=bALWInrvioIZVoy?c|{ zvu8cGZ(py5Q7DwOZr6kM1L9~BJ_;HJp(rn5^@Ohcbxn8Z)8xrt5*s_wW}O^y0#2UX zuJ!RLsbB4|4s%Ss8eQT3gLHIF8{ZNpEUX*j#&x5jVkQ|G86+nsvu)cpX@i9*YB_W2 z5NA#uLiO!O^yu9eFK=(j_?U8-@ni9-MdLnPG-lB9nyhKf*_E&FGK35QmL3XZ=TWbu8H4Q zd3;(xK)^j^Vq&7k&CTsb)h#*p3a$-Ho1UJYL`O%nc=2M+o;}NwB}<5ojyBq71~6g5 z1Uh!qA7x)tzpuEs7?nzOeax6KLgg1!H|FQ(TTB)HyBNPJd3$>k8ym~_-+xbTZZ6+_ z_Z^Xuku+=8jOo*-J6)a}TtPuWg+ig&01vz%K@jF#ym;~DkdP2}!_tt4p`0t_d3$>k z6B9#BObmh`7@bw&3VEjJ?%lf-6clKIIq)D5OGrrg9hjVvkx^Pxy8~T~v4(qC#y@=c zaG6%CeKS5jz5om&;rRIY#Tt!fN?KZ4`ES4droMgqw%G%YT%nvZF||paR;%UCojaU9 zeOi6sz=86Lii)=q5)zhGKChNZNlHp;?&<0IArL1BLZB#$3V_CWdE5vNMsRoh6SV)I zNTE=ODwXOlAX%%`eqQ;PFFm)^IWaNOEif?9*AnJGWSI&J3yTvI6U}Z^_+NYyGR%<< R*4F?4002ovPDHLkV1kYX?g0P* literal 0 HcmV?d00001 diff --git a/cmd/doodle/main.go b/cmd/doodle/main.go index 0e9d625..aa4d5b2 100644 --- a/cmd/doodle/main.go +++ b/cmd/doodle/main.go @@ -19,6 +19,7 @@ import ( "git.kirsle.net/apps/doodle/pkg/log" "git.kirsle.net/apps/doodle/pkg/shmem" "git.kirsle.net/apps/doodle/pkg/sound" + "git.kirsle.net/apps/doodle/pkg/sprites" "git.kirsle.net/apps/doodle/pkg/usercfg" "git.kirsle.net/go/render" "git.kirsle.net/go/render/sdl" @@ -166,6 +167,16 @@ func main() { game := doodle.New(c.Bool("debug"), engine) game.SetupEngine() + + // Set the app window icon. + if engine, ok := game.Engine.(*sdl.Renderer); ok { + if icon, err := sprites.LoadImage(game.Engine, balance.WindowIcon); err == nil { + engine.SetWindowIcon(icon.Image) + } else { + log.Error("Couldn't load WindowIcon (%s): %s", balance.WindowIcon, err) + } + } + if c.Bool("guitest") { game.Goto(&doodle.GUITestScene{}) } else if filename != "" { diff --git a/pkg/balance/theme.go b/pkg/balance/theme.go index 116587e..4468bf0 100644 --- a/pkg/balance/theme.go +++ b/pkg/balance/theme.go @@ -8,6 +8,8 @@ import ( // Theme and appearance variables. var ( + WindowIcon = "assets/icons/96.png" + // Title Screen Font TitleScreenFont = render.Text{ Size: 46, diff --git a/pkg/editor_ui_menubar.go b/pkg/editor_ui_menubar.go index 15d69ad..a38a8f7 100644 --- a/pkg/editor_ui_menubar.go +++ b/pkg/editor_ui_menubar.go @@ -78,7 +78,7 @@ func (u *EditorUI) SetupMenuBar(d *Doodle) *ui.MenuBar { fileMenu.AddItemAccel("Open...", "Ctrl-O", u.Scene.MenuOpen) fileMenu.AddSeparator() - fileMenu.AddItem("Close "+drawingType, func() { + fileMenu.AddItem("Quit to menu", func() { u.Scene.ConfirmUnload(func() { d.Goto(&MainScene{}) }) diff --git a/pkg/enum/enum.go b/pkg/enum/enum.go index d754d9b..6b304c7 100644 --- a/pkg/enum/enum.go +++ b/pkg/enum/enum.go @@ -17,3 +17,11 @@ const ( DoodadExt = ".doodad" LevelPackExt = ".levelpack" ) + +// Responsive breakpoints for mobile friendly UIs. +const ( + ScreenWidthXSmall = 400 + ScreenWidthSmall = 600 + ScreenWidthMedium = 800 + ScreenWidthLarge = 1000 +) diff --git a/pkg/main_scene.go b/pkg/main_scene.go index b6c6f0b..87344c8 100644 --- a/pkg/main_scene.go +++ b/pkg/main_scene.go @@ -36,7 +36,6 @@ type MainScene struct { labelVersion *ui.Label labelHint *ui.Label frame *ui.Frame // Main button frame - btnRegister *ui.Button winRegister *ui.Window winSettings *ui.Window winLevelPacks *ui.Window @@ -125,47 +124,13 @@ func (s *MainScene) Setup(d *Doodle) error { s.updateButton.Hide() s.Supervisor.Add(s.updateButton) - // Register button. - s.btnRegister = ui.NewButton("Register", ui.NewLabel(ui.Label{ - Text: "Register Game", - Font: balance.LabelFont, - })) - s.btnRegister.SetStyle(&balance.ButtonPrimary) - s.btnRegister.Handle(ui.Click, func(ed ui.EventData) error { - if s.winRegister == nil { - cfg := windows.License{ - Supervisor: s.Supervisor, - Engine: d.Engine, - OnCancel: func() { - s.winRegister.Hide() - }, - } - cfg.OnLicensed = func() { - // License status has changed, reload the window! - if s.winRegister != nil { - s.winRegister.Hide() - } - s.winRegister = windows.MakeLicenseWindow(d.width, d.height, cfg) - } - - cfg.OnLicensed() - } - s.winRegister.Show() - return nil - }) - s.btnRegister.Compute(d.Engine) - s.Supervisor.Add(s.btnRegister) - - if license.IsRegistered() { - s.btnRegister.Hide() - } - // Main UI button frame. frame := ui.NewFrame("frame") s.frame = frame var buttons = []struct { Name string + If func() bool Func func() Style *style.Button }{ @@ -182,6 +147,9 @@ func (s *MainScene) Setup(d *Doodle) error { shmem.FlashError(err.Error()) } }, + OnCloseWindow: func() { + s.winLevelPacks.Hide() + }, }) } s.winLevelPacks.MoveTo(render.Point{ @@ -198,21 +166,14 @@ func (s *MainScene) Setup(d *Doodle) error { Style: &balance.ButtonBabyBlue, }, { - Name: "Create a Level", + Name: "New Drawing", Func: d.GotoNewMenu, Style: &balance.ButtonPink, }, { - Name: "Create a Doodad", - Func: func() { - d.NewDoodad(0) - }, - Style: &balance.ButtonPink, - }, - { - Name: "Edit a Drawing", + Name: "Edit Drawing", Func: d.GotoLoadMenu, - Style: &balance.ButtonPrimary, + Style: &balance.ButtonPink, }, { Name: "Settings", @@ -223,6 +184,34 @@ func (s *MainScene) Setup(d *Doodle) error { s.winSettings.Show() }, }, + { + Name: "Register", + If: func() bool { + return !license.IsRegistered() + }, + Func: func() { + if s.winRegister == nil { + cfg := windows.License{ + Supervisor: s.Supervisor, + Engine: d.Engine, + OnCancel: func() { + s.winRegister.Hide() + }, + } + cfg.OnLicensed = func() { + // License status has changed, reload the window! + if s.winRegister != nil { + s.winRegister.Hide() + } + s.winRegister = windows.MakeLicenseWindow(d.width, d.height, cfg) + } + + cfg.OnLicensed() + } + s.winRegister.Show() + }, + Style: &balance.ButtonPrimary, + }, } for _, button := range buttons { button := button @@ -406,12 +395,6 @@ func (s *MainScene) positionMenuPortrait(d *Doodle) { X: (d.width / 2) - (s.frame.Size().W / 2), Y: 260, }) - - // Register button. - s.btnRegister.MoveTo(render.Point{ - X: d.width - s.btnRegister.Size().W - 24, - Y: d.height - s.btnRegister.Size().H - 24, - }) } func (s *MainScene) positionMenuLandscape(d *Doodle) { @@ -447,13 +430,6 @@ func (s *MainScene) positionMenuLandscape(d *Doodle) { X: (col2.X+col2.W)/2 - (s.frame.Size().W / 2), Y: (d.height / 2) - (s.frame.Size().H / 2), }) - - // Register button to the top left. - // TODO: not ideal, move into main button list? - s.btnRegister.MoveTo(render.Point{ - X: 20, - Y: 20, - }) } // LoopLazyScroll gently scrolls the title screen demo level, called each Loop. @@ -560,9 +536,6 @@ func (s *MainScene) Draw(d *Doodle) error { s.frame.Compute(d.Engine) s.frame.Present(d.Engine, s.frame.Point()) - // Register button. - s.btnRegister.Present(d.Engine, s.btnRegister.Point()) - // Present supervised windows. s.Supervisor.Present(d.Engine) diff --git a/pkg/menu_scene.go b/pkg/menu_scene.go index cfba6b2..5706698 100644 --- a/pkg/menu_scene.go +++ b/pkg/menu_scene.go @@ -17,6 +17,9 @@ MenuScene holds the main dialog menu UIs for: * New Level * Open Level * Settings + +DEPRECATED: migrate these prompts into popup windows to appear +on the MainScene or elsewhere as wanted. */ type MenuScene struct { // Configuration. @@ -159,6 +162,9 @@ func (s *MenuScene) setupNewWindow(d *Doodle) error { Level: lvl, }) }, + OnCreateNewDoodad: func(size int) { + d.NewDoodad(size) + }, OnCancel: func() { d.Goto(&MainScene{}) }, diff --git a/pkg/modal/modal.go b/pkg/modal/modal.go index 3188c7a..7bf8331 100644 --- a/pkg/modal/modal.go +++ b/pkg/modal/modal.go @@ -5,6 +5,7 @@ import ( "git.kirsle.net/apps/doodle/pkg/balance" "git.kirsle.net/apps/doodle/pkg/keybind" "git.kirsle.net/apps/doodle/pkg/modal/loadscreen" + "git.kirsle.net/apps/doodle/pkg/shmem" "git.kirsle.net/go/render" "git.kirsle.net/go/render/event" "git.kirsle.net/go/ui" @@ -87,10 +88,13 @@ func Draw() { // Center the window on screen. func center(win *ui.Window) { - var modSize = win.Size() + var ( + modSize = win.Size() + width, height = shmem.CurrentRenderEngine.WindowSize() + ) var moveTo = render.Point{ - X: (window.W / 2) - (modSize.W / 2), - Y: (window.H / 4) - (modSize.H / 2), + X: (width / 2) - (modSize.W / 2), + Y: (height / 4) - (modSize.H / 2), } win.MoveTo(moveTo) diff --git a/pkg/windows/add_edit_level.go b/pkg/windows/add_edit_level.go index 14f78e6..bbb7fbd 100644 --- a/pkg/windows/add_edit_level.go +++ b/pkg/windows/add_edit_level.go @@ -24,19 +24,60 @@ type AddEditLevel struct { // Callback functions. OnChangePageTypeAndWallpaper func(pageType level.PageType, wallpaper string) OnCreateNewLevel func(*level.Level) + OnCreateNewDoodad func(size int) OnReload func() OnCancel func() } // NewAddEditLevel initializes the window. func NewAddEditLevel(config AddEditLevel) *ui.Window { + // Default options. + var ( + title = "New Drawing" + ) + + // Given a level to edit? + if config.EditLevel != nil { + title = "Level Properties" + } + + window := ui.NewWindow(title) + window.SetButtons(ui.CloseButton) + window.Configure(ui.Config{ + Width: 400, + Height: 280, + Background: render.Grey, + }) + + // Tabbed UI for New Level or New Doodad. + tabframe := ui.NewTabFrame("Level Tabs") + if config.EditLevel != nil { + tabframe.SetTabsHidden(true) + } + window.Pack(tabframe, ui.Pack{ + Side: ui.N, + Fill: true, + Expand: true, + }) + + // Add the tabs. + config.setupLevelFrame(tabframe) + config.setupDoodadFrame(tabframe) + + tabframe.Supervise(config.Supervisor) + + window.Hide() + return window +} + +// Creates the Create/Edit Level tab ("index"). +func (config AddEditLevel) setupLevelFrame(tf *ui.TabFrame) { // Default options. var ( newPageType = level.Bounded.String() newWallpaper = "notebook.png" paletteName = level.DefaultPaletteNames[0] isNewLevel = config.EditLevel == nil - title = "New Drawing" // Default text for the Palette drop-down for already-existing levels. // (needs --experimental feature flag to enable the UI). @@ -53,472 +94,582 @@ func NewAddEditLevel(config AddEditLevel) *ui.Window { newPageType = config.EditLevel.PageType.String() newWallpaper = config.EditLevel.Wallpaper paletteName = textCurrentPalette - title = "Level Properties" } - window := ui.NewWindow(title) - window.SetButtons(ui.CloseButton) - window.Configure(ui.Config{ - Width: 400, - Height: 280, - Background: render.Grey, + frame := tf.AddTab("index", ui.NewLabel(ui.Label{ + Text: "New Level", + Font: balance.TabFont, + })) + + /****************** + * Frame for selecting Page Type + ******************/ + + typeFrame := ui.NewFrame("Page Type Options Frame") + frame.Pack(typeFrame, ui.Pack{ + Side: ui.N, + FillX: true, }) - { - frame := ui.NewFrame("New Level Frame") - window.Pack(frame, ui.Pack{ - Side: ui.N, - Fill: true, - Expand: true, - }) + label1 := ui.NewLabel(ui.Label{ + Text: "Page Type:", + Font: balance.LabelFont, + }) + typeFrame.Pack(label1, ui.Pack{ + Side: ui.W, + }) - /****************** - * Frame for selecting Page Type - ******************/ + type typeObj struct { + Name string + Value level.PageType + } + var types = []typeObj{ + {"Bounded", level.Bounded}, + {"Unbounded", level.Unbounded}, + {"No Negative Space", level.NoNegativeSpace}, + // {"Bordered (TODO)", level.Bordered}, + } - typeFrame := ui.NewFrame("Page Type Options Frame") - frame.Pack(typeFrame, ui.Pack{ - Side: ui.N, - FillX: true, - }) + typeBtn := ui.NewSelectBox("Type Select", ui.Label{ + Font: ui.MenuFont, + }) + typeFrame.Pack(typeBtn, ui.Pack{ + Side: ui.W, + Expand: true, + }) - label1 := ui.NewLabel(ui.Label{ - Text: "Page Type:", - Font: balance.LabelFont, - }) - typeFrame.Pack(label1, ui.Pack{ - Side: ui.W, - }) + for _, t := range types { + // TODO: Hide some options for the free version of the game. + // - At launch only Bounded and Bordered will be available + // in the shareware version. + // - For now, only hide Bordered as it's not yet implemented. + // -------- + // if balance.FreeVersion { + // if t.Value == level.Bordered { + // continue + // } + // } + typeBtn.AddItem(t.Name, t.Value, func() {}) + } - type typeObj struct { - Name string - Value level.PageType - } - var types = []typeObj{ - {"Bounded", level.Bounded}, - {"Unbounded", level.Unbounded}, - {"No Negative Space", level.NoNegativeSpace}, - // {"Bordered (TODO)", level.Bordered}, - } + // If editing an existing level, pre-select the right page type. + if config.EditLevel != nil { + typeBtn.SetValue(config.EditLevel.PageType) + } - typeBtn := ui.NewSelectBox("Type Select", ui.Label{ - Font: ui.MenuFont, - }) - typeFrame.Pack(typeBtn, ui.Pack{ - Side: ui.W, - Expand: true, - }) - - for _, t := range types { - // TODO: Hide some options for the free version of the game. - // - At launch only Bounded and Bordered will be available - // in the shareware version. - // - For now, only hide Bordered as it's not yet implemented. - // -------- - // if balance.FreeVersion { - // if t.Value == level.Bordered { - // continue - // } - // } - typeBtn.AddItem(t.Name, t.Value, func() {}) - } - - // If editing an existing level, pre-select the right page type. - if config.EditLevel != nil { - typeBtn.SetValue(config.EditLevel.PageType) - } - - typeBtn.Handle(ui.Change, func(ed ui.EventData) error { - if selection, ok := typeBtn.GetValue(); ok { - if pageType, ok := selection.Value.(level.PageType); ok { - newPageType = pageType.String() - config.OnChangePageTypeAndWallpaper(pageType, newWallpaper) - } - } - return nil - }) - - typeBtn.Supervise(config.Supervisor) - config.Supervisor.Add(typeBtn) - - /****************** - * Frame for selecting Bounded Level Limits. - ******************/ - - if config.EditLevel != nil { - boundsFrame := ui.NewFrame("Bounds Frame") - frame.Pack(boundsFrame, ui.Pack{ - Side: ui.N, - FillX: true, - PadY: 2, - }) - - label := ui.NewLabel(ui.Label{ - Text: "Bounded limits:", - Font: balance.LabelFont, - }) - boundsFrame.Pack(label, ui.Pack{ - Side: ui.W, - PadY: 2, - }) - - var forms = []struct { - label string - number *int64 - }{ - { - label: "Width:", - number: &config.EditLevel.MaxWidth, - }, - { - label: "Height:", - number: &config.EditLevel.MaxHeight, - }, - } - for _, form := range forms { - form := form - label := ui.NewLabel(ui.Label{ - Text: form.label, - Font: ui.MenuFont, - }) - - var intvar = int(*form.number) - button := ui.NewButton(form.label, ui.NewLabel(ui.Label{ - IntVariable: &intvar, - Font: ui.MenuFont, - })) - button.Handle(ui.Click, func(ed ui.EventData) error { - shmem.Prompt("Enter new "+form.label+" ", func(answer string) { - if answer == "" { - return - } - - if i, err := strconv.Atoi(answer); err == nil { - *form.number = int64(i) - intvar = i - } - }) - return nil - }) - - config.Supervisor.Add(button) - - boundsFrame.Pack(label, ui.Pack{ - Side: ui.W, - PadX: 1, - }) - boundsFrame.Pack(button, ui.Pack{ - Side: ui.W, - PadX: 1, - }) + typeBtn.Handle(ui.Change, func(ed ui.EventData) error { + if selection, ok := typeBtn.GetValue(); ok { + if pageType, ok := selection.Value.(level.PageType); ok { + newPageType = pageType.String() + config.OnChangePageTypeAndWallpaper(pageType, newWallpaper) } } + return nil + }) - /****************** - * Frame for selecting Level Wallpaper - ******************/ + typeBtn.Supervise(config.Supervisor) + config.Supervisor.Add(typeBtn) - wpFrame := ui.NewFrame("Wallpaper Frame") - frame.Pack(wpFrame, ui.Pack{ + /****************** + * Frame for selecting Bounded Level Limits. + ******************/ + + if config.EditLevel != nil { + boundsFrame := ui.NewFrame("Bounds Frame") + frame.Pack(boundsFrame, ui.Pack{ Side: ui.N, FillX: true, PadY: 2, }) - label2 := ui.NewLabel(ui.Label{ - Text: "Wallpaper:", + label := ui.NewLabel(ui.Label{ + Text: "Bounded limits:", Font: balance.LabelFont, }) - wpFrame.Pack(label2, ui.Pack{ + boundsFrame.Pack(label, ui.Pack{ Side: ui.W, PadY: 2, }) - type wallpaperObj struct { - Name string - Value string - } - var wallpapers = []wallpaperObj{ - {"Notebook", "notebook.png"}, - {"Legal Pad", "legal.png"}, - {"Graph paper", "graph.png"}, - {"Dotted paper", "dots.png"}, - {"Blueprint", "blueprint.png"}, - {"Pure White", "white.png"}, - // {"Placemat", "placemat.png"}, - } - - wallBtn := ui.NewSelectBox("Wallpaper Select", ui.Label{ - Font: balance.MenuFont, - }) - wallBtn.AlwaysChange = true - wpFrame.Pack(wallBtn, ui.Pack{ - Side: ui.W, - Expand: true, - }) - - for _, t := range wallpapers { - wallBtn.AddItem(t.Name, t.Value, func() {}) - } - - // Add custom wallpaper options. - if balance.Feature.CustomWallpaper { - wallBtn.AddSeparator() - wallBtn.AddItem("Custom wallpaper...", balance.CustomWallpaperFilename, func() {}) - } - - // If editing a level, select the current wallpaper. - if config.EditLevel != nil { - wallBtn.SetValue(config.EditLevel.Wallpaper) - } - - wallBtn.Handle(ui.Change, func(ed ui.EventData) error { - if selection, ok := wallBtn.GetValue(); ok { - if filename, ok := selection.Value.(string); ok { - // Picking the Custom option? - if filename == balance.CustomWallpaperFilename { - filename, err := native.OpenFile("Choose a custom wallpaper:", "*.png *.jpg *.gif") - if err == nil { - b64data, err := wallpaper.FileToB64(filename) - if err != nil { - shmem.Flash("Error loading wallpaper: %s", err) - return nil - } - - // If editing a level, apply the update straight away. - if config.EditLevel != nil { - config.EditLevel.SetFile(balance.CustomWallpaperEmbedPath, []byte(b64data)) - newWallpaper = balance.CustomWallpaperFilename - - // Trigger the page type change to the caller. - if pageType, ok := level.PageTypeFromString(newPageType); ok { - config.OnChangePageTypeAndWallpaper(pageType, balance.CustomWallpaperFilename) - } - } else { - // Hold onto the new wallpaper until the level is created. - newWallpaper = balance.CustomWallpaperFilename - newWallpaperB64 = b64data - } - } - return nil - } - - if pageType, ok := level.PageTypeFromString(newPageType); ok { - config.OnChangePageTypeAndWallpaper(pageType, filename) - newWallpaper = filename - } - } - } - return nil - }) - - wallBtn.Supervise(config.Supervisor) - config.Supervisor.Add(wallBtn) - - /****************** - * Frame for picking a default color palette. - ******************/ - - // For new level or --experimental only. - if config.EditLevel == nil || balance.Feature.ChangePalette { - palFrame := ui.NewFrame("Palette Frame") - frame.Pack(palFrame, ui.Pack{ - Side: ui.N, - FillX: true, - PadY: 4, - }) - - label3 := ui.NewLabel(ui.Label{ - Text: "Palette: ", - Font: balance.LabelFont, - }) - palFrame.Pack(label3, ui.Pack{ - Side: ui.W, - }) - - palBtn := ui.NewSelectBox("Palette Select", ui.Label{ - Font: balance.MenuFont, - }) - palBtn.AlwaysChange = true - - palFrame.Pack(palBtn, ui.Pack{ - Side: ui.W, - Expand: true, - }) - - if config.EditLevel != nil { - palBtn.AddItem(paletteName, paletteName, func() {}) - palBtn.AddSeparator() - } - - for _, palName := range level.DefaultPaletteNames { - palName := palName - palBtn.AddItem(palName, palName, func() {}) - } - - palBtn.Handle(ui.Change, func(ed ui.EventData) error { - if val, ok := palBtn.GetValue(); ok { - val2, _ := val.Value.(string) - paletteName = val2 - } - return nil - }) - - config.Supervisor.Add(palBtn) - palBtn.Supervise(config.Supervisor) - } - - /****************** - * Frame for giving the level a title. - ******************/ - - if config.EditLevel != nil { - label3 := ui.NewLabel(ui.Label{ - Text: "Metadata", - Font: balance.LabelFont, - }) - frame.Pack(label3, ui.Pack{ - Side: ui.N, - FillX: true, - }) - - type metadataObj struct { - Label string - Binding *string - Update func(string) - } - var metaRows = []metadataObj{ - {"Title:", &config.EditLevel.Title, func(v string) { config.EditLevel.Title = v }}, - {"Author:", &config.EditLevel.Author, func(v string) { config.EditLevel.Author = v }}, - } - - for _, mr := range metaRows { - mr := mr - mrFrame := ui.NewFrame("Metadata " + mr.Label + "Frame") - frame.Pack(mrFrame, ui.Pack{ - Side: ui.N, - FillX: true, - PadY: 2, - }) - - // The label. - mrLabel := ui.NewLabel(ui.Label{ - Text: mr.Label, - Font: balance.MenuFont, - }) - mrLabel.Configure(ui.Config{ - Width: 75, - }) - mrFrame.Pack(mrLabel, ui.Pack{ - Side: ui.W, - }) - - // The button. - mrButton := ui.NewButton(mr.Label, ui.NewLabel(ui.Label{ - TextVariable: mr.Binding, - Font: balance.MenuFont, - })) - mrButton.Handle(ui.Click, func(ed ui.EventData) error { - shmem.Prompt("Enter a new "+mr.Label, func(answer string) { - if answer != "" { - mr.Update(answer) - } - }) - return nil - }) - config.Supervisor.Add(mrButton) - mrFrame.Pack(mrButton, ui.Pack{ - Side: ui.W, - Expand: true, - PadX: 2, - }) - } - } - - /****************** - * Confirm/cancel buttons. - ******************/ - - bottomFrame := ui.NewFrame("Button Frame") - frame.Pack(bottomFrame, ui.Pack{ - Side: ui.N, - FillX: true, - PadY: 8, - }) - - var buttons = []struct { - Label string - F func(ui.EventData) error + var forms = []struct { + label string + number *int64 }{ - {"Continue", func(ed ui.EventData) error { - shmem.Flash("Create new map with %s page type and %s wallpaper", newPageType, newWallpaper) - pageType, ok := level.PageTypeFromString(newPageType) - if !ok { - shmem.Flash("Invalid Page Type '%s'", newPageType) - return nil - } - - lvl := level.New() - lvl.Palette = level.DefaultPalettes[paletteName] - lvl.Wallpaper = newWallpaper - lvl.PageType = pageType - - // Was a custom wallpaper selected for our NEW level? - if lvl.Wallpaper == balance.CustomWallpaperFilename && len(newWallpaperB64) > 0 { - lvl.SetFile(balance.CustomWallpaperEmbedPath, []byte(newWallpaperB64)) - } - - config.OnCreateNewLevel(lvl) - return nil - }}, - - {"Cancel", func(ed ui.EventData) error { - config.OnCancel() - return nil - }}, - - // OK button is for editing an existing level. - {"OK", func(ed ui.EventData) error { - // If we're editing a level, did we select a new palette? - if paletteName != textCurrentPalette { - modal.Confirm( - "Are you sure you want to change the level palette?\n" + - "Existing pixels drawn on your level may change, and\n" + - "if the new palette is smaller, some pixels may be\n" + - "lost from your level. OK to continue?", - ).WithTitle("Change Level Palette").Then(func() { - // Install the new level palette. - config.EditLevel.ReplacePalette(level.DefaultPalettes[paletteName]) - if config.OnReload != nil { - config.OnReload() - } - }) - return nil - } - - config.OnCancel() - return nil - }}, + { + label: "Width:", + number: &config.EditLevel.MaxWidth, + }, + { + label: "Height:", + number: &config.EditLevel.MaxHeight, + }, } - for _, t := range buttons { - // If we're editing settings on an existing level, skip the Continue. - if (isNewLevel && t.Label == "OK") || (!isNewLevel && t.Label != "OK") { - continue - } - btn := ui.NewButton(t.Label, ui.NewLabel(ui.Label{ - Text: t.Label, - Font: balance.MenuFont, + for _, form := range forms { + form := form + label := ui.NewLabel(ui.Label{ + Text: form.label, + Font: ui.MenuFont, + }) + + var intvar = int(*form.number) + button := ui.NewButton(form.label, ui.NewLabel(ui.Label{ + IntVariable: &intvar, + Font: ui.MenuFont, })) - btn.Handle(ui.Click, t.F) - config.Supervisor.Add(btn) - bottomFrame.Pack(btn, ui.Pack{ + button.Handle(ui.Click, func(ed ui.EventData) error { + shmem.Prompt("Enter new "+form.label+" ", func(answer string) { + if answer == "" { + return + } + + if i, err := strconv.Atoi(answer); err == nil { + *form.number = int64(i) + intvar = i + } + }) + return nil + }) + + config.Supervisor.Add(button) + + boundsFrame.Pack(label, ui.Pack{ Side: ui.W, - PadX: 4, - PadY: 8, + PadX: 1, + }) + boundsFrame.Pack(button, ui.Pack{ + Side: ui.W, + PadX: 1, }) } } - window.Hide() - return window + /****************** + * Frame for selecting Level Wallpaper + ******************/ + + wpFrame := ui.NewFrame("Wallpaper Frame") + frame.Pack(wpFrame, ui.Pack{ + Side: ui.N, + FillX: true, + PadY: 2, + }) + + label2 := ui.NewLabel(ui.Label{ + Text: "Wallpaper:", + Font: balance.LabelFont, + }) + wpFrame.Pack(label2, ui.Pack{ + Side: ui.W, + PadY: 2, + }) + + type wallpaperObj struct { + Name string + Value string + } + var wallpapers = []wallpaperObj{ + {"Notebook", "notebook.png"}, + {"Legal Pad", "legal.png"}, + {"Graph paper", "graph.png"}, + {"Dotted paper", "dots.png"}, + {"Blueprint", "blueprint.png"}, + {"Pure White", "white.png"}, + // {"Placemat", "placemat.png"}, + } + + wallBtn := ui.NewSelectBox("Wallpaper Select", ui.Label{ + Font: balance.MenuFont, + }) + wallBtn.AlwaysChange = true + wpFrame.Pack(wallBtn, ui.Pack{ + Side: ui.W, + Expand: true, + }) + + for _, t := range wallpapers { + wallBtn.AddItem(t.Name, t.Value, func() {}) + } + + // Add custom wallpaper options. + if balance.Feature.CustomWallpaper { + wallBtn.AddSeparator() + wallBtn.AddItem("Custom wallpaper...", balance.CustomWallpaperFilename, func() {}) + } + + // If editing a level, select the current wallpaper. + if config.EditLevel != nil { + wallBtn.SetValue(config.EditLevel.Wallpaper) + } + + wallBtn.Handle(ui.Change, func(ed ui.EventData) error { + if selection, ok := wallBtn.GetValue(); ok { + if filename, ok := selection.Value.(string); ok { + // Picking the Custom option? + if filename == balance.CustomWallpaperFilename { + filename, err := native.OpenFile("Choose a custom wallpaper:", "*.png *.jpg *.gif") + if err == nil { + b64data, err := wallpaper.FileToB64(filename) + if err != nil { + shmem.Flash("Error loading wallpaper: %s", err) + return nil + } + + // If editing a level, apply the update straight away. + if config.EditLevel != nil { + config.EditLevel.SetFile(balance.CustomWallpaperEmbedPath, []byte(b64data)) + newWallpaper = balance.CustomWallpaperFilename + + // Trigger the page type change to the caller. + if pageType, ok := level.PageTypeFromString(newPageType); ok { + config.OnChangePageTypeAndWallpaper(pageType, balance.CustomWallpaperFilename) + } + } else { + // Hold onto the new wallpaper until the level is created. + newWallpaper = balance.CustomWallpaperFilename + newWallpaperB64 = b64data + } + } + return nil + } + + if pageType, ok := level.PageTypeFromString(newPageType); ok { + config.OnChangePageTypeAndWallpaper(pageType, filename) + newWallpaper = filename + } + } + } + return nil + }) + + wallBtn.Supervise(config.Supervisor) + config.Supervisor.Add(wallBtn) + + /****************** + * Frame for picking a default color palette. + ******************/ + + // For new level or --experimental only. + if config.EditLevel == nil || balance.Feature.ChangePalette { + palFrame := ui.NewFrame("Palette Frame") + frame.Pack(palFrame, ui.Pack{ + Side: ui.N, + FillX: true, + PadY: 4, + }) + + label3 := ui.NewLabel(ui.Label{ + Text: "Palette: ", + Font: balance.LabelFont, + }) + palFrame.Pack(label3, ui.Pack{ + Side: ui.W, + }) + + palBtn := ui.NewSelectBox("Palette Select", ui.Label{ + Font: balance.MenuFont, + }) + palBtn.AlwaysChange = true + + palFrame.Pack(palBtn, ui.Pack{ + Side: ui.W, + Expand: true, + }) + + if config.EditLevel != nil { + palBtn.AddItem(paletteName, paletteName, func() {}) + palBtn.AddSeparator() + } + + for _, palName := range level.DefaultPaletteNames { + palName := palName + palBtn.AddItem(palName, palName, func() {}) + } + + palBtn.Handle(ui.Change, func(ed ui.EventData) error { + if val, ok := palBtn.GetValue(); ok { + val2, _ := val.Value.(string) + paletteName = val2 + } + return nil + }) + + config.Supervisor.Add(palBtn) + palBtn.Supervise(config.Supervisor) + } + + /****************** + * Frame for giving the level a title. + ******************/ + + if config.EditLevel != nil { + label3 := ui.NewLabel(ui.Label{ + Text: "Metadata", + Font: balance.LabelFont, + }) + frame.Pack(label3, ui.Pack{ + Side: ui.N, + FillX: true, + }) + + type metadataObj struct { + Label string + Binding *string + Update func(string) + } + var metaRows = []metadataObj{ + {"Title:", &config.EditLevel.Title, func(v string) { config.EditLevel.Title = v }}, + {"Author:", &config.EditLevel.Author, func(v string) { config.EditLevel.Author = v }}, + } + + for _, mr := range metaRows { + mr := mr + mrFrame := ui.NewFrame("Metadata " + mr.Label + "Frame") + frame.Pack(mrFrame, ui.Pack{ + Side: ui.N, + FillX: true, + PadY: 2, + }) + + // The label. + mrLabel := ui.NewLabel(ui.Label{ + Text: mr.Label, + Font: balance.MenuFont, + }) + mrLabel.Configure(ui.Config{ + Width: 75, + }) + mrFrame.Pack(mrLabel, ui.Pack{ + Side: ui.W, + }) + + // The button. + mrButton := ui.NewButton(mr.Label, ui.NewLabel(ui.Label{ + TextVariable: mr.Binding, + Font: balance.MenuFont, + })) + mrButton.Handle(ui.Click, func(ed ui.EventData) error { + shmem.Prompt("Enter a new "+mr.Label, func(answer string) { + if answer != "" { + mr.Update(answer) + } + }) + return nil + }) + config.Supervisor.Add(mrButton) + mrFrame.Pack(mrButton, ui.Pack{ + Side: ui.W, + Expand: true, + PadX: 2, + }) + } + } + + /****************** + * Confirm/cancel buttons. + ******************/ + + bottomFrame := ui.NewFrame("Button Frame") + frame.Pack(bottomFrame, ui.Pack{ + Side: ui.N, + FillX: true, + PadY: 8, + }) + + var buttons = []struct { + Label string + F func(ui.EventData) error + }{ + {"Continue", func(ed ui.EventData) error { + shmem.Flash("Create new map with %s page type and %s wallpaper", newPageType, newWallpaper) + pageType, ok := level.PageTypeFromString(newPageType) + if !ok { + shmem.Flash("Invalid Page Type '%s'", newPageType) + return nil + } + + lvl := level.New() + lvl.Palette = level.DefaultPalettes[paletteName] + lvl.Wallpaper = newWallpaper + lvl.PageType = pageType + + // Was a custom wallpaper selected for our NEW level? + if lvl.Wallpaper == balance.CustomWallpaperFilename && len(newWallpaperB64) > 0 { + lvl.SetFile(balance.CustomWallpaperEmbedPath, []byte(newWallpaperB64)) + } + + if config.OnCreateNewLevel != nil { + config.OnCreateNewLevel(lvl) + } else { + shmem.FlashError("OnCreateNewLevel not attached") + } + return nil + }}, + + {"Cancel", func(ed ui.EventData) error { + config.OnCancel() + return nil + }}, + + // OK button is for editing an existing level. + {"OK", func(ed ui.EventData) error { + // If we're editing a level, did we select a new palette? + if paletteName != textCurrentPalette { + modal.Confirm( + "Are you sure you want to change the level palette?\n" + + "Existing pixels drawn on your level may change, and\n" + + "if the new palette is smaller, some pixels may be\n" + + "lost from your level. OK to continue?", + ).WithTitle("Change Level Palette").Then(func() { + // Install the new level palette. + config.EditLevel.ReplacePalette(level.DefaultPalettes[paletteName]) + if config.OnReload != nil { + config.OnReload() + } + }) + return nil + } + + config.OnCancel() + return nil + }}, + } + for _, t := range buttons { + // If we're editing settings on an existing level, skip the Continue. + if (isNewLevel && t.Label == "OK") || (!isNewLevel && t.Label != "OK") { + continue + } + btn := ui.NewButton(t.Label, ui.NewLabel(ui.Label{ + Text: t.Label, + Font: balance.MenuFont, + })) + btn.Handle(ui.Click, t.F) + config.Supervisor.Add(btn) + bottomFrame.Pack(btn, ui.Pack{ + Side: ui.W, + PadX: 4, + PadY: 8, + }) + } +} + +// Creates the "New Doodad" frame. +func (config AddEditLevel) setupDoodadFrame(tf *ui.TabFrame) { + // Default options. + var ( + doodadSize = 64 + ) + + frame := tf.AddTab("doodad", ui.NewLabel(ui.Label{ + Text: "New Doodad", + Font: balance.TabFont, + })) + + /****************** + * Frame for selecting Page Type + ******************/ + + typeFrame := ui.NewFrame("Doodad Options Frame") + frame.Pack(typeFrame, ui.Pack{ + Side: ui.N, + FillX: true, + }) + + label1 := ui.NewLabel(ui.Label{ + Text: "Doodad sprite size (square):", + Font: balance.LabelFont, + }) + typeFrame.Pack(label1, ui.Pack{ + Side: ui.W, + }) + + // A selectbox to suggest some sizes or let the user enter a custom. + sizeBtn := ui.NewSelectBox("Size Select", ui.Label{ + Font: ui.MenuFont, + }) + typeFrame.Pack(sizeBtn, ui.Pack{ + Side: ui.W, + Expand: true, + }) + + for _, row := range []struct { + Name string + Value int + }{ + {"32", 32}, + {"64", 64}, + {"96", 96}, + {"128", 128}, + {"200", 200}, + {"256", 256}, + {"Custom...", 0}, + } { + row := row + sizeBtn.AddItem(row.Name, row.Value, func() {}) + } + + sizeBtn.SetValue(doodadSize) + sizeBtn.Handle(ui.Change, func(ed ui.EventData) error { + if selection, ok := sizeBtn.GetValue(); ok { + if size, ok := selection.Value.(int); ok { + if size == 0 { + shmem.Prompt("Enter a custom size for the doodad width and height: ", func(answer string) { + if a, err := strconv.Atoi(answer); err == nil && a > 0 { + doodadSize = a + } else { + shmem.FlashError("Doodad size should be a number greater than zero.") + } + }) + } else { + doodadSize = size + } + } + } + return nil + }) + + sizeBtn.Supervise(config.Supervisor) + config.Supervisor.Add(sizeBtn) + + /****************** + * Confirm/cancel buttons. + ******************/ + + bottomFrame := ui.NewFrame("Button Frame") + frame.Pack(bottomFrame, ui.Pack{ + Side: ui.N, + FillX: true, + PadY: 8, + }) + + var buttons = []struct { + Label string + F func(ui.EventData) error + }{ + {"Continue", func(ed ui.EventData) error { + if config.OnCreateNewDoodad != nil { + config.OnCreateNewDoodad(doodadSize) + } else { + shmem.FlashError("OnCreateNewDoodad not attached") + } + return nil + }}, + + {"Cancel", func(ed ui.EventData) error { + config.OnCancel() + return nil + }}, + } + for _, t := range buttons { + btn := ui.NewButton(t.Label, ui.NewLabel(ui.Label{ + Text: t.Label, + Font: balance.MenuFont, + })) + btn.Handle(ui.Click, t.F) + config.Supervisor.Add(btn) + bottomFrame.Pack(btn, ui.Pack{ + Side: ui.W, + PadX: 4, + PadY: 8, + }) + } } diff --git a/pkg/windows/levelpack_open.go b/pkg/windows/levelpack_open.go index d0853ae..3480646 100644 --- a/pkg/windows/levelpack_open.go +++ b/pkg/windows/levelpack_open.go @@ -17,7 +17,8 @@ type LevelPack struct { Engine render.Engine // Callback functions. - OnPlayLevel func(pack levelpack.LevelPack, level levelpack.Level) + OnPlayLevel func(pack levelpack.LevelPack, level levelpack.Level) + OnCloseWindow func() // Internal variables window *ui.Window @@ -65,6 +66,7 @@ func NewLevelPackWindow(config LevelPack) *ui.Window { // And each LevelPack's screen is a pager for its Levels. tabFrame := ui.NewTabFrame("Screens Manager") tabFrame.SetTabsHidden(true) + tabFrame.Supervise(config.Supervisor) window.Pack(tabFrame, ui.Pack{ Side: ui.N, FillX: true, @@ -90,12 +92,23 @@ func NewLevelPackWindow(config LevelPack) *ui.Window { config.makeDetailScreen(tab, width, height, packmap[filename]) } - // indexTab.Resize(render.Rect{ - // W: width-4, - // H: height-4, - // }) + // Close button. + if config.OnCloseWindow != nil { + closeBtn := ui.NewButton("Close Window", ui.NewLabel(ui.Label{ + Text: "Close", + Font: balance.MenuFont, + })) + closeBtn.Handle(ui.Click, func(ed ui.EventData) error { + config.OnCloseWindow() + return nil + }) + config.Supervisor.Add(closeBtn) + window.Place(closeBtn, ui.Place{ + Bottom: 15, + Center: true, + }) + } - tabFrame.Supervise(config.Supervisor) window.Supervise(config.Supervisor) window.Hide() return window diff --git a/pkg/windows/open_level_editor.go b/pkg/windows/open_level_editor.go index 8347886..34e968d 100644 --- a/pkg/windows/open_level_editor.go +++ b/pkg/windows/open_level_editor.go @@ -6,6 +6,7 @@ import ( "strings" "git.kirsle.net/apps/doodle/pkg/balance" + "git.kirsle.net/apps/doodle/pkg/enum" "git.kirsle.net/apps/doodle/pkg/level" "git.kirsle.net/apps/doodle/pkg/log" "git.kirsle.net/apps/doodle/pkg/native" @@ -32,8 +33,18 @@ type OpenLevelEditor struct { func NewOpenLevelEditor(config OpenLevelEditor) *ui.Window { var ( width, height = config.Engine.WindowSize() + columns = 4 ) + // Show fewer columns on smaller devices. + if width <= enum.ScreenWidthXSmall { + columns = 1 + } else if width <= enum.ScreenWidthSmall { + columns = 2 + } else if width <= enum.ScreenWidthMedium { + columns = 3 + } + window := ui.NewWindow("Open Drawing") window.Configure(ui.Config{ Width: int(float64(width) * 0.75), @@ -86,7 +97,9 @@ func NewOpenLevelEditor(config OpenLevelEditor) *ui.Window { func(i int, lvl string) { btn := ui.NewButton("Level Btn", ui.NewLabel(ui.Label{ Text: lvl, - Font: balance.MenuFont, + Font: balance.MenuFont.Update(render.Text{ + PadY: 2, + }), })) btn.Handle(ui.Click, func(ed ui.EventData) error { if config.LoadForPlay { @@ -103,7 +116,7 @@ func NewOpenLevelEditor(config OpenLevelEditor) *ui.Window { Fill: true, }) - if i > 0 && (i+1)%4 == 0 { + if columns == 1 || i > 0 && (i+1)%columns == 0 { lvlRow = ui.NewFrame(fmt.Sprintf("Level Row %d", i)) frame.Pack(lvlRow, ui.Pack{ Side: ui.N,