From 8a0e53a825d1063a041aad32f78c334352f7e0d8 Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Wed, 24 Feb 2016 13:34:53 -0800 Subject: [PATCH] not sure why I didn't think of this sooner. --- desktop/resources/ui/ui.atlas | 36 +++++++++++------ desktop/resources/ui/ui.json | 8 +++- desktop/resources/ui/ui.png | Bin 2447 -> 2807 bytes .../src-common/advent/screens/inventory.clj | 3 +- desktop/src-common/advent/screens/title.clj | 37 ++++++++++++------ desktop/src-common/advent/utils.clj | 3 +- 6 files changed, 61 insertions(+), 26 deletions(-) diff --git a/desktop/resources/ui/ui.atlas b/desktop/resources/ui/ui.atlas index 5dc02981..7368ac58 100644 --- a/desktop/resources/ui/ui.atlas +++ b/desktop/resources/ui/ui.atlas @@ -6,7 +6,7 @@ filter: Nearest,Nearest repeat: none button rotate: false - xy: 2, 6 + xy: 2, 10 size: 52, 52 split: 24, 24, 12, 22 orig: 52, 52 @@ -14,7 +14,7 @@ button index: -1 button.disabled rotate: false - xy: 56, 6 + xy: 56, 10 size: 52, 52 split: 24, 24, 12, 22 orig: 52, 52 @@ -22,7 +22,7 @@ button.disabled index: -1 button.hover rotate: false - xy: 110, 6 + xy: 110, 10 size: 52, 52 split: 24, 24, 12, 22 orig: 52, 52 @@ -30,15 +30,29 @@ button.hover index: -1 button.pressed rotate: false - xy: 164, 6 + xy: 164, 10 size: 52, 52 split: 24, 24, 16, 16 orig: 52, 52 offset: 0, 0 index: -1 +checkbox + rotate: false + xy: 264, 2 + size: 42, 60 + orig: 42, 60 + offset: 0, 0 + index: -1 +checkbox.on + rotate: false + xy: 308, 2 + size: 42, 60 + orig: 42, 60 + offset: 0, 0 + index: -1 screenshot-image-button rotate: false - xy: 368, 38 + xy: 456, 42 size: 20, 20 split: 8, 8, 8, 8 orig: 20, 20 @@ -46,7 +60,7 @@ screenshot-image-button index: -1 screenshot-image-button-active rotate: false - xy: 346, 38 + xy: 434, 42 size: 20, 20 split: 8, 8, 8, 8 orig: 20, 20 @@ -54,7 +68,7 @@ screenshot-image-button-active index: -1 scroll-slider rotate: false - xy: 264, 10 + xy: 352, 14 size: 20, 48 split: 8, 8, 12, 12 orig: 20, 48 @@ -62,7 +76,7 @@ scroll-slider index: -1 slider rotate: false - xy: 390, 38 + xy: 478, 42 size: 20, 20 split: 8, 8, 8, 8 orig: 20, 20 @@ -70,21 +84,21 @@ slider index: -1 slider-bar rotate: false - xy: 286, 30 + xy: 374, 34 size: 28, 28 orig: 28, 28 offset: 0, 0 index: -1 slider-bar-hover rotate: false - xy: 316, 30 + xy: 404, 34 size: 28, 28 orig: 28, 28 offset: 0, 0 index: -1 ui-bg rotate: false - xy: 218, 2 + xy: 218, 6 size: 44, 56 split: 20, 21, 16, 16 orig: 44, 56 diff --git a/desktop/resources/ui/ui.json b/desktop/resources/ui/ui.json index 5a15e816..d7120f3e 100644 --- a/desktop/resources/ui/ui.json +++ b/desktop/resources/ui/ui.json @@ -1,11 +1,17 @@ { - com.badlogic.gdx.graphics.g2d.BitmapFont: { default-font: { file: ego/font.fnt }, button-font: { file: ego/button-font.fnt }} + com.badlogic.gdx.graphics.g2d.BitmapFont: { default-font: { file: ego/font.fnt, scale: 0.5 }, button-font: { file: ego/button-font.fnt }} com.badlogic.gdx.graphics.Color: { button-font-up: {hex: 19003Dff }, gray: {hex: 21172Eff }, pressed: { hex: 19003Dff }, yellow: {hex: 69386Dff }, + label-yellow: {hex: ce7f00ff }, + label-yellow-hover: {hex: de9827ff } , + label-yellow-down: {hex: a26d17ff } }, +com.badlogic.gdx.scenes.scene2d.ui.CheckBox$CheckBoxStyle: { + default: { font: default-font, downFontColor: label-yellow-down, overFontColor: label-yellow-hover, fontColor: label-yellow, checkboxOn: checkbox.on, checkboxOff: checkbox, unpressedOffsetY: 12, pressedOffsetY: 12 } +}, com.badlogic.gdx.scenes.scene2d.ui.Slider$SliderStyle: { default-horizontal: { background: slider, knob: slider-bar } default-horizontal-hover: { background: slider, knob: slider-bar-hover } diff --git a/desktop/resources/ui/ui.png b/desktop/resources/ui/ui.png index 7c56f478eb7aebe4f0a456650abc4484709f9a97..126ffc463d476e56e7a5ca92616118482e9e8139 100644 GIT binary patch literal 2807 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 literal 2447 zcmZ8jdpML^7hmH}xt!G3K`}}xor*4mFcc+`gmWAmzNS(#MhGKj-cvrFI+Yn+d?%7_ zt|!DWOvWf(-1!JG3`&a0xQ=n1Ij?Ky`QAVFv-V!k`t9Fu?X~uPuR1y$QdCe^002eX z!v~!JBv2D@ax&=X$F5@o$h+Dev~&(@8|bi$UG4JY+uif$q?f`vO)k;qL)JniALOp*-SshAGbw;UJ$!+}?+;Al*`Dfa5v;d2)0BAo^ z#q&FVJ`SIuOG_2d#g&Zi zU+gjU0e_`HT2pw_>?Sc@)xkPLEPlmpa!t4>21I2c5Fm=Gbg81V;`dd-?=q%Yg!60P zvJ&|^aJkaBqNs_$+9T(|rvDIJ_G*U@CZKEb9QOuMQ=Ko!R1WtlHfu3u;iE&7DZc%r zs=D&JNvTW(I;*kY;Ee=Mx&7hkE3~_cz@kX1^!%Egi=q0kMoN1>id>!=D*Mgs z9KSmAf_y89%P&qBX63oDB3YEkh`?%*hG>I0NpK;PxRY}ml|T38%i`KeF6+VeUB?c% zZ1IE6B28QjCRx=St}Pz`dKL_D97l+Z6xed9l;M5?Zku&+p7oX5Ua@b59O(o)#!my> zgvziWXC7XzPX{7G0`8yKD_u&9PYTIMfr*hC?bNx3&|a*HxdPII!m)n!R9^+8%+$!l z3Nlnby3g%|T73ues5`|vB@tt`}prLOhh1-ZHV3KLi0r?)em`s4f(g<0e z@@8hZ2&2Lz^l!qC1IXp zsUdJXT6yyu##TweK^dkf?kW8YONTlZC$@N3XERk5x0lv0{t^fC6}1SvWK-!K4-fI} zSiLA!lr1Mo?j2S_AD(!)$s;mpgyO)n6jNV)w22m&;Q|a z?3}S&EdQ`^$6*4`<2PWi)2O@D7`}QH+IOI>Vb&!O35Nfa=&G)0qA6|HxK96u$rfhE z)~$wfJeP5#F7LPdDjbg!rpR*a1kD#yrH2^CgkQ6G?&$6R^@UciILzW+fR)$P+<;8d%guB#+rG z;%H3v=%$OT_fa0{Hqdpck1|my$F$gqjVUE>xKl2FsCSp-W*a$~1yrGW*yiSuGl34I z=1f08Z>Rm)erTWOm2TdbT_~tzlHEFk?+8Rjp0ST0IhM#Ni=_2Wdy3gFCrK?n)uUq| zCil+VH4Eb0N7GTvE%~MjfK;BDY#+8!KHP%xe!uR&-)YAsg?Y##eL~L9ieSs@-Uat0 zi-Mut92K4B7nhX0oS#Kw%Q_%&Ig69myWk}Gxt_}{-JE^!^=)w#`Dj8&u`Q&Pg?}ay z541wLWI~~!ff(2*CTi5X3B4r1hDp9K#Y}bSqOX%F#+02vCOZY)SITq*kVnG}2Zed{upw+o#reD0)Qq)8@({h7z=<_?dpFW5i5s z`%cz7Oyyf-U|_Eul>}J(YZfyrFvy<6UwN0lAEprm1bAm$gmS~DXdKlSgG1l4LtgI1 z($Eo&Uw={QqUX+A=gVAT?A!BwI`Ykej>vkniDvNE#$NOLk~HaV!ueacAY63ST}a>D zF(?B+_D!1dhfm6cS4}b0n)blZX`B?S-skB0Q(~{c%rH9ys6lZ-nWhkzrD!@-Y17k| z=Rf$DJbpysW<_|^%^D7il)I9`11cfObl1k=N!@cD_BSo~WFzU)R?gtHNbAz%ZVq~v z)~m%!Wtcd|eKY|R0xPbzN*a2Mv-JQQ(JmU=DFqD@iHDC zZncwecn{!E(Ad0<@AElG!ph5Ockdniu*HkyXQO&k``y?3G+c-QeW#+3LAF7C+DM*g zTFxdvt Button + (.getDeclaredField (name "isChecked")) + (doto (.setAccessible true)) + (.set (:object cb) state)) + cb) + +(defn make-checkbox + ([msg checked & rest] + (let [s (skin! (skin "ui/ui.json") :get CheckBox$CheckBoxStyle)] + (-> s + .font + (.setScale 0.5 0.5)) + + (doto (merge (check-box msg s) + (apply hash-map rest)) + (set-checkbox-state (utils/is-fullscreen?)) + save-object)))) + (defn make-label ([msg] (make-label msg nil)) @@ -161,8 +181,8 @@ (label style) (assoc :x 0 :y 0 :height 40 :origin-x 0 :origin-y 0 :z 8) (doto (label! :set-alignment Align/bottom) - (label! :set-font-scale 0.5) - (#(label! % :set-width (/ (label! % :get-width) 2)))) + #_(label! :set-font-scale 0.5) + #_(#(label! % :set-width (/ (label! % :get-width) 2)))) center)))) (defn make-slider [initial-value & rest] @@ -230,11 +250,9 @@ [ (make-button "Back" :key :back) :height 56]]))) (defn settings-menu [] - (let [fullscreen-button (make-button "Fullscreen" :key :toggle-fullscreen)] + (let [fullscreen-button (make-checkbox "Fullscreen" (utils/is-fullscreen?) :key :toggle-fullscreen)] - (assoc (make-table [[(make-label "Settings" label-color) :height 40 :pad-bottom 4] - :row - [(make-label "Music" label-color) :height 40 :pad-bottom 4] + (assoc (make-table [[(make-label "Music" label-color) :height 40 :pad-bottom 4] :row [(make-slider (:music-volume @utils/settings) :key :music-volume-slider) :width 240 :pad-bottom 4] :row @@ -394,10 +412,7 @@ entities (update-in entities [:balloon] merge (animation->texture screen (:anim (:balloon entities)))) entities (update-in entities [:banner-back] merge (animation->texture screen (:anim (:banner-back entities))))] (when (:fullscreen-button (:settings-menu entities)) - (text-button! (:fullscreen-button (:settings-menu entities)) - :set-text (if (utils/is-fullscreen?) - "Windowed" - "Fullscreen"))) + (set-checkbox-state (:fullscreen-button (:settings-menu entities)) (utils/is-fullscreen?))) (music! (:music entities) :set-volume (utils/current-music-volume (:volume entities))) diff --git a/desktop/src-common/advent/utils.clj b/desktop/src-common/advent/utils.clj index e7ad7471..20df8549 100644 --- a/desktop/src-common/advent/utils.clj +++ b/desktop/src-common/advent/utils.clj @@ -150,7 +150,8 @@ edn/read-string))) (defn get-font [filename] - (let [font (bitmap-font filename) + (let [font (-> (bitmap-font filename) + (doto (bitmap-font! :set-scale 0.5 0.5))) tr (bitmap-font! font :get-region) tx (.getTexture tr)] (call! ^Texture tx :set-filter Texture$TextureFilter/Linear Texture$TextureFilter/Linear)