Compare commits
No commits in common. "43512c90c75936ccb0a59d72cce2db17d13517d2" and "b0256d7ae3ce4f639fa92fa09471b14b27c6ea65" have entirely different histories.
43512c90c7
...
b0256d7ae3
@ -1,47 +0,0 @@
|
|||||||
--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
|
|
||||||
<EFBFBD> 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
|
|
||||||
|
|
@ -1,408 +0,0 @@
|
|||||||
--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],"<22>B":[-1,1],"<22>D":[-1,1],"<22>E":[-1,1],"<22>F":[-1,1],"<22>H":[-1,1],"<22>K":[-1,1],"<22>L":[-1,1],"<22>M":[-1,1],"<22>N":[-1,1],"<22>P":[-1,1],"<22>R":[-1,1],"<22>b":[-1,1],"<22>h":[-1,1],"<22>k":[-1,1],"<22>C":[-1,1],"<22>G":[-1,1],"<22>O":[-1,1],"<22>Q":[-1,1],"<22>U":[-1,1],"<22>W":[-1,1],"<22>l":[-1,1],"<22>c":[-1,1],"<22>e":[-1,1],"<22>o":[-1,1],"<22>m":[-1,1],"<22>n":[-1,1],"<22>r":[-1,1],"<22>u":[-1,1],"<22>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],"<22>A":[-1,0],"<22>I":[-1,0],"<22>J":[-1,0],"<22>S":[-1,0],"<22>T":[-1,0],"<22>V":[-1,0],"<22>X":[-1,0],"<22>Y":[-1,0],"<22>Z":[-1,0],"<22>a":[-1,0],"<22>d":[-1,0],"<22>f":[-1,0],"<22>g":[-1,0],"<22>i":[-1,0],"<22>j":[-1,0],"<22>p":[-1,0],"<22>q":[-1,0],"<22>s":[-1,0],"<22>t":[-1,0],"<22>v":[-1,0],"<22>x":[-1,0],"<22>y":[-1,0],"<22>z":[-1,0],"<22><>":[-2,0]},"left":["BDEFHKLMNPRbhk","CGOQ","UWl","ceo","mnr","uw"],"right":["HMNd","UVW","amnq","go","wy"]}
|
|
||||||
datalen=2384
|
|
||||||
data=iVBORw0KGgoAAAANSUhEUgAAAFAAAABaCAYAAAAvitHLAAAAAXNSR0IArs4c6QAABrZJREFUeF7tW9F26zYMW/7/o3tPuiiHQUAClCwnTbuXrpZEiRAIwt56+e//f75uP8ePC/w+xvH5mOauz+JjnLgPxmYxqv1X15f4XA/KwLk+G0nEAzAA49y4WVzPAMku6RoD52cXx/aDu3/6FfNdOj8DMAMUE4usqQBSBxwgOJfJwFHVEdcwMqjzleN46DFZBa1uOUsoYzJjuyrhzjiTmYr9jChMBr5jRADjwlkAHTZUJTS73in76mIdiaE67ZbNTGKdEmeMdjVUaXjVoKJ8ZPNaJewmjQlXAHfY7IDBGLyTgRLAsk03LA6CWumUskOrGpW5haoRxvPb+1f2QNmBv3HwWzOdlemGskFYEqoCUKeq9V1mo8Wp1tMxl4GqicTxLoDMOqG1Gc0u/mR6zcCNF9QGKCBMYx8BoAteppGZ92TsyNiXdWwXvEwb8QxP8xwAFfscLUSQbZGG4LMMW5Gn0ga9C4BR51zDi4k5LGJAugSh8xwAHYY5N1zZnA6AlS9z5ADPsR1AdwMHxKoJxOSRTQgMNpk4Pytz93wtljoM3A3gkTZmAHkkiGX+DoCrJfzR638agEdUgyrlFibMP+2wCkexUJn0bB8H+Jmyf/p0XlkB5xBHAdURcudcak4F3lgbz3RnKX5QZZNYgFnPtQKwAmE29lLc6S+xjdMecQFLSRpnreJLBkYTi/8e93Y2aQmwkdiYsrq3cwHZHAvARi50qnPAWYFXsdV49Jnqgp1YD3mogA6w7U0hqFqvxtUZV9eX8Y8AUCXw0ePVdzSmf+NZ93MU6ghrXtQm3B521quzYQ5Ok0v3x0QYI9EjYUmwEolrzh5X58WKUCVenp/dlnqmAFTjrOujr9x9Aa67yBrQ/XwZ3av/dsCSHc9GYAYA3nyUj2zM6aAuw939W5gcYaRjAhWAmVy4AHQvFS+osz5jaNTC73juJlUnVSU7A9CPKmElouptQK0/G8CXNpEO01yb4wL4ahtTeWLLxny04d2VXPycpUQ+M9GxUzIWuQzsiHxHI9n5DjPyDoCOlah0kjWZ1e7fAXDmAu34ZwOIAu9cDlqHrOujq6gchg2Q+p/wI4ArZtZhIBpw1d3ZuPKZajzGPATgMxl4BoCM0W4JZy6gfFE4AkCnHPBVL3P6rFm6AKgm2Bmv3kQGZvc3EXVApVMdAEesd28i1QU/6LjDwNREhl2e3hHJmGJApsHqgtW4a2NcI/3EwF0e81fEzbpw9kmHmWlkKM5RDHmXcVUBLPeHv1SqSowBmoHsPHd08xCboXwcKZPMZ9ISdzWw0gfl53YzDJucMuts3PGx0wAqEX4nAB2vmQHILlo5kKc/NqR1DjTvbnQGA/GSGVuyc88Q4A4JlnBF79mNFIDsljONZK9q0VtWIO0Yo00EQWS/s1LpMLOjUzEuA3DH+Soj/VCQThNZ1UB3faU3DMRYEc6bjbrgaRvzKwzvriQzBjIKqwbj6CfLQ4m7yn11PcZvxXMAVM3D6YAVCK0Dk0Cr65cBlF7ntoPSkPjm4BhvW6jFH307AI45qooyLNL11evS0s2oulsYR8AwOXQIHRsVj2W9SjrdyynhBTyspRVICiDFUGWDyvg/AcClBJOPCSgfFQ7s8u4sd76cvJqBOwCMMWfi3y/AAbAjwJVNyYyqU8NOCTP9wsvPmoiro0/ru93SSfZXzWG1j11MAeKIdCdm1mWzy1b7q/MvjWetuvNWoRJQ48ouqfVqfAkgtdgFsNLB3QkwRnbcA5pjRg6l80tGutOlMs90VAlXyTslPtZjF2bm2zbSpc+5+SjXJ7HXuS5DMw3MLkHFj+NbAESKu1bEuqEDjez48OFYLzTKA/yXAZgdKANflcjMm0D2saLDwOgLVwhwz8/9mNBtIko3s87LjG6mq24jUevVeCTJn5FWtqQ7/i5vIqoMu3mdNv8PwEWo4yf9GCrrdEyjSo24LXA0FFNxm4bSW2dc+cBUbyOAOKmTQOcAlU1iFeEAoHyqajjMK7KO/eQ6zgCww9AZAEd8lUv0gMyUZzpcXuBsCccDdBuA87qHPtJh0C4AGQHu+WebVtKavWq5DWkHgJmhR3Y6IDN2ovE/HcCqiUStcZtUpwTdEsdzMNY/nc9lzWKz/9zlHQArka1o72pkpXtvewNdALMu6ehGtVdZ4l9fXzj+Dejlcumcf8slZF2Y+boMJIdh1RzJvCuACBZ7tgUhEdRhlAJIjVfibOX8kwB0LAYm/Qeg+dV4VwlLFr47AzsMckqeAYKvQxK0B+f6AU1EOf0jbEwL1HeZ/HIb8C5AzJ7jH4LivYj9MkczAAAAAElFTkSuQmCC
|
|
||||||
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
|
|
||||||
<EFBFBD> 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
|
|
||||||
<EFBFBD>B -1
|
|
||||||
<EFBFBD>D -1
|
|
||||||
<EFBFBD>E -1
|
|
||||||
<EFBFBD>F -1
|
|
||||||
<EFBFBD>H -1
|
|
||||||
<EFBFBD>K -1
|
|
||||||
<EFBFBD>L -1
|
|
||||||
<EFBFBD>M -1
|
|
||||||
<EFBFBD>N -1
|
|
||||||
<EFBFBD>P -1
|
|
||||||
<EFBFBD>R -1
|
|
||||||
<EFBFBD>b -1
|
|
||||||
<EFBFBD>h -1
|
|
||||||
<EFBFBD>k -1
|
|
||||||
<EFBFBD>C -1
|
|
||||||
<EFBFBD>G -1
|
|
||||||
<EFBFBD>O -1
|
|
||||||
<EFBFBD>Q -1
|
|
||||||
<EFBFBD>U -1
|
|
||||||
<EFBFBD>W -1
|
|
||||||
<EFBFBD>l -1
|
|
||||||
<EFBFBD>c -1
|
|
||||||
<EFBFBD>e -1
|
|
||||||
<EFBFBD>o -1
|
|
||||||
<EFBFBD>m -1
|
|
||||||
<EFBFBD>n -1
|
|
||||||
<EFBFBD>r -1
|
|
||||||
<EFBFBD>u -1
|
|
||||||
<EFBFBD>w -1
|
|
||||||
H<EFBFBD> -1
|
|
||||||
M<EFBFBD> -1
|
|
||||||
N<EFBFBD> -1
|
|
||||||
d<EFBFBD> -1
|
|
||||||
U<EFBFBD> -1
|
|
||||||
V<EFBFBD> -1
|
|
||||||
W<EFBFBD> -1
|
|
||||||
aT -2
|
|
||||||
aY -1
|
|
||||||
a<EFBFBD> -1
|
|
||||||
mT -2
|
|
||||||
mY -1
|
|
||||||
m<EFBFBD> -1
|
|
||||||
nT -2
|
|
||||||
nY -1
|
|
||||||
n<EFBFBD> -1
|
|
||||||
qT -2
|
|
||||||
qY -1
|
|
||||||
q<EFBFBD> -1
|
|
||||||
gT -2
|
|
||||||
gY -1
|
|
||||||
g<EFBFBD> -1
|
|
||||||
oT -2
|
|
||||||
oY -1
|
|
||||||
o<EFBFBD> -1
|
|
||||||
wT -2
|
|
||||||
w<EFBFBD> -1
|
|
||||||
yT -2
|
|
||||||
y<EFBFBD> -1
|
|
||||||
A<EFBFBD> -1
|
|
||||||
B<EFBFBD> -1
|
|
||||||
C<EFBFBD> -1
|
|
||||||
DI -1
|
|
||||||
DT -1
|
|
||||||
D<EFBFBD> -1
|
|
||||||
E<EFBFBD> -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<EFBFBD> -1
|
|
||||||
G<EFBFBD> -1
|
|
||||||
If -1
|
|
||||||
Ig -1
|
|
||||||
Iq -1
|
|
||||||
Is -1
|
|
||||||
It -1
|
|
||||||
Iv -1
|
|
||||||
Iy -1
|
|
||||||
I<EFBFBD> -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<EFBFBD> -1
|
|
||||||
Kf -1
|
|
||||||
Kg -1
|
|
||||||
Kq -2
|
|
||||||
Ks -1
|
|
||||||
Kt -1
|
|
||||||
Kv -1
|
|
||||||
Ky -1
|
|
||||||
K<EFBFBD> -1
|
|
||||||
LT -2
|
|
||||||
LV -2
|
|
||||||
LY -2
|
|
||||||
Lf -1
|
|
||||||
Lg -1
|
|
||||||
Lq -4
|
|
||||||
Ls -1
|
|
||||||
Lt -1
|
|
||||||
Lv -2
|
|
||||||
Ly -1
|
|
||||||
L<EFBFBD> -1
|
|
||||||
O<EFBFBD> -1
|
|
||||||
PJ -1
|
|
||||||
Pa -1
|
|
||||||
Pj -1
|
|
||||||
P<EFBFBD> -1
|
|
||||||
Q<EFBFBD> -1
|
|
||||||
R<EFBFBD> -1
|
|
||||||
S<EFBFBD> -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<EFBFBD> -1
|
|
||||||
Xf -1
|
|
||||||
Xg -1
|
|
||||||
Xq -1
|
|
||||||
Xs -1
|
|
||||||
X<EFBFBD> -1
|
|
||||||
YJ -1
|
|
||||||
Ya -1
|
|
||||||
Yd -1
|
|
||||||
Yf -1
|
|
||||||
Yg -1
|
|
||||||
Yj -2
|
|
||||||
Yq -1
|
|
||||||
Ys -1
|
|
||||||
Y<EFBFBD> -1
|
|
||||||
Zf -1
|
|
||||||
Zg -1
|
|
||||||
Zq -1
|
|
||||||
Zs -1
|
|
||||||
Z<EFBFBD> -1
|
|
||||||
bT -2
|
|
||||||
bY -1
|
|
||||||
bt -1
|
|
||||||
b<EFBFBD> -1
|
|
||||||
cT -2
|
|
||||||
cY -1
|
|
||||||
c<EFBFBD> -1
|
|
||||||
eI -1
|
|
||||||
eT -2
|
|
||||||
eY -1
|
|
||||||
e<EFBFBD> -1
|
|
||||||
f<EFBFBD> -1
|
|
||||||
hT -2
|
|
||||||
hY -1
|
|
||||||
ht -1
|
|
||||||
h<EFBFBD> -1
|
|
||||||
iT -1
|
|
||||||
iV -1
|
|
||||||
iY -1
|
|
||||||
if -1
|
|
||||||
ig -1
|
|
||||||
iq -1
|
|
||||||
is -1
|
|
||||||
it -1
|
|
||||||
iv -1
|
|
||||||
iy -1
|
|
||||||
i<EFBFBD> -1
|
|
||||||
j<EFBFBD> -1
|
|
||||||
kT -2
|
|
||||||
kV -1
|
|
||||||
kY -1
|
|
||||||
kf -1
|
|
||||||
kg -1
|
|
||||||
kq -1
|
|
||||||
ks -1
|
|
||||||
kt -1
|
|
||||||
kv -1
|
|
||||||
ky -1
|
|
||||||
k<EFBFBD> -1
|
|
||||||
lT -1
|
|
||||||
lV -1
|
|
||||||
lY -1
|
|
||||||
lf -1
|
|
||||||
lg -1
|
|
||||||
lq -1
|
|
||||||
ls -1
|
|
||||||
lt -1
|
|
||||||
lv -1
|
|
||||||
ly -1
|
|
||||||
l<EFBFBD> -1
|
|
||||||
pI -1
|
|
||||||
pT -2
|
|
||||||
pX -1
|
|
||||||
pY -1
|
|
||||||
pZ -1
|
|
||||||
p<EFBFBD> -1
|
|
||||||
rI -1
|
|
||||||
rT -2
|
|
||||||
rX -1
|
|
||||||
rY -1
|
|
||||||
rZ -1
|
|
||||||
r<EFBFBD> -1
|
|
||||||
sT -2
|
|
||||||
sY -1
|
|
||||||
ss -1
|
|
||||||
st -1
|
|
||||||
sv -1
|
|
||||||
s<EFBFBD> -1
|
|
||||||
tT -2
|
|
||||||
t<EFBFBD> -1
|
|
||||||
uT -2
|
|
||||||
u<EFBFBD> -1
|
|
||||||
vI -1
|
|
||||||
vJ -1
|
|
||||||
vT -2
|
|
||||||
vZ -1
|
|
||||||
va -1
|
|
||||||
vj -1
|
|
||||||
v<EFBFBD> -1
|
|
||||||
xT -2
|
|
||||||
xf -1
|
|
||||||
x<EFBFBD> -1
|
|
||||||
zT -2
|
|
||||||
z<EFBFBD> -1
|
|
||||||
<EFBFBD>A -1
|
|
||||||
<EFBFBD>I -1
|
|
||||||
<EFBFBD>J -1
|
|
||||||
<EFBFBD>S -1
|
|
||||||
<EFBFBD>T -1
|
|
||||||
<EFBFBD>V -1
|
|
||||||
<EFBFBD>X -1
|
|
||||||
<EFBFBD>Y -1
|
|
||||||
<EFBFBD>Z -1
|
|
||||||
<EFBFBD>a -1
|
|
||||||
<EFBFBD>d -1
|
|
||||||
<EFBFBD>f -1
|
|
||||||
<EFBFBD>g -1
|
|
||||||
<EFBFBD>i -1
|
|
||||||
<EFBFBD>j -1
|
|
||||||
<EFBFBD>p -1
|
|
||||||
<EFBFBD>q -1
|
|
||||||
<EFBFBD>s -1
|
|
||||||
<EFBFBD>t -1
|
|
||||||
<EFBFBD>v -1
|
|
||||||
<EFBFBD>x -1
|
|
||||||
<EFBFBD>y -1
|
|
||||||
<EFBFBD>z -1
|
|
||||||
<EFBFBD><EFBFBD> -2
|
|
@ -1,105 +0,0 @@
|
|||||||
--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
|
|
||||||
<EFBFBD> 7
|
|
||||||
|
|
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 384 B |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 628 B |
Before Width: | Height: | Size: 210 B |
Before Width: | Height: | Size: 203 B |
Before Width: | Height: | Size: 200 B |
Before Width: | Height: | Size: 200 B |
Before Width: | Height: | Size: 205 B |
Before Width: | Height: | Size: 8.1 KiB |
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 8.1 KiB |
Before Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 2.3 KiB |
5
source/en.strings
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
-- These are example strings.
|
||||||
|
"menuResumeGame" = "Resume"
|
||||||
|
"menuNewGame" = "New Game"
|
||||||
|
"menuOptions" = "Options"
|
||||||
|
"menuCredits" = "Credits"
|
5
source/jp.strings
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
-- These are example strings.
|
||||||
|
"menuResumeGame" = "サイカイ "
|
||||||
|
"menuNewGame" = "アタラシイゲーム"
|
||||||
|
"menuOptions" = "セッテイ"
|
||||||
|
"menuCredits" = "クレジット"
|
@ -14,7 +14,6 @@ import "libraries/playout"
|
|||||||
|
|
||||||
import 'utilities/enum'
|
import 'utilities/enum'
|
||||||
import 'utilities/ui'
|
import 'utilities/ui'
|
||||||
import 'utilities/utils'
|
|
||||||
|
|
||||||
ZIndex = {
|
ZIndex = {
|
||||||
player = 4,
|
player = 4,
|
||||||
@ -34,90 +33,28 @@ CollideGroups = {
|
|||||||
wall = 5
|
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/player"
|
||||||
import "scripts/bigBoomSprite"
|
import "scripts/bigBoomSprite"
|
||||||
import "scripts/groundSprite"
|
import "scripts/groundSprite"
|
||||||
import "scripts/balebaSprite"
|
import "scripts/balebaSprite"
|
||||||
import "scripts/dangerSprite"
|
import "scripts/dangerSprite"
|
||||||
import "scripts/tankSprite"
|
import "scripts/tankSprite"
|
||||||
import "scripts/progressBar"
|
|
||||||
import "scripts/selectionSprite"
|
|
||||||
|
|
||||||
import "scenes/BaseScene"
|
import "scenes/BaseScene"
|
||||||
import 'scenes/Assemble'
|
|
||||||
import 'scenes/DroneSelection'
|
|
||||||
import 'scenes/Menu'
|
import 'scenes/Menu'
|
||||||
import 'scenes/Game'
|
import 'scenes/Game'
|
||||||
|
|
||||||
Difficulty = {
|
|
||||||
Easy = "Easy",
|
|
||||||
Medium = "Medium",
|
|
||||||
Hard = "Hard"
|
|
||||||
}
|
|
||||||
|
|
||||||
DifficultySettings = {
|
|
||||||
[Difficulty.Easy] = {
|
|
||||||
assebleTime = 2500,
|
|
||||||
},
|
|
||||||
[Difficulty.Medium] = {
|
|
||||||
assebleTime = 1500,
|
|
||||||
},
|
|
||||||
[Difficulty.Hard] = {
|
|
||||||
assebleTime = 800,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Noble.Settings.setup({
|
Noble.Settings.setup({
|
||||||
difficulty = Difficulty.Medium,
|
difficulty = "Medium",
|
||||||
music = true
|
music = true
|
||||||
})
|
})
|
||||||
|
|
||||||
Noble.GameData.setup({
|
-- Noble.GameData.setup({
|
||||||
drone1 = 0,
|
-- score = 0
|
||||||
drone2 = 0,
|
-- })
|
||||||
drone3 = 0,
|
|
||||||
drone4 = 0,
|
|
||||||
money = 150
|
|
||||||
})
|
|
||||||
|
|
||||||
playdate.display.setRefreshRate(50)
|
playdate.display.setRefreshRate(50)
|
||||||
|
|
||||||
Noble.showFPS = true
|
Noble.showFPS = true
|
||||||
|
|
||||||
Noble.new(Menu)
|
Noble.new(Game)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
name=FPV Game
|
name=A Noble Engine Game
|
||||||
author=ut3usw
|
author=A Lovely Developer
|
||||||
description=This is a FPV Game
|
description=This is a Noble Engine game.
|
||||||
bundleID=guru.dead.fpv
|
bundleID=com.yourdomain.GameName
|
||||||
version=0.0.1
|
version=0.0.1
|
||||||
buildNumber=1
|
buildNumber=1
|
||||||
imagePath=assets/launcher/
|
imagePath=assets/launcher/
|
||||||
|
@ -1,220 +0,0 @@
|
|||||||
Assemble = {}
|
|
||||||
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" }
|
|
||||||
|
|
||||||
function scene:popCode(button)
|
|
||||||
scene.menuConfirmSound:stop()
|
|
||||||
if scene.tickTimer.paused then
|
|
||||||
scene.droneParts = scene:loadDrone(1, #scene.code)
|
|
||||||
scene.tickTimer:start()
|
|
||||||
scene.progressBar:setVisible(true)
|
|
||||||
end
|
|
||||||
if button == scene.code[1] then
|
|
||||||
table.remove(scene.code, 1)
|
|
||||||
scene.tickTimer:reset()
|
|
||||||
scene.dronePartIndex = scene.dronePartIndex + 1
|
|
||||||
|
|
||||||
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()
|
|
||||||
screenShake(100, 5)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
scene.inputHandler = {
|
|
||||||
AButtonDown = function() scene:popCode("A") end,
|
|
||||||
BButtonDown = function() scene:popCode("B") end,
|
|
||||||
downButtonDown = function() scene:popCode("DOWN") end,
|
|
||||||
leftButtonDown = function() scene:popCode("LEFT") end,
|
|
||||||
rightButtonDown = function() scene:popCode("RIGHT") end,
|
|
||||||
upButtonDown = function() scene:popCode("UP") end,
|
|
||||||
}
|
|
||||||
|
|
||||||
function scene:randomButton()
|
|
||||||
local button = allButtons[math.random(1, #allButtons)]
|
|
||||||
|
|
||||||
return button
|
|
||||||
end
|
|
||||||
|
|
||||||
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 = {}
|
|
||||||
for i = 1, #allButtons do
|
|
||||||
local image = Graphics.image.new('assets/sprites/buttons/' .. allButtons[i] .. '.png')
|
|
||||||
buttons[allButtons[i]] = image
|
|
||||||
end
|
|
||||||
return buttons
|
|
||||||
end
|
|
||||||
|
|
||||||
function scene:loadDrone(id, parts)
|
|
||||||
local drone = {}
|
|
||||||
for i = 1, parts do
|
|
||||||
local image = Graphics.image.new('assets/sprites/assemble/' .. id .. '/' .. i .. '.png')
|
|
||||||
if image ~= nil then
|
|
||||||
table.insert(drone, image)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return drone
|
|
||||||
end
|
|
||||||
|
|
||||||
function scene:setValues()
|
|
||||||
scene.code = {}
|
|
||||||
for i = 1, 9 do
|
|
||||||
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.progressBar = ProgressBar(200, 175, 50, 5)
|
|
||||||
scene.progressBar:set(self.buttonTimeout)
|
|
||||||
scene.progressBar:setVisible(false)
|
|
||||||
|
|
||||||
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)
|
|
||||||
end
|
|
||||||
scene.tickTimer.timerEndedCallback = function()
|
|
||||||
scene.buttonTimeout = 0
|
|
||||||
end
|
|
||||||
scene.tickTimer:pause()
|
|
||||||
end
|
|
||||||
|
|
||||||
function scene:start()
|
|
||||||
scene.super.start(self)
|
|
||||||
|
|
||||||
self.optionsMenu:addMenuItem("Main Menu", function() Noble.transition(Menu) end)
|
|
||||||
Noble.showFPS = true
|
|
||||||
end
|
|
||||||
|
|
||||||
function scene:enter()
|
|
||||||
scene.super.enter(self)
|
|
||||||
end
|
|
||||||
|
|
||||||
function round(number)
|
|
||||||
local formatted = string.format("%.2f", 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
|
|
||||||
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()
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
if scene.buttonTimeout <= 0 then
|
|
||||||
Noble.Text.draw("LOSE!", 200, 110, Noble.Text.ALIGN_CENTER, false, font)
|
|
||||||
self.progressBar:remove()
|
|
||||||
self.tickTimer:remove()
|
|
||||||
screenShake(100, 5)
|
|
||||||
Noble.Input.setEnabled(false)
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
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(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]]
|
|
||||||
|
|
||||||
local first = 1
|
|
||||||
if #scene.code == 1 then
|
|
||||||
first = 0
|
|
||||||
end
|
|
||||||
local t = (i - 1) / (#scene.code - first)
|
|
||||||
local opaque = playdate.math.lerp(1, 0.3, t) --TODO: not the best solution
|
|
||||||
|
|
||||||
local y = 185 + ((i - 1) * 16) - 8 + scene.dY
|
|
||||||
|
|
||||||
button:drawFaded(192, y, opaque, playdate.graphics.image.kDitherTypeBayer2x2)
|
|
||||||
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
|
|
@ -1,117 +0,0 @@
|
|||||||
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
|
|
@ -19,8 +19,8 @@ end
|
|||||||
|
|
||||||
function scene:drawBackground()
|
function scene:drawBackground()
|
||||||
local speed = 0.1
|
local speed = 0.1
|
||||||
if scene.ground ~= nil then
|
if Ground.player ~= nil and Ground.player.isMovingRight() == true then
|
||||||
speed = scene.ground.moveSpeed * 0.4
|
speed = 0.2
|
||||||
end
|
end
|
||||||
|
|
||||||
if scene.distance > 0 then
|
if scene.distance > 0 then
|
||||||
@ -34,7 +34,7 @@ function scene:drawBackground()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function scene:setValues()
|
function scene:setValues()
|
||||||
self.bg = Graphics.image.new("assets/sprites/bg1")
|
self.bg = Graphics.image.new("assets/sprites/bgTest")
|
||||||
scene.bgX = 0
|
scene.bgX = 0
|
||||||
scene.telemLostSound = playdate.sound.fileplayer.new("assets/audio/telemko")
|
scene.telemLostSound = playdate.sound.fileplayer.new("assets/audio/telemko")
|
||||||
scene.telemLostSoundPlayed = false
|
scene.telemLostSoundPlayed = false
|
||||||
@ -54,7 +54,7 @@ function scene:setValues()
|
|||||||
|
|
||||||
scene.tank = nil
|
scene.tank = nil
|
||||||
|
|
||||||
scene.distance = 200
|
scene.distance = 900
|
||||||
end
|
end
|
||||||
|
|
||||||
function scene:init()
|
function scene:init()
|
||||||
@ -78,7 +78,7 @@ function scene:spawnBaleba()
|
|||||||
return
|
return
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
function scene:enter()
|
function scene:enter()
|
||||||
@ -96,9 +96,9 @@ function scene:enter()
|
|||||||
scene:spawnBaleba()
|
scene:spawnBaleba()
|
||||||
end
|
end
|
||||||
|
|
||||||
scene.helloAudio:play(1)
|
--scene.helloAudio:play(1)
|
||||||
if scene.musicEnabled then
|
if scene.musicEnabled then
|
||||||
scene.levelAudio:play(0)
|
--scene.levelAudio:play(0)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -115,15 +115,11 @@ function scene:update()
|
|||||||
end
|
end
|
||||||
|
|
||||||
if scene.distance > 0 then
|
if scene.distance > 0 then
|
||||||
scene.distance = scene.distance - scene.ground.moveSpeed
|
scene.distance = scene.distance - 1
|
||||||
end
|
end
|
||||||
|
|
||||||
if scene.distance < 0 then -- SHIT
|
if scene.distance < 850 and scene.tank == nil then
|
||||||
scene.distance = 0
|
scene.tank = Tank(500, 190, scene.player, scene.ground)
|
||||||
end
|
|
||||||
|
|
||||||
if scene.distance < 150 and scene.tank == nil then
|
|
||||||
scene.tank = Tank(480, 190, scene.ground)
|
|
||||||
scene:addSprite(scene.tank) -- Raw sprite
|
scene:addSprite(scene.tank) -- Raw sprite
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -135,7 +131,7 @@ function scene:update()
|
|||||||
local t = scene.player.getBat() / 10000
|
local t = scene.player.getBat() / 10000
|
||||||
local lerpBat = playdate.math.lerp(12.0, 16.8, t)
|
local lerpBat = playdate.math.lerp(12.0, 16.8, t)
|
||||||
Noble.Text.draw(round(lerpBat) .. "v", 10, 210, Noble.Text.ALIGN_LEFT, false, font)
|
Noble.Text.draw(round(lerpBat) .. "v", 10, 210, Noble.Text.ALIGN_LEFT, false, font)
|
||||||
Noble.Text.draw(math.round(scene.distance) .. "m", 200, 20, Noble.Text.ALIGN_CENTER, false, font)
|
Noble.Text.draw(scene.distance .. "m", 200, 40, Noble.Text.ALIGN_CENTER, false, font)
|
||||||
end
|
end
|
||||||
|
|
||||||
if scene.player.isDead() and not scene.telemLostSoundPlayed then
|
if scene.player.isDead() and not scene.telemLostSoundPlayed then
|
||||||
@ -164,9 +160,7 @@ end
|
|||||||
function scene:exit()
|
function scene:exit()
|
||||||
scene.super.exit(self)
|
scene.super.exit(self)
|
||||||
|
|
||||||
if scene.tank ~= nil then
|
scene.tank:remove()
|
||||||
scene.tank:remove()
|
|
||||||
end
|
|
||||||
scene.telemLostSound:stop()
|
scene.telemLostSound:stop()
|
||||||
scene.levelAudio:stop()
|
scene.levelAudio:stop()
|
||||||
scene.balebaSpawner:remove()
|
scene.balebaSpawner:remove()
|
||||||
|
@ -2,8 +2,10 @@ Menu = {}
|
|||||||
class("Menu").extends(BaseScene)
|
class("Menu").extends(BaseScene)
|
||||||
local scene = Menu
|
local scene = Menu
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function scene:setValues()
|
function scene:setValues()
|
||||||
self.background = Graphics.image.new("assets/images/menuBg")
|
self.background = Graphics.image.new("assets/images/background2")
|
||||||
|
|
||||||
self.color1 = Graphics.kColorBlack
|
self.color1 = Graphics.kColorBlack
|
||||||
self.color2 = Graphics.kColorWhite
|
self.color2 = Graphics.kColorWhite
|
||||||
@ -24,12 +26,9 @@ function scene:init()
|
|||||||
local menuSelSound = playdate.sound.fileplayer.new("assets/audio/menu_select")
|
local menuSelSound = playdate.sound.fileplayer.new("assets/audio/menu_select")
|
||||||
menuSelSound:setVolume(0.5)
|
menuSelSound:setVolume(0.5)
|
||||||
|
|
||||||
local menuConfirmSound = playdate.sound.fileplayer.new("assets/audio/confirm")
|
|
||||||
-- menuConfirmSound:setVolume(0.5)
|
|
||||||
|
|
||||||
self:setValues()
|
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)
|
self:setupMenu(self.menu)
|
||||||
|
|
||||||
@ -57,10 +56,10 @@ function scene:init()
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
AButtonDown = function()
|
AButtonDown = function()
|
||||||
menuConfirmSound:play(1)
|
|
||||||
self.menu:click()
|
self.menu:click()
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function scene:enter()
|
function scene:enter()
|
||||||
@ -87,12 +86,13 @@ function scene:update()
|
|||||||
|
|
||||||
Graphics.setColor(self.color1)
|
Graphics.setColor(self.color1)
|
||||||
Graphics.setDitherPattern(0.2, Graphics.image.kDitherTypeScreen)
|
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)
|
self.menu:draw(200, 160)
|
||||||
|
|
||||||
-- logo_image:draw(120, 55)
|
logo_image:draw(120, 55)
|
||||||
|
|
||||||
Graphics.setColor(Graphics.kColorBlack)
|
Graphics.setColor(Graphics.kColorBlack)
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function scene:exit()
|
function scene:exit()
|
||||||
@ -102,8 +102,8 @@ function scene:exit()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function scene:setupMenu(__menu)
|
function scene:setupMenu(__menu)
|
||||||
__menu:addItem("Start", function() Noble.transition(DroneSelection, nil, Noble.Transition.DipToWhite) end)
|
__menu:addItem("Start", function() Noble.transition(Game, nil, Noble.Transition.DipToWhite) end)
|
||||||
__menu:addItem("Tutorial", function() return end)
|
__menu:addItem("Tutorial", function() return end)
|
||||||
__menu:addItem("Credits", function() return end)
|
__menu:addItem("Credits", function() return end)
|
||||||
__menu:select("Start")
|
__menu:select("Start")
|
||||||
end
|
end
|
@ -12,7 +12,7 @@ function Player:init(x, y)
|
|||||||
self.animation:addState("down", 1, 7)
|
self.animation:addState("down", 1, 7)
|
||||||
self.animation.down.frameDuration = 6
|
self.animation.down.frameDuration = 6
|
||||||
self.animation:addState("boom", 15, 21)
|
self.animation:addState("boom", 15, 21)
|
||||||
self.animation.boom.frameDuration = 6
|
self.animation.boom.frameDuration = 10
|
||||||
self.animation.boom.loop = false
|
self.animation.boom.loop = false
|
||||||
|
|
||||||
self.animation:setState("down")
|
self.animation:setState("down")
|
||||||
@ -173,7 +173,7 @@ function Player:handleMovementAndCollisions()
|
|||||||
self:boom()
|
self:boom()
|
||||||
return
|
return
|
||||||
elseif collisionTag == 154 then -- Baleba
|
elseif collisionTag == 154 then -- Baleba
|
||||||
self:boom(collisionObject)
|
--self:boom(collisionObject)
|
||||||
return
|
return
|
||||||
elseif collisionTag == 2 then -- Tank
|
elseif collisionTag == 2 then -- Tank
|
||||||
self:boom()
|
self:boom()
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
local pd <const> = playdate
|
|
||||||
local gfx <const> = Graphics
|
|
||||||
|
|
||||||
class('ProgressBar').extends(gfx.sprite)
|
|
||||||
|
|
||||||
function ProgressBar:init(x, y, width, height)
|
|
||||||
self:setImage(gfx.image.new(width, height))
|
|
||||||
self.progress = 0
|
|
||||||
self:moveTo(x, y)
|
|
||||||
self:add()
|
|
||||||
self:set(0)
|
|
||||||
end
|
|
||||||
|
|
||||||
function ProgressBar:set(percentage)
|
|
||||||
self.progress = percentage
|
|
||||||
local bar_image = gfx.image.new(self.width, self.height, gfx.kColorWhite)
|
|
||||||
local progressWidth = self.progress / 100 * (self.width - 4)
|
|
||||||
-- local _, fontHeight = playdate.graphics.getTextSize("TEST")
|
|
||||||
gfx.pushContext(bar_image)
|
|
||||||
gfx.setLineWidth(2)
|
|
||||||
gfx.drawRoundRect(1, 1, self.width - 2, self.height - 2, 3)
|
|
||||||
gfx.fillRect(2, 2, progressWidth, self.height - 4)
|
|
||||||
gfx.setImageDrawMode(gfx.kDrawModeNXOR)
|
|
||||||
--[[ gfx.drawTextAligned(math.floor(self.progress) .. "%", self.width / 2, (self.height - fontHeight) / 2 + 2,
|
|
||||||
kTextAlignment.center) ]]
|
|
||||||
gfx.popContext()
|
|
||||||
self:setImage(bar_image)
|
|
||||||
end
|
|
@ -1,18 +0,0 @@
|
|||||||
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
|
|
@ -2,7 +2,7 @@ Tank = {}
|
|||||||
|
|
||||||
class("Tank").extends(Graphics.sprite)
|
class("Tank").extends(Graphics.sprite)
|
||||||
|
|
||||||
function Tank:init(x, y, ground)
|
function Tank:init(x, y, player, ground)
|
||||||
self.tankImage = Graphics.image.new("assets/sprites/tank")
|
self.tankImage = Graphics.image.new("assets/sprites/tank")
|
||||||
self.tankImageD = Graphics.image.new("assets/sprites/tankD")
|
self.tankImageD = Graphics.image.new("assets/sprites/tankD")
|
||||||
Tank.super.init(self)
|
Tank.super.init(self)
|
||||||
@ -26,6 +26,8 @@ function Tank:init(x, y, ground)
|
|||||||
})
|
})
|
||||||
|
|
||||||
-- Main properties
|
-- Main properties
|
||||||
|
Tank.moveSpeed = 2
|
||||||
|
Tank.player = player
|
||||||
Tank.ground = ground
|
Tank.ground = ground
|
||||||
|
|
||||||
self:fadein()
|
self:fadein()
|
||||||
@ -47,5 +49,12 @@ function Tank:update()
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
self:moveTo(self.x - Tank.ground.moveSpeed, self.y)
|
-- Speedup when player is moving right
|
||||||
|
if Tank.player.isMovingRight() == false then
|
||||||
|
Tank.moveSpeed = 0.2
|
||||||
|
else
|
||||||
|
Tank.moveSpeed = 1
|
||||||
|
end
|
||||||
|
|
||||||
|
self:moveTo(self.x - Tank.moveSpeed, self.y)
|
||||||
end
|
end
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
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
|
|