diff --git a/source/core/assets/images/ui/buttons/determination_mono_22.fnt b/source/core/assets/images/ui/buttons/determination_mono_22.fnt new file mode 100644 index 000000000..d21e29871 --- /dev/null +++ b/source/core/assets/images/ui/buttons/determination_mono_22.fnt @@ -0,0 +1,191 @@ +info face="determination_mono_22" size=12 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=2 padding=1,1,1,1 spacing=0,0 +common lineHeight=22 base=17 scaleW=506 scaleH=89 pages=1 packed=0 alphaChnl=0 redChnl=0 greenChnl=0 blueChnl=0 +page id=0 file="determination_mono_22.png" +chars count=186 +char id=0 x=2 y=2 width=8 height=17 xoffset=-1 yoffset=1 xadvance=9 page=0 chnl=0 +char id=32 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=-1 xadvance=11 page=0 chnl=0 +char id=33 x=244 y=25 width=8 height=16 xoffset=1 yoffset=2 xadvance=13 page=0 chnl=0 +char id=34 x=70 y=78 width=10 height=8 xoffset=-1 yoffset=3 xadvance=13 page=0 chnl=0 +char id=35 x=154 y=44 width=12 height=15 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=36 x=24 y=2 width=10 height=21 xoffset=-1 yoffset=0 xadvance=11 page=0 chnl=0 +char id=37 x=196 y=44 width=12 height=15 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=38 x=129 y=44 width=11 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=39 x=500 y=61 width=5 height=8 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=40 x=376 y=44 width=8 height=15 xoffset=2 yoffset=3 xadvance=12 page=0 chnl=0 +char id=41 x=366 y=44 width=8 height=15 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=42 x=0 y=78 width=13 height=10 xoffset=-2 yoffset=6 xadvance=12 page=0 chnl=0 +char id=43 x=25 y=78 width=10 height=9 xoffset=-1 yoffset=6 xadvance=11 page=0 chnl=0 +char id=44 x=493 y=61 width=5 height=9 xoffset=-1 yoffset=13 xadvance=12 page=0 chnl=0 +char id=45 x=167 y=78 width=8 height=5 xoffset=1 yoffset=8 xadvance=13 page=0 chnl=0 +char id=46 x=160 y=78 width=5 height=5 xoffset=-1 yoffset=13 xadvance=12 page=0 chnl=0 +char id=47 x=12 y=25 width=10 height=17 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=48 x=491 y=44 width=10 height=15 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=49 x=98 y=61 width=10 height=15 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=50 x=86 y=61 width=10 height=15 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=51 x=74 y=61 width=10 height=15 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=52 x=61 y=61 width=11 height=15 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=53 x=49 y=61 width=10 height=15 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=54 x=37 y=61 width=10 height=15 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=55 x=24 y=61 width=11 height=15 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=56 x=12 y=61 width=10 height=15 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=57 x=0 y=61 width=10 height=15 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=58 x=444 y=61 width=5 height=12 xoffset=2 yoffset=6 xadvance=12 page=0 chnl=0 +char id=59 x=400 y=44 width=5 height=14 xoffset=2 yoffset=6 xadvance=12 page=0 chnl=0 +char id=60 x=313 y=44 width=9 height=15 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=61 x=48 y=78 width=10 height=8 xoffset=-1 yoffset=6 xadvance=11 page=0 chnl=0 +char id=62 x=301 y=44 width=10 height=15 xoffset=0 yoffset=3 xadvance=12 page=0 chnl=0 +char id=63 x=443 y=44 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=64 x=270 y=44 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=65 x=359 y=25 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=66 x=371 y=25 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=67 x=397 y=25 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=68 x=409 y=25 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=69 x=421 y=25 width=11 height=15 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=70 x=434 y=25 width=11 height=15 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=71 x=459 y=25 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=72 x=471 y=25 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=73 x=483 y=25 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=74 x=495 y=25 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=75 x=14 y=44 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=76 x=50 y=44 width=11 height=15 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=77 x=91 y=44 width=12 height=15 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=78 x=105 y=44 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=79 x=117 y=44 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=80 x=142 y=44 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=81 x=308 y=2 width=10 height=19 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=82 x=184 y=44 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=83 x=210 y=44 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=84 x=236 y=44 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=85 x=248 y=44 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=86 x=282 y=44 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=87 x=386 y=44 width=12 height=15 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=88 x=407 y=44 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=89 x=419 y=44 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=90 x=431 y=44 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=91 x=356 y=44 width=8 height=15 xoffset=2 yoffset=3 xadvance=12 page=0 chnl=0 +char id=92 x=260 y=44 width=8 height=15 xoffset=1 yoffset=3 xadvance=13 page=0 chnl=0 +char id=93 x=346 y=44 width=8 height=15 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=94 x=82 y=78 width=11 height=8 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=95 x=177 y=78 width=10 height=5 xoffset=-1 yoffset=17 xadvance=11 page=0 chnl=0 +char id=96 x=130 y=78 width=6 height=6 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=97 x=416 y=61 width=10 height=12 xoffset=-1 yoffset=6 xadvance=11 page=0 chnl=0 +char id=98 x=455 y=44 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=99 x=392 y=61 width=10 height=12 xoffset=-1 yoffset=6 xadvance=11 page=0 chnl=0 +char id=100 x=467 y=44 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=101 x=365 y=61 width=10 height=12 xoffset=-1 yoffset=6 xadvance=11 page=0 chnl=0 +char id=102 x=479 y=44 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=103 x=184 y=25 width=10 height=16 xoffset=-1 yoffset=6 xadvance=11 page=0 chnl=0 +char id=104 x=122 y=61 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=105 x=196 y=25 width=10 height=16 xoffset=-1 yoffset=2 xadvance=11 page=0 chnl=0 +char id=106 x=12 y=2 width=10 height=21 xoffset=-1 yoffset=1 xadvance=11 page=0 chnl=0 +char id=107 x=148 y=61 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=108 x=160 y=61 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=109 x=265 y=61 width=12 height=12 xoffset=-1 yoffset=6 xadvance=12 page=0 chnl=0 +char id=110 x=253 y=61 width=10 height=12 xoffset=-1 yoffset=6 xadvance=11 page=0 chnl=0 +char id=111 x=241 y=61 width=10 height=12 xoffset=-1 yoffset=6 xadvance=11 page=0 chnl=0 +char id=112 x=208 y=25 width=10 height=16 xoffset=-1 yoffset=6 xadvance=11 page=0 chnl=0 +char id=113 x=220 y=25 width=10 height=16 xoffset=-1 yoffset=6 xadvance=11 page=0 chnl=0 +char id=114 x=229 y=61 width=10 height=12 xoffset=-1 yoffset=6 xadvance=11 page=0 chnl=0 +char id=115 x=404 y=61 width=10 height=12 xoffset=-1 yoffset=6 xadvance=11 page=0 chnl=0 +char id=116 x=184 y=61 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=117 x=279 y=61 width=10 height=12 xoffset=-1 yoffset=6 xadvance=11 page=0 chnl=0 +char id=118 x=291 y=61 width=10 height=12 xoffset=-1 yoffset=6 xadvance=11 page=0 chnl=0 +char id=119 x=315 y=61 width=12 height=12 xoffset=-1 yoffset=6 xadvance=12 page=0 chnl=0 +char id=120 x=329 y=61 width=10 height=12 xoffset=-1 yoffset=6 xadvance=11 page=0 chnl=0 +char id=121 x=232 y=25 width=10 height=16 xoffset=-1 yoffset=6 xadvance=11 page=0 chnl=0 +char id=122 x=353 y=61 width=10 height=12 xoffset=-1 yoffset=6 xadvance=11 page=0 chnl=0 +char id=123 x=335 y=44 width=9 height=15 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=124 x=294 y=44 width=5 height=15 xoffset=2 yoffset=3 xadvance=12 page=0 chnl=0 +char id=125 x=324 y=44 width=9 height=15 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=126 x=116 y=78 width=12 height=6 xoffset=-1 yoffset=8 xadvance=12 page=0 chnl=0 +char id=160 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=17 xadvance=12 page=0 chnl=0 +char id=161 x=174 y=25 width=8 height=16 xoffset=1 yoffset=6 xadvance=13 page=0 chnl=0 +char id=162 x=110 y=61 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=163 x=134 y=61 width=12 height=15 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=165 x=172 y=61 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=166 x=196 y=61 width=5 height=15 xoffset=2 yoffset=3 xadvance=12 page=0 chnl=0 +char id=167 x=320 y=2 width=10 height=19 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=168 x=148 y=78 width=10 height=5 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=169 x=254 y=25 width=14 height=16 xoffset=-3 yoffset=3 xadvance=12 page=0 chnl=0 +char id=170 x=216 y=61 width=11 height=13 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=171 x=478 y=61 width=13 height=10 xoffset=-2 yoffset=6 xadvance=12 page=0 chnl=0 +char id=172 x=95 y=78 width=11 height=8 xoffset=-1 yoffset=8 xadvance=12 page=0 chnl=0 +char id=173 x=138 y=78 width=8 height=5 xoffset=1 yoffset=8 xadvance=13 page=0 chnl=0 +char id=174 x=319 y=25 width=14 height=16 xoffset=-3 yoffset=3 xadvance=12 page=0 chnl=0 +char id=176 x=15 y=78 width=8 height=9 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=177 x=341 y=61 width=10 height=12 xoffset=-1 yoffset=6 xadvance=11 page=0 chnl=0 +char id=180 x=108 y=78 width=6 height=6 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=181 x=347 y=25 width=10 height=16 xoffset=-1 yoffset=6 xadvance=11 page=0 chnl=0 +char id=182 x=383 y=25 width=12 height=15 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=183 x=189 y=78 width=5 height=5 xoffset=2 yoffset=9 xadvance=12 page=0 chnl=0 +char id=184 x=37 y=78 width=9 height=8 xoffset=-1 yoffset=15 xadvance=12 page=0 chnl=0 +char id=186 x=203 y=61 width=11 height=13 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=187 x=463 y=61 width=13 height=10 xoffset=-2 yoffset=6 xadvance=12 page=0 chnl=0 +char id=191 x=447 y=25 width=10 height=15 xoffset=-1 yoffset=7 xadvance=11 page=0 chnl=0 +char id=192 x=132 y=2 width=10 height=20 xoffset=-1 yoffset=-2 xadvance=11 page=0 chnl=0 +char id=193 x=144 y=2 width=10 height=20 xoffset=-1 yoffset=-2 xadvance=11 page=0 chnl=0 +char id=194 x=36 y=2 width=10 height=21 xoffset=-1 yoffset=-3 xadvance=11 page=0 chnl=0 +char id=195 x=156 y=2 width=12 height=20 xoffset=-1 yoffset=-2 xadvance=12 page=0 chnl=0 +char id=196 x=332 y=2 width=10 height=19 xoffset=-1 yoffset=-1 xadvance=11 page=0 chnl=0 +char id=197 x=60 y=2 width=10 height=21 xoffset=-1 yoffset=-3 xadvance=11 page=0 chnl=0 +char id=198 x=0 y=44 width=12 height=15 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=199 x=344 y=2 width=10 height=19 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=200 x=170 y=2 width=11 height=20 xoffset=-1 yoffset=-2 xadvance=12 page=0 chnl=0 +char id=201 x=183 y=2 width=11 height=20 xoffset=-1 yoffset=-2 xadvance=12 page=0 chnl=0 +char id=202 x=84 y=2 width=10 height=21 xoffset=-1 yoffset=-3 xadvance=11 page=0 chnl=0 +char id=203 x=356 y=2 width=10 height=19 xoffset=-1 yoffset=-1 xadvance=11 page=0 chnl=0 +char id=204 x=196 y=2 width=10 height=20 xoffset=-1 yoffset=-2 xadvance=11 page=0 chnl=0 +char id=205 x=208 y=2 width=10 height=20 xoffset=-1 yoffset=-2 xadvance=11 page=0 chnl=0 +char id=206 x=96 y=2 width=10 height=21 xoffset=-1 yoffset=-3 xadvance=11 page=0 chnl=0 +char id=207 x=380 y=2 width=11 height=19 xoffset=-1 yoffset=-1 xadvance=12 page=0 chnl=0 +char id=208 x=63 y=44 width=12 height=15 xoffset=-2 yoffset=3 xadvance=12 page=0 chnl=0 +char id=209 x=220 y=2 width=12 height=20 xoffset=-1 yoffset=-2 xadvance=12 page=0 chnl=0 +char id=210 x=234 y=2 width=10 height=20 xoffset=-1 yoffset=-2 xadvance=11 page=0 chnl=0 +char id=211 x=246 y=2 width=10 height=20 xoffset=-1 yoffset=-2 xadvance=11 page=0 chnl=0 +char id=212 x=108 y=2 width=10 height=21 xoffset=-1 yoffset=-3 xadvance=11 page=0 chnl=0 +char id=213 x=258 y=2 width=12 height=20 xoffset=-1 yoffset=-2 xadvance=12 page=0 chnl=0 +char id=214 x=393 y=2 width=10 height=19 xoffset=-1 yoffset=-1 xadvance=11 page=0 chnl=0 +char id=215 x=451 y=61 width=10 height=11 xoffset=-1 yoffset=6 xadvance=11 page=0 chnl=0 +char id=216 x=168 y=44 width=14 height=15 xoffset=-3 yoffset=3 xadvance=12 page=0 chnl=0 +char id=217 x=272 y=2 width=10 height=20 xoffset=-1 yoffset=-2 xadvance=11 page=0 chnl=0 +char id=218 x=284 y=2 width=10 height=20 xoffset=-1 yoffset=-2 xadvance=11 page=0 chnl=0 +char id=219 x=120 y=2 width=10 height=21 xoffset=-1 yoffset=-3 xadvance=11 page=0 chnl=0 +char id=220 x=405 y=2 width=10 height=19 xoffset=-1 yoffset=-1 xadvance=11 page=0 chnl=0 +char id=221 x=296 y=2 width=10 height=20 xoffset=-1 yoffset=-2 xadvance=11 page=0 chnl=0 +char id=222 x=38 y=44 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=223 x=26 y=44 width=10 height=15 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=224 x=138 y=25 width=10 height=17 xoffset=-1 yoffset=1 xadvance=11 page=0 chnl=0 +char id=225 x=48 y=25 width=10 height=17 xoffset=-1 yoffset=1 xadvance=11 page=0 chnl=0 +char id=226 x=477 y=2 width=10 height=18 xoffset=-1 yoffset=0 xadvance=11 page=0 chnl=0 +char id=227 x=60 y=25 width=12 height=17 xoffset=-1 yoffset=1 xadvance=12 page=0 chnl=0 +char id=228 x=283 y=25 width=10 height=16 xoffset=-1 yoffset=2 xadvance=11 page=0 chnl=0 +char id=229 x=368 y=2 width=10 height=19 xoffset=-1 yoffset=-1 xadvance=11 page=0 chnl=0 +char id=230 x=377 y=61 width=13 height=12 xoffset=-2 yoffset=6 xadvance=12 page=0 chnl=0 +char id=231 x=307 y=25 width=10 height=16 xoffset=-1 yoffset=6 xadvance=11 page=0 chnl=0 +char id=232 x=150 y=25 width=10 height=17 xoffset=-1 yoffset=1 xadvance=11 page=0 chnl=0 +char id=233 x=489 y=2 width=10 height=17 xoffset=-1 yoffset=1 xadvance=11 page=0 chnl=0 +char id=234 x=465 y=2 width=10 height=18 xoffset=-1 yoffset=0 xadvance=11 page=0 chnl=0 +char id=235 x=162 y=25 width=10 height=16 xoffset=-1 yoffset=2 xadvance=11 page=0 chnl=0 +char id=236 x=0 y=25 width=10 height=17 xoffset=-1 yoffset=1 xadvance=11 page=0 chnl=0 +char id=237 x=24 y=25 width=10 height=17 xoffset=-1 yoffset=1 xadvance=11 page=0 chnl=0 +char id=238 x=453 y=2 width=10 height=18 xoffset=-1 yoffset=0 xadvance=11 page=0 chnl=0 +char id=239 x=270 y=25 width=11 height=16 xoffset=-1 yoffset=2 xadvance=12 page=0 chnl=0 +char id=240 x=77 y=44 width=12 height=15 xoffset=-1 yoffset=3 xadvance=12 page=0 chnl=0 +char id=241 x=86 y=25 width=12 height=17 xoffset=-1 yoffset=1 xadvance=12 page=0 chnl=0 +char id=242 x=100 y=25 width=10 height=17 xoffset=-1 yoffset=1 xadvance=11 page=0 chnl=0 +char id=243 x=112 y=25 width=10 height=17 xoffset=-1 yoffset=1 xadvance=11 page=0 chnl=0 +char id=244 x=429 y=2 width=10 height=18 xoffset=-1 yoffset=0 xadvance=11 page=0 chnl=0 +char id=245 x=124 y=25 width=12 height=17 xoffset=-1 yoffset=1 xadvance=12 page=0 chnl=0 +char id=246 x=335 y=25 width=10 height=16 xoffset=-1 yoffset=2 xadvance=11 page=0 chnl=0 +char id=247 x=303 y=61 width=10 height=12 xoffset=-1 yoffset=5 xadvance=11 page=0 chnl=0 +char id=248 x=428 y=61 width=14 height=12 xoffset=-3 yoffset=6 xadvance=12 page=0 chnl=0 +char id=249 x=36 y=25 width=10 height=17 xoffset=-1 yoffset=1 xadvance=11 page=0 chnl=0 +char id=250 x=74 y=25 width=10 height=17 xoffset=-1 yoffset=1 xadvance=11 page=0 chnl=0 +char id=251 x=441 y=2 width=10 height=18 xoffset=-1 yoffset=0 xadvance=11 page=0 chnl=0 +char id=252 x=295 y=25 width=10 height=16 xoffset=-1 yoffset=2 xadvance=11 page=0 chnl=0 +char id=253 x=72 y=2 width=10 height=21 xoffset=-1 yoffset=1 xadvance=11 page=0 chnl=0 +char id=254 x=417 y=2 width=10 height=18 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0 +char id=255 x=48 y=2 width=10 height=21 xoffset=-1 yoffset=1 xadvance=11 page=0 chnl=0 +char id=8226 x=60 y=78 width=8 height=8 xoffset=1 yoffset=7 xadvance=13 page=0 chnl=0 +char id=8364 x=222 y=44 width=12 height=15 xoffset=-2 yoffset=3 xadvance=12 page=0 chnl=0 +kernings count=0 diff --git a/source/core/assets/images/ui/buttons/glass.atlas b/source/core/assets/images/ui/buttons/glass.atlas index 919126acb..4a7987fe5 100644 --- a/source/core/assets/images/ui/buttons/glass.atlas +++ b/source/core/assets/images/ui/buttons/glass.atlas @@ -6,686 +6,693 @@ filter: Linear, Linear repeat: none dot_gothic_16 rotate: false - xy: 1017, 1928 + xy: 1, 989 size: 505, 107 orig: 505, 107 offset: 0, 0 index: -1 dot_gothic_32 rotate: false - xy: 1, 853 + xy: 509, 1527 size: 505, 240 orig: 505, 240 offset: 0, 0 index: -1 Emulogic-zrEw rotate: false - xy: 1, 627 + xy: 1, 763 size: 505, 224 orig: 505, 224 offset: 0, 0 index: -1 determination_mono_18 rotate: false - xy: 1017, 1862 + xy: 1525, 1974 size: 505, 64 orig: 505, 64 offset: 0, 0 index: -1 determination_mono_18_bold rotate: false - xy: 509, 1766 + xy: 509, 1769 size: 506, 106 orig: 506, 106 offset: 0, 0 index: -1 +determination_mono_22 + rotate: false + xy: 1017, 1949 + size: 506, 89 + orig: 506, 89 + offset: 0, 0 + index: -1 determination_mono_32 rotate: false - xy: 1524, 1890 + xy: 509, 1380 size: 503, 145 orig: 503, 145 offset: 0, 0 index: -1 determination_mono_48_title rotate: false - xy: 1, 1639 + xy: 1, 1642 size: 506, 396 orig: 506, 396 offset: 0, 0 index: -1 emulogic_18 rotate: false - xy: 509, 1667 + xy: 1017, 1850 size: 505, 97 orig: 505, 97 offset: 0, 0 index: -1 game_paused_24 rotate: false - xy: 1, 1584 + xy: 1, 1587 size: 506, 53 orig: 506, 53 offset: 0, 0 index: -1 game_paused_title rotate: false - xy: 509, 1561 + xy: 1, 657 size: 502, 104 orig: 502, 104 offset: 0, 0 index: -1 glitch_24 rotate: false - xy: 509, 1874 + xy: 509, 1877 size: 506, 161 orig: 506, 161 offset: 0, 0 index: -1 glitch_title rotate: false - xy: 1, 1095 + xy: 1, 1098 size: 506, 487 orig: 506, 487 offset: 0, 0 index: -1 UI_Glass_Arrow_Large_01a rotate: false - xy: 607, 1223 + xy: 965, 1346 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Arrow_Medium_01a rotate: false - xy: 759, 1375 + xy: 99, 167 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Arrow_Small_01a rotate: false - xy: 99, 137 + xy: 251, 319 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Banner_01a rotate: false - xy: 1017, 1828 + xy: 1017, 1816 size: 96, 32 orig: 96, 32 offset: 0, 0 index: -1 UI_Glass_Banner_01b rotate: false - xy: 251, 289 + xy: 403, 589 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Textfield_01a rotate: false - xy: 251, 289 + xy: 403, 589 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Button_Large_Lock_01a1 rotate: false - xy: 305, 593 + xy: 509, 1194 size: 96, 32 orig: 96, 32 offset: 0, 0 index: -1 UI_Glass_Button_Large_Release_01a3 rotate: false - xy: 305, 593 + xy: 509, 1194 size: 96, 32 orig: 96, 32 offset: 0, 0 index: -1 UI_Glass_Button_Large_Lock_01a2 rotate: false - xy: 509, 1223 + xy: 305, 623 size: 96, 32 orig: 96, 32 offset: 0, 0 index: -1 UI_Glass_Button_Large_Release_01a2 rotate: false - xy: 509, 1223 + xy: 305, 623 size: 96, 32 orig: 96, 32 offset: 0, 0 index: -1 UI_Glass_Button_Large_Lock_01a3 rotate: false - xy: 661, 1375 + xy: 1, 167 size: 96, 32 orig: 96, 32 offset: 0, 0 index: -1 UI_Glass_Button_Large_Release_01a1 rotate: false - xy: 661, 1375 + xy: 1, 167 size: 96, 32 orig: 96, 32 offset: 0, 0 index: -1 UI_Glass_Button_Large_Lock_01a4 rotate: false - xy: 813, 1527 + xy: 153, 319 size: 96, 32 orig: 96, 32 offset: 0, 0 index: -1 UI_Glass_Button_Large_Press_01a1 rotate: false - xy: 1, 137 + xy: 1017, 1782 size: 96, 32 orig: 96, 32 offset: 0, 0 index: -1 UI_Glass_Button_Large_Press_01a2 rotate: false - xy: 153, 289 + xy: 1115, 1816 size: 96, 32 orig: 96, 32 offset: 0, 0 index: -1 UI_Glass_Button_Large_Press_01a3 rotate: false - xy: 1017, 1794 + xy: 509, 1160 size: 96, 32 orig: 96, 32 offset: 0, 0 index: -1 UI_Glass_Button_Large_Press_01a4 rotate: false - xy: 1115, 1828 + xy: 607, 1194 size: 96, 32 orig: 96, 32 offset: 0, 0 index: -1 UI_Glass_Button_Large_Release_01a4 rotate: false - xy: 1115, 1828 + xy: 607, 1194 size: 96, 32 orig: 96, 32 offset: 0, 0 index: -1 UI_Glass_Button_Medium_Lock_01a1 rotate: false - xy: 403, 593 + xy: 403, 623 size: 64, 32 orig: 64, 32 offset: 0, 0 index: -1 UI_Glass_Button_Medium_Release_01a3 rotate: false - xy: 403, 593 + xy: 403, 623 size: 64, 32 orig: 64, 32 offset: 0, 0 index: -1 UI_Glass_Button_Medium_Lock_01a2 rotate: false - xy: 813, 1493 + xy: 1115, 1782 size: 64, 32 orig: 64, 32 offset: 0, 0 index: -1 UI_Glass_Button_Medium_Release_01a2 rotate: false - xy: 813, 1493 + xy: 1115, 1782 size: 64, 32 orig: 64, 32 offset: 0, 0 index: -1 UI_Glass_Button_Medium_Lock_01a3 rotate: false - xy: 911, 1527 + xy: 1213, 1816 size: 64, 32 orig: 64, 32 offset: 0, 0 index: -1 UI_Glass_Button_Medium_Release_01a1 rotate: false - xy: 911, 1527 + xy: 1213, 1816 size: 64, 32 orig: 64, 32 offset: 0, 0 index: -1 UI_Glass_Button_Medium_Lock_01a4 rotate: false - xy: 1, 103 + xy: 509, 1126 size: 64, 32 orig: 64, 32 offset: 0, 0 index: -1 UI_Glass_Button_Medium_Press_01a1 rotate: false - xy: 153, 255 + xy: 607, 1160 size: 64, 32 orig: 64, 32 offset: 0, 0 index: -1 UI_Glass_Button_Medium_Press_01a2 rotate: false - xy: 1115, 1794 + xy: 705, 1194 size: 64, 32 orig: 64, 32 offset: 0, 0 index: -1 UI_Glass_Button_Medium_Press_01a3 rotate: false - xy: 1213, 1828 + xy: 305, 555 size: 64, 32 orig: 64, 32 offset: 0, 0 index: -1 UI_Glass_Button_Medium_Press_01a4 rotate: false - xy: 305, 525 + xy: 1, 35 size: 64, 32 orig: 64, 32 offset: 0, 0 index: -1 UI_Glass_Button_Medium_Release_01a4 rotate: false - xy: 305, 525 + xy: 1, 35 size: 64, 32 orig: 64, 32 offset: 0, 0 index: -1 UI_Glass_Button_Small_Lock_01a1 _1 rotate: false - xy: 403, 559 + xy: 469, 623 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Button_Small_Release_01a3 rotate: false - xy: 403, 559 + xy: 469, 623 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Button_Small_Lock_01a2_2 rotate: false - xy: 469, 593 + xy: 1181, 1782 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Button_Small_Release_01a2 rotate: false - xy: 469, 593 + xy: 1181, 1782 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Button_Small_Lock_01a3_3 rotate: false - xy: 813, 1459 + xy: 1279, 1816 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Button_Small_Release_01a1 rotate: false - xy: 813, 1459 + xy: 1279, 1816 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Button_Small_Lock_01a4_4 rotate: false - xy: 879, 1493 + xy: 575, 1126 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Button_Small_Press_01a1_ rotate: false - xy: 977, 1527 + xy: 673, 1160 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Button_Small_Press_01a2 rotate: false - xy: 1, 69 + xy: 771, 1194 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Button_Small_Press_01a3 rotate: false - xy: 67, 103 + xy: 305, 521 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Button_Small_Press_01a4 rotate: false - xy: 153, 221 + xy: 371, 555 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Button_Small_Release_01a4 rotate: false - xy: 153, 221 + xy: 371, 555 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Checkmark_Large_01a rotate: false - xy: 219, 255 + xy: 1, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Checkmark_Medium_01a rotate: false - xy: 1181, 1794 + xy: 965, 1312 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Checkmark_Small_01a rotate: false - xy: 1279, 1828 + xy: 99, 133 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Cross_Large_01a rotate: false - xy: 305, 491 + xy: 251, 285 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Cross_Medium_01a rotate: false - xy: 371, 525 + xy: 437, 589 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Cross_Small_01a rotate: false - xy: 607, 1189 + xy: 1215, 1782 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Dropdown_01a rotate: false - xy: 759, 1341 + xy: 1313, 1816 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Dropdown_Handle_01a rotate: false - xy: 437, 559 + xy: 609, 1126 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Fillbar_01a rotate: false - xy: 813, 1425 + xy: 707, 1160 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Fillbar_Filler_01a rotate: false - xy: 847, 1459 + xy: 805, 1194 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Frame_Horizontal_01a rotate: false - xy: 305, 559 + xy: 305, 589 size: 96, 32 orig: 96, 32 offset: 0, 0 index: -1 UI_Glass_Frame_Inward_01a rotate: false - xy: 509, 1125 + xy: 1, 69 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 UI_Glass_Frame_Lite_01a rotate: false - xy: 913, 1493 + xy: 305, 487 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Frame_Standard_01a rotate: false - xy: 661, 1277 + xy: 153, 221 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 UI_Glass_Frame_Vertical_01a rotate: false - xy: 305, 393 + xy: 305, 389 size: 32, 96 orig: 32, 96 offset: 0, 0 index: -1 UI_Glass_Minus_Large_01a rotate: false - xy: 1, 35 + xy: 339, 521 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Minus_Medium_01a rotate: false - xy: 35, 69 + xy: 405, 555 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Minus_Small_01a rotate: false - xy: 153, 187 + xy: 965, 1278 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Plus_Large_01a rotate: false - xy: 187, 221 + xy: 99, 99 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Plus_Medium_01a rotate: false - xy: 1215, 1794 + xy: 251, 251 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Plus_Small_01a rotate: false - xy: 1313, 1828 + xy: 1249, 1782 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Scrollbar_01a rotate: false - xy: 339, 491 + xy: 1347, 1816 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Scrollbar_Handle_01a rotate: false - xy: 405, 525 + xy: 643, 1126 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Select_01a1 rotate: false - xy: 607, 1155 + xy: 741, 1160 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Select_01a2 rotate: false - xy: 759, 1307 + xy: 839, 1194 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Select_01a4 rotate: false - xy: 759, 1307 + xy: 839, 1194 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Select_01a3 rotate: false - xy: 847, 1425 + xy: 305, 355 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Slider_01a rotate: false - xy: 881, 1459 + xy: 339, 487 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Slider_Filler_01a rotate: false - xy: 947, 1493 + xy: 373, 521 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Slider_Handle_01a rotate: false - xy: 305, 359 + xy: 965, 1244 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Slot_Available_01a rotate: false - xy: 1, 1 + xy: 1283, 1782 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Slot_Selected_01a rotate: false - xy: 35, 35 + xy: 1381, 1816 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Slot_Unavailable_01a rotate: false - xy: 187, 187 + xy: 677, 1126 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Toggle_Bar_01a rotate: false - xy: 1249, 1794 + xy: 775, 1160 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Toggle_Cover_01a rotate: false - xy: 1347, 1828 + xy: 873, 1194 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 UI_Glass_Toggle_Handle_01a rotate: false - xy: 339, 457 + xy: 339, 453 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 Weapon-Tower-Default rotate: false - xy: 153, 323 + xy: 153, 353 size: 150, 150 orig: 150, 150 offset: 0, 0 index: -1 droid-tower-default rotate: false - xy: 1, 475 + xy: 509, 1228 size: 150, 150 orig: 150, 150 offset: 0, 0 index: -1 fire-tower-default rotate: false - xy: 509, 1409 + xy: 1, 505 size: 150, 150 orig: 150, 150 offset: 0, 0 index: -1 imageedit_2_8132799771 rotate: false - xy: 1, 323 + xy: 661, 1228 size: 150, 150 orig: 150, 150 offset: 0, 0 index: -1 mine-tower-default rotate: false - xy: 153, 475 + xy: 1, 353 size: 150, 150 orig: 150, 150 offset: 0, 0 index: -1 stun-tower-default rotate: false - xy: 509, 1257 + xy: 153, 505 size: 150, 150 orig: 150, 150 offset: 0, 0 index: -1 tnt-tower-default rotate: false - xy: 661, 1409 + xy: 813, 1228 size: 150, 150 orig: 150, 150 offset: 0, 0 index: -1 wall-tower-default rotate: false - xy: 1, 171 + xy: 1, 201 size: 150, 150 orig: 150, 150 offset: 0, 0 diff --git a/source/core/assets/images/ui/buttons/glass.json b/source/core/assets/images/ui/buttons/glass.json index d3077c5ee..8637af19f 100644 --- a/source/core/assets/images/ui/buttons/glass.json +++ b/source/core/assets/images/ui/buttons/glass.json @@ -12,6 +12,12 @@ com.badlogic.gdx.graphics.g2d.BitmapFont: { markupEnabled: false flip: false } + determination_mono_22: { + file: determination_mono_22.fnt + scaledSize: -1 + markupEnabled: false + flip: false + } determination_mono_32: { file: determination_mono_32.fnt scaledSize: -1 @@ -402,7 +408,7 @@ com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle: { fontColor: White } small: { - font: determination_mono_18_bold + font: determination_mono_22 fontColor: White } } diff --git a/source/core/assets/images/ui/buttons/glass.png b/source/core/assets/images/ui/buttons/glass.png index 76461215e..57c85ace2 100644 Binary files a/source/core/assets/images/ui/buttons/glass.png and b/source/core/assets/images/ui/buttons/glass.png differ diff --git a/source/core/src/main/com/csse3200/game/components/maingame/MainGameActions.java b/source/core/src/main/com/csse3200/game/components/maingame/MainGameActions.java index efb046633..7253f6d3b 100644 --- a/source/core/src/main/com/csse3200/game/components/maingame/MainGameActions.java +++ b/source/core/src/main/com/csse3200/game/components/maingame/MainGameActions.java @@ -35,4 +35,6 @@ private void onExit() { private void onLose() { game.setScreen(GdxGame.ScreenType.LOSING_SCREEN); } + +// private void onWin() { game.setScreen(GdxGame.ScreenType.WIN_SCREEN);} // TODO : Uncomment this once win screen implemented } diff --git a/source/core/src/main/com/csse3200/game/components/maingame/MainGameDisplay.java b/source/core/src/main/com/csse3200/game/components/maingame/MainGameDisplay.java index 139cf5776..e46912371 100644 --- a/source/core/src/main/com/csse3200/game/components/maingame/MainGameDisplay.java +++ b/source/core/src/main/com/csse3200/game/components/maingame/MainGameDisplay.java @@ -1,6 +1,7 @@ package com.csse3200.game.components.maingame; import com.badlogic.gdx.audio.Sound; +import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.InputEvent; @@ -33,6 +34,12 @@ public class MainGameDisplay extends UIComponent { private Sound click; private Sound openSound; private GdxGame game; + private Array towers = new Array<>(); + private ImageButton tower1; + private ImageButton tower2; + private ImageButton tower3; + private ImageButton tower4; + private ImageButton tower5; /** * The constructor for the display @@ -77,7 +84,7 @@ private void addActors() { }; // Fetch the selected tower types if set - Array towers = new Array<>(); + towers = new Array<>(); for (TowerType tower : ServiceLocator.getTowerTypes()) { towers.add(tower); @@ -99,12 +106,11 @@ private void addActors() { // Update the centrally located towerTypes list - ServiceLocator.setTowerTypes(towers); - // Create the buttons - TODO This needs overhauling to pretty buttons - TextButton tower1 = ButtonFactory.createButton(towers.get(0).getTowerName()); - TextButton tower2 = ButtonFactory.createButton(towers.get(1).getTowerName()); - TextButton tower3 = ButtonFactory.createButton(towers.get(2).getTowerName()); - TextButton tower4 = ButtonFactory.createButton(towers.get(3).getTowerName()); - TextButton tower5 = ButtonFactory.createButton(towers.get(4).getTowerName()); + tower1 = new ImageButton(skin, towers.get(0).getSkinName()); + tower2 = new ImageButton(skin, towers.get(1).getSkinName()); + tower3 = new ImageButton(skin, towers.get(2).getSkinName()); + tower4 = new ImageButton(skin, towers.get(3).getSkinName()); + tower5 = new ImageButton(skin, towers.get(4).getSkinName()); TextButton pauseBtn = ButtonFactory.createButton("Pause"); // Spawns a pause menu when the button is pressed. @@ -127,8 +133,15 @@ public void clicked(InputEvent event, float x, float y) { TowerType selected = ServiceLocator.getCurrencyService().getTower(); if (selected == towers.get(0) ) { ServiceLocator.getCurrencyService().setTowerType(null); + tower1.setChecked(false); + } else { ServiceLocator.getCurrencyService().setTowerType(towers.get(0)); + tower1.setChecked(true); + tower2.setChecked(false); + tower3.setChecked(false); + tower4.setChecked(false); + tower5.setChecked(false); } click.play(0.4f); } @@ -145,8 +158,14 @@ public void clicked(InputEvent event, float x, float y) { TowerType selected = ServiceLocator.getCurrencyService().getTower(); if (selected == towers.get(1) ) { ServiceLocator.getCurrencyService().setTowerType(null); + tower2.setChecked(false); } else { ServiceLocator.getCurrencyService().setTowerType(towers.get(1)); + tower1.setChecked(false); + tower2.setChecked(true); + tower3.setChecked(false); + tower4.setChecked(false); + tower5.setChecked(false); } click.play(0.4f); } @@ -155,23 +174,52 @@ public void clicked(InputEvent event, float x, float y) { tower2.addListener(tower2Tooltip); tower3.addListener( - new ChangeListener() { + new ClickListener() { @Override - public void changed(ChangeEvent changeEvent, Actor actor) { - logger.debug("Tower 3 build button clicked"); - ServiceLocator.getCurrencyService().setTowerType(towers.get(2)); + public void clicked(InputEvent event, float x, float y) { + + TowerType selected = ServiceLocator.getCurrencyService().getTower(); + if (selected == towers.get(2)) { + ServiceLocator.getCurrencyService().setTowerType(null); + tower3.setChecked(false); + } else { + ServiceLocator.getCurrencyService().setTowerType(towers.get(2)); + if (ServiceLocator.getCurrencyService().getScrap().getAmount() + >= Integer.parseInt(towers.get(2).getPrice())) { + tower3.setDisabled(false); + tower1.setChecked(false); + tower2.setChecked(false); + tower3.setChecked(true); + tower4.setChecked(false); + tower5.setChecked(false); + } else { + tower3.setDisabled(true); + } + } click.play(0.4f); } }); + TextTooltip tower3Tooltip = new TextTooltip(towers.get(3).getDescription(), getSkin()); tower3.addListener(tower3Tooltip); tower4.addListener( - new ChangeListener() { + new ClickListener() { @Override - public void changed(ChangeEvent changeEvent, Actor actor) { - logger.debug("Tower 4 build button clicked"); - ServiceLocator.getCurrencyService().setTowerType(towers.get(3)); + public void clicked(InputEvent event, float x, float y) { + + TowerType selected = ServiceLocator.getCurrencyService().getTower(); + if (selected == towers.get(3)) { + ServiceLocator.getCurrencyService().setTowerType(null); + tower4.setChecked(false); + } else { + ServiceLocator.getCurrencyService().setTowerType(towers.get(3)); + tower1.setChecked(false); + tower2.setChecked(false); + tower3.setChecked(false); + tower4.setChecked(true); + tower5.setChecked(false); + } click.play(0.4f); } }); @@ -179,17 +227,29 @@ public void changed(ChangeEvent changeEvent, Actor actor) { tower4.addListener(tower4Tooltip); tower5.addListener( - new ChangeListener() { + new ClickListener() { @Override - public void changed(ChangeEvent changeEvent, Actor actor) { - logger.debug("Tower 5 build button clicked"); - ServiceLocator.getCurrencyService().setTowerType(towers.get(4)); + public void clicked(InputEvent event, float x, float y) { + + TowerType selected = ServiceLocator.getCurrencyService().getTower(); + if (selected == towers.get(4)) { + ServiceLocator.getCurrencyService().setTowerType(null); + tower5.setChecked(false); + } else { + ServiceLocator.getCurrencyService().setTowerType(towers.get(4)); + tower1.setChecked(false); + tower2.setChecked(false); + tower3.setChecked(false); + tower4.setChecked(false); + tower5.setChecked(true); + } click.play(0.4f); } }); TextTooltip tower5Tooltip = new TextTooltip(towers.get(4).getDescription(), getSkin()); tower5.addListener(tower5Tooltip); + // Scale all the tower build buttons down // Add all buttons to their respective tables and position them towerTable.add(tower1).padRight(10f); towerTable.add(tower2).padRight(10f); @@ -210,6 +270,41 @@ public void changed(ChangeEvent changeEvent, Actor actor) { @Override public void draw(SpriteBatch batch) { // draw is handled by the stage + if (ServiceLocator.getCurrencyService().getTower() == null) { + + tower1.setChecked(false); + tower2.setChecked(false); + tower3.setChecked(false); + tower4.setChecked(false); + tower5.setChecked(false); + } + int balance = ServiceLocator.getCurrencyService().getScrap().getAmount(); + if (Integer.parseInt(towers.get(0).getPrice()) > balance) { + tower1.setDisabled(true); + } else { + tower1.setDisabled(false); + } + if (Integer.parseInt(towers.get(1).getPrice()) > balance) { + tower2.setDisabled(true); + } else { + tower2.setDisabled(false); + } + if (Integer.parseInt(towers.get(2).getPrice()) > balance) { + tower3.setDisabled(true); + } else { + tower3.setDisabled(false); + } + if (Integer.parseInt(towers.get(3).getPrice()) > balance) { + tower4.setDisabled(true); + } else { + tower4.setDisabled(false); + } + if (Integer.parseInt(towers.get(4).getPrice()) > balance) { + tower5.setDisabled(true); + } else { + tower5.setDisabled(false); + } + } @Override @@ -221,6 +316,7 @@ public float getZIndex() { public void dispose() { buttonTable.clear(); towerTable.clear(); + unloadSounds(); super.dispose(); } @@ -233,4 +329,8 @@ public void loadSounds() { click = ServiceLocator.getResourceService().getAsset(sounds[0], Sound.class); openSound = ServiceLocator.getResourceService().getAsset(sounds[1], Sound.class); } + + public void unloadSounds() { + ServiceLocator.getResourceService().unloadAssets(sounds); + } } diff --git a/source/core/src/main/com/csse3200/game/components/tasks/human/EngineerCombatTask.java b/source/core/src/main/com/csse3200/game/components/tasks/human/EngineerCombatTask.java index a6894551f..3598a245a 100644 --- a/source/core/src/main/com/csse3200/game/components/tasks/human/EngineerCombatTask.java +++ b/source/core/src/main/com/csse3200/game/components/tasks/human/EngineerCombatTask.java @@ -34,8 +34,7 @@ public class EngineerCombatTask extends DefaultTask implements PriorityTask { // weaponCapacity is the number of shots fired before the engineer has to reload private static final int weaponCapacity = 10; private int shotsFired = 0; // Tracks the number of shots fired in the current cycle - - private Vector2 engineerPosition = new Vector2(10, 50); // Placeholder value for the Engineer's position. + private final Vector2 maxRangePosition = new Vector2(); private PhysicsEngine physics; private GameTime timeSource; @@ -68,7 +67,8 @@ public EngineerCombatTask(float maxRange) { public void start() { super.start(); // Set the tower's coordinates - this.engineerPosition = owner.getEntity().getCenterPosition(); + // Placeholder value for the Engineer's position. + Vector2 engineerPosition = owner.getEntity().getCenterPosition(); this.maxRangePosition.set(engineerPosition.x + maxRange, engineerPosition.y); // Default to idle mode owner.getEntity().getEvents().trigger(IDLE_RIGHT); diff --git a/source/core/src/main/com/csse3200/game/input/BuildInputComponent.java b/source/core/src/main/com/csse3200/game/input/BuildInputComponent.java index 8878e2f2e..97e293747 100644 --- a/source/core/src/main/com/csse3200/game/input/BuildInputComponent.java +++ b/source/core/src/main/com/csse3200/game/input/BuildInputComponent.java @@ -7,7 +7,6 @@ import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector3; import com.badlogic.gdx.utils.Array; -import com.csse3200.game.areas.ForestGameArea; import com.csse3200.game.entities.Entity; import com.csse3200.game.entities.EntityService; import com.csse3200.game.entities.factories.TowerFactory; @@ -23,7 +22,7 @@ * DropInputComponent */ public class BuildInputComponent extends InputComponent { - private static final Logger logger = LoggerFactory.getLogger(ForestGameArea.class); + private static final Logger logger = LoggerFactory.getLogger(BuildInputComponent.class); private final EntityService entityService; private final Camera camera; private final String[] sounds = { @@ -33,7 +32,6 @@ public class BuildInputComponent extends InputComponent { private Sound buildSound; private Sound errorSound; private Array towers = new Array<>(); - private Array defaultTowers = new Array<>(); private boolean multipleTowerBuild = false; /** @@ -46,7 +44,7 @@ public BuildInputComponent(Camera camera) { loadSounds(); towers.addAll(ServiceLocator.getTowerTypes()); - logger.debug("selected towers in buildInputComponent are " + towers); + logger.debug(String.format("selected towers in buildInputComponent are %s", towers)); TowerType[] defaultTowerTypes = { TowerType.TNT, TowerType.DROID, @@ -54,6 +52,7 @@ public BuildInputComponent(Camera camera) { TowerType.WALL, TowerType.WEAPON }; + Array defaultTowers = new Array<>(); defaultTowers.addAll(defaultTowerTypes); if (towers.isEmpty()) { @@ -85,17 +84,17 @@ public Camera getCamera() { @Override public boolean touchDown(int screenX, int screenY, int pointer, int button) { - Vector3 worldCoordinates = new Vector3((float) screenX , (float) screenY, 0); + Vector3 worldCoordinates = new Vector3(screenX , screenY, 0); getCamera().unproject(worldCoordinates); // translate from screen to world coordinates Vector2 cursorPosition = new Vector2(worldCoordinates.x, worldCoordinates.y); // determine if the tile is unoccupied boolean tileOccupied = entityService.entitiesInTile((int)cursorPosition.x, (int)cursorPosition.y); - logger.debug("Tile is occupied: " + tileOccupied ); + logger.debug(String.format("Tile is occupied: %s", tileOccupied)); // check that no entities are occupying the tile if (!tileOccupied) { - logger.debug("spawning a tower at {}, {}", cursorPosition.x, cursorPosition.y); + logger.debug(String.format("spawning a tower at %f, %f", cursorPosition.x, cursorPosition.y)); return buildTower((int)cursorPosition.x, (int)cursorPosition.y); } else { return false; @@ -145,6 +144,7 @@ public boolean keyUp(int keycode) { * @param keycode one of the constants in {@link Input.Keys} * @return true if the multipleBuild key is down, otherwise false */ + @Override public boolean keyDown(int keycode) { if (keycode == Input.Keys.CONTROL_LEFT) { multipleTowerBuild = true; @@ -186,9 +186,7 @@ public boolean buildTower(int x, int y) { }; // build the selected tower newTower.setPosition(x, y); - EntityService entityService; - entityService = ServiceLocator.getEntityService(); if (entityService == null){ return false; } diff --git a/source/core/src/main/com/csse3200/game/physics/PhysicsLayer.java b/source/core/src/main/com/csse3200/game/physics/PhysicsLayer.java index 32487b9a8..3aa7896f7 100644 --- a/source/core/src/main/com/csse3200/game/physics/PhysicsLayer.java +++ b/source/core/src/main/com/csse3200/game/physics/PhysicsLayer.java @@ -2,9 +2,8 @@ public class PhysicsLayer { public static final short NONE = 0; - public static final short DEFAULT = (1 << 0); public static final short ENGINEER = (1 << 1); - public static final short BOMBSHIP = (1 << 1); + public static final short BOMBSHIP = ENGINEER; // Terrain obstacle, e.g. trees public static final short OBSTACLE = (1 << 2); // NPC (Non-Playable Character) colliders diff --git a/source/core/src/main/com/csse3200/game/screens/LevelSelectScreen.java b/source/core/src/main/com/csse3200/game/screens/LevelSelectScreen.java index f14c14de0..ec0ab7ea0 100644 --- a/source/core/src/main/com/csse3200/game/screens/LevelSelectScreen.java +++ b/source/core/src/main/com/csse3200/game/screens/LevelSelectScreen.java @@ -32,6 +32,7 @@ import org.w3c.dom.Text; import static com.badlogic.gdx.scenes.scene2d.ui.Table.Debug.table; +import static com.csse3200.game.ui.UIComponent.getSkin; /** * The game screen where you can choose a planet to play on. @@ -46,6 +47,7 @@ public class LevelSelectScreen extends ScreenAdapter { private Stage stage; private AnimatedText text; private BitmapFont font; + private static final String defaultFont = "determination_mono_32"; private Sprite background; private String[] bgm = { @@ -60,7 +62,7 @@ public class LevelSelectScreen extends ScreenAdapter { private static final String BG_PATH = "planets/background.png"; public LevelSelectScreen(GdxGame game) { - font = new BitmapFont(); + font = getSkin().getFont(defaultFont); text = new AnimatedText(INTRO_TEXT, font, 0.05f); this.game = game; diff --git a/source/core/src/main/com/csse3200/game/screens/MainGameScreen.java b/source/core/src/main/com/csse3200/game/screens/MainGameScreen.java index f02b02924..df1361a55 100644 --- a/source/core/src/main/com/csse3200/game/screens/MainGameScreen.java +++ b/source/core/src/main/com/csse3200/game/screens/MainGameScreen.java @@ -34,7 +34,7 @@ /** * The game screen containing the main game. * - *

Details on libGDX screens: https://happycoding.io/tutorials/libgdx/game-screens + *

Details on libGDX screens: ... */ public class MainGameScreen extends ScreenAdapter { private static final Logger logger = LoggerFactory.getLogger(MainGameScreen.class); @@ -84,7 +84,7 @@ public class MainGameScreen extends ScreenAdapter { private final GdxGame game; private final Renderer renderer; private final PhysicsEngine physicsEngine; - + private final InputComponent buildHandler; private InputComponent upgradedInputHandler; static int screenWidth = Gdx.graphics.getWidth(); static int screenHeight = Gdx.graphics.getHeight(); @@ -108,6 +108,8 @@ public MainGameScreen(GdxGame game) { batch = new SpriteBatch(); + Stage stage = new Stage(new ScreenViewport()); + logger.debug("Initialising main game screen services"); ServiceLocator.registerTimeSource(new GameTime()); @@ -130,7 +132,7 @@ public MainGameScreen(GdxGame game) { renderer.getCamera().getCamera().position.set(CAMERA_POSITION.x,CAMERA_POSITION.y,0); renderer.getDebug().renderPhysicsWorld(physicsEngine.getWorld()); InputComponent inputHandler = new DropInputComponent(renderer.getCamera().getCamera()); - InputComponent buildHandler = new BuildInputComponent(renderer.getCamera().getCamera()); + buildHandler = new BuildInputComponent(renderer.getCamera().getCamera()); upgradedInputHandler = new UpgradeUIComponent(renderer.getCamera().getCamera(), renderer.getStage()); InputComponent engineerInputHandler = new EngineerInputComponent(game, renderer.getCamera().getCamera()); ServiceLocator.getInputService().register(inputHandler); @@ -221,7 +223,6 @@ public void render(float delta) { ui.getEvents().trigger("lose"); } else if (ServiceLocator.getWaveService().isLevelCompleted()) { // Check if all waves are completed and the level has been completed - logger.info("Main game level completed detected, go to win screen"); ui.getEvents().trigger("lose"); // needs to change to: ui.getEvents().trigger("win"); // Add something in to unlock the next planet/level? @@ -301,6 +302,7 @@ private void createUI() { //.addComponent(new MainGameWinDisplay()) <- needs to be uncommented when team 3 have implemented the ui .addComponent(new MainGameDisplay(this.game)) .addComponent(new Terminal()) + .addComponent(buildHandler) .addComponent(inputComponent) .addComponent(new TerminalDisplay()); diff --git a/source/core/src/main/com/csse3200/game/screens/TowerType.java b/source/core/src/main/com/csse3200/game/screens/TowerType.java index 1be6c2bc9..78ee04192 100644 --- a/source/core/src/main/com/csse3200/game/screens/TowerType.java +++ b/source/core/src/main/com/csse3200/game/screens/TowerType.java @@ -1,22 +1,23 @@ package com.csse3200.game.screens; public enum TowerType { - WEAPON("Weapon Tower", "The Weapon Tower is a simple and basic turret that fires rapid shots at enemies dealing damage over time.", + WEAPON("Weapon Tower", "weapon_tower", "The Weapon Tower is a simple and basic turret that fires rapid shots at enemies dealing damage over time.", 0, "15", "images/turret-select/Weapon-Tower-Default.png", "images/turret-select/Weapon-Tower-Clicked.png"), - TNT("TNT Tower", "The TNT Tower launches explosive projectiles, dealing area damage to groups of enemies.", + TNT("TNT Tower", "tnt_tower", "The TNT Tower launches explosive projectiles, dealing area damage to groups of enemies.", 1, "30", "images/turret-select/tnt-tower-default.png", "images/turret-select/tnt-tower-clicked.png"), - DROID("Droid Tower", "Droid Towers deploy robotic helpers that assist in combat and provide support to nearby turrets.", + DROID("Droid Tower", "droid_tower", "Droid Towers deploy robotic helpers that assist in combat and provide support to nearby turrets.", 2, "45", "images/turret-select/droid-tower-default.png", "images/turret-select/droid-tower-clicked.png"), - WALL("Wall Tower", "The Wall Tower creates barriers to block enemy paths, slowing down their progress.", + WALL("Wall Tower", "wall", "The Wall Tower creates barriers to block enemy paths, slowing down their progress.", 3, "45", "images/turret-select/wall-tower-default.png", "images/turret-select/wall-tower-clicked.png"), - FIRE("Fire Tower", "The Fire Tower emits flames, causing damage over time to enemies caught in its fiery radius.", + FIRE("Fire Tower", "fire_tower", "The Fire Tower emits flames, causing damage over time to enemies caught in its fiery radius.", 4, "45", "images/turret-select/fire-tower-default.png", "images/turret-select/fire-tower-clicked.png"), - STUN("Stun Tower", "The Stun Tower releases electric shocks that temporarily immobilize and damage enemies.", + STUN("Stun Tower", "stun_tower", "The Stun Tower releases electric shocks that temporarily immobilize and damage enemies.", 5, "45", "images/turret-select/stun-tower-default.png", "images/turret-select/stun-tower-clicked.png"), - INCOME("Income Tower", "The Income Tower generates additional in-game currency over time.", + INCOME("Income Tower", "income_tower", "The Income Tower generates additional in-game currency over time.", 6, "10", "images/turret-select/mine-tower-default.png", "images/turret-select/mine-tower-clicked.png"); private final String towerName; + private final String skinName; private final String description; private final int id; private final String cost; @@ -24,8 +25,9 @@ public enum TowerType { private final String clickedImage; - TowerType(String towerName, String description, int id, String cost, String defaultImage, String clickedImage) { + TowerType(String towerName, String skinName, String description, int id, String cost, String defaultImage, String clickedImage) { this.towerName = towerName; + this.skinName = skinName; this.description = description; this.id = id; this.cost = cost; @@ -37,6 +39,8 @@ public enum TowerType { public String getTowerName() { return towerName; } + public String getSkinName() { return skinName; } + public String getDescription() { return description; } public String getPrice() { return cost; } diff --git a/source/core/src/test/com/csse3200/game/components/tasks/EngineerCombatTaskTest.java b/source/core/src/test/com/csse3200/game/components/tasks/EngineerCombatTaskTest.java index bf638a663..70236cac5 100644 --- a/source/core/src/test/com/csse3200/game/components/tasks/EngineerCombatTaskTest.java +++ b/source/core/src/test/com/csse3200/game/components/tasks/EngineerCombatTaskTest.java @@ -27,7 +27,6 @@ @ExtendWith(GameExtension.class) class EngineerCombatTaskTest { - private final int MAX_RANGE = 10; private EngineerCombatTask COMBAT_TASK; private Entity MOCK_ENGINEER; @@ -69,6 +68,7 @@ void setUp() { resourceService.loadAll(); // Create a mock engineer and add the combat task. + int MAX_RANGE = 10; COMBAT_TASK = new EngineerCombatTask(MAX_RANGE); MOCK_ENGINEER = EngineerFactory.createEngineer(); MOCK_ENGINEER.getComponent(AITaskComponent.class).addTask(COMBAT_TASK); diff --git a/source/core/src/test/com/csse3200/game/entities/factories/TowerFactoryTest.java b/source/core/src/test/com/csse3200/game/entities/factories/TowerFactoryTest.java index 832b82295..e3d20b53a 100644 --- a/source/core/src/test/com/csse3200/game/entities/factories/TowerFactoryTest.java +++ b/source/core/src/test/com/csse3200/game/entities/factories/TowerFactoryTest.java @@ -206,12 +206,9 @@ public void testWeaponTowerCombatStatsComponentAndCostComponent() { @Test public void testWallTowerCombatStatsComponentAndCostComponent() { - - assertEquals(300, wallTower.getComponent(CombatStatsComponent.class).getHealth(), "Health should be 20"); + assertEquals(300, wallTower.getComponent(CombatStatsComponent.class).getHealth(), "Health should be 300"); assertEquals(0, wallTower.getComponent(CombatStatsComponent.class).getBaseAttack(), "BaseAttack should be 0"); - assertEquals(45, wallTower.getComponent(CostComponent.class).getCost(), "Cost should be 5"); - - + assertEquals(45, wallTower.getComponent(CostComponent.class).getCost(), "Cost should be 45"); } @Test diff --git a/source/core/src/test/com/csse3200/game/input/BuildInputComponentTest.java b/source/core/src/test/com/csse3200/game/input/BuildInputComponentTest.java index 1182420c5..77e81bb5b 100644 --- a/source/core/src/test/com/csse3200/game/input/BuildInputComponentTest.java +++ b/source/core/src/test/com/csse3200/game/input/BuildInputComponentTest.java @@ -15,6 +15,7 @@ import com.csse3200.game.rendering.AnimationRenderComponent; import com.csse3200.game.rendering.DebugRenderer; import com.csse3200.game.rendering.RenderService; +import com.csse3200.game.screens.MainGameScreen; import com.csse3200.game.screens.TowerType; import com.csse3200.game.services.*; import org.junit.jupiter.api.BeforeEach;