diff --git a/source/assets/audio/confirm.wav b/source/assets/audio/confirm.wav new file mode 100644 index 0000000..4eca57e Binary files /dev/null and b/source/assets/audio/confirm.wav differ diff --git a/source/assets/fonts/Play Girls.fnt b/source/assets/fonts/Play Girls.fnt new file mode 100644 index 0000000..86b4572 --- /dev/null +++ b/source/assets/fonts/Play Girls.fnt @@ -0,0 +1,47 @@ +--metrics={"baseline":7,"xHeight":0,"capHeight":0,"pairs":{},"left":[],"right":[]} +datalen=1136 +data=iVBORw0KGgoAAAANSUhEUgAAADgAAAAwCAYAAABE1blzAAAAAXNSR0IArs4c6QAAAw1JREFUaEPlV1ty4zAMa+5/6HaaRhkGxoOSnTiZ9qPdtWRTJEEAunz9/Xzf/tY/F/Js7MO19H5aH6HqvhGDvTv2uz3Xtd9feGgWBItQE2RJ12dpnSU3zlbjsoKr9XtMTBCrxRKpwWMAUkD3Tio4Q5hC1XUvS5AFwSqnamIRHAQxYYUohRoF4Q1EK67TrK3Mp4P1bzycJ1XEVJCH9dqtDu6PSpzNKOE0yhHTCXZZVM3nLpZrMnViYbnuYMAq+nHPEKKYQNSZ2wupwjOFqfNY30vjQc+uGHNGx7o610lSaXDSQyzKgw5i4FWaTuKfEmSHrAhK8kXjK8t1hBVTWsgSRcSs6vPGCHSqvgJB6y4gQzW/yTLi2WMH0xAnJ9EploIpJuOkpxqS6pCWE+zo5BEs6jrpRilatTT8r1wfRKOkYvosHZ2zFRJ3SeZrlRVLCHHwVbedO8ENtkpsKnWmCD37BtI8Cvee+C3DvydAlYFaAAYvt672q++Pju9KkIl/uu5sNKg8QJg7inc66WJQt/NuHVSFcC7H+tVnJMi0ybHi0yE6w2IMIk6U8bbC5obFr4XfzaLT2vJJLyRTrTqA5rhDMF2rxzyoc0rTTkaZ65a5Fd1lBUmsnDQ0ych1vaUlN7cyE5DJzDhQ53bS0dWnJDhz43CuRdE+86KrLHvvYLJhKKCdDnSMgoI8fr+bIMa8fp/p4FEzOGPPcK+DH3MsUmfVbUK5dNyPLMuqmDruWHP2trPhFCW8nyR19qyuA6qL44Pd9a7T6c4kWkE7o4r6UbeUIeh4WTWLlTHrzI0ZY+PgmJma7mclqGDTYcTVBKmZOCLBZNZZ1Wm1y0PHqqwAddQe/t1lKTWriqScIXBwx/mq/+84l1q4uw5iRbrCvmLdViDaJRU6s9gZNdjIhEguzu1jF5BQGMQdMtiaNBX/SgeZruHwsplIOneqaZhJQBWAeUM216ckymau6x07bHhKUhsqvT1gppfpFSMJRedvkyB1AeR0iuYdfE9NsjODq07EdfplSc8kqCD89iz6smqeEegH9dmYQMkYMS4AAAAASUVORK5CYII= +width=8 +height=8 + +tracking=1 + +0 8 +1 8 +2 8 +3 8 +4 8 +5 8 +6 8 +7 8 +8 8 +9 8 +space 8 +� 8 +A 8 +B 8 +C 8 +D 8 +E 8 +F 8 +G 8 +H 8 +I 8 +J 8 +K 8 +L 8 +M 8 +N 8 +O 8 +P 8 +R 8 +Q 8 +S 8 +T 8 +U 8 +V 8 +W 8 +X 8 +Y 8 +Z 8 + diff --git a/source/assets/fonts/diamond_20.fnt b/source/assets/fonts/diamond_20.fnt new file mode 100644 index 0000000..ed70740 --- /dev/null +++ b/source/assets/fonts/diamond_20.fnt @@ -0,0 +1,105 @@ +--metrics={"baseline":14,"xHeight":0,"capHeight":0,"pairs":{},"left":[],"right":[]} +datalen=6384 +data=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 +width=20 +height=20 + +tracking=1 + +0 12 +1 5 +2 13 +3 10 +4 12 +5 11 +6 12 +7 12 +8 12 +9 12 +space 7 +! 3 +" 9 +# 14 +$ 11 +% 14 +& 11 +' 3 +( 9 +) 9 +* 13 ++ 13 +, 5 +- 13 +. 3 +/ 16 +: 3 +; 4 +< 11 += 13 +> 11 +? 13 +@ 18 +A 13 +B 13 +C 14 +D 14 +E 13 +F 13 +G 15 +H 14 +I 3 +J 14 +K 13 +L 13 +M 19 +N 14 +O 16 +P 13 +Q 16 +R 13 +S 14 +T 15 +U 16 +V 14 +W 19 +X 15 +Y 16 +Z 14 +[ 7 +\ 16 +] 7 +^ 10 +_ 15 +` 6 +a 10 +b 11 +c 11 +d 11 +e 11 +f 9 +g 11 +h 11 +i 3 +j 3 +k 11 +l 3 +m 19 +n 11 +o 11 +p 11 +q 11 +r 11 +s 10 +t 7 +u 11 +v 11 +w 19 +x 11 +y 11 +z 10 +{ 10 +| 3 +} 10 +~ 11 +� 20 + diff --git a/source/assets/fonts/onyx_9.fnt b/source/assets/fonts/onyx_9.fnt new file mode 100644 index 0000000..7142090 --- /dev/null +++ b/source/assets/fonts/onyx_9.fnt @@ -0,0 +1,408 @@ +--metrics={"baseline":8,"xHeight":0,"capHeight":0,"pairs":{"Fc":[-2,1],"Fe":[-2,1],"Fo":[-2,1],"Fm":[-2,1],"Fn":[-2,1],"Fr":[-2,1],"Fu":[-2,1],"Fw":[-2,1],"Jc":[-1,1],"Je":[-1,1],"Jo":[-1,1],"Jm":[-1,1],"Jn":[-1,1],"Jr":[-1,1],"Ju":[-1,1],"Jw":[-1,1],"Tc":[-2,1],"Te":[-2,1],"To":[-2,1],"Tm":[-2,1],"Tn":[-2,1],"Tr":[-2,1],"Tu":[-2,1],"Tw":[-2,1],"Yc":[-1,1],"Ye":[-1,1],"Yo":[-1,1],"Ym":[-1,1],"Yn":[-1,1],"Yr":[-1,1],"�B":[-1,1],"�D":[-1,1],"�E":[-1,1],"�F":[-1,1],"�H":[-1,1],"�K":[-1,1],"�L":[-1,1],"�M":[-1,1],"�N":[-1,1],"�P":[-1,1],"�R":[-1,1],"�b":[-1,1],"�h":[-1,1],"�k":[-1,1],"�C":[-1,1],"�G":[-1,1],"�O":[-1,1],"�Q":[-1,1],"�U":[-1,1],"�W":[-1,1],"�l":[-1,1],"�c":[-1,1],"�e":[-1,1],"�o":[-1,1],"�m":[-1,1],"�n":[-1,1],"�r":[-1,1],"�u":[-1,1],"�w":[-1,1],"H�":[-1,2],"M�":[-1,2],"N�":[-1,2],"d�":[-1,2],"U�":[-1,2],"V�":[-1,2],"W�":[-1,2],"aT":[-2,2],"aY":[-1,2],"a�":[-1,2],"mT":[-2,2],"mY":[-1,2],"m�":[-1,2],"nT":[-2,2],"nY":[-1,2],"n�":[-1,2],"qT":[-2,2],"qY":[-1,2],"q�":[-1,2],"gT":[-2,2],"gY":[-1,2],"g�":[-1,2],"oT":[-2,2],"oY":[-1,2],"o�":[-1,2],"wT":[-2,2],"w�":[-1,2],"yT":[-2,2],"y�":[-1,2],"A�":[-1,0],"B�":[-1,0],"C�":[-1,0],"DI":[-1,0],"DT":[-1,0],"D�":[-1,0],"E�":[-1,0],"FJ":[-1,0],"Fa":[-3,0],"Fd":[-2,0],"Ff":[-1,0],"Fg":[-2,0],"Fj":[-4,0],"Fp":[-2,0],"Fq":[-2,0],"Fs":[-2,0],"Ft":[-1,0],"Fv":[-2,0],"Fx":[-2,0],"Fy":[-2,0],"Fz":[-2,0],"F�":[-1,0],"G�":[-1,0],"If":[-1,0],"Ig":[-1,0],"Iq":[-1,0],"Is":[-1,0],"It":[-1,0],"Iv":[-1,0],"Iy":[-1,0],"I�":[-1,0],"JJ":[-1,0],"Ja":[-1,0],"Jd":[-1,0],"Jf":[-1,0],"Jg":[-1,0],"Jj":[-1,0],"Jp":[-1,0],"Jq":[-1,0],"Js":[-1,0],"Jt":[-1,0],"Jv":[-1,0],"Jx":[-1,0],"Jy":[-1,0],"Jz":[-1,0],"J�":[-1,0],"Kf":[-1,0],"Kg":[-1,0],"Kq":[-2,0],"Ks":[-1,0],"Kt":[-1,0],"Kv":[-1,0],"Ky":[-1,0],"K�":[-1,0],"LT":[-2,0],"LV":[-2,0],"LY":[-2,0],"Lf":[-1,0],"Lg":[-1,0],"Lq":[-4,0],"Ls":[-1,0],"Lt":[-1,0],"Lv":[-2,0],"Ly":[-1,0],"L�":[-1,0],"O�":[-1,0],"PJ":[-1,0],"Pa":[-1,0],"Pj":[-1,0],"P�":[-1,0],"Q�":[-1,0],"R�":[-1,0],"S�":[-1,0],"TJ":[-1,0],"Ta":[-2,0],"Td":[-2,0],"Tf":[-1,0],"Tg":[-2,0],"Tj":[-2,0],"Tp":[-2,0],"Tq":[-2,0],"Ts":[-2,0],"Tt":[-1,0],"Tv":[-2,0],"Tx":[-2,0],"Ty":[-2,0],"Tz":[-2,0],"T�":[-1,0],"Xf":[-1,0],"Xg":[-1,0],"Xq":[-1,0],"Xs":[-1,0],"X�":[-1,0],"YJ":[-1,0],"Ya":[-1,0],"Yd":[-1,0],"Yf":[-1,0],"Yg":[-1,0],"Yj":[-2,0],"Yq":[-1,0],"Ys":[-1,0],"Y�":[-1,0],"Zf":[-1,0],"Zg":[-1,0],"Zq":[-1,0],"Zs":[-1,0],"Z�":[-1,0],"bT":[-2,0],"bY":[-1,0],"bt":[-1,0],"b�":[-1,0],"cT":[-2,0],"cY":[-1,0],"c�":[-1,0],"eI":[-1,0],"eT":[-2,0],"eY":[-1,0],"e�":[-1,0],"f�":[-1,0],"hT":[-2,0],"hY":[-1,0],"ht":[-1,0],"h�":[-1,0],"iT":[-1,0],"iV":[-1,0],"iY":[-1,0],"if":[-1,0],"ig":[-1,0],"iq":[-1,0],"is":[-1,0],"it":[-1,0],"iv":[-1,0],"iy":[-1,0],"i�":[-1,0],"j�":[-1,0],"kT":[-2,0],"kV":[-1,0],"kY":[-1,0],"kf":[-1,0],"kg":[-1,0],"kq":[-1,0],"ks":[-1,0],"kt":[-1,0],"kv":[-1,0],"ky":[-1,0],"k�":[-1,0],"lT":[-1,0],"lV":[-1,0],"lY":[-1,0],"lf":[-1,0],"lg":[-1,0],"lq":[-1,0],"ls":[-1,0],"lt":[-1,0],"lv":[-1,0],"ly":[-1,0],"l�":[-1,0],"pI":[-1,0],"pT":[-2,0],"pX":[-1,0],"pY":[-1,0],"pZ":[-1,0],"p�":[-1,0],"rI":[-1,0],"rT":[-2,0],"rX":[-1,0],"rY":[-1,0],"rZ":[-1,0],"r�":[-1,0],"sT":[-2,0],"sY":[-1,0],"ss":[-1,0],"st":[-1,0],"sv":[-1,0],"s�":[-1,0],"tT":[-2,0],"t�":[-1,0],"uT":[-2,0],"u�":[-1,0],"vI":[-1,0],"vJ":[-1,0],"vT":[-2,0],"vZ":[-1,0],"va":[-1,0],"vj":[-1,0],"v�":[-1,0],"xT":[-2,0],"xf":[-1,0],"x�":[-1,0],"zT":[-2,0],"z�":[-1,0],"�A":[-1,0],"�I":[-1,0],"�J":[-1,0],"�S":[-1,0],"�T":[-1,0],"�V":[-1,0],"�X":[-1,0],"�Y":[-1,0],"�Z":[-1,0],"�a":[-1,0],"�d":[-1,0],"�f":[-1,0],"�g":[-1,0],"�i":[-1,0],"�j":[-1,0],"�p":[-1,0],"�q":[-1,0],"�s":[-1,0],"�t":[-1,0],"�v":[-1,0],"�x":[-1,0],"�y":[-1,0],"�z":[-1,0],"��":[-2,0]},"left":["BDEFHKLMNPRbhk","CGOQ","UWl","ceo","mnr","uw"],"right":["HMNd","UVW","amnq","go","wy"]} +datalen=2384 +data=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 +width=8 +height=9 + +tracking=1 + +0 6 +1 4 +2 6 +3 6 +4 6 +5 6 +6 6 +7 6 +8 6 +9 6 +space 4 +! 3 +" 6 +# 6 +$ 6 +% 6 +& 6 +' 3 +( 4 +) 4 +* 6 ++ 6 +, 3 +- 6 +. 2 +/ 5 +: 2 +; 3 +< 5 += 5 +> 5 +? 6 +@ 6 +A 6 +B 6 +C 6 +D 6 +E 6 +F 6 +G 6 +H 6 +I 4 +J 6 +K 6 +L 6 +M 6 +N 6 +O 6 +P 6 +Q 6 +R 6 +S 6 +T 6 +U 6 +V 6 +W 6 +X 6 +Y 6 +Z 6 +[ 4 +\ 5 +] 4 +^ 5 +_ 6 +` 3 +a 6 +b 6 +c 6 +d 6 +e 6 +f 6 +g 6 +h 6 +i 3 +j 6 +k 6 +l 3 +m 6 +n 6 +o 6 +p 6 +q 6 +r 6 +s 6 +t 6 +u 6 +v 6 +w 6 +x 6 +y 6 +z 6 +{ 4 +| 2 +} 4 +~ 6 +� 8 + +Fc -2 +Fe -2 +Fo -2 +Fm -2 +Fn -2 +Fr -2 +Fu -2 +Fw -2 +Jc -1 +Je -1 +Jo -1 +Jm -1 +Jn -1 +Jr -1 +Ju -1 +Jw -1 +Tc -2 +Te -2 +To -2 +Tm -2 +Tn -2 +Tr -2 +Tu -2 +Tw -2 +Yc -1 +Ye -1 +Yo -1 +Ym -1 +Yn -1 +Yr -1 +�B -1 +�D -1 +�E -1 +�F -1 +�H -1 +�K -1 +�L -1 +�M -1 +�N -1 +�P -1 +�R -1 +�b -1 +�h -1 +�k -1 +�C -1 +�G -1 +�O -1 +�Q -1 +�U -1 +�W -1 +�l -1 +�c -1 +�e -1 +�o -1 +�m -1 +�n -1 +�r -1 +�u -1 +�w -1 +H� -1 +M� -1 +N� -1 +d� -1 +U� -1 +V� -1 +W� -1 +aT -2 +aY -1 +a� -1 +mT -2 +mY -1 +m� -1 +nT -2 +nY -1 +n� -1 +qT -2 +qY -1 +q� -1 +gT -2 +gY -1 +g� -1 +oT -2 +oY -1 +o� -1 +wT -2 +w� -1 +yT -2 +y� -1 +A� -1 +B� -1 +C� -1 +DI -1 +DT -1 +D� -1 +E� -1 +FJ -1 +Fa -3 +Fd -2 +Ff -1 +Fg -2 +Fj -4 +Fp -2 +Fq -2 +Fs -2 +Ft -1 +Fv -2 +Fx -2 +Fy -2 +Fz -2 +F� -1 +G� -1 +If -1 +Ig -1 +Iq -1 +Is -1 +It -1 +Iv -1 +Iy -1 +I� -1 +JJ -1 +Ja -1 +Jd -1 +Jf -1 +Jg -1 +Jj -1 +Jp -1 +Jq -1 +Js -1 +Jt -1 +Jv -1 +Jx -1 +Jy -1 +Jz -1 +J� -1 +Kf -1 +Kg -1 +Kq -2 +Ks -1 +Kt -1 +Kv -1 +Ky -1 +K� -1 +LT -2 +LV -2 +LY -2 +Lf -1 +Lg -1 +Lq -4 +Ls -1 +Lt -1 +Lv -2 +Ly -1 +L� -1 +O� -1 +PJ -1 +Pa -1 +Pj -1 +P� -1 +Q� -1 +R� -1 +S� -1 +TJ -1 +Ta -2 +Td -2 +Tf -1 +Tg -2 +Tj -2 +Tp -2 +Tq -2 +Ts -2 +Tt -1 +Tv -2 +Tx -2 +Ty -2 +Tz -2 +T� -1 +Xf -1 +Xg -1 +Xq -1 +Xs -1 +X� -1 +YJ -1 +Ya -1 +Yd -1 +Yf -1 +Yg -1 +Yj -2 +Yq -1 +Ys -1 +Y� -1 +Zf -1 +Zg -1 +Zq -1 +Zs -1 +Z� -1 +bT -2 +bY -1 +bt -1 +b� -1 +cT -2 +cY -1 +c� -1 +eI -1 +eT -2 +eY -1 +e� -1 +f� -1 +hT -2 +hY -1 +ht -1 +h� -1 +iT -1 +iV -1 +iY -1 +if -1 +ig -1 +iq -1 +is -1 +it -1 +iv -1 +iy -1 +i� -1 +j� -1 +kT -2 +kV -1 +kY -1 +kf -1 +kg -1 +kq -1 +ks -1 +kt -1 +kv -1 +ky -1 +k� -1 +lT -1 +lV -1 +lY -1 +lf -1 +lg -1 +lq -1 +ls -1 +lt -1 +lv -1 +ly -1 +l� -1 +pI -1 +pT -2 +pX -1 +pY -1 +pZ -1 +p� -1 +rI -1 +rT -2 +rX -1 +rY -1 +rZ -1 +r� -1 +sT -2 +sY -1 +ss -1 +st -1 +sv -1 +s� -1 +tT -2 +t� -1 +uT -2 +u� -1 +vI -1 +vJ -1 +vT -2 +vZ -1 +va -1 +vj -1 +v� -1 +xT -2 +xf -1 +x� -1 +zT -2 +z� -1 +�A -1 +�I -1 +�J -1 +�S -1 +�T -1 +�V -1 +�X -1 +�Y -1 +�Z -1 +�a -1 +�d -1 +�f -1 +�g -1 +�i -1 +�j -1 +�p -1 +�q -1 +�s -1 +�t -1 +�v -1 +�x -1 +�y -1 +�z -1 +�� -2 diff --git a/source/assets/fonts/opal_12.fnt b/source/assets/fonts/opal_12.fnt new file mode 100644 index 0000000..4b02d6f --- /dev/null +++ b/source/assets/fonts/opal_12.fnt @@ -0,0 +1,549 @@ +--metrics={"baseline":9,"xHeight":0,"capHeight":0,"pairs":{"Fa":[-2,1],"Fc":[-2,1],"Fe":[-2,1],"Fo":[-2,1],"IC":[-1,1],"IE":[-1,1],"IG":[-1,1],"IO":[-1,1],"IQ":[-1,1],"Ia":[-1,1],"Ic":[-1,1],"Ie":[-1,1],"Io":[-1,1],"Iu":[-1,1],"Iw":[-1,1],"KC":[-1,1],"KE":[-1,1],"KG":[-1,1],"KO":[-1,1],"KQ":[-1,1],"KU":[-1,1],"KW":[-1,1],"Kb":[-1,1],"Ka":[-1,1],"Kc":[-1,1],"Ke":[-1,1],"Ko":[-1,1],"Ku":[-1,1],"Kw":[-1,1],"LC":[-1,1],"LE":[-1,1],"LG":[-1,1],"LO":[-1,1],"LQ":[-1,1],"LU":[-1,1],"LW":[-1,1],"Lb":[-1,1],"La":[-1,1],"Lc":[-1,1],"Le":[-1,1],"Lo":[-1,1],"Lu":[-1,1],"Lw":[-1,1],"Pa":[-1,1],"Pc":[-1,1],"Pe":[-1,1],"Po":[-1,1],"TC":[-1,1],"TE":[-1,1],"TG":[-1,1],"TO":[-1,1],"TQ":[-1,1],"Ta":[-4,1],"Tc":[-4,1],"Te":[-4,1],"To":[-4,1],"Tm":[-4,1],"Tn":[-4,1],"Tr":[-4,1],"Tu":[-4,1],"Tw":[-4,1],"YC":[-1,1],"YE":[-1,1],"YG":[-1,1],"YO":[-1,1],"YQ":[-1,1],"Ya":[-3,1],"Yc":[-3,1],"Ye":[-3,1],"Yo":[-3,1],"Ym":[-1,1],"Yn":[-1,1],"Yr":[-1,1],"Yu":[-1,1],"Yw":[-1,1],"ZC":[-1,1],"ZE":[-1,1],"ZG":[-1,1],"ZO":[-1,1],"ZQ":[-1,1],"Za":[-1,1],"Zc":[-1,1],"Ze":[-1,1],"Zo":[-1,1],"Zu":[-1,1],"Zw":[-1,1],"ga":[-1,1],"gc":[-1,1],"ge":[-1,1],"go":[-1,1],"ka":[-1,1],"kc":[-1,1],"ke":[-1,1],"ko":[-1,1],"ta":[-1,1],"tc":[-1,1],"te":[-1,1],"to":[-1,1],"xa":[-1,1],"xc":[-1,1],"xe":[-1,1],"xo":[-1,1],"za":[-1,1],"zc":[-1,1],"ze":[-1,1],"zo":[-1,1],"�B":[-1,1],"�D":[-1,1],"�H":[-1,1],"�K":[-1,1],"�L":[-1,1],"�M":[-1,1],"�N":[-1,1],"�P":[-1,1],"�R":[-1,1],"�h":[-1,1],"�k":[-1,1],"�l":[-1,1],"�C":[-1,1],"�E":[-1,1],"�G":[-1,1],"�O":[-1,1],"�Q":[-1,1],"�U":[-1,1],"�W":[-1,1],"�b":[-1,1],"�a":[-1,1],"�c":[-1,1],"�e":[-1,1],"�o":[-1,1],"�m":[-1,1],"�n":[-1,1],"�r":[-1,1],"�u":[-1,1],"�w":[-1,1],"A�":[-1,2],"H�":[-1,2],"J�":[-1,2],"N�":[-1,2],"U�":[-1,2],"l�":[-1,2],"DI":[-1,2],"DT":[-1,2],"DY":[-1,2],"Dj":[-1,2],"D�":[-1,2],"OI":[-1,2],"OT":[-1,2],"OY":[-1,2],"Oj":[-1,2],"O�":[-1,2],"Wj":[-1,2],"W�":[-1,2],"dj":[-1,2],"d�":[-1,2],"mT":[-4,2],"mY":[-3,2],"mt":[-1,2],"m�":[-1,2],"nT":[-4,2],"nY":[-3,2],"nt":[-1,2],"n�":[-1,2],"BI":[-1,0],"BT":[-1,0],"BY":[-1,0],"Bj":[-1,0],"B�":[-1,0],"Cf":[-1,0],"C�":[-1,0],"Ef":[-1,0],"E�":[-1,0],"FA":[-2,0],"FJ":[-6,0],"Fd":[-2,0],"Ff":[-1,0],"Fg":[-3,0],"Fj":[-6,0],"Fq":[-2,0],"Fs":[-1,0],"F�":[-1,0],"GT":[-1,0],"GY":[-1,0],"Gt":[-1,0],"G�":[-1,0],"IJ":[-1,0],"Id":[-1,0],"If":[-1,0],"Iq":[-1,0],"It":[-1,0],"Iv":[-2,0],"I�":[-1,0],"KJ":[-1,0],"KT":[-1,0],"KV":[-1,0],"KY":[-1,0],"Kd":[-1,0],"Kf":[-1,0],"Kq":[-1,0],"Kt":[-1,0],"Kv":[-2,0],"K�":[-1,0],"LJ":[-1,0],"LT":[-4,0],"LV":[-3,0],"LY":[-4,0],"Ld":[-1,0],"Lf":[-1,0],"Lq":[-1,0],"Lt":[-1,0],"Lv":[-2,0],"L�":[-1,0],"MT":[-1,0],"MY":[-1,0],"M�":[-1,0],"PA":[-1,0],"PI":[-1,0],"PJ":[-6,0],"PT":[-1,0],"PX":[-1,0],"PY":[-1,0],"PZ":[-1,0],"Pd":[-1,0],"Pg":[-2,0],"Pj":[-6,0],"Pq":[-1,0],"P�":[-1,0],"QT":[-1,0],"QY":[-1,0],"Q�":[-1,0],"RT":[-1,0],"RY":[-1,0],"R�":[-1,0],"SI":[-1,0],"ST":[-1,0],"SV":[-1,0],"SY":[-1,0],"Sf":[-1,0],"Sj":[-1,0],"St":[-1,0],"Sx":[-1,0],"Sy":[-1,0],"Sz":[-1,0],"S�":[-1,0],"TA":[-3,0],"TF":[-1,0],"TJ":[-4,0],"TS":[-1,0],"Td":[-4,0],"Tf":[-2,0],"Tg":[-4,0],"Tj":[-4,0],"Tp":[-4,0],"Tq":[-4,0],"Ts":[-4,0],"Tt":[-1,0],"Tv":[-4,0],"Tx":[-4,0],"Ty":[-4,0],"Tz":[-4,0],"T�":[-1,0],"VJ":[-1,0],"Vg":[-1,0],"Vj":[-3,0],"V�":[-1,0],"Xf":[-1,0],"Xt":[-1,0],"X�":[-1,0],"YA":[-3,0],"YF":[-1,0],"YJ":[-4,0],"YS":[-1,0],"Yd":[-3,0],"Yf":[-2,0],"Yg":[-4,0],"Yj":[-4,0],"Yp":[-1,0],"Yq":[-3,0],"Ys":[-2,0],"Yt":[-1,0],"Yv":[-1,0],"Yx":[-1,0],"Yy":[-1,0],"Yz":[-1,0],"Y�":[-1,0],"ZJ":[-1,0],"Zd":[-1,0],"Zf":[-1,0],"Zq":[-1,0],"Zt":[-1,0],"Zv":[-1,0],"Z�":[-1,0],"aT":[-4,0],"aY":[-2,0],"a�":[-1,0],"bI":[-1,0],"bT":[-4,0],"bY":[-3,0],"bj":[-1,0],"bt":[-1,0],"bx":[-1,0],"by":[-1,0],"bz":[-1,0],"b�":[-1,0],"cT":[-4,0],"cY":[-2,0],"c�":[-1,0],"eI":[-1,0],"eT":[-4,0],"eV":[-1,0],"eY":[-4,0],"ef":[-1,0],"ej":[-1,0],"et":[-1,0],"ex":[-1,0],"ey":[-1,0],"ez":[-1,0],"e�":[-1,0],"fJ":[-3,0],"fg":[-2,0],"fj":[-3,0],"f�":[-1,0],"gA":[-1,0],"gI":[-1,0],"gJ":[-1,0],"gT":[-4,0],"gX":[-1,0],"gY":[-1,0],"gZ":[-1,0],"gd":[-1,0],"gg":[-1,0],"gj":[-1,0],"gq":[-1,0],"g�":[-1,0],"hT":[-4,0],"hY":[-3,0],"ht":[-1,0],"h�":[-1,0],"i�":[-1,0],"j�":[-1,0],"kJ":[-1,0],"kT":[-4,0],"kY":[-1,0],"kd":[-1,0],"kq":[-1,0],"k�":[-1,0],"oI":[-1,0],"oT":[-4,0],"oY":[-3,0],"oj":[-1,0],"ot":[-1,0],"ox":[-1,0],"oy":[-1,0],"oz":[-1,0],"o�":[-1,0],"pI":[-1,0],"pT":[-4,0],"pY":[-3,0],"pj":[-1,0],"pt":[-1,0],"px":[-1,0],"py":[-1,0],"pz":[-1,0],"p�":[-1,0],"qT":[-4,0],"qY":[-1,0],"q�":[-1,0],"rI":[-2,0],"rJ":[-6,0],"rT":[-4,0],"rX":[-2,0],"rY":[-2,0],"rZ":[-3,0],"rg":[-2,0],"rj":[-6,0],"r�":[-1,0],"sT":[-4,0],"sY":[-2,0],"s�":[-1,0],"tA":[-1,0],"tI":[-2,0],"tJ":[-3,0],"tT":[-3,0],"tX":[-1,0],"tY":[-1,0],"tZ":[-3,0],"td":[-1,0],"tg":[-2,0],"tj":[-3,0],"tq":[-1,0],"t�":[-1,0],"uT":[-4,0],"uY":[-1,0],"u�":[-1,0],"vI":[-2,0],"vT":[-4,0],"vY":[-1,0],"vZ":[-1,0],"vj":[-2,0],"v�":[-1,0],"wI":[-1,0],"wT":[-4,0],"wY":[-1,0],"wj":[-1,0],"w�":[-1,0],"xJ":[-1,0],"xT":[-4,0],"xY":[-1,0],"xd":[-1,0],"xq":[-1,0],"x�":[-1,0],"yT":[-4,0],"yY":[-1,0],"y�":[-1,0],"zJ":[-1,0],"zT":[-4,0],"zY":[-1,0],"zd":[-1,0],"zq":[-1,0],"z�":[-1,0],"�A":[-1,0],"�F":[-1,0],"�I":[-1,0],"�J":[-1,0],"�S":[-1,0],"�T":[-1,0],"�V":[-1,0],"�X":[-1,0],"�Y":[-1,0],"�Z":[-1,0],"�d":[-1,0],"�f":[-1,0],"�g":[-1,0],"�i":[-1,0],"�j":[-1,0],"�p":[-1,0],"�q":[-1,0],"�s":[-1,0],"�t":[-1,0],"�v":[-1,0],"�x":[-1,0],"�y":[-1,0],"�z":[-1,0],"��":[-2,0]},"left":["BDHKLMNPRhkl","CEGOQ","UWb","aceo","mnr","uw"],"right":["AHJNUl","DO","Wd","mn"]} +datalen=3608 +data=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 +width=12 +height=12 + +tracking=1 + +0 8 +1 2 +2 7 +3 7 +4 7 +5 6 +6 8 +7 7 +8 7 +9 7 +space 5 +! 2 +" 4 +# 9 +$ 7 +% 9 +& 7 +' 2 +( 4 +) 4 +* 10 ++ 9 +, 2 +- 7 +. 2 +/ 9 +: 2 +; 2 +< 6 += 6 +> 6 +? 7 +@ 10 +A 8 +B 8 +C 8 +D 8 +E 8 +F 8 +G 8 +H 8 +I 5 +J 7 +K 8 +L 8 +M 11 +N 8 +O 9 +P 8 +Q 8 +R 8 +S 8 +T 9 +U 8 +V 9 +W 11 +X 8 +Y 9 +Z 8 +[ 4 +\ 9 +] 4 +^ 5 +_ 12 +` 2 +a 8 +b 8 +c 8 +d 8 +e 8 +f 5 +g 9 +h 8 +i 1 +j 7 +k 7 +l 1 +m 9 +n 8 +o 8 +p 7 +q 7 +r 7 +s 7 +t 5 +u 8 +v 7 +w 9 +x 7 +y 7 +z 7 +{ 5 +| 1 +} 5 +~ 9 +� 12 + +Fa -2 +Fc -2 +Fe -2 +Fo -2 +IC -1 +IE -1 +IG -1 +IO -1 +IQ -1 +Ia -1 +Ic -1 +Ie -1 +Io -1 +Iu -1 +Iw -1 +KC -1 +KE -1 +KG -1 +KO -1 +KQ -1 +KU -1 +KW -1 +Kb -1 +Ka -1 +Kc -1 +Ke -1 +Ko -1 +Ku -1 +Kw -1 +LC -1 +LE -1 +LG -1 +LO -1 +LQ -1 +LU -1 +LW -1 +Lb -1 +La -1 +Lc -1 +Le -1 +Lo -1 +Lu -1 +Lw -1 +Pa -1 +Pc -1 +Pe -1 +Po -1 +TC -1 +TE -1 +TG -1 +TO -1 +TQ -1 +Ta -4 +Tc -4 +Te -4 +To -4 +Tm -4 +Tn -4 +Tr -4 +Tu -4 +Tw -4 +YC -1 +YE -1 +YG -1 +YO -1 +YQ -1 +Ya -3 +Yc -3 +Ye -3 +Yo -3 +Ym -1 +Yn -1 +Yr -1 +Yu -1 +Yw -1 +ZC -1 +ZE -1 +ZG -1 +ZO -1 +ZQ -1 +Za -1 +Zc -1 +Ze -1 +Zo -1 +Zu -1 +Zw -1 +ga -1 +gc -1 +ge -1 +go -1 +ka -1 +kc -1 +ke -1 +ko -1 +ta -1 +tc -1 +te -1 +to -1 +xa -1 +xc -1 +xe -1 +xo -1 +za -1 +zc -1 +ze -1 +zo -1 +�B -1 +�D -1 +�H -1 +�K -1 +�L -1 +�M -1 +�N -1 +�P -1 +�R -1 +�h -1 +�k -1 +�l -1 +�C -1 +�E -1 +�G -1 +�O -1 +�Q -1 +�U -1 +�W -1 +�b -1 +�a -1 +�c -1 +�e -1 +�o -1 +�m -1 +�n -1 +�r -1 +�u -1 +�w -1 +A� -1 +H� -1 +J� -1 +N� -1 +U� -1 +l� -1 +DI -1 +DT -1 +DY -1 +Dj -1 +D� -1 +OI -1 +OT -1 +OY -1 +Oj -1 +O� -1 +Wj -1 +W� -1 +dj -1 +d� -1 +mT -4 +mY -3 +mt -1 +m� -1 +nT -4 +nY -3 +nt -1 +n� -1 +BI -1 +BT -1 +BY -1 +Bj -1 +B� -1 +Cf -1 +C� -1 +Ef -1 +E� -1 +FA -2 +FJ -6 +Fd -2 +Ff -1 +Fg -3 +Fj -6 +Fq -2 +Fs -1 +F� -1 +GT -1 +GY -1 +Gt -1 +G� -1 +IJ -1 +Id -1 +If -1 +Iq -1 +It -1 +Iv -2 +I� -1 +KJ -1 +KT -1 +KV -1 +KY -1 +Kd -1 +Kf -1 +Kq -1 +Kt -1 +Kv -2 +K� -1 +LJ -1 +LT -4 +LV -3 +LY -4 +Ld -1 +Lf -1 +Lq -1 +Lt -1 +Lv -2 +L� -1 +MT -1 +MY -1 +M� -1 +PA -1 +PI -1 +PJ -6 +PT -1 +PX -1 +PY -1 +PZ -1 +Pd -1 +Pg -2 +Pj -6 +Pq -1 +P� -1 +QT -1 +QY -1 +Q� -1 +RT -1 +RY -1 +R� -1 +SI -1 +ST -1 +SV -1 +SY -1 +Sf -1 +Sj -1 +St -1 +Sx -1 +Sy -1 +Sz -1 +S� -1 +TA -3 +TF -1 +TJ -4 +TS -1 +Td -4 +Tf -2 +Tg -4 +Tj -4 +Tp -4 +Tq -4 +Ts -4 +Tt -1 +Tv -4 +Tx -4 +Ty -4 +Tz -4 +T� -1 +VJ -1 +Vg -1 +Vj -3 +V� -1 +Xf -1 +Xt -1 +X� -1 +YA -3 +YF -1 +YJ -4 +YS -1 +Yd -3 +Yf -2 +Yg -4 +Yj -4 +Yp -1 +Yq -3 +Ys -2 +Yt -1 +Yv -1 +Yx -1 +Yy -1 +Yz -1 +Y� -1 +ZJ -1 +Zd -1 +Zf -1 +Zq -1 +Zt -1 +Zv -1 +Z� -1 +aT -4 +aY -2 +a� -1 +bI -1 +bT -4 +bY -3 +bj -1 +bt -1 +bx -1 +by -1 +bz -1 +b� -1 +cT -4 +cY -2 +c� -1 +eI -1 +eT -4 +eV -1 +eY -4 +ef -1 +ej -1 +et -1 +ex -1 +ey -1 +ez -1 +e� -1 +fJ -3 +fg -2 +fj -3 +f� -1 +gA -1 +gI -1 +gJ -1 +gT -4 +gX -1 +gY -1 +gZ -1 +gd -1 +gg -1 +gj -1 +gq -1 +g� -1 +hT -4 +hY -3 +ht -1 +h� -1 +i� -1 +j� -1 +kJ -1 +kT -4 +kY -1 +kd -1 +kq -1 +k� -1 +oI -1 +oT -4 +oY -3 +oj -1 +ot -1 +ox -1 +oy -1 +oz -1 +o� -1 +pI -1 +pT -4 +pY -3 +pj -1 +pt -1 +px -1 +py -1 +pz -1 +p� -1 +qT -4 +qY -1 +q� -1 +rI -2 +rJ -6 +rT -4 +rX -2 +rY -2 +rZ -3 +rg -2 +rj -6 +r� -1 +sT -4 +sY -2 +s� -1 +tA -1 +tI -2 +tJ -3 +tT -3 +tX -1 +tY -1 +tZ -3 +td -1 +tg -2 +tj -3 +tq -1 +t� -1 +uT -4 +uY -1 +u� -1 +vI -2 +vT -4 +vY -1 +vZ -1 +vj -2 +v� -1 +wI -1 +wT -4 +wY -1 +wj -1 +w� -1 +xJ -1 +xT -4 +xY -1 +xd -1 +xq -1 +x� -1 +yT -4 +yY -1 +y� -1 +zJ -1 +zT -4 +zY -1 +zd -1 +zq -1 +z� -1 +�A -1 +�F -1 +�I -1 +�J -1 +�S -1 +�T -1 +�V -1 +�X -1 +�Y -1 +�Z -1 +�d -1 +�f -1 +�g -1 +�i -1 +�j -1 +�p -1 +�q -1 +�s -1 +�t -1 +�v -1 +�x -1 +�y -1 +�z -1 +�� -2 diff --git a/source/assets/fonts/opal_9.fnt b/source/assets/fonts/opal_9.fnt new file mode 100644 index 0000000..e1fada7 --- /dev/null +++ b/source/assets/fonts/opal_9.fnt @@ -0,0 +1,598 @@ +--metrics={"baseline":7,"xHeight":0,"capHeight":0,"pairs":{"Fc":[-2,1],"Fe":[-2,1],"Fo":[-2,1],"IC":[-1,1],"IE":[-1,1],"IG":[-1,1],"IO":[-1,1],"IQ":[-1,1],"Ic":[-1,1],"Ie":[-1,1],"Io":[-1,1],"Iu":[-1,1],"Iw":[-1,1],"KC":[-1,1],"KE":[-1,1],"KG":[-1,1],"KO":[-1,1],"KQ":[-1,1],"KU":[-1,1],"KW":[-1,1],"Kb":[-1,1],"Kc":[-1,1],"Ke":[-1,1],"Ko":[-1,1],"Ku":[-1,1],"Kw":[-1,1],"LC":[-1,1],"LE":[-1,1],"LG":[-1,1],"LO":[-1,1],"LQ":[-1,1],"LU":[-1,1],"LW":[-1,1],"Lb":[-1,1],"Lc":[-1,1],"Le":[-1,1],"Lo":[-1,1],"Lu":[-1,1],"Lw":[-1,1],"Pc":[-1,1],"Pe":[-1,1],"Po":[-1,1],"Rc":[-1,1],"Re":[-1,1],"Ro":[-1,1],"TC":[-1,1],"TE":[-1,1],"TG":[-1,1],"TO":[-1,1],"TQ":[-1,1],"Tc":[-4,1],"Te":[-4,1],"To":[-4,1],"Tm":[-4,1],"Tn":[-4,1],"Tr":[-4,1],"Tu":[-4,1],"Tw":[-4,1],"Vc":[-1,1],"Ve":[-1,1],"Vo":[-1,1],"XC":[-1,1],"XE":[-1,1],"XG":[-1,1],"XO":[-1,1],"XQ":[-1,1],"Xc":[-1,1],"Xe":[-1,1],"Xo":[-1,1],"Xu":[-1,1],"Xw":[-1,1],"YC":[-1,1],"YE":[-1,1],"YG":[-1,1],"YO":[-1,1],"YQ":[-1,1],"Yc":[-3,1],"Ye":[-3,1],"Yo":[-3,1],"Ym":[-1,1],"Yn":[-1,1],"Yr":[-1,1],"Yu":[-1,1],"Yw":[-1,1],"ZC":[-1,1],"ZE":[-1,1],"ZG":[-1,1],"ZO":[-1,1],"ZQ":[-1,1],"Zc":[-1,1],"Ze":[-1,1],"Zo":[-1,1],"Zu":[-1,1],"Zw":[-1,1],"gc":[-1,1],"ge":[-1,1],"go":[-1,1],"kc":[-1,1],"ke":[-1,1],"ko":[-1,1],"tc":[-1,1],"te":[-1,1],"to":[-1,1],"xc":[-1,1],"xe":[-1,1],"xo":[-1,1],"zc":[-1,1],"ze":[-1,1],"zo":[-1,1],"�B":[-1,1],"�D":[-1,1],"�H":[-1,1],"�K":[-1,1],"�L":[-1,1],"�M":[-1,1],"�N":[-1,1],"�P":[-1,1],"�R":[-1,1],"�h":[-1,1],"�k":[-1,1],"�l":[-1,1],"�C":[-1,1],"�E":[-1,1],"�G":[-1,1],"�O":[-1,1],"�Q":[-1,1],"�U":[-1,1],"�W":[-1,1],"�b":[-1,1],"�c":[-1,1],"�e":[-1,1],"�o":[-1,1],"�m":[-1,1],"�n":[-1,1],"�r":[-1,1],"�u":[-1,1],"�w":[-1,1],"A�":[-1,2],"H�":[-1,2],"J�":[-1,2],"N�":[-1,2],"U�":[-1,2],"l�":[-1,2],"DI":[-1,2],"DT":[-1,2],"DX":[-1,2],"DY":[-1,2],"DZ":[-1,2],"Dg":[-1,2],"Dj":[-2,2],"D�":[-1,2],"OI":[-1,2],"OT":[-1,2],"OX":[-1,2],"OY":[-1,2],"OZ":[-1,2],"Og":[-1,2],"Oj":[-2,2],"O�":[-1,2],"Wg":[-1,2],"Wj":[-2,2],"W�":[-1,2],"dg":[-1,2],"dj":[-2,2],"d�":[-1,2],"mT":[-4,2],"mV":[-1,2],"mY":[-3,2],"mt":[-1,2],"my":[-1,2],"m�":[-1,2],"nT":[-4,2],"nV":[-1,2],"nY":[-3,2],"nt":[-1,2],"ny":[-1,2],"n�":[-1,2],"Bj":[-1,0],"B�":[-1,0],"Cf":[-1,0],"Cj":[-1,0],"Cs":[-1,0],"C�":[-1,0],"Ef":[-1,0],"Ej":[-1,0],"Es":[-1,0],"E�":[-1,0],"FA":[-2,0],"FJ":[-3,0],"Fa":[-2,0],"Fd":[-2,0],"Ff":[-1,0],"Fg":[-3,0],"Fj":[-5,0],"Fq":[-2,0],"Fs":[-1,0],"F�":[-1,0],"GT":[-1,0],"GY":[-1,0],"G�":[-1,0],"IJ":[-1,0],"Ia":[-1,0],"Id":[-1,0],"If":[-1,0],"Iq":[-1,0],"Is":[-1,0],"It":[-1,0],"Iv":[-2,0],"Iy":[-1,0],"I�":[-1,0],"KJ":[-1,0],"KT":[-1,0],"KV":[-1,0],"KY":[-1,0],"Ka":[-1,0],"Kd":[-1,0],"Kf":[-1,0],"Kq":[-1,0],"Ks":[-1,0],"Kt":[-1,0],"Kv":[-2,0],"Ky":[-1,0],"K�":[-1,0],"LJ":[-1,0],"LT":[-4,0],"LV":[-3,0],"LY":[-4,0],"La":[-1,0],"Ld":[-1,0],"Lf":[-1,0],"Lq":[-1,0],"Ls":[-1,0],"Lt":[-1,0],"Lv":[-2,0],"Ly":[-1,0],"L�":[-1,0],"MT":[-1,0],"MY":[-1,0],"M�":[-1,0],"PA":[-1,0],"PJ":[-1,0],"Pd":[-1,0],"Pg":[-2,0],"Pj":[-5,0],"Pq":[-1,0],"P�":[-1,0],"QT":[-1,0],"QY":[-1,0],"Q�":[-1,0],"RJ":[-1,0],"Rd":[-1,0],"Rq":[-1,0],"R�":[-1,0],"Sj":[-1,0],"S�":[-1,0],"TA":[-3,0],"TF":[-1,0],"TJ":[-4,0],"Ta":[-4,0],"Td":[-4,0],"Tf":[-2,0],"Tg":[-4,0],"Tj":[-4,0],"Tp":[-4,0],"Tq":[-4,0],"Ts":[-4,0],"Tt":[-1,0],"Tv":[-4,0],"Tx":[-4,0],"Ty":[-4,0],"Tz":[-4,0],"T�":[-1,0],"VA":[-1,0],"VJ":[-1,0],"Vd":[-1,0],"Vg":[-2,0],"Vj":[-4,0],"Vq":[-1,0],"V�":[-1,0],"XJ":[-1,0],"Xa":[-1,0],"Xd":[-1,0],"Xf":[-1,0],"Xq":[-1,0],"Xs":[-1,0],"Xt":[-1,0],"Xv":[-1,0],"Xy":[-1,0],"X�":[-1,0],"YA":[-3,0],"YF":[-1,0],"YJ":[-3,0],"Ya":[-2,0],"Yd":[-3,0],"Yf":[-2,0],"Yg":[-4,0],"Yj":[-4,0],"Yp":[-1,0],"Yq":[-3,0],"Ys":[-2,0],"Yt":[-1,0],"Yv":[-1,0],"Yx":[-1,0],"Yy":[-1,0],"Yz":[-1,0],"Y�":[-1,0],"ZJ":[-1,0],"Za":[-1,0],"Zd":[-1,0],"Zf":[-1,0],"Zq":[-1,0],"Zs":[-1,0],"Zt":[-1,0],"Zv":[-1,0],"Zy":[-1,0],"Z�":[-1,0],"aT":[-4,0],"aY":[-2,0],"a�":[-1,0],"bI":[-1,0],"bT":[-4,0],"bV":[-1,0],"bX":[-1,0],"bY":[-3,0],"bZ":[-1,0],"bg":[-1,0],"bj":[-2,0],"bt":[-1,0],"bx":[-1,0],"by":[-1,0],"bz":[-1,0],"b�":[-1,0],"cT":[-4,0],"cY":[-2,0],"cj":[-1,0],"c�":[-1,0],"eT":[-4,0],"eV":[-1,0],"eY":[-3,0],"ef":[-1,0],"ej":[-1,0],"es":[-1,0],"et":[-1,0],"ev":[-1,0],"ey":[-1,0],"e�":[-1,0],"fg":[-2,0],"fj":[-3,0],"f�":[-1,0],"gA":[-1,0],"gI":[-1,0],"gJ":[-1,0],"gT":[-4,0],"gX":[-1,0],"gY":[-1,0],"gZ":[-1,0],"gd":[-1,0],"gg":[-1,0],"gj":[-1,0],"gq":[-1,0],"g�":[-1,0],"hT":[-4,0],"hV":[-1,0],"hY":[-3,0],"ht":[-1,0],"hy":[-1,0],"h�":[-1,0],"i�":[-1,0],"j�":[-1,0],"kJ":[-1,0],"kT":[-4,0],"kY":[-1,0],"kd":[-1,0],"kq":[-1,0],"k�":[-1,0],"oI":[-1,0],"oT":[-4,0],"oV":[-1,0],"oX":[-1,0],"oY":[-3,0],"oZ":[-1,0],"og":[-1,0],"oj":[-2,0],"ot":[-1,0],"ox":[-1,0],"oy":[-1,0],"oz":[-1,0],"o�":[-1,0],"pI":[-1,0],"pT":[-4,0],"pV":[-1,0],"pX":[-1,0],"pY":[-3,0],"pZ":[-1,0],"pg":[-1,0],"pj":[-2,0],"pt":[-1,0],"px":[-1,0],"py":[-1,0],"pz":[-1,0],"p�":[-1,0],"qT":[-4,0],"qY":[-1,0],"q�":[-1,0],"rI":[-2,0],"rT":[-4,0],"rX":[-2,0],"rY":[-2,0],"rZ":[-2,0],"rg":[-2,0],"rj":[-5,0],"r�":[-1,0],"sT":[-4,0],"sV":[-1,0],"sY":[-2,0],"sf":[-1,0],"sj":[-1,0],"ss":[-1,0],"st":[-1,0],"sv":[-1,0],"sy":[-1,0],"s�":[-1,0],"tA":[-1,0],"tI":[-2,0],"tJ":[-3,0],"tT":[-3,0],"tX":[-1,0],"tY":[-1,0],"tZ":[-3,0],"td":[-1,0],"tg":[-2,0],"tj":[-3,0],"tq":[-1,0],"t�":[-1,0],"uT":[-4,0],"uY":[-1,0],"u�":[-1,0],"vI":[-2,0],"vT":[-4,0],"vX":[-1,0],"vY":[-1,0],"vZ":[-2,0],"vg":[-2,0],"vj":[-3,0],"v�":[-1,0],"wI":[-1,0],"wT":[-4,0],"wX":[-1,0],"wY":[-1,0],"wZ":[-1,0],"wg":[-1,0],"wj":[-2,0],"w�":[-1,0],"xJ":[-1,0],"xT":[-4,0],"xY":[-1,0],"xd":[-1,0],"xq":[-1,0],"x�":[-1,0],"yT":[-4,0],"yY":[-1,0],"y�":[-1,0],"zJ":[-1,0],"zT":[-4,0],"zY":[-1,0],"zd":[-1,0],"zq":[-1,0],"z�":[-1,0],"�A":[-1,0],"�F":[-1,0],"�I":[-1,0],"�J":[-1,0],"�S":[-1,0],"�T":[-1,0],"�V":[-1,0],"�X":[-1,0],"�Y":[-1,0],"�Z":[-1,0],"�a":[-1,0],"�d":[-1,0],"�f":[-1,0],"�g":[-1,0],"�i":[-1,0],"�j":[-1,0],"�p":[-1,0],"�q":[-1,0],"�s":[-1,0],"�t":[-1,0],"�v":[-1,0],"�x":[-1,0],"�y":[-1,0],"�z":[-1,0],"��":[-2,0]},"left":["BDHKLMNPRhkl","CEGOQ","UWb","ceo","mnr","uw"],"right":["AHJNUl","DO","Wd","mn"]} +datalen=2992 +data=iVBORw0KGgoAAAANSUhEUgAAAG4AAABkCAYAAABnwAWdAAAAAXNSR0IArs4c6QAACH5JREFUeF7tndl2GkkQRIf//2j5oFHhIsnlRi3dyPS8WKKrconIFbDn9t/f/766n+8/3szv7df7ueiZvUJl3u/Zs5kNvZ52z7PJk1nJ7e9kGATwuNgovqGzzTCPjOi1yvGM4Ih09XWrY/S+F2g0KD3iKI4tUK0u7Mf9YjtMldKMo/KiyI2c8wIDO5woo35FIlQbKD5uRemJ84CiwjPwlRJLS6u1KwPN2la1AGqDLddZpqLy9yPQ0//inyXOkreKuNFozso1JYSWw6hXVraPPq/upYER9bjIiap80bqvgEl6jlKmlLPE34oAVR/CpgeFlojK0L407pq8kHNJ6cn6lJrJBA+lVLZgaXa4gUuimfSv68zBCFzEHQz4KnUXcauQPFiOSlw2tGR9h/QBuo7Y9aKSrUyLfS+qsKn0Kn1YWZm+z1bGecrpvd6xykmveWdDQk9GBnZkA1lziM0Uv0pWOvp7yUwV20mR3FOIiyIuA7g9q0CxGZedV2QSDMg64fFS+bQ140aqvjU424Fa5o+W72wloKQQH0sSHCHlHdVABSTilM3k7E70huxIllR9b6RarAyE5cQpZIycJRlnexoJJtLrPN20n2e+liT85oybIbkCJuqTHil9UPSlWK1M8rBhAKh8knvcCMDXnb8fnREsStJWlAFiyHXmfwQIIeTMt7CZEnARciICn0ocjuwTuUlVq985mW2674DD2aQt0W8/j8uItKAvMeBgJqt3TWj7ICuI51qFmZ1qm4yXyti+upDhl33Y2t+bKbvY4AmiK9AmRKOrS/V/SsYtBQ3R9Hxouf5P6HEUNLX8qXIt316FwpVnpryRwKPOEVntjALwDv29HbvxC3HZrXgncArZq8+e7tdO4k53bjVb7yRvJ3Hv5Oc/Z8sIcV4DzeTghtuh671Lb3scafbZHe/zPY9g1bfovIJb5v+3jcrCfT8flT/v9WqIiJ5bWdXv1bBAbabnRvQpsiMsnwIi2uOU0kKN6qMoChhiNNWXBZrnX9aTafCocu15PBdEXwegxFFn+3Pk516/BxotaRiI4mOXyoaV5TQr4Y9n0RJIel8FSuUsKdVeOf3UjHvyO3uvkpBXZWZFbtYv2l1aphRCvTI6ez/yhWIg9c4ZcqhBfW9rxpG3e7I+SEvlO0yVFCfbHlIfZ4irsu16vhGBi7iN4O4UfRG3E92Nsttwkm37dtez5qjkk11NXfYjiPoBp59im3w72dozZGCo8PB6fKQn6skvGKvEVY6QGCPE0f2w0mfXCW9Sta8R+5TAWjGtvsh4R+KqKax6bqcz8iZDRPDoiB+9yTBim2tDtsdVo7taIrNszUqazaojiLMZRXdJz0elVGZ63AWc9jilVColoor4KlKrHlfdt/qtn7PE0SDPyvRhxEV9YHUPyfqcoisbTLxnNDCVCoExU3ucl/ZVNJE7FIR+GowIqz7xiMjMJr3MPjJVVhh57aB/7YUnVWA1xV3PD0LgIu4goFeruYhbjehB8kY+1iE9i/SivqdkDXz1RLeix1UDh93jSD/2MAsTKxtO6EQWTULK/vUOxEVYKIPTLBZVQDwwXUUcKRAKOdneVTlno52+c+J9/qfomiWN3v/GZmep3JVxmYOkrJJKEi3kXoA2eRXJhBgi44m4avepMoooHMm4DMBVJFlAq4zNyMtwmsXoSfY71PVmUEQEIZyc6QmKyCHZOEIcIY1k5HCPi6ZFslYQ41uG0YmTOutlrn2Nkq8S1/tk75L+62YxAbwqk9fzdQiQ4H70uHVqL0mzCNjsTPe4WWXX/RMQqD4d8Eb6/jVSanH6Q/9Xy4uGI2jO1LFhX7ylk1pClCo7zkq9VFZ/jvgzIje7M6xzZn+rlJI9axSISndVKfqp1WYc7jPi/4HLkxv5UdowPI7Cf1RslJhV99QFPiPUCwavVdBdMLIN3aeKPSDVqF9FhiJH2c1WnaUE38+RquTapX5J6OyeoJCWDR1T0f4jOCtzpJKR+/2Zp/PZVFhlVPV8BORdd5b2l85IK9crtX0A9f5V2Fssns6TcT4C8zcRtysgTpOrEldOO4OeeJEbiVJtHjTpva9dILw3P6F1XhPN6rTiplJKlbPKhKvIVc4qOGw5O7OAVwa9AxCKDcrZyvftz2ff8rJTkje+kr44CxoZrb29aXS9afqUPYzgEE2gL1Uw+s5J1fvIdr9iV6KRS4irgqN6bkluYFoSPTK99kNsDgNrdcbRCCaRSknLMinKDKVPkrOZP1lAqDg8zo8QR7JNLUtKtBMgbckhH18pNlSAey2D2o0yUSVuVfRUjivZRjKuJ3Lmbb5IzqqMk3rcCpCUaFX12fOrSZ+155T71RASGaVMSDsc6/WP+rDDrsNkfqTTh6G7UdFvJe7I0rwR/nHRF3Hj2J16c2YBt4ZHHx7SfmjPeUtrmyAr3SNTJBrDfwRXA1K1Dii63Kk52m+UsT8axxsRM58GZ8MRqRaKHwqYCnEWn6rMoz05W0yRgCACs92KTqpRximyFeI8uZTMisi+UowE3IsduzOOGJn1CgqcKiOqBj15NDPaOftnb1NVOj370ztH9DjaxGmPUzKu73W9HdVbYBVpUQ+lVUqVjzOOgk2GAFXWp58nZffxV4l3lbRPJ2HU/776uNzMEjZq2HVvEoFR4sqIEL+iTuTZZt9+3/n1i0l4910fIU5trKr1lXw7bdmh40nf19eXN/Q8nbndbiM4qH4tPR9NlXclmTMVuCOT3+idFJA7cRkx1fOlaC8U5pFTLa0VqbOTZrZjya5XxFTPZYUHXSBvR3mmXBl3EEGRmpHGTkibKXtUPoKuyqjqOVJywqGZHudNdXbyo01fnSoxVBUx1XOs6OCDFNgRs5ZmzogB32n/QcPJKEb23kXcKiQdOTszbqPZXPS/usf9AUB/mZK9IwrMAAAAAElFTkSuQmCC +width=11 +height=10 + +tracking=1 + +0 8 +1 2 +2 7 +3 7 +4 6 +5 6 +6 7 +7 7 +8 7 +9 7 +space 6 +! 2 +" 4 +# 9 +$ 7 +% 9 +& 7 +' 2 +( 3 +) 3 +* 8 ++ 7 +, 2 +- 6 +. 2 +/ 7 +: 2 +; 2 +< 6 += 6 +> 6 +? 7 +@ 10 +A 8 +B 7 +C 8 +D 8 +E 8 +F 8 +G 8 +H 8 +I 5 +J 7 +K 7 +L 8 +M 11 +N 8 +O 9 +P 7 +Q 8 +R 7 +S 7 +T 9 +U 8 +V 9 +W 11 +X 8 +Y 9 +Z 7 +[ 4 +\ 7 +] 4 +^ 5 +_ 11 +` 2 +a 8 +b 8 +c 8 +d 8 +e 8 +f 5 +g 9 +h 8 +i 1 +j 6 +k 5 +l 1 +m 9 +n 8 +o 9 +p 7 +q 7 +r 7 +s 7 +t 5 +u 8 +v 7 +w 9 +x 6 +y 7 +z 6 +{ 5 +| 1 +} 5 +~ 8 +� 11 + +Fc -2 +Fe -2 +Fo -2 +IC -1 +IE -1 +IG -1 +IO -1 +IQ -1 +Ic -1 +Ie -1 +Io -1 +Iu -1 +Iw -1 +KC -1 +KE -1 +KG -1 +KO -1 +KQ -1 +KU -1 +KW -1 +Kb -1 +Kc -1 +Ke -1 +Ko -1 +Ku -1 +Kw -1 +LC -1 +LE -1 +LG -1 +LO -1 +LQ -1 +LU -1 +LW -1 +Lb -1 +Lc -1 +Le -1 +Lo -1 +Lu -1 +Lw -1 +Pc -1 +Pe -1 +Po -1 +Rc -1 +Re -1 +Ro -1 +TC -1 +TE -1 +TG -1 +TO -1 +TQ -1 +Tc -4 +Te -4 +To -4 +Tm -4 +Tn -4 +Tr -4 +Tu -4 +Tw -4 +Vc -1 +Ve -1 +Vo -1 +XC -1 +XE -1 +XG -1 +XO -1 +XQ -1 +Xc -1 +Xe -1 +Xo -1 +Xu -1 +Xw -1 +YC -1 +YE -1 +YG -1 +YO -1 +YQ -1 +Yc -3 +Ye -3 +Yo -3 +Ym -1 +Yn -1 +Yr -1 +Yu -1 +Yw -1 +ZC -1 +ZE -1 +ZG -1 +ZO -1 +ZQ -1 +Zc -1 +Ze -1 +Zo -1 +Zu -1 +Zw -1 +gc -1 +ge -1 +go -1 +kc -1 +ke -1 +ko -1 +tc -1 +te -1 +to -1 +xc -1 +xe -1 +xo -1 +zc -1 +ze -1 +zo -1 +�B -1 +�D -1 +�H -1 +�K -1 +�L -1 +�M -1 +�N -1 +�P -1 +�R -1 +�h -1 +�k -1 +�l -1 +�C -1 +�E -1 +�G -1 +�O -1 +�Q -1 +�U -1 +�W -1 +�b -1 +�c -1 +�e -1 +�o -1 +�m -1 +�n -1 +�r -1 +�u -1 +�w -1 +A� -1 +H� -1 +J� -1 +N� -1 +U� -1 +l� -1 +DI -1 +DT -1 +DX -1 +DY -1 +DZ -1 +Dg -1 +Dj -2 +D� -1 +OI -1 +OT -1 +OX -1 +OY -1 +OZ -1 +Og -1 +Oj -2 +O� -1 +Wg -1 +Wj -2 +W� -1 +dg -1 +dj -2 +d� -1 +mT -4 +mV -1 +mY -3 +mt -1 +my -1 +m� -1 +nT -4 +nV -1 +nY -3 +nt -1 +ny -1 +n� -1 +Bj -1 +B� -1 +Cf -1 +Cj -1 +Cs -1 +C� -1 +Ef -1 +Ej -1 +Es -1 +E� -1 +FA -2 +FJ -3 +Fa -2 +Fd -2 +Ff -1 +Fg -3 +Fj -5 +Fq -2 +Fs -1 +F� -1 +GT -1 +GY -1 +G� -1 +IJ -1 +Ia -1 +Id -1 +If -1 +Iq -1 +Is -1 +It -1 +Iv -2 +Iy -1 +I� -1 +KJ -1 +KT -1 +KV -1 +KY -1 +Ka -1 +Kd -1 +Kf -1 +Kq -1 +Ks -1 +Kt -1 +Kv -2 +Ky -1 +K� -1 +LJ -1 +LT -4 +LV -3 +LY -4 +La -1 +Ld -1 +Lf -1 +Lq -1 +Ls -1 +Lt -1 +Lv -2 +Ly -1 +L� -1 +MT -1 +MY -1 +M� -1 +PA -1 +PJ -1 +Pd -1 +Pg -2 +Pj -5 +Pq -1 +P� -1 +QT -1 +QY -1 +Q� -1 +RJ -1 +Rd -1 +Rq -1 +R� -1 +Sj -1 +S� -1 +TA -3 +TF -1 +TJ -4 +Ta -4 +Td -4 +Tf -2 +Tg -4 +Tj -4 +Tp -4 +Tq -4 +Ts -4 +Tt -1 +Tv -4 +Tx -4 +Ty -4 +Tz -4 +T� -1 +VA -1 +VJ -1 +Vd -1 +Vg -2 +Vj -4 +Vq -1 +V� -1 +XJ -1 +Xa -1 +Xd -1 +Xf -1 +Xq -1 +Xs -1 +Xt -1 +Xv -1 +Xy -1 +X� -1 +YA -3 +YF -1 +YJ -3 +Ya -2 +Yd -3 +Yf -2 +Yg -4 +Yj -4 +Yp -1 +Yq -3 +Ys -2 +Yt -1 +Yv -1 +Yx -1 +Yy -1 +Yz -1 +Y� -1 +ZJ -1 +Za -1 +Zd -1 +Zf -1 +Zq -1 +Zs -1 +Zt -1 +Zv -1 +Zy -1 +Z� -1 +aT -4 +aY -2 +a� -1 +bI -1 +bT -4 +bV -1 +bX -1 +bY -3 +bZ -1 +bg -1 +bj -2 +bt -1 +bx -1 +by -1 +bz -1 +b� -1 +cT -4 +cY -2 +cj -1 +c� -1 +eT -4 +eV -1 +eY -3 +ef -1 +ej -1 +es -1 +et -1 +ev -1 +ey -1 +e� -1 +fg -2 +fj -3 +f� -1 +gA -1 +gI -1 +gJ -1 +gT -4 +gX -1 +gY -1 +gZ -1 +gd -1 +gg -1 +gj -1 +gq -1 +g� -1 +hT -4 +hV -1 +hY -3 +ht -1 +hy -1 +h� -1 +i� -1 +j� -1 +kJ -1 +kT -4 +kY -1 +kd -1 +kq -1 +k� -1 +oI -1 +oT -4 +oV -1 +oX -1 +oY -3 +oZ -1 +og -1 +oj -2 +ot -1 +ox -1 +oy -1 +oz -1 +o� -1 +pI -1 +pT -4 +pV -1 +pX -1 +pY -3 +pZ -1 +pg -1 +pj -2 +pt -1 +px -1 +py -1 +pz -1 +p� -1 +qT -4 +qY -1 +q� -1 +rI -2 +rT -4 +rX -2 +rY -2 +rZ -2 +rg -2 +rj -5 +r� -1 +sT -4 +sV -1 +sY -2 +sf -1 +sj -1 +ss -1 +st -1 +sv -1 +sy -1 +s� -1 +tA -1 +tI -2 +tJ -3 +tT -3 +tX -1 +tY -1 +tZ -3 +td -1 +tg -2 +tj -3 +tq -1 +t� -1 +uT -4 +uY -1 +u� -1 +vI -2 +vT -4 +vX -1 +vY -1 +vZ -2 +vg -2 +vj -3 +v� -1 +wI -1 +wT -4 +wX -1 +wY -1 +wZ -1 +wg -1 +wj -2 +w� -1 +xJ -1 +xT -4 +xY -1 +xd -1 +xq -1 +x� -1 +yT -4 +yY -1 +y� -1 +zJ -1 +zT -4 +zY -1 +zd -1 +zq -1 +z� -1 +�A -1 +�F -1 +�I -1 +�J -1 +�S -1 +�T -1 +�V -1 +�X -1 +�Y -1 +�Z -1 +�a -1 +�d -1 +�f -1 +�g -1 +�i -1 +�j -1 +�p -1 +�q -1 +�s -1 +�t -1 +�v -1 +�x -1 +�y -1 +�z -1 +�� -2 diff --git a/source/assets/fonts/peridot_7.fnt b/source/assets/fonts/peridot_7.fnt new file mode 100644 index 0000000..3f1ea02 --- /dev/null +++ b/source/assets/fonts/peridot_7.fnt @@ -0,0 +1,105 @@ +--metrics={"baseline":5,"xHeight":0,"capHeight":0,"pairs":{},"left":[],"right":[]} +datalen=1708 +data=iVBORw0KGgoAAAANSUhEUgAAAEYAAABQCAYAAACkoQMCAAAAAXNSR0IArs4c6QAABLlJREFUeF7tW9Fy2zAMW/7/o7PLVvVoGSBAym6dnPuSayRRJEgRsNw+/vz/eX59Pr4+48drDH2frcvsZbbHujFn3pfZ7a6jMbw2HoGjTV3AGHjo+/jdPK6SwBKkwB7rsv02YwOYl+EIklsxA3E3szFDqCpi5pnN4Sso7u8kz2MqwTtfZjBUhtGGWRazCmCgjj3s7IZ2oFqBXZGxxFgmsmMSgYpOHdFjWJBVP50eurPpnFlUsh//3Q0MSfENTBMYp1kpqq409CgdMu2kmqxLEjQ+VTFdYGbBNTe3jJarbNWZL+XICjCqAbPsK8ZyWTDTMzLwMAHup4BRwbNxVTGMQrsVmvnZ0lIKGGXUcQgJNaR645FQVaP8Pr3HdCtGrVsBXNk+ZLyK/CGbvoORG5hEx2TXAL+V3DOOWsnmykPkmaBVROHww2E01JQhEcT7GDRBCTGHrqvHtZRZIzste1ermFYQC+DQxDsXVY5WMXz7ntIp+ahxsipduTTb2K2WeUVqV8BanXt4pa0AsxrMpdffwJg6Bk3LnoY7Y4rpmM1sXXds9K4dI7P3LUgboIdBtj4TjWePIa1SvfTavGFUbPHacH4TEHVQZQyKqvDyj1VulojZv5jcbAzGoCqmS9XxOPx0pXUrZuPnrGOqGiHrByq71Qx3+4iichjDzUoJK11aT/yWc3fFmDqmcj9LNcDELlnzRY1y9J757Kt7o47+iTFsisR5iFTNCz3gjTVorZIF0acZjAgakgeZL6UxdR+DjCmNkVWSsjcDiqoEVcbhonGlYo5wRmkOtkdVGylBuatiBUymHej5NHqMclQ9krAjirSRagXw2N+sdOuYmiK6K0boGHbmlVZxekW1Ua7ScEWLMe2z+xPWihjLqPcoxmL+VMBGjTz77t+YYqWMec4EpioQs/mun5tDNQu86usHRoVOxWSqmAVaBcwVlLtOoyrG0THZtaHTg5jIU8dajcfjkvmBtA/954kat33g7Juub4FXK2t150t5/msb9RyCvOmsUU3UjdreWwHjUJ29mQkma/gOEcBGGv5RDY1Du87rk2rgTvZWaB4lK/PRkQ47m0x+x+DOAIaB1wpi8UUdPDUKGNVjnOqozrnUUao6//Hzz9IxMeusIV4a3LOAuXTQjnMOKzmNkj3vVNe67OLEtjTH1THoIUzpio5jXWCyo6v8hAQD/zYkRHQGfXZFowMaupZoxaAqpmVU6AoFTKZesyuO7A0maxk0PgXMCIJJaWdDdKSU8kXjTsWMvVjAzO4uvgorHamAj7TV6WVyjQJGNS65AZhweVDeUnh1MtFZoyqmY1OteZuKUccle6jLmrd6GERJWWXB0+h6zqZyNKPWFdpFlK58YXTdYlbn9UmXkplDLu2yJGWUG4+xulKZqX1j13nhpo4S0ynoMQLpjHl9drQdUDNA7Sp2BJ4TjGq47zAOK8Zhp7dgk2IGaHU6gBT3+ozpDjAD1XmuOu+ZgES0eilE5+aLglEPfCwgtQ6OP5/PWN7/bD8eDyeBhwKrKI1VC9IZjF1KQb2AiUDMvx8afWLMudpUma9WTBrblYCZSxf1ksoRy5SmTPiVgJHO/uSEK/aYn4z/8nuVGuPloznQwb/SelBv0W6ASwAAAABJRU5ErkJggg== +width=7 +height=8 + +tracking=1 + +0 4 +1 2 +2 4 +3 3 +4 4 +5 4 +6 4 +7 4 +8 4 +9 4 +space 3 +! 1 +" 3 +# 5 +$ 4 +% 3 +& 5 +' 2 +( 2 +) 2 +* 4 ++ 3 +, 2 +- 3 +. 1 +/ 3 +: 1 +; 2 +< 3 += 3 +> 3 +? 4 +@ 4 +A 4 +B 4 +C 4 +D 4 +E 3 +F 3 +G 4 +H 4 +I 3 +J 4 +K 4 +L 3 +M 5 +N 4 +O 4 +P 4 +Q 4 +R 4 +S 4 +T 3 +U 4 +V 4 +W 5 +X 5 +Y 4 +Z 3 +[ 2 +\ 3 +] 2 +^ 3 +_ 4 +` 2 +a 4 +b 4 +c 3 +d 4 +e 4 +f 2 +g 4 +h 4 +i 1 +j 2 +k 3 +l 1 +m 5 +n 4 +o 4 +p 4 +q 4 +r 3 +s 4 +t 2 +u 4 +v 4 +w 5 +x 4 +y 4 +z 4 +{ 3 +| 1 +} 3 +~ 4 +� 7 + diff --git a/source/assets/images/menuBg.png b/source/assets/images/menuBg.png new file mode 100644 index 0000000..fbc737d Binary files /dev/null and b/source/assets/images/menuBg.png differ diff --git a/source/assets/images/solder.png b/source/assets/images/solder.png new file mode 100644 index 0000000..d136677 Binary files /dev/null and b/source/assets/images/solder.png differ diff --git a/source/assets/images/unk.png b/source/assets/images/unk.png new file mode 100644 index 0000000..6d64644 Binary files /dev/null and b/source/assets/images/unk.png differ diff --git a/source/assets/sprites/assemble/1/8.png b/source/assets/sprites/assemble/1/8.png index 8662321..491fd65 100644 Binary files a/source/assets/sprites/assemble/1/8.png and b/source/assets/sprites/assemble/1/8.png differ diff --git a/source/assets/sprites/assemble/1/preview.png b/source/assets/sprites/assemble/1/preview.png new file mode 100644 index 0000000..cef3b28 Binary files /dev/null and b/source/assets/sprites/assemble/1/preview.png differ diff --git a/source/assets/sprites/selectionBg.png b/source/assets/sprites/selectionBg.png new file mode 100644 index 0000000..d3c05b1 Binary files /dev/null and b/source/assets/sprites/selectionBg.png differ diff --git a/source/assets/sprites/selectionBg1.png b/source/assets/sprites/selectionBg1.png new file mode 100644 index 0000000..aa86220 Binary files /dev/null and b/source/assets/sprites/selectionBg1.png differ diff --git a/source/assets/sprites/selectionanim-table-40-39.png b/source/assets/sprites/selectionanim-table-40-39.png new file mode 100644 index 0000000..54db5d7 Binary files /dev/null and b/source/assets/sprites/selectionanim-table-40-39.png differ diff --git a/source/en.strings b/source/en.strings deleted file mode 100644 index e8822fe..0000000 --- a/source/en.strings +++ /dev/null @@ -1,5 +0,0 @@ --- These are example strings. -"menuResumeGame" = "Resume" -"menuNewGame" = "New Game" -"menuOptions" = "Options" -"menuCredits" = "Credits" \ No newline at end of file diff --git a/source/jp.strings b/source/jp.strings deleted file mode 100644 index 29eb461..0000000 --- a/source/jp.strings +++ /dev/null @@ -1,5 +0,0 @@ --- These are example strings. -"menuResumeGame" = "サイカイ " -"menuNewGame" = "アタラシイゲーム" -"menuOptions" = "セッテイ" -"menuCredits" = "クレジット" \ No newline at end of file diff --git a/source/main.lua b/source/main.lua index a7119cf..edd46fd 100644 --- a/source/main.lua +++ b/source/main.lua @@ -14,6 +14,7 @@ import "libraries/playout" import 'utilities/enum' import 'utilities/ui' +import 'utilities/utils' ZIndex = { player = 4, @@ -33,6 +34,42 @@ CollideGroups = { wall = 5 } +Drones = { + { + name = "Quad FPV", + description = + "This is a quadrocopter with a camera on it. It's a good drone for beginners. It's easy to control and has a good battery life.", + price = 100, + locked = false, + preview = Graphics.image.new("assets/sprites/assemble/1/preview.png"), + full = Graphics.image.new("assets/sprites/assemble/1/8.png") + }, + { + name = "Drone 2", + description = "This is a drone", + price = 200, + locked = true, + preview = nil, + full = nil + }, + { + name = "Drone 3", + description = "This is a drone", + price = 300, + locked = true, + preview = nil, + full = nil + }, + { + name = "Drone 4", + description = "This is a drone", + price = 400, + locked = true, + preview = nil, + full = nil + } +} + import "scripts/player" import "scripts/bigBoomSprite" import "scripts/groundSprite" @@ -40,23 +77,47 @@ import "scripts/balebaSprite" import "scripts/dangerSprite" import "scripts/tankSprite" import "scripts/progressBar" +import "scripts/selectionSprite" import "scenes/BaseScene" +import 'scenes/Assemble' +import 'scenes/DroneSelection' import 'scenes/Menu' import 'scenes/Game' -import 'scenes/Assemble' + +Difficulty = { + Easy = "Easy", + Medium = "Medium", + Hard = "Hard" +} + +DifficultySettings = { + [Difficulty.Easy] = { + assebleTime = 2500, + }, + [Difficulty.Medium] = { + assebleTime = 1500, + }, + [Difficulty.Hard] = { + assebleTime = 800, + } +} Noble.Settings.setup({ - difficulty = "Medium", + difficulty = Difficulty.Medium, music = true }) --- Noble.GameData.setup({ --- score = 0 --- }) +Noble.GameData.setup({ + drone1 = 0, + drone2 = 0, + drone3 = 0, + drone4 = 0, + money = 150 +}) playdate.display.setRefreshRate(50) Noble.showFPS = true -Noble.new(Assemble) +Noble.new(Menu) diff --git a/source/pdxinfo b/source/pdxinfo index 63d9758..eecb1a1 100644 --- a/source/pdxinfo +++ b/source/pdxinfo @@ -1,7 +1,7 @@ -name=A Noble Engine Game -author=A Lovely Developer -description=This is a Noble Engine game. -bundleID=com.yourdomain.GameName +name=FPV Game +author=ut3usw +description=This is a FPV Game +bundleID=guru.dead.fpv version=0.0.1 buildNumber=1 imagePath=assets/launcher/ diff --git a/source/scenes/Assemble.lua b/source/scenes/Assemble.lua index 48dae11..bb95dc8 100644 --- a/source/scenes/Assemble.lua +++ b/source/scenes/Assemble.lua @@ -3,23 +3,12 @@ class("Assemble").extends(BaseScene) local scene = Assemble local font = Graphics.font.new('assets/fonts/Mini Sans 2X') +local fontMed = Graphics.font.new('assets/fonts/onyx_9') local allButtons = { "A", "B", "DOWN", "LEFT", "RIGHT", "UP" } -local function screenShake(shakeTime, shakeMagnitude) - local shakeTimer = playdate.timer.new(shakeTime, shakeMagnitude, 0) - shakeTimer.updateCallback = function(timer) - local magnitude = math.floor(timer.value) - local shakeX = math.random(-magnitude, magnitude) - local shakeY = math.random(-magnitude, magnitude) - playdate.display.setOffset(shakeX, shakeY) - end - shakeTimer.timerEndedCallback = function() - playdate.display.setOffset(0, 0) - end -end - function scene:popCode(button) + scene.menuConfirmSound:stop() if scene.tickTimer.paused then scene.droneParts = scene:loadDrone(1, #scene.code) scene.tickTimer:start() @@ -30,12 +19,14 @@ function scene:popCode(button) scene.tickTimer:reset() scene.dronePartIndex = scene.dronePartIndex + 1 - local particle = ParticlePoly(200, 190 + 8) + local particle = ParticlePoly(200, 185) particle:setThickness(2) particle:setSize(1, 2) particle:setSpeed(1, 3) particle:setColour(Graphics.kColorXOR) particle:add(5) + scene.dY = 5 + scene.menuConfirmSound:play(1) else self.buttonTimeout = self.buttonTimeout - 5 scene.code[1] = scene:randomButton() @@ -62,6 +53,7 @@ function scene:drawBackground() end local screwDriver = Graphics.image.new('assets/sprites/assemble/sd.png') +local solder = Graphics.image.new('assets/images/solder.png') function scene:loadButtons() local buttons = {} @@ -90,22 +82,30 @@ function scene:setValues() table.insert(scene.code, scene:randomButton()) end + scene.difficulty = Noble.Settings.get("difficulty") + scene.buttons = scene:loadButtons() scene.droneParts = {} scene.dronePartIndex = 0 + scene.dY = 5 + + scene.buttonTimeout = 100 + + scene.timeToClick = DifficultySettings[scene.difficulty].assebleTime + + scene.menuConfirmSound = playdate.sound.fileplayer.new("assets/audio/confirm") + self.aKey = Graphics.image.new("assets/sprites/buttons/A") end function scene:init() scene.super.init(self) scene:setValues() - scene.buttonTimeout = 100 - - scene.progressBar = ProgressBar(200, 170, 50, 5) + scene.progressBar = ProgressBar(200, 175, 50, 5) scene.progressBar:set(self.buttonTimeout) scene.progressBar:setVisible(false) - scene.tickTimer = playdate.timer.new(2500, self.buttonTimeout, 0, playdate.easingFunctions.linear) + scene.tickTimer = playdate.timer.new(scene.timeToClick, self.buttonTimeout, 0, playdate.easingFunctions.linear) scene.tickTimer.updateCallback = function(timer) scene.buttonTimeout = timer.value scene.progressBar:set(scene.buttonTimeout) @@ -132,14 +132,40 @@ function round(number) return formatted end +local elapsedTime = 0 function scene:update() scene.super.update(self) + elapsedTime = elapsedTime + 1 / playdate.display.getRefreshRate() + + local sddy = 4 * math.sin(10 * elapsedTime) + local sdy = 4 * math.sin(7 * elapsedTime) + local sddx = 2 * math.cos(5 * elapsedTime) + + if scene.tickTimer.paused then + Noble.Text.draw("Assemble the drone!", 200, 110, Noble.Text.ALIGN_CENTER, false, font) + end if #scene.code == 0 then - Noble.Text.draw("WIN!", 200, 110, Noble.Text.ALIGN_CENTER, false, font) + local dy = 1 * math.sin(10 * elapsedTime) + + Noble.Transition.setDefaultProperties(Noble.Transition.SpotlightMask, { + x = 325, + y = 95, + xEnd = 96, + yEnd = 100, + invert = false + }) + scene.inputHandler = { + AButtonDown = function() + Noble.transition(Game, nil, Noble.Transition.SpotlightMask) + scene.menuConfirmSound:play(1) + end + } + Noble.Input.setHandler(scene.inputHandler) + self.aKey:draw(200, 170 + dy) + Noble.Text.draw("Start Mission", 218, 175, Noble.Text.ALIGN_LEFT, false, fontMed) self.progressBar:remove() self.tickTimer:remove() - scene.inputHandler = {} return end @@ -148,18 +174,23 @@ function scene:update() self.progressBar:remove() self.tickTimer:remove() screenShake(100, 5) - scene.inputHandler = {} + Noble.Input.setEnabled(false) return end - screwDriver:draw(300, 100) + screwDriver:draw(300 + sddx, 100 + sddy) + solder:draw(0, 100 + sdy) if scene.droneParts ~= nil and scene.dronePartIndex ~= nil and scene.dronePartIndex > 0 and #scene.droneParts > 0 then scene.droneParts[scene.dronePartIndex]:draw(100, 20) end - Graphics.drawLine(200, 175, 200, 185) - Graphics.drawLine(200, 212, 200, 222) + Graphics.drawLine(180, 185, 192, 185) + Graphics.drawLine(208, 185, 220, 185) + + if scene.dY > 0 then + scene.dY = self.dY - 0.5 + end for i = 1, #scene.code do local button = scene.buttons[scene.code[i]] @@ -171,7 +202,9 @@ function scene:update() local t = (i - 1) / (#scene.code - first) local opaque = playdate.math.lerp(1, 0.3, t) --TODO: not the best solution - button:drawFaded(200 + ((i - 1) * 16) - 8, 190, opaque, playdate.graphics.image.kDitherTypeBayer2x2) + local y = 185 + ((i - 1) * 16) - 8 + scene.dY + + button:drawFaded(192, y, opaque, playdate.graphics.image.kDitherTypeBayer2x2) end end diff --git a/source/scenes/DroneSelection.lua b/source/scenes/DroneSelection.lua new file mode 100644 index 0000000..e238fed --- /dev/null +++ b/source/scenes/DroneSelection.lua @@ -0,0 +1,117 @@ +DroneSelection = {} +class("DroneSelection").extends(BaseScene) +local scene = DroneSelection + +local fontSimple = Graphics.font.new('assets/fonts/peridot_7') +local fontMed = Graphics.font.new('assets/fonts/onyx_9') +local fontBig = Graphics.font.new('assets/fonts/diamond_20') + +scene.inputHandler = { + AButtonDown = function() + scene.menuConfirmSound:play(1) + Noble.transition(Assemble) + end, + BButtonDown = function() end, + downButtonDown = function() + scene.menuSelSound:play(1) + if scene.menuIndex < 4 then + scene.menuIndex = scene.menuIndex + 1 + else + scene.menuIndex = 1 + end + end, + leftButtonDown = function() end, + rightButtonDown = function() end, + upButtonDown = function() + scene.menuSelSound:play(1) + if scene.menuIndex > 1 then + scene.menuIndex = scene.menuIndex - 1 + else + scene.menuIndex = 4 + end + end, +} + +function scene:setValues() + self.dronesPreview = {} + self.background = Graphics.image.new("assets/sprites/selectionBg1") + self.dronesPreview[1] = Graphics.image.new("assets/sprites/assemble/1/8.png") + + self.aKey = Graphics.image.new("assets/sprites/buttons/A") + + scene.menuSelSound = playdate.sound.fileplayer.new("assets/audio/menu_select") + scene.menuSelSound:setVolume(0.5) + + scene.menuConfirmSound = playdate.sound.fileplayer.new("assets/audio/confirm") + -- scene.menuConfirmSound:setVolume(0.5) + + scene.unknownDrone = Graphics.image.new("assets/images/unk.png") + + self.menuIndex = 1 +end + +function scene:init() + scene.super.init(self) + scene:setValues() +end + +function scene:start() + scene.super.start(self) + + self.optionsMenu:addMenuItem("Main Menu", function() Noble.transition(Menu) end) + Noble.showFPS = false +end + +function scene:enter() + scene.super.enter(self) + + scene.selectionAnim = Selection(23, 54) +end + +local elapsedTime = 0 +function scene:update() + scene.super.update(self) + Noble.Text.draw("Select Drone", 200, 10, Noble.Text.ALIGN_CENTER, false, fontMed) + scene.selectionAnim:moveTo(23, 54 + (self.menuIndex - 1) * 46) + + elapsedTime = elapsedTime + 1 / playdate.display.getRefreshRate() + local dy = 1 * math.sin(10 * elapsedTime) + + local offset = 42 + + for i = 1, #Drones do + if Drones[i].locked == true then + Noble.Text.draw("UNAVAILABLE", 47, offset + 7, Noble.Text.ALIGN_LEFT, false, fontMed) + Noble.Text.draw("?", 16, offset + 4, Noble.Text.ALIGN_LEFT, false, fontBig) + else + Drones[i].preview:draw(6, offset) + + Noble.Text.draw(Drones[i].name, 49, offset - 3, Noble.Text.ALIGN_LEFT, false, fontMed) + Noble.Text.draw("Price:", 49, offset + 15, Noble.Text.ALIGN_LEFT, false, fontSimple) + Noble.Text.draw("$" .. Drones[i].price, 103, offset + 15, Noble.Text.ALIGN_LEFT, false, fontSimple) + end + offset = offset + 46 + end + + if Drones[self.menuIndex].locked == false then + self.aKey:draw(330, 170 + dy) -- A key + Noble.Text.draw("Assemble", 348, 175, Noble.Text.ALIGN_LEFT, false, fontSimple) -- Assemble text + + Graphics.drawTextInRect(Drones[self.menuIndex].description, 135, 200, 255, 100, nil, nil, nil, fontSimple) -- Description + Drones[self.menuIndex].full:draw(160, 35) -- Drone preview (full size) + else + Graphics.drawTextInRect("Unavailable right now", 135, 200, 255, 100, nil, nil, nil, fontSimple) + scene.unknownDrone:draw(184, 35) + end +end + +function scene:exit() + scene.super.exit(self) + + Noble.showFPS = false +end + +function scene:finish() + scene.super.finish(self) + playdate.display.setScale(1) +end diff --git a/source/scenes/Game.lua b/source/scenes/Game.lua index 0708385..62b7fd8 100644 --- a/source/scenes/Game.lua +++ b/source/scenes/Game.lua @@ -78,7 +78,7 @@ function scene:spawnBaleba() return end - --scene.balebas[balebaCount + 1] = Baleba(math.random(410, 900), math.random(10, 210), scene.player, true) + scene.balebas[balebaCount + 1] = Baleba(math.random(410, 900), math.random(10, 210), scene.player, true) end function scene:enter() @@ -96,9 +96,9 @@ function scene:enter() scene:spawnBaleba() end - --scene.helloAudio:play(1) + scene.helloAudio:play(1) if scene.musicEnabled then - --scene.levelAudio:play(0) + scene.levelAudio:play(0) end end @@ -164,7 +164,9 @@ end function scene:exit() scene.super.exit(self) - scene.tank:remove() + if scene.tank ~= nil then + scene.tank:remove() + end scene.telemLostSound:stop() scene.levelAudio:stop() scene.balebaSpawner:remove() diff --git a/source/scenes/Menu.lua b/source/scenes/Menu.lua index 07a9369..00e0f18 100644 --- a/source/scenes/Menu.lua +++ b/source/scenes/Menu.lua @@ -2,10 +2,8 @@ Menu = {} class("Menu").extends(BaseScene) local scene = Menu - - function scene:setValues() - self.background = Graphics.image.new("assets/images/background2") + self.background = Graphics.image.new("assets/images/menuBg") self.color1 = Graphics.kColorBlack self.color2 = Graphics.kColorWhite @@ -26,9 +24,12 @@ function scene:init() local menuSelSound = playdate.sound.fileplayer.new("assets/audio/menu_select") menuSelSound:setVolume(0.5) + local menuConfirmSound = playdate.sound.fileplayer.new("assets/audio/confirm") + -- menuConfirmSound:setVolume(0.5) + self:setValues() - self.menu = Noble.Menu.new(false, Noble.Text.ALIGN_CENTER, false, self.color2, 4,6,0, Noble.Text.FONT_SMALL) + self.menu = Noble.Menu.new(false, Noble.Text.ALIGN_CENTER, false, self.color2, 4, 6, 0, Noble.Text.FONT_SMALL) self:setupMenu(self.menu) @@ -56,10 +57,10 @@ function scene:init() end end, AButtonDown = function() + menuConfirmSound:play(1) self.menu:click() end } - end function scene:enter() @@ -86,13 +87,12 @@ function scene:update() Graphics.setColor(self.color1) Graphics.setDitherPattern(0.2, Graphics.image.kDitherTypeScreen) - Graphics.fillRoundRect(200-38, 160-8, 75, 60, 15) + Graphics.fillRoundRect(200 - 38, 160 - 8, 75, 60, 15) self.menu:draw(200, 160) - logo_image:draw(120, 55) + -- logo_image:draw(120, 55) Graphics.setColor(Graphics.kColorBlack) - end function scene:exit() @@ -102,8 +102,8 @@ function scene:exit() end function scene:setupMenu(__menu) - __menu:addItem("Start", function() Noble.transition(Game, nil, Noble.Transition.DipToWhite) end) - __menu:addItem("Tutorial", function() return end) - __menu:addItem("Credits", function() return end) + __menu:addItem("Start", function() Noble.transition(DroneSelection, nil, Noble.Transition.DipToWhite) end) + __menu:addItem("Tutorial", function() return end) + __menu:addItem("Credits", function() return end) __menu:select("Start") -end \ No newline at end of file +end diff --git a/source/scripts/player.lua b/source/scripts/player.lua index 922a915..3c8ba37 100644 --- a/source/scripts/player.lua +++ b/source/scripts/player.lua @@ -12,7 +12,7 @@ function Player:init(x, y) self.animation:addState("down", 1, 7) self.animation.down.frameDuration = 6 self.animation:addState("boom", 15, 21) - self.animation.boom.frameDuration = 10 + self.animation.boom.frameDuration = 6 self.animation.boom.loop = false self.animation:setState("down") @@ -173,7 +173,7 @@ function Player:handleMovementAndCollisions() self:boom() return elseif collisionTag == 154 then -- Baleba - --self:boom(collisionObject) + self:boom(collisionObject) return elseif collisionTag == 2 then -- Tank self:boom() diff --git a/source/scripts/selectionSprite.lua b/source/scripts/selectionSprite.lua new file mode 100644 index 0000000..57ad7ba --- /dev/null +++ b/source/scripts/selectionSprite.lua @@ -0,0 +1,18 @@ +Selection = {} +class("Selection").extends(NobleSprite) + +function Selection:init(x, y) + Selection.super.init(self, "assets/sprites/selectionanim", true) + + -- Animation properties + self.animation:addState("run", 1, 11) + self.animation.run.frameDuration = 1 + + self.animation:setState("run") + + -- Collision properties + self:setZIndex(ZIndex.alert) + self:setSize(41, 40) + self:add() + self:moveTo(x or 0, y or 0) +end diff --git a/source/utilities/utils.lua b/source/utilities/utils.lua new file mode 100644 index 0000000..fdb286c --- /dev/null +++ b/source/utilities/utils.lua @@ -0,0 +1,17 @@ +function round(number) + local formatted = string.format("%.2f", number) + return formatted +end + +function screenShake(shakeTime, shakeMagnitude) + local shakeTimer = playdate.timer.new(shakeTime, shakeMagnitude, 0) + shakeTimer.updateCallback = function(timer) + local magnitude = math.floor(timer.value) + local shakeX = math.random(-magnitude, magnitude) + local shakeY = math.random(-magnitude, magnitude) + playdate.display.setOffset(shakeX, shakeY) + end + shakeTimer.timerEndedCallback = function() + playdate.display.setOffset(0, 0) + end +end