Compare commits
No commits in common. "main" and "9a9bdf0232b45db4f0b6fcde8604c8a8a622f608" have entirely different histories.
main
...
9a9bdf0232
|
|
@ -1,95 +0,0 @@
|
|||
info face="sans-serif" size=18 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=1,1
|
||||
common lineHeight=18 base=14 scaleW=173 scaleH=172 pages=1 packed=0
|
||||
page id=0 file="Unnamed.png"
|
||||
chars count=91
|
||||
char id=32 x=0 y=0 width=0 height=0 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=15
|
||||
char id=33 x=71 y=106 width=9 height=19 xoffset=-2 yoffset=-2 xadvance=7 page=0 chnl=15
|
||||
char id=34 x=154 y=146 width=12 height=11 xoffset=-2 yoffset=-2 xadvance=10 page=0 chnl=15
|
||||
char id=35 x=0 y=126 width=18 height=19 xoffset=-3 yoffset=-2 xadvance=14 page=0 chnl=15
|
||||
char id=36 x=151 y=0 width=15 height=21 xoffset=-2 yoffset=-3 xadvance=13 page=0 chnl=15
|
||||
char id=37 x=116 y=106 width=19 height=19 xoffset=-2 yoffset=-2 xadvance=17 page=0 chnl=15
|
||||
char id=38 x=19 y=126 width=19 height=19 xoffset=-2 yoffset=-2 xadvance=16 page=0 chnl=15
|
||||
char id=39 x=165 y=106 width=8 height=11 xoffset=-2 yoffset=-2 xadvance=7 page=0 chnl=15
|
||||
char id=40 x=105 y=0 width=11 height=22 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15
|
||||
char id=41 x=117 y=0 width=11 height=22 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15
|
||||
char id=42 x=89 y=146 width=15 height=15 xoffset=-3 yoffset=-3 xadvance=12 page=0 chnl=15
|
||||
char id=43 x=105 y=146 width=15 height=15 xoffset=-2 yoffset=0 xadvance=13 page=0 chnl=15
|
||||
char id=44 x=162 y=34 width=10 height=11 xoffset=-3 yoffset=8 xadvance=7 page=0 chnl=15
|
||||
char id=45 x=162 y=25 width=11 height=8 xoffset=-3 yoffset=5 xadvance=8 page=0 chnl=15
|
||||
char id=46 x=0 y=163 width=9 height=9 xoffset=-2 yoffset=8 xadvance=7 page=0 chnl=15
|
||||
char id=47 x=151 y=106 width=13 height=19 xoffset=-3 yoffset=-2 xadvance=9 page=0 chnl=15
|
||||
char id=48 x=0 y=46 width=15 height=19 xoffset=-2 yoffset=-2 xadvance=13 page=0 chnl=15
|
||||
char id=49 x=16 y=46 width=12 height=19 xoffset=-2 yoffset=-2 xadvance=13 page=0 chnl=15
|
||||
char id=50 x=29 y=46 width=16 height=19 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15
|
||||
char id=51 x=46 y=46 width=16 height=19 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15
|
||||
char id=52 x=63 y=46 width=16 height=19 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15
|
||||
char id=53 x=80 y=46 width=15 height=19 xoffset=-2 yoffset=-2 xadvance=13 page=0 chnl=15
|
||||
char id=54 x=96 y=46 width=15 height=19 xoffset=-2 yoffset=-2 xadvance=13 page=0 chnl=15
|
||||
char id=55 x=112 y=46 width=16 height=19 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15
|
||||
char id=56 x=129 y=46 width=15 height=19 xoffset=-2 yoffset=-2 xadvance=13 page=0 chnl=15
|
||||
char id=57 x=145 y=46 width=15 height=19 xoffset=-2 yoffset=-2 xadvance=13 page=0 chnl=15
|
||||
char id=58 x=79 y=146 width=9 height=16 xoffset=-2 yoffset=1 xadvance=7 page=0 chnl=15
|
||||
char id=59 x=105 y=106 width=10 height=19 xoffset=-3 yoffset=1 xadvance=7 page=0 chnl=15
|
||||
char id=61 x=138 y=146 width=15 height=12 xoffset=-2 yoffset=2 xadvance=13 page=0 chnl=15
|
||||
char id=63 x=136 y=106 width=14 height=19 xoffset=-3 yoffset=-2 xadvance=10 page=0 chnl=15
|
||||
char id=64 x=129 y=0 width=21 height=21 xoffset=-2 yoffset=-2 xadvance=19 page=0 chnl=15
|
||||
char id=65 x=0 y=66 width=18 height=19 xoffset=-3 yoffset=-2 xadvance=14 page=0 chnl=15
|
||||
char id=66 x=19 y=66 width=16 height=19 xoffset=-2 yoffset=-2 xadvance=14 page=0 chnl=15
|
||||
char id=67 x=36 y=66 width=16 height=19 xoffset=-2 yoffset=-2 xadvance=14 page=0 chnl=15
|
||||
char id=68 x=53 y=66 width=17 height=19 xoffset=-2 yoffset=-2 xadvance=16 page=0 chnl=15
|
||||
char id=69 x=71 y=66 width=14 height=19 xoffset=-2 yoffset=-2 xadvance=12 page=0 chnl=15
|
||||
char id=70 x=86 y=66 width=14 height=19 xoffset=-2 yoffset=-2 xadvance=12 page=0 chnl=15
|
||||
char id=71 x=101 y=66 width=17 height=19 xoffset=-2 yoffset=-2 xadvance=16 page=0 chnl=15
|
||||
char id=72 x=119 y=66 width=17 height=19 xoffset=-2 yoffset=-2 xadvance=16 page=0 chnl=15
|
||||
char id=73 x=137 y=66 width=12 height=19 xoffset=-3 yoffset=-2 xadvance=9 page=0 chnl=15
|
||||
char id=74 x=21 y=0 width=12 height=23 xoffset=-5 yoffset=-2 xadvance=7 page=0 chnl=15
|
||||
char id=75 x=0 y=86 width=17 height=19 xoffset=-2 yoffset=-2 xadvance=14 page=0 chnl=15
|
||||
char id=76 x=18 y=86 width=14 height=19 xoffset=-2 yoffset=-2 xadvance=12 page=0 chnl=15
|
||||
char id=77 x=33 y=86 width=20 height=19 xoffset=-2 yoffset=-2 xadvance=19 page=0 chnl=15
|
||||
char id=78 x=54 y=86 width=17 height=19 xoffset=-2 yoffset=-2 xadvance=16 page=0 chnl=15
|
||||
char id=79 x=72 y=86 width=18 height=19 xoffset=-2 yoffset=-2 xadvance=17 page=0 chnl=15
|
||||
char id=80 x=91 y=86 width=15 height=19 xoffset=-2 yoffset=-2 xadvance=13 page=0 chnl=15
|
||||
char id=81 x=86 y=0 width=18 height=22 xoffset=-2 yoffset=-2 xadvance=17 page=0 chnl=15
|
||||
char id=82 x=107 y=86 width=16 height=19 xoffset=-2 yoffset=-2 xadvance=14 page=0 chnl=15
|
||||
char id=83 x=124 y=86 width=14 height=19 xoffset=-2 yoffset=-2 xadvance=12 page=0 chnl=15
|
||||
char id=84 x=139 y=86 width=16 height=19 xoffset=-3 yoffset=-2 xadvance=12 page=0 chnl=15
|
||||
char id=85 x=156 y=86 width=17 height=19 xoffset=-2 yoffset=-2 xadvance=16 page=0 chnl=15
|
||||
char id=86 x=0 y=106 width=17 height=19 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15
|
||||
char id=87 x=150 y=66 width=23 height=19 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15
|
||||
char id=88 x=18 y=106 width=17 height=19 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15
|
||||
char id=89 x=36 y=106 width=17 height=19 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15
|
||||
char id=90 x=54 y=106 width=16 height=19 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15
|
||||
char id=91 x=62 y=0 width=11 height=23 xoffset=-2 yoffset=-2 xadvance=8 page=0 chnl=15
|
||||
char id=93 x=74 y=0 width=11 height=23 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15
|
||||
char id=94 x=121 y=146 width=16 height=15 xoffset=-3 yoffset=-3 xadvance=13 page=0 chnl=15
|
||||
char id=95 x=10 y=163 width=14 height=8 xoffset=-3 yoffset=13 xadvance=10 page=0 chnl=15
|
||||
char id=97 x=39 y=126 width=15 height=16 xoffset=-3 yoffset=1 xadvance=13 page=0 chnl=15
|
||||
char id=98 x=0 y=25 width=15 height=20 xoffset=-2 yoffset=-3 xadvance=14 page=0 chnl=15
|
||||
char id=99 x=55 y=126 width=13 height=16 xoffset=-2 yoffset=1 xadvance=11 page=0 chnl=15
|
||||
char id=100 x=16 y=25 width=15 height=20 xoffset=-2 yoffset=-3 xadvance=14 page=0 chnl=15
|
||||
char id=101 x=69 y=126 width=15 height=16 xoffset=-2 yoffset=1 xadvance=13 page=0 chnl=15
|
||||
char id=102 x=32 y=25 width=13 height=20 xoffset=-3 yoffset=-3 xadvance=9 page=0 chnl=15
|
||||
char id=103 x=46 y=25 width=15 height=20 xoffset=-2 yoffset=1 xadvance=14 page=0 chnl=15
|
||||
char id=104 x=62 y=25 width=15 height=20 xoffset=-2 yoffset=-3 xadvance=14 page=0 chnl=15
|
||||
char id=105 x=78 y=25 width=9 height=20 xoffset=-2 yoffset=-3 xadvance=7 page=0 chnl=15
|
||||
char id=106 x=0 y=0 width=11 height=24 xoffset=-4 yoffset=-3 xadvance=7 page=0 chnl=15
|
||||
char id=107 x=88 y=25 width=15 height=20 xoffset=-2 yoffset=-3 xadvance=12 page=0 chnl=15
|
||||
char id=108 x=104 y=25 width=8 height=20 xoffset=-2 yoffset=-3 xadvance=7 page=0 chnl=15
|
||||
char id=109 x=85 y=126 width=21 height=16 xoffset=-2 yoffset=1 xadvance=19 page=0 chnl=15
|
||||
char id=110 x=107 y=126 width=15 height=16 xoffset=-2 yoffset=1 xadvance=14 page=0 chnl=15
|
||||
char id=111 x=123 y=126 width=15 height=16 xoffset=-2 yoffset=1 xadvance=13 page=0 chnl=15
|
||||
char id=112 x=113 y=25 width=15 height=20 xoffset=-2 yoffset=1 xadvance=14 page=0 chnl=15
|
||||
char id=113 x=129 y=25 width=15 height=20 xoffset=-2 yoffset=1 xadvance=14 page=0 chnl=15
|
||||
char id=114 x=139 y=126 width=13 height=16 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=15
|
||||
char id=115 x=0 y=146 width=13 height=16 xoffset=-2 yoffset=1 xadvance=11 page=0 chnl=15
|
||||
char id=116 x=161 y=46 width=12 height=19 xoffset=-3 yoffset=-2 xadvance=9 page=0 chnl=15
|
||||
char id=117 x=14 y=146 width=15 height=16 xoffset=-2 yoffset=1 xadvance=14 page=0 chnl=15
|
||||
char id=118 x=30 y=146 width=16 height=16 xoffset=-3 yoffset=1 xadvance=12 page=0 chnl=15
|
||||
char id=119 x=153 y=126 width=20 height=16 xoffset=-3 yoffset=1 xadvance=17 page=0 chnl=15
|
||||
char id=120 x=47 y=146 width=16 height=16 xoffset=-3 yoffset=1 xadvance=12 page=0 chnl=15
|
||||
char id=121 x=145 y=25 width=16 height=20 xoffset=-3 yoffset=1 xadvance=12 page=0 chnl=15
|
||||
char id=122 x=64 y=146 width=14 height=16 xoffset=-3 yoffset=1 xadvance=11 page=0 chnl=15
|
||||
char id=123 x=34 y=0 width=13 height=23 xoffset=-3 yoffset=-2 xadvance=9 page=0 chnl=15
|
||||
char id=124 x=12 y=0 width=8 height=24 xoffset=1 yoffset=-3 xadvance=12 page=0 chnl=15
|
||||
char id=125 x=48 y=0 width=13 height=23 xoffset=-3 yoffset=-2 xadvance=9 page=0 chnl=15
|
||||
char id=8470 x=81 y=106 width=23 height=19 xoffset=-2 yoffset=-2 xadvance=21 page=0 chnl=15
|
||||
BIN
fonts/font18.png
BIN
fonts/font18.png
Binary file not shown.
|
Before Width: | Height: | Size: 23 KiB |
|
|
@ -1,95 +0,0 @@
|
|||
info face="sans-serif" size=36 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=1,1
|
||||
common lineHeight=36 base=28 scaleW=289 scaleH=280 pages=1 packed=0
|
||||
page id=0 file="Unnamed.png"
|
||||
chars count=91
|
||||
char id=32 x=0 y=0 width=0 height=0 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15
|
||||
char id=33 x=274 y=153 width=13 height=34 xoffset=-2 yoffset=-2 xadvance=13 page=0 chnl=15
|
||||
char id=34 x=187 y=252 width=19 height=18 xoffset=-2 yoffset=-2 xadvance=18 page=0 chnl=15
|
||||
char id=35 x=171 y=188 width=30 height=34 xoffset=-3 yoffset=-2 xadvance=27 page=0 chnl=15
|
||||
char id=36 x=233 y=0 width=25 height=38 xoffset=-2 yoffset=-3 xadvance=24 page=0 chnl=15
|
||||
char id=37 x=88 y=188 width=36 height=34 xoffset=-3 yoffset=-2 xadvance=33 page=0 chnl=15
|
||||
char id=38 x=202 y=188 width=33 height=34 xoffset=-2 yoffset=-2 xadvance=30 page=0 chnl=15
|
||||
char id=39 x=207 y=252 width=12 height=18 xoffset=-2 yoffset=-2 xadvance=12 page=0 chnl=15
|
||||
char id=40 x=83 y=0 width=17 height=40 xoffset=-3 yoffset=-2 xadvance=14 page=0 chnl=15
|
||||
char id=41 x=101 y=0 width=17 height=40 xoffset=-3 yoffset=-2 xadvance=14 page=0 chnl=15
|
||||
char id=42 x=106 y=252 width=26 height=25 xoffset=-3 yoffset=-3 xadvance=23 page=0 chnl=15
|
||||
char id=43 x=79 y=252 width=26 height=26 xoffset=-3 yoffset=2 xadvance=24 page=0 chnl=15
|
||||
char id=44 x=273 y=188 width=14 height=17 xoffset=-3 yoffset=20 xadvance=13 page=0 chnl=15
|
||||
char id=45 x=245 y=252 width=18 height=11 xoffset=-3 yoffset=13 xadvance=15 page=0 chnl=15
|
||||
char id=46 x=273 y=206 width=13 height=13 xoffset=-2 yoffset=19 xadvance=13 page=0 chnl=15
|
||||
char id=47 x=149 y=188 width=21 height=34 xoffset=-4 yoffset=-2 xadvance=17 page=0 chnl=15
|
||||
char id=48 x=0 y=83 width=26 height=34 xoffset=-3 yoffset=-2 xadvance=24 page=0 chnl=15
|
||||
char id=49 x=27 y=83 width=18 height=34 xoffset=-1 yoffset=-2 xadvance=24 page=0 chnl=15
|
||||
char id=50 x=46 y=83 width=26 height=34 xoffset=-3 yoffset=-2 xadvance=24 page=0 chnl=15
|
||||
char id=51 x=73 y=83 width=26 height=34 xoffset=-3 yoffset=-2 xadvance=24 page=0 chnl=15
|
||||
char id=52 x=261 y=45 width=28 height=34 xoffset=-4 yoffset=-2 xadvance=24 page=0 chnl=15
|
||||
char id=53 x=100 y=83 width=25 height=34 xoffset=-2 yoffset=-2 xadvance=24 page=0 chnl=15
|
||||
char id=54 x=126 y=83 width=25 height=34 xoffset=-2 yoffset=-2 xadvance=24 page=0 chnl=15
|
||||
char id=55 x=152 y=83 width=26 height=34 xoffset=-3 yoffset=-2 xadvance=24 page=0 chnl=15
|
||||
char id=56 x=179 y=83 width=26 height=34 xoffset=-3 yoffset=-2 xadvance=24 page=0 chnl=15
|
||||
char id=57 x=206 y=83 width=26 height=34 xoffset=-3 yoffset=-2 xadvance=24 page=0 chnl=15
|
||||
char id=58 x=65 y=252 width=13 height=28 xoffset=-2 yoffset=4 xadvance=13 page=0 chnl=15
|
||||
char id=59 x=258 y=188 width=14 height=33 xoffset=-3 yoffset=4 xadvance=13 page=0 chnl=15
|
||||
char id=61 x=161 y=252 width=25 height=18 xoffset=-2 yoffset=6 xadvance=24 page=0 chnl=15
|
||||
char id=63 x=125 y=188 width=23 height=34 xoffset=-4 yoffset=-2 xadvance=19 page=0 chnl=15
|
||||
char id=64 x=195 y=0 width=37 height=38 xoffset=-2 yoffset=-2 xadvance=36 page=0 chnl=15
|
||||
char id=65 x=233 y=83 width=31 height=34 xoffset=-4 yoffset=-2 xadvance=26 page=0 chnl=15
|
||||
char id=66 x=0 y=118 width=27 height=34 xoffset=-1 yoffset=-2 xadvance=27 page=0 chnl=15
|
||||
char id=67 x=28 y=118 width=28 height=34 xoffset=-2 yoffset=-2 xadvance=26 page=0 chnl=15
|
||||
char id=68 x=57 y=118 width=29 height=34 xoffset=-1 yoffset=-2 xadvance=30 page=0 chnl=15
|
||||
char id=69 x=265 y=83 width=23 height=34 xoffset=-1 yoffset=-2 xadvance=24 page=0 chnl=15
|
||||
char id=70 x=87 y=118 width=23 height=34 xoffset=-1 yoffset=-2 xadvance=22 page=0 chnl=15
|
||||
char id=71 x=259 y=0 width=30 height=34 xoffset=-2 yoffset=-2 xadvance=30 page=0 chnl=15
|
||||
char id=72 x=111 y=118 width=29 height=34 xoffset=-1 yoffset=-2 xadvance=30 page=0 chnl=15
|
||||
char id=73 x=141 y=118 width=18 height=34 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15
|
||||
char id=74 x=31 y=0 width=18 height=41 xoffset=-7 yoffset=-2 xadvance=13 page=0 chnl=15
|
||||
char id=75 x=160 y=118 width=28 height=34 xoffset=-1 yoffset=-2 xadvance=26 page=0 chnl=15
|
||||
char id=76 x=189 y=118 width=23 height=34 xoffset=-1 yoffset=-2 xadvance=22 page=0 chnl=15
|
||||
char id=77 x=213 y=118 width=35 height=34 xoffset=-1 yoffset=-2 xadvance=36 page=0 chnl=15
|
||||
char id=78 x=0 y=153 width=29 height=34 xoffset=-1 yoffset=-2 xadvance=31 page=0 chnl=15
|
||||
char id=79 x=30 y=153 width=32 height=34 xoffset=-2 yoffset=-2 xadvance=32 page=0 chnl=15
|
||||
char id=80 x=63 y=153 width=25 height=34 xoffset=-1 yoffset=-2 xadvance=25 page=0 chnl=15
|
||||
char id=81 x=50 y=0 width=32 height=40 xoffset=-2 yoffset=-2 xadvance=32 page=0 chnl=15
|
||||
char id=82 x=89 y=153 width=27 height=34 xoffset=-1 yoffset=-2 xadvance=26 page=0 chnl=15
|
||||
char id=83 x=117 y=153 width=25 height=34 xoffset=-3 yoffset=-2 xadvance=23 page=0 chnl=15
|
||||
char id=84 x=143 y=153 width=28 height=34 xoffset=-4 yoffset=-2 xadvance=24 page=0 chnl=15
|
||||
char id=85 x=172 y=153 width=28 height=34 xoffset=-1 yoffset=-2 xadvance=30 page=0 chnl=15
|
||||
char id=86 x=201 y=153 width=30 height=34 xoffset=-4 yoffset=-2 xadvance=25 page=0 chnl=15
|
||||
char id=87 x=232 y=153 width=41 height=34 xoffset=-4 yoffset=-2 xadvance=37 page=0 chnl=15
|
||||
char id=88 x=0 y=188 width=29 height=34 xoffset=-4 yoffset=-2 xadvance=25 page=0 chnl=15
|
||||
char id=89 x=30 y=188 width=29 height=34 xoffset=-4 yoffset=-2 xadvance=24 page=0 chnl=15
|
||||
char id=90 x=60 y=188 width=27 height=34 xoffset=-3 yoffset=-2 xadvance=24 page=0 chnl=15
|
||||
char id=91 x=161 y=0 width=16 height=40 xoffset=-1 yoffset=-2 xadvance=15 page=0 chnl=15
|
||||
char id=93 x=178 y=0 width=16 height=40 xoffset=-3 yoffset=-2 xadvance=15 page=0 chnl=15
|
||||
char id=94 x=133 y=252 width=27 height=25 xoffset=-3 yoffset=-3 xadvance=24 page=0 chnl=15
|
||||
char id=95 x=220 y=252 width=24 height=11 xoffset=-4 yoffset=27 xadvance=19 page=0 chnl=15
|
||||
char id=97 x=0 y=223 width=25 height=28 xoffset=-3 yoffset=4 xadvance=24 page=0 chnl=15
|
||||
char id=98 x=130 y=45 width=26 height=35 xoffset=-1 yoffset=-3 xadvance=26 page=0 chnl=15
|
||||
char id=99 x=26 y=223 width=23 height=28 xoffset=-2 yoffset=4 xadvance=21 page=0 chnl=15
|
||||
char id=100 x=157 y=45 width=25 height=35 xoffset=-2 yoffset=-3 xadvance=26 page=0 chnl=15
|
||||
char id=101 x=50 y=223 width=25 height=28 xoffset=-2 yoffset=4 xadvance=24 page=0 chnl=15
|
||||
char id=102 x=107 y=45 width=22 height=36 xoffset=-4 yoffset=-4 xadvance=16 page=0 chnl=15
|
||||
char id=103 x=0 y=45 width=25 height=37 xoffset=-2 yoffset=4 xadvance=26 page=0 chnl=15
|
||||
char id=104 x=183 y=45 width=25 height=35 xoffset=-1 yoffset=-3 xadvance=26 page=0 chnl=15
|
||||
char id=105 x=209 y=45 width=13 height=35 xoffset=-2 yoffset=-3 xadvance=13 page=0 chnl=15
|
||||
char id=106 x=0 y=0 width=17 height=44 xoffset=-6 yoffset=-3 xadvance=13 page=0 chnl=15
|
||||
char id=107 x=223 y=45 width=24 height=35 xoffset=-1 yoffset=-3 xadvance=23 page=0 chnl=15
|
||||
char id=108 x=248 y=45 width=12 height=35 xoffset=-1 yoffset=-3 xadvance=13 page=0 chnl=15
|
||||
char id=109 x=76 y=223 width=36 height=28 xoffset=-1 yoffset=4 xadvance=37 page=0 chnl=15
|
||||
char id=110 x=113 y=223 width=25 height=28 xoffset=-1 yoffset=4 xadvance=26 page=0 chnl=15
|
||||
char id=111 x=139 y=223 width=26 height=28 xoffset=-2 yoffset=4 xadvance=25 page=0 chnl=15
|
||||
char id=112 x=26 y=45 width=26 height=37 xoffset=-1 yoffset=4 xadvance=26 page=0 chnl=15
|
||||
char id=113 x=53 y=45 width=25 height=37 xoffset=-2 yoffset=4 xadvance=26 page=0 chnl=15
|
||||
char id=114 x=166 y=223 width=20 height=28 xoffset=-1 yoffset=4 xadvance=18 page=0 chnl=15
|
||||
char id=115 x=187 y=223 width=23 height=28 xoffset=-3 yoffset=4 xadvance=21 page=0 chnl=15
|
||||
char id=116 x=236 y=188 width=21 height=33 xoffset=-4 yoffset=-1 xadvance=16 page=0 chnl=15
|
||||
char id=117 x=211 y=223 width=26 height=28 xoffset=-2 yoffset=4 xadvance=26 page=0 chnl=15
|
||||
char id=118 x=238 y=223 width=27 height=28 xoffset=-4 yoffset=4 xadvance=22 page=0 chnl=15
|
||||
char id=119 x=0 y=252 width=36 height=28 xoffset=-4 yoffset=4 xadvance=32 page=0 chnl=15
|
||||
char id=120 x=37 y=252 width=27 height=28 xoffset=-4 yoffset=4 xadvance=23 page=0 chnl=15
|
||||
char id=121 x=79 y=45 width=27 height=37 xoffset=-4 yoffset=4 xadvance=22 page=0 chnl=15
|
||||
char id=122 x=266 y=223 width=23 height=28 xoffset=-3 yoffset=4 xadvance=20 page=0 chnl=15
|
||||
char id=123 x=119 y=0 width=20 height=40 xoffset=-3 yoffset=-2 xadvance=17 page=0 chnl=15
|
||||
char id=124 x=18 y=0 width=12 height=44 xoffset=4 yoffset=-3 xadvance=23 page=0 chnl=15
|
||||
char id=125 x=140 y=0 width=20 height=40 xoffset=-3 yoffset=-2 xadvance=17 page=0 chnl=15
|
||||
char id=8470 x=249 y=118 width=40 height=34 xoffset=-1 yoffset=-2 xadvance=40 page=0 chnl=15
|
||||
BIN
fonts/font36.png
BIN
fonts/font36.png
Binary file not shown.
|
Before Width: | Height: | Size: 51 KiB |
|
|
@ -1,95 +0,0 @@
|
|||
info face="sans-serif" size=72 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=1,1
|
||||
common lineHeight=72 base=57 scaleW=519 scaleH=519 pages=1 packed=0
|
||||
page id=0 file="Unnamed.png"
|
||||
chars count=91
|
||||
char id=32 x=0 y=0 width=0 height=0 xoffset=0 yoffset=0 xadvance=24 page=0 chnl=15
|
||||
char id=33 x=476 y=154 width=21 height=65 xoffset=-1 yoffset=-1 xadvance=25 page=0 chnl=15
|
||||
char id=34 x=324 y=414 width=33 height=31 xoffset=-2 yoffset=-1 xadvance=35 page=0 chnl=15
|
||||
char id=35 x=401 y=350 width=56 height=63 xoffset=-5 yoffset=0 xadvance=52 page=0 chnl=15
|
||||
char id=36 x=336 y=0 width=46 height=71 xoffset=-2 yoffset=-4 xadvance=47 page=0 chnl=15
|
||||
char id=37 x=453 y=0 width=66 height=65 xoffset=-3 yoffset=-1 xadvance=65 page=0 chnl=15
|
||||
char id=38 x=43 y=220 width=62 height=65 xoffset=-3 yoffset=-1 xadvance=58 page=0 chnl=15
|
||||
char id=39 x=499 y=467 width=20 height=31 xoffset=-2 yoffset=-1 xadvance=22 page=0 chnl=15
|
||||
char id=40 x=143 y=0 width=29 height=75 xoffset=-3 yoffset=-1 xadvance=27 page=0 chnl=15
|
||||
char id=41 x=173 y=0 width=29 height=75 xoffset=-4 yoffset=-1 xadvance=27 page=0 chnl=15
|
||||
char id=42 x=181 y=414 width=46 height=45 xoffset=-3 yoffset=-3 xadvance=45 page=0 chnl=15
|
||||
char id=43 x=133 y=414 width=47 height=47 xoffset=-3 yoffset=8 xadvance=47 page=0 chnl=15
|
||||
char id=44 x=495 y=350 width=23 height=30 xoffset=-3 yoffset=42 xadvance=25 page=0 chnl=15
|
||||
char id=45 x=358 y=414 width=30 height=18 xoffset=-3 yoffset=29 xadvance=29 page=0 chnl=15
|
||||
char id=46 x=495 y=381 width=21 height=23 xoffset=-1 yoffset=41 xadvance=25 page=0 chnl=15
|
||||
char id=47 x=362 y=350 width=38 height=63 xoffset=-6 yoffset=0 xadvance=32 page=0 chnl=15
|
||||
char id=48 x=0 y=154 width=47 height=65 xoffset=-3 yoffset=-1 xadvance=47 page=0 chnl=15
|
||||
char id=49 x=382 y=220 width=32 height=63 xoffset=0 yoffset=0 xadvance=47 page=0 chnl=15
|
||||
char id=50 x=106 y=220 width=47 height=64 xoffset=-3 yoffset=-1 xadvance=47 page=0 chnl=15
|
||||
char id=51 x=48 y=154 width=46 height=65 xoffset=-3 yoffset=-1 xadvance=47 page=0 chnl=15
|
||||
char id=52 x=154 y=220 width=51 height=64 xoffset=-5 yoffset=-1 xadvance=47 page=0 chnl=15
|
||||
char id=53 x=206 y=220 width=45 height=64 xoffset=-2 yoffset=0 xadvance=47 page=0 chnl=15
|
||||
char id=54 x=95 y=154 width=46 height=65 xoffset=-2 yoffset=-1 xadvance=47 page=0 chnl=15
|
||||
char id=55 x=415 y=220 width=47 height=63 xoffset=-3 yoffset=0 xadvance=47 page=0 chnl=15
|
||||
char id=56 x=142 y=154 width=47 height=65 xoffset=-3 yoffset=-1 xadvance=47 page=0 chnl=15
|
||||
char id=57 x=190 y=154 width=47 height=65 xoffset=-3 yoffset=-1 xadvance=47 page=0 chnl=15
|
||||
char id=58 x=498 y=154 width=21 height=52 xoffset=-1 yoffset=12 xadvance=25 page=0 chnl=15
|
||||
char id=59 x=490 y=286 width=24 height=61 xoffset=-4 yoffset=12 xadvance=25 page=0 chnl=15
|
||||
char id=61 x=278 y=414 width=45 height=31 xoffset=-2 yoffset=16 xadvance=47 page=0 chnl=15
|
||||
char id=63 x=0 y=220 width=42 height=65 xoffset=-6 yoffset=-1 xadvance=37 page=0 chnl=15
|
||||
char id=64 x=383 y=0 width=69 height=69 xoffset=-2 yoffset=0 xadvance=70 page=0 chnl=15
|
||||
char id=65 x=0 y=286 width=58 height=63 xoffset=-6 yoffset=0 xadvance=51 page=0 chnl=15
|
||||
char id=66 x=59 y=286 width=48 height=63 xoffset=1 yoffset=0 xadvance=52 page=0 chnl=15
|
||||
char id=67 x=259 y=154 width=52 height=65 xoffset=-2 yoffset=-1 xadvance=51 page=0 chnl=15
|
||||
char id=68 x=108 y=286 width=54 height=63 xoffset=1 yoffset=0 xadvance=58 page=0 chnl=15
|
||||
char id=69 x=163 y=286 width=41 height=63 xoffset=1 yoffset=0 xadvance=46 page=0 chnl=15
|
||||
char id=70 x=205 y=286 width=41 height=63 xoffset=1 yoffset=0 xadvance=43 page=0 chnl=15
|
||||
char id=71 x=312 y=154 width=55 height=65 xoffset=-2 yoffset=-1 xadvance=58 page=0 chnl=15
|
||||
char id=72 x=247 y=286 width=52 height=63 xoffset=1 yoffset=0 xadvance=59 page=0 chnl=15
|
||||
char id=73 x=300 y=286 width=31 height=63 xoffset=-3 yoffset=0 xadvance=30 page=0 chnl=15
|
||||
char id=74 x=49 y=0 width=32 height=77 xoffset=-12 yoffset=0 xadvance=25 page=0 chnl=15
|
||||
char id=75 x=332 y=286 width=50 height=63 xoffset=1 yoffset=0 xadvance=50 page=0 chnl=15
|
||||
char id=76 x=383 y=286 width=41 height=63 xoffset=1 yoffset=0 xadvance=43 page=0 chnl=15
|
||||
char id=77 x=425 y=286 width=64 height=63 xoffset=1 yoffset=0 xadvance=71 page=0 chnl=15
|
||||
char id=78 x=0 y=350 width=53 height=63 xoffset=1 yoffset=0 xadvance=60 page=0 chnl=15
|
||||
char id=79 x=368 y=154 width=60 height=65 xoffset=-2 yoffset=-1 xadvance=62 page=0 chnl=15
|
||||
char id=80 x=54 y=350 width=45 height=63 xoffset=1 yoffset=0 xadvance=49 page=0 chnl=15
|
||||
char id=81 x=82 y=0 width=60 height=76 xoffset=-2 yoffset=-1 xadvance=62 page=0 chnl=15
|
||||
char id=82 x=100 y=350 width=49 height=63 xoffset=1 yoffset=0 xadvance=50 page=0 chnl=15
|
||||
char id=83 x=429 y=154 width=46 height=65 xoffset=-3 yoffset=-1 xadvance=45 page=0 chnl=15
|
||||
char id=84 x=150 y=350 width=52 height=63 xoffset=-6 yoffset=0 xadvance=46 page=0 chnl=15
|
||||
char id=85 x=252 y=220 width=52 height=64 xoffset=0 yoffset=0 xadvance=58 page=0 chnl=15
|
||||
char id=86 x=463 y=220 width=56 height=63 xoffset=-6 yoffset=0 xadvance=49 page=0 chnl=15
|
||||
char id=87 x=441 y=85 width=77 height=63 xoffset=-5 yoffset=0 xadvance=72 page=0 chnl=15
|
||||
char id=88 x=203 y=350 width=54 height=63 xoffset=-6 yoffset=0 xadvance=48 page=0 chnl=15
|
||||
char id=89 x=258 y=350 width=53 height=63 xoffset=-6 yoffset=0 xadvance=46 page=0 chnl=15
|
||||
char id=90 x=312 y=350 width=49 height=63 xoffset=-4 yoffset=0 xadvance=47 page=0 chnl=15
|
||||
char id=91 x=276 y=0 width=29 height=75 xoffset=-1 yoffset=-1 xadvance=29 page=0 chnl=15
|
||||
char id=93 x=306 y=0 width=29 height=75 xoffset=-5 yoffset=-1 xadvance=29 page=0 chnl=15
|
||||
char id=94 x=228 y=414 width=49 height=45 xoffset=-4 yoffset=-1 xadvance=47 page=0 chnl=15
|
||||
char id=95 x=389 y=414 width=45 height=17 xoffset=-7 yoffset=57 xadvance=37 page=0 chnl=15
|
||||
char id=97 x=0 y=414 width=44 height=52 xoffset=-3 yoffset=12 xadvance=46 page=0 chnl=15
|
||||
char id=98 x=0 y=85 width=47 height=68 xoffset=0 yoffset=-4 xadvance=50 page=0 chnl=15
|
||||
char id=99 x=0 y=467 width=41 height=52 xoffset=-2 yoffset=12 xadvance=40 page=0 chnl=15
|
||||
char id=100 x=48 y=85 width=47 height=68 xoffset=-2 yoffset=-4 xadvance=50 page=0 chnl=15
|
||||
char id=101 x=45 y=414 width=45 height=52 xoffset=-2 yoffset=12 xadvance=46 page=0 chnl=15
|
||||
char id=102 x=240 y=85 width=39 height=67 xoffset=-5 yoffset=-4 xadvance=30 page=0 chnl=15
|
||||
char id=103 x=96 y=85 width=47 height=68 xoffset=-2 yoffset=12 xadvance=50 page=0 chnl=15
|
||||
char id=104 x=280 y=85 width=45 height=67 xoffset=0 yoffset=-4 xadvance=50 page=0 chnl=15
|
||||
char id=105 x=238 y=154 width=20 height=65 xoffset=-1 yoffset=-2 xadvance=24 page=0 chnl=15
|
||||
char id=106 x=19 y=0 width=29 height=82 xoffset=-10 yoffset=-2 xadvance=24 page=0 chnl=15
|
||||
char id=107 x=326 y=85 width=44 height=67 xoffset=0 yoffset=-4 xadvance=44 page=0 chnl=15
|
||||
char id=108 x=371 y=85 width=19 height=67 xoffset=0 yoffset=-4 xadvance=24 page=0 chnl=15
|
||||
char id=109 x=91 y=467 width=68 height=51 xoffset=0 yoffset=12 xadvance=73 page=0 chnl=15
|
||||
char id=110 x=160 y=467 width=45 height=51 xoffset=0 yoffset=12 xadvance=50 page=0 chnl=15
|
||||
char id=111 x=42 y=467 width=48 height=52 xoffset=-2 yoffset=12 xadvance=49 page=0 chnl=15
|
||||
char id=112 x=144 y=85 width=47 height=68 xoffset=0 yoffset=12 xadvance=50 page=0 chnl=15
|
||||
char id=113 x=192 y=85 width=47 height=68 xoffset=-2 yoffset=12 xadvance=50 page=0 chnl=15
|
||||
char id=114 x=206 y=467 width=35 height=51 xoffset=0 yoffset=12 xadvance=35 page=0 chnl=15
|
||||
char id=115 x=91 y=414 width=41 height=52 xoffset=-3 yoffset=12 xadvance=40 page=0 chnl=15
|
||||
char id=116 x=458 y=350 width=36 height=61 xoffset=-5 yoffset=3 xadvance=31 page=0 chnl=15
|
||||
char id=117 x=242 y=467 width=46 height=51 xoffset=-1 yoffset=13 xadvance=50 page=0 chnl=15
|
||||
char id=118 x=289 y=467 width=49 height=50 xoffset=-6 yoffset=13 xadvance=42 page=0 chnl=15
|
||||
char id=119 x=339 y=467 width=68 height=50 xoffset=-6 yoffset=13 xadvance=62 page=0 chnl=15
|
||||
char id=120 x=408 y=467 width=48 height=50 xoffset=-5 yoffset=13 xadvance=44 page=0 chnl=15
|
||||
char id=121 x=391 y=85 width=49 height=67 xoffset=-6 yoffset=13 xadvance=42 page=0 chnl=15
|
||||
char id=122 x=457 y=467 width=41 height=50 xoffset=-4 yoffset=13 xadvance=39 page=0 chnl=15
|
||||
char id=123 x=203 y=0 width=35 height=75 xoffset=-4 yoffset=-1 xadvance=33 page=0 chnl=15
|
||||
char id=124 x=0 y=0 width=18 height=84 xoffset=11 yoffset=-4 xadvance=45 page=0 chnl=15
|
||||
char id=125 x=239 y=0 width=36 height=75 xoffset=-4 yoffset=-1 xadvance=33 page=0 chnl=15
|
||||
char id=8470 x=305 y=220 width=76 height=64 xoffset=0 yoffset=-1 xadvance=79 page=0 chnl=15
|
||||
BIN
fonts/font72.png
BIN
fonts/font72.png
Binary file not shown.
|
Before Width: | Height: | Size: 116 KiB |
610
main.lua
610
main.lua
|
|
@ -118,7 +118,7 @@ local function move_bubble(x, y, velocity_x, velocity_y)
|
|||
local should_stop = false
|
||||
|
||||
-- collision with ceiling
|
||||
if new_y - game.bubble_radius <= game.ceiling_bottom then
|
||||
if new_y - game.bubble_radius <= game.level_top then
|
||||
should_stop = true
|
||||
end
|
||||
|
||||
|
|
@ -177,9 +177,13 @@ local function move_bubble(x, y, velocity_x, velocity_y)
|
|||
}
|
||||
end
|
||||
|
||||
local function generate_aim_guide(angle)
|
||||
local velocity_x = math.cos(angle) * game.bubble_speed
|
||||
local velocity_y = math.sin(angle) * game.bubble_speed
|
||||
local function generate_aim_guide(towards_x, towards_y)
|
||||
-- TODO: don't allow aiming backwards
|
||||
local diff_x = towards_x - game.launcher_x
|
||||
local diff_y = towards_y - game.launcher_y
|
||||
local dist = math.sqrt(diff_x * diff_x + diff_y * diff_y)
|
||||
local velocity_x = diff_x / dist * game.bubble_speed
|
||||
local velocity_y = diff_y / dist * game.bubble_speed
|
||||
local new_x = game.launcher_x
|
||||
local new_y = game.launcher_y
|
||||
local radius = 5
|
||||
|
|
@ -289,104 +293,20 @@ local function find_unattached_bubbles()
|
|||
return unattached
|
||||
end
|
||||
|
||||
-- don't allow aiming backwards or straight sideways
|
||||
local function clamp_launcher_angle(angle)
|
||||
if (angle >= 0 and angle <= tau / 4) or angle > tau * 25 / 26 then
|
||||
angle = tau * 25 / 26
|
||||
elseif angle > tau / 4 and angle < tau * 14 / 26 then
|
||||
angle = tau * 14 / 26
|
||||
end
|
||||
return angle
|
||||
end
|
||||
|
||||
local function start_level()
|
||||
game.game_over = false
|
||||
game.paused = false
|
||||
game.fade_to_grey = {time = 0, duration = 120, progress = 0.0}
|
||||
game.frame_by_frame = false
|
||||
game.frame_counter = 0
|
||||
game.timer = 0
|
||||
game.score = 0
|
||||
game.points_display = {}
|
||||
game.bubbles_launched = 0
|
||||
game.ceiling_drops_after = 5
|
||||
game.ceiling_drop_tween = nil
|
||||
game.ceiling_should_drop = false
|
||||
|
||||
game.bubble_slots = load_level(
|
||||
game.levels[game.current_level], game.bubble_diameter, game.row_gap
|
||||
)
|
||||
local max_cols = math.max(
|
||||
#game.levels[game.current_level][1],
|
||||
#game.levels[game.current_level][2]
|
||||
)
|
||||
local num_rows = #game.levels[game.current_level]
|
||||
game.level_width = max_cols * game.bubble_diameter
|
||||
game.level_height = (num_rows - 1) * game.row_gap + game.bubble_diameter
|
||||
game.level_left = (game.window_width - game.level_width) / 2
|
||||
game.level_top = (
|
||||
game.window_height - game.level_height -
|
||||
game.bubble_diameter - game.bubble_radius
|
||||
) / 2
|
||||
game.level_right = game.level_left + game.level_width
|
||||
game.level_bottom = game.level_top + game.level_height
|
||||
game.ceiling_bottom = game.level_top
|
||||
|
||||
for i = 1, #game.bubble_slots do
|
||||
game.bubble_slots[i].x = game.bubble_slots[i].x + game.level_left
|
||||
game.bubble_slots[i].y = game.bubble_slots[i].y + game.ceiling_bottom
|
||||
end
|
||||
|
||||
game.launcher_x = game.window_width / 2
|
||||
game.launcher_y = game.level_bottom + game.bubble_diameter
|
||||
game.launcher_rotation = -tau / 4 -- up
|
||||
|
||||
local total_bubble_count, counts_by_type = get_bubble_counts()
|
||||
local bubble_types = {}
|
||||
for bubble_type, count in pairs(counts_by_type) do
|
||||
if bubble_type >= 1 and bubble_type <= 8 then
|
||||
bubble_types[#bubble_types+1] = bubble_type
|
||||
end
|
||||
end
|
||||
game.current_bubble = {
|
||||
x = game.launcher_x,
|
||||
y = game.launcher_y,
|
||||
bubble_type = get_next_bubble_type(1, bubble_types),
|
||||
velocity_x = 0,
|
||||
velocity_y = 0
|
||||
}
|
||||
game.next_bubble = {
|
||||
x = game.launcher_x + game.bubble_diameter * 2,
|
||||
y = game.launcher_y,
|
||||
bubble_type = get_next_bubble_type(2, bubble_types),
|
||||
scale = 1
|
||||
}
|
||||
|
||||
game.show_aim_guide = true
|
||||
game.aim_guide = {}
|
||||
generate_aim_guide(game.launcher_rotation)
|
||||
|
||||
game.bursting_bubbles = {}
|
||||
game.falling_bubbles = {}
|
||||
end
|
||||
|
||||
function love.load(arg, unfiltered_arg)
|
||||
function love.load(arg)
|
||||
if arg[#arg] == "debug" then require("lldebugger").start() end
|
||||
|
||||
game.window_width, game.window_height = love.graphics.getDimensions()
|
||||
game.window_center_x = game.window_width / 2
|
||||
game.window_center_y = game.window_height / 2
|
||||
|
||||
game.bm_font72 = love.graphics.newFont('fonts/font72.fnt', 'fonts/font72.png')
|
||||
game.bm_font36 = love.graphics.newFont('fonts/font36.fnt', 'fonts/font36.png')
|
||||
game.bm_font18 = love.graphics.newFont('fonts/font18.fnt', 'fonts/font18.png')
|
||||
game.font36_widths = {}
|
||||
game.score_font = love.graphics.setNewFont(50)
|
||||
game.points_font = love.graphics.newFont(30)
|
||||
|
||||
game.game_over_image = love.graphics.newImage('images/game_over.png')
|
||||
game.paused = false
|
||||
game.frame_by_frame = false
|
||||
|
||||
game.bubble_diameter = 60
|
||||
game.bubble_radius = game.bubble_diameter / 2
|
||||
game.bubble_speed = 960 * delta_time -- 960 px/s = 8 px/frame
|
||||
game.bubble_speed = 960 * delta_time -- 960 px/s
|
||||
|
||||
-- vertical distance between bubble center points
|
||||
game.row_gap = math.ceil(math.sqrt(
|
||||
|
|
@ -408,6 +328,9 @@ function love.load(arg, unfiltered_arg)
|
|||
love.graphics.newImage('images/white.png') -- 8
|
||||
}
|
||||
|
||||
game.score = 0
|
||||
game.points_display = {}
|
||||
|
||||
game.levels = {}
|
||||
game.levels[1] = {
|
||||
{1,1,1,3,3,2,2,2},
|
||||
|
|
@ -427,94 +350,59 @@ function love.load(arg, unfiltered_arg)
|
|||
}
|
||||
game.current_level = 1
|
||||
|
||||
game.bubble_slots = load_level(
|
||||
game.levels[game.current_level], game.bubble_diameter, game.row_gap
|
||||
)
|
||||
local max_cols = math.max(
|
||||
#game.levels[game.current_level][1],
|
||||
#game.levels[game.current_level][2]
|
||||
)
|
||||
local num_rows = #game.levels[game.current_level]
|
||||
game.level_width = max_cols * game.bubble_diameter
|
||||
game.level_height = (num_rows - 1) * game.row_gap + game.bubble_diameter
|
||||
game.level_left = (game.window_width - game.level_width) / 2
|
||||
game.level_top = game.bubble_radius
|
||||
game.level_right = game.level_left + game.level_width
|
||||
game.level_bottom = game.level_top + game.level_height
|
||||
|
||||
for i = 1, #game.bubble_slots do
|
||||
game.bubble_slots[i].x = game.bubble_slots[i].x + game.level_left
|
||||
game.bubble_slots[i].y = game.bubble_slots[i].y + game.level_top
|
||||
end
|
||||
|
||||
game.launcher_image = love.graphics.newImage('images/launcher.png')
|
||||
game.launcher_height = game.launcher_image:getHeight()
|
||||
game.launcher_width = game.launcher_image:getWidth()
|
||||
game.launcher_x = game.window_width / 2
|
||||
game.launcher_y = game.level_top + game.level_height + game.bubble_diameter
|
||||
game.launcher_offset_x = 90 -- rotation point in launcher image
|
||||
game.launcher_offset_y = game.launcher_height / 2
|
||||
game.launcher_rotation = -tau / 4 -- up
|
||||
|
||||
game.show_aim_guide = true
|
||||
game.aim_guide = {}
|
||||
local total_bubble_count, counts_by_type = get_bubble_counts()
|
||||
local bubble_types = {}
|
||||
for bubble_type, count in pairs(counts_by_type) do
|
||||
if bubble_type >= 1 and bubble_type <= 8 then
|
||||
bubble_types[#bubble_types+1] = bubble_type
|
||||
end
|
||||
end
|
||||
game.next_bubble_index = 1
|
||||
game.next_bubble = {
|
||||
x = game.launcher_x,
|
||||
y = game.launcher_y,
|
||||
bubble_type = get_next_bubble_type(game.next_bubble_index, bubble_types),
|
||||
velocity_x = 0,
|
||||
velocity_y = 0
|
||||
}
|
||||
|
||||
game.shader = love.graphics.newShader [[
|
||||
uniform float progress;
|
||||
vec4 effect(vec4 color, Image texture, vec2 texture_coords, vec2 screen_coords)
|
||||
{
|
||||
vec4 pixel = Texel(texture, texture_coords);
|
||||
number average = (pixel.r + pixel.b + pixel.g) / 3.0;
|
||||
pixel.r = pixel.r + (average-pixel.r) * progress;
|
||||
pixel.g = pixel.g + (average-pixel.g) * progress;
|
||||
pixel.b = pixel.b + (average-pixel.b) * progress;
|
||||
return pixel;
|
||||
}
|
||||
]]
|
||||
|
||||
start_level()
|
||||
game.bursting_bubbles = {}
|
||||
game.falling_bubbles = {}
|
||||
end
|
||||
|
||||
function love.update(dt)
|
||||
if game.game_over then
|
||||
if game.fade_to_grey.time < game.fade_to_grey.duration then
|
||||
game.fade_to_grey.time = game.fade_to_grey.time + 1
|
||||
game.fade_to_grey.progress =
|
||||
game.fade_to_grey.time / game.fade_to_grey.duration
|
||||
game.shader:send("progress", game.fade_to_grey.progress)
|
||||
end
|
||||
end
|
||||
|
||||
if game.current_bubble and game.current_bubble_tween then
|
||||
game.current_bubble_tween.t = game.current_bubble_tween.t + 1
|
||||
if game.current_bubble_tween.t < game.current_bubble_tween.d then
|
||||
game.current_bubble.x = easing.outBack(
|
||||
game.current_bubble_tween.t,
|
||||
game.current_bubble_tween.b,
|
||||
game.current_bubble_tween.c,
|
||||
game.current_bubble_tween.d
|
||||
)
|
||||
else
|
||||
game.current_bubble_tween = nil
|
||||
game.current_bubble.x = game.launcher_x
|
||||
end
|
||||
end
|
||||
|
||||
if game.next_bubble_tween then
|
||||
game.next_bubble_tween.t = game.next_bubble_tween.t + 1
|
||||
if game.next_bubble_tween.t < game.next_bubble_tween.d then
|
||||
game.next_bubble.scale = easing.outBack(
|
||||
game.next_bubble_tween.t,
|
||||
game.next_bubble_tween.b,
|
||||
game.next_bubble_tween.c,
|
||||
game.next_bubble_tween.d
|
||||
)
|
||||
else
|
||||
game.next_bubble_tween = nil
|
||||
game.next_bubble.scale = 1
|
||||
end
|
||||
end
|
||||
|
||||
if game.bubble_swap_tween then
|
||||
game.bubble_swap_tween.t = game.bubble_swap_tween.t + 1
|
||||
if game.bubble_swap_tween.t < game.bubble_swap_tween.d then
|
||||
game.current_bubble.x = easing.outBack(
|
||||
game.bubble_swap_tween.t,
|
||||
game.bubble_swap_tween.b1,
|
||||
game.bubble_swap_tween.c1,
|
||||
game.bubble_swap_tween.d
|
||||
)
|
||||
game.next_bubble.x = easing.outBack(
|
||||
game.bubble_swap_tween.t,
|
||||
game.bubble_swap_tween.b2,
|
||||
game.bubble_swap_tween.c2,
|
||||
game.bubble_swap_tween.d
|
||||
)
|
||||
else
|
||||
game.bubble_swap_tween = nil
|
||||
game.next_bubble.bubble_type, game.current_bubble.bubble_type =
|
||||
game.current_bubble.bubble_type, game.next_bubble.bubble_type
|
||||
game.current_bubble.x = game.launcher_x
|
||||
game.next_bubble.x = game.launcher_x + game.bubble_diameter * 2
|
||||
end
|
||||
end
|
||||
|
||||
if game.paused or game.game_over then
|
||||
if game.paused then
|
||||
return
|
||||
end
|
||||
|
||||
|
|
@ -537,77 +425,29 @@ function love.update(dt)
|
|||
end
|
||||
end
|
||||
|
||||
if game.ceiling_drop_tween then
|
||||
local old_y = game.ceiling_bottom
|
||||
game.ceiling_drop_tween.t = game.ceiling_drop_tween.t + 1
|
||||
game.ceiling_bottom = easing.outBack(
|
||||
game.ceiling_drop_tween.t,
|
||||
game.ceiling_drop_tween.b,
|
||||
game.ceiling_drop_tween.c,
|
||||
game.ceiling_drop_tween.d
|
||||
)
|
||||
local diff_y = game.ceiling_bottom - old_y
|
||||
for i = 1, #game.bubble_slots do
|
||||
game.bubble_slots[i].y = game.bubble_slots[i].y + diff_y
|
||||
if game.bubble_slots[i].bubble_type ~= 0 and
|
||||
game.bubble_slots[i].y > game.level_bottom then
|
||||
game.game_over = true
|
||||
game.fade_to_grey.time = 0
|
||||
game.fade_to_grey.progress = 0.0
|
||||
end
|
||||
end
|
||||
if game.game_over then
|
||||
return
|
||||
end
|
||||
if game.ceiling_drop_tween.t == game.ceiling_drop_tween.d then
|
||||
game.ceiling_drop_tween = nil
|
||||
end
|
||||
if game.show_aim_guide then
|
||||
generate_aim_guide(game.launcher_rotation)
|
||||
end
|
||||
end
|
||||
|
||||
if game.current_bubble and
|
||||
(game.current_bubble.velocity_x ~= 0 or game.current_bubble.velocity_y ~= 0) then
|
||||
if game.next_bubble and
|
||||
(game.next_bubble.velocity_x ~= 0 or game.next_bubble.velocity_y ~= 0) then
|
||||
|
||||
local movement_info
|
||||
|
||||
movement_info = move_bubble(
|
||||
game.current_bubble.x,
|
||||
game.current_bubble.y,
|
||||
game.current_bubble.velocity_x,
|
||||
game.current_bubble.velocity_y
|
||||
game.next_bubble.x,
|
||||
game.next_bubble.y,
|
||||
game.next_bubble.velocity_x,
|
||||
game.next_bubble.velocity_y
|
||||
)
|
||||
game.current_bubble.x = movement_info.x
|
||||
game.current_bubble.y = movement_info.y
|
||||
game.current_bubble.velocity_x = movement_info.velocity_x
|
||||
game.current_bubble.velocity_y = movement_info.velocity_y
|
||||
game.next_bubble.x = movement_info.x
|
||||
game.next_bubble.y = movement_info.y
|
||||
game.next_bubble.velocity_x = movement_info.velocity_x
|
||||
game.next_bubble.velocity_y = movement_info.velocity_y
|
||||
|
||||
if movement_info.should_stop then
|
||||
game.bubble_slots[movement_info.nearest_slot_index].bubble_type =
|
||||
game.current_bubble.bubble_type
|
||||
|
||||
if game.ceiling_should_drop then
|
||||
game.ceiling_drop_tween = {
|
||||
t = 0,
|
||||
d = 30,
|
||||
b = game.ceiling_bottom,
|
||||
c = game.row_gap
|
||||
}
|
||||
end
|
||||
game.ceiling_should_drop = false
|
||||
game.next_bubble.bubble_type
|
||||
|
||||
local matches = find_matches(movement_info.nearest_slot_index)
|
||||
|
||||
if #matches < 3 and game.current_bubble.y > game.level_bottom then
|
||||
game.game_over = true
|
||||
game.fade_to_grey.time = 0
|
||||
game.fade_to_grey.progress = 0.0
|
||||
return
|
||||
end
|
||||
|
||||
if #matches >= 3 then
|
||||
game.current_bubble = nil
|
||||
game.next_bubble = nil
|
||||
|
||||
-- remove matches
|
||||
for i = 1, #matches do
|
||||
|
|
@ -621,16 +461,16 @@ function love.update(dt)
|
|||
alpha = 1.0
|
||||
}
|
||||
game.bubble_slots[index].bubble_type = 0
|
||||
local points = (i + 1) ^ 2
|
||||
local points = i * 5
|
||||
game.score = game.score + points
|
||||
game.points_display[#game.points_display+1] = {
|
||||
points = points,
|
||||
x = game.bubble_slots[index].x,
|
||||
y = game.bubble_slots[index].y,
|
||||
tween = {
|
||||
delay = (i - 1) * 5,
|
||||
delay = 0,
|
||||
t = 0,
|
||||
d = (i - 1) * 10 + 40,
|
||||
d = 50,
|
||||
b = game.bubble_slots[index].y - 10,
|
||||
c = -game.bubble_radius
|
||||
}
|
||||
|
|
@ -651,14 +491,15 @@ function love.update(dt)
|
|||
game.bubble_slots[index].bubble_type = 0
|
||||
local points = (i + 1) ^ 3
|
||||
game.score = game.score + points
|
||||
print(points, "points")
|
||||
game.points_display[#game.points_display+1] = {
|
||||
points = points,
|
||||
x = game.bubble_slots[index].x,
|
||||
y = game.bubble_slots[index].y,
|
||||
tween = {
|
||||
delay = (i - 1) * 5,
|
||||
delay = 0,
|
||||
t = 0,
|
||||
d = (i - 1) * 10 + 40,
|
||||
d = 50,
|
||||
b = game.bubble_slots[index].y - 10,
|
||||
c = -game.bubble_radius
|
||||
}
|
||||
|
|
@ -667,7 +508,7 @@ function love.update(dt)
|
|||
end
|
||||
|
||||
if game.show_aim_guide then
|
||||
generate_aim_guide(game.launcher_rotation)
|
||||
generate_aim_guide(love.mouse:getX(), love.mouse:getY())
|
||||
end
|
||||
|
||||
-- calculate remaining bubble types
|
||||
|
|
@ -682,22 +523,14 @@ function love.update(dt)
|
|||
end
|
||||
end
|
||||
-- get next bubble
|
||||
game.current_bubble = {
|
||||
x = game.launcher_x + game.bubble_diameter * 2,
|
||||
game.next_bubble_index = game.next_bubble_index + 1
|
||||
game.next_bubble = {
|
||||
x = game.launcher_x,
|
||||
y = game.launcher_y,
|
||||
bubble_type = game.next_bubble.bubble_type,
|
||||
bubble_type = get_next_bubble_type(game.next_bubble_index, bubble_types),
|
||||
velocity_x = 0,
|
||||
velocity_y = 0
|
||||
}
|
||||
game.current_bubble_tween = {
|
||||
t = 0,
|
||||
d = 30,
|
||||
b = game.current_bubble.x,
|
||||
c = game.launcher_x - game.current_bubble.x
|
||||
}
|
||||
game.next_bubble.bubble_type = get_next_bubble_type(game.bubbles_launched+1, bubble_types)
|
||||
game.next_bubble.scale = 0
|
||||
game.next_bubble_tween = {t = 0, d = 30, b = 0, c = 1}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -766,58 +599,7 @@ function love.draw(alpha)
|
|||
love.graphics.draw(game.background_image, 0, 0)
|
||||
love.graphics.draw(game.background_image, game.background_width, 0)
|
||||
|
||||
-- draw walls
|
||||
love.graphics.setColor(0, 0, 0, 1)
|
||||
love.graphics.rectangle(
|
||||
'line',
|
||||
game.level_left,
|
||||
game.level_top,
|
||||
game.level_width,
|
||||
game.level_height,
|
||||
game.bubble_radius,
|
||||
game.bubble_radius
|
||||
)
|
||||
if game.ceiling_bottom > game.level_top then
|
||||
love.graphics.line(
|
||||
game.level_left,
|
||||
game.ceiling_bottom,
|
||||
game.level_right,
|
||||
game.ceiling_bottom
|
||||
)
|
||||
end
|
||||
|
||||
-- draw ceiling drop indicator
|
||||
love.graphics.setColor(0, 0, 0, 1)
|
||||
for i = 1, game.ceiling_drops_after do
|
||||
love.graphics.circle(
|
||||
'line',
|
||||
game.level_left + (i - 1) * 15 + 15,
|
||||
game.level_bottom + 15,
|
||||
6
|
||||
)
|
||||
end
|
||||
love.graphics.setColor(1, 1, 1, 1)
|
||||
local ceiling_progress = game.bubbles_launched % game.ceiling_drops_after
|
||||
for i = 1, ceiling_progress do
|
||||
love.graphics.circle(
|
||||
'fill',
|
||||
game.level_left + (i - 1) * 15 + 15,
|
||||
game.level_bottom + 15,
|
||||
5
|
||||
)
|
||||
end
|
||||
|
||||
if game.game_over then
|
||||
love.graphics.setShader(game.shader)
|
||||
end
|
||||
|
||||
-- draw stationary bubbles
|
||||
local ceiling_drops_in = game.ceiling_drops_after - ceiling_progress
|
||||
if not game.game_over and (ceiling_drops_in == 1 or game.ceiling_should_drop) then
|
||||
local dx = love.math.random(-2, 2)
|
||||
local dy = love.math.random(-2, 2)
|
||||
love.graphics.translate(dx, dy)
|
||||
end
|
||||
love.graphics.setColor(1, 1, 1, 1)
|
||||
for i = 1, #game.bubble_slots do
|
||||
local slot = game.bubble_slots[i]
|
||||
|
|
@ -830,9 +612,25 @@ function love.draw(alpha)
|
|||
game.bubble_radius,
|
||||
game.bubble_radius
|
||||
)
|
||||
else
|
||||
love.graphics.circle(
|
||||
'line',
|
||||
slot.x,
|
||||
slot.y,
|
||||
game.bubble_radius
|
||||
)
|
||||
end
|
||||
end
|
||||
love.graphics.origin()
|
||||
|
||||
-- draw walls
|
||||
love.graphics.setColor(0, 0, 0, 1)
|
||||
love.graphics.rectangle(
|
||||
'line',
|
||||
game.level_left,
|
||||
game.level_top,
|
||||
game.level_width,
|
||||
game.level_height
|
||||
)
|
||||
|
||||
-- draw launcher
|
||||
love.graphics.setColor(1, 1, 1, 1)
|
||||
|
|
@ -883,6 +681,42 @@ function love.draw(alpha)
|
|||
end
|
||||
end
|
||||
|
||||
-- draw next bubble
|
||||
-- if moving, extrapolate position based on alpha value from love.run
|
||||
if game.next_bubble then
|
||||
love.graphics.setColor(1, 1, 1, 1)
|
||||
love.graphics.draw(
|
||||
game.bubble_images[game.next_bubble.bubble_type],
|
||||
game.next_bubble.x + game.next_bubble.velocity_x * alpha,
|
||||
game.next_bubble.y + game.next_bubble.velocity_y * alpha,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
game.bubble_radius,
|
||||
game.bubble_radius
|
||||
)
|
||||
end
|
||||
|
||||
-- draw score
|
||||
love.graphics.setFont(game.score_font)
|
||||
love.graphics.setColor(0, 0, 0, 1)
|
||||
love.graphics.print(
|
||||
string.format("%08d", game.score),
|
||||
game.bubble_radius,
|
||||
game.bubble_radius
|
||||
)
|
||||
love.graphics.setFont(game.points_font)
|
||||
for i = 1, #game.points_display do
|
||||
local p = game.points_display[i]
|
||||
love.graphics.printf(
|
||||
p.points,
|
||||
p.x - game.bubble_radius,
|
||||
p.y,
|
||||
game.bubble_diameter, -- TODO: fix this, wraps sometimes
|
||||
'center'
|
||||
)
|
||||
end
|
||||
|
||||
-- draw aim guide
|
||||
if game.show_aim_guide then
|
||||
love.graphics.setColor(0, 0, 0, 1)
|
||||
|
|
@ -895,181 +729,31 @@ function love.draw(alpha)
|
|||
)
|
||||
end
|
||||
end
|
||||
|
||||
-- draw upcoming bubble
|
||||
love.graphics.setColor(1, 1, 1, 1)
|
||||
love.graphics.draw(
|
||||
game.bubble_images[game.next_bubble.bubble_type],
|
||||
game.next_bubble.x,
|
||||
game.next_bubble.y,
|
||||
0,
|
||||
game.next_bubble.scale,
|
||||
game.next_bubble.scale,
|
||||
game.bubble_radius,
|
||||
game.bubble_radius
|
||||
)
|
||||
|
||||
-- draw current bubble
|
||||
-- if moving, extrapolate position based on alpha value from love.run
|
||||
if game.current_bubble then
|
||||
love.graphics.setColor(1, 1, 1, 1)
|
||||
love.graphics.draw(
|
||||
game.bubble_images[game.current_bubble.bubble_type],
|
||||
game.current_bubble.x + game.current_bubble.velocity_x * alpha,
|
||||
game.current_bubble.y + game.current_bubble.velocity_y * alpha,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
game.bubble_radius,
|
||||
game.bubble_radius
|
||||
)
|
||||
end
|
||||
|
||||
|
||||
if game.game_over then
|
||||
love.graphics.setShader()
|
||||
end
|
||||
|
||||
-- draw help text
|
||||
love.graphics.setFont(game.bm_font18)
|
||||
love.graphics.setColor(1, 1, 1, 1)
|
||||
love.graphics.printf(
|
||||
"S to swap",
|
||||
game.launcher_x + game.bubble_diameter,
|
||||
game.launcher_y + game.bubble_radius + 10,
|
||||
game.bubble_diameter * 2,
|
||||
'center'
|
||||
)
|
||||
|
||||
-- draw score
|
||||
love.graphics.setFont(game.bm_font72)
|
||||
love.graphics.setColor(1, 1, 1, 1)
|
||||
love.graphics.print(
|
||||
string.format("%08d", game.score),
|
||||
game.bubble_radius,
|
||||
game.bubble_radius
|
||||
)
|
||||
love.graphics.setFont(game.bm_font36)
|
||||
for i = 1, #game.points_display do
|
||||
local p = game.points_display[i]
|
||||
if not game.font36_widths[p.points] then
|
||||
game.font36_widths[p.points] = game.bm_font36:getWidth(p.points)
|
||||
end
|
||||
if p.tween.delay == 0 then
|
||||
love.graphics.printf(
|
||||
p.points,
|
||||
p.x - game.bubble_radius,
|
||||
p.y,
|
||||
game.font36_widths[p.points],
|
||||
'center'
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
-- draw game over
|
||||
if game.game_over and game.fade_to_grey.progress == 1.0 then
|
||||
love.graphics.setColor(0, 0, 0, 0.8)
|
||||
love.graphics.rectangle(
|
||||
'fill',
|
||||
game.level_left + 10,
|
||||
game.window_height / 2 - 80,
|
||||
game.level_width - 20,
|
||||
160,
|
||||
20,
|
||||
20
|
||||
)
|
||||
love.graphics.setColor(1, 1, 1, 1)
|
||||
love.graphics.draw(
|
||||
game.game_over_image,
|
||||
game.window_center_x,
|
||||
game.window_center_y,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
game.game_over_image:getWidth() / 2,
|
||||
game.game_over_image:getHeight() / 2
|
||||
)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function love.mousepressed(x, y, button, is_touch, presses)
|
||||
if game.game_over then
|
||||
start_level()
|
||||
return
|
||||
end
|
||||
if button == 1 and game.current_bubble and
|
||||
game.current_bubble.x == game.launcher_x and
|
||||
game.current_bubble.y == game.launcher_y and
|
||||
game.current_bubble.velocity_x == 0 and
|
||||
game.current_bubble.velocity_y == 0 then
|
||||
|
||||
-- use the angle from mousemoved to calculate the velocity so that shooting
|
||||
-- backwards is not possible
|
||||
game.current_bubble.velocity_x =
|
||||
math.cos(game.launcher_rotation) * game.bubble_speed
|
||||
game.current_bubble.velocity_y =
|
||||
math.sin(game.launcher_rotation) * game.bubble_speed
|
||||
|
||||
game.bubbles_launched = game.bubbles_launched + 1
|
||||
|
||||
-- if ceiling_should_drop is true, it will create a tween to drop the
|
||||
-- ceiling (and bubbles) after the bubble that was just launched comes to a
|
||||
-- stop in love.update()
|
||||
game.ceiling_should_drop = game.bubbles_launched % game.ceiling_drops_after == 0
|
||||
end
|
||||
end
|
||||
|
||||
function love.wheelmoved(x, y)
|
||||
if y ~= 0 then
|
||||
local angle = game.launcher_rotation
|
||||
angle = angle + (y < 0 and 0.01 or -0.01)
|
||||
game.launcher_rotation = clamp_launcher_angle(angle)
|
||||
if game.show_aim_guide then
|
||||
generate_aim_guide(game.launcher_rotation)
|
||||
end
|
||||
if button == 1 and game.next_bubble then
|
||||
local diff_x = x - game.launcher_x
|
||||
local diff_y = y - game.launcher_y
|
||||
local dist = math.sqrt(diff_x * diff_x + diff_y * diff_y)
|
||||
game.next_bubble.velocity_x = diff_x / dist * game.bubble_speed
|
||||
game.next_bubble.velocity_y = diff_y / dist * game.bubble_speed
|
||||
end
|
||||
end
|
||||
|
||||
function love.mousemoved(x, y, dx, dy, is_touch)
|
||||
if not game.game_over then
|
||||
local diff_x = x - game.launcher_x
|
||||
local diff_y = y - game.launcher_y
|
||||
local angle = math.atan2(diff_y, diff_x)
|
||||
local diff_x = x - game.launcher_x
|
||||
local diff_y = y - game.launcher_y
|
||||
game.launcher_rotation = math.atan2(diff_y, diff_x)
|
||||
|
||||
-- force angle to be positive
|
||||
if y < game.launcher_y then
|
||||
angle = angle + tau
|
||||
end
|
||||
|
||||
game.launcher_rotation = clamp_launcher_angle(angle)
|
||||
|
||||
if game.show_aim_guide then
|
||||
generate_aim_guide(game.launcher_rotation)
|
||||
end
|
||||
if game.show_aim_guide then
|
||||
generate_aim_guide(x, y)
|
||||
end
|
||||
end
|
||||
|
||||
function love.keypressed(key, scan_code, is_repeat)
|
||||
if key == 'escape' then
|
||||
love.event.quit()
|
||||
elseif game.game_over or key == 'r' then
|
||||
start_level()
|
||||
elseif key == 's' then
|
||||
if game.current_bubble and
|
||||
game.current_bubble.x == game.launcher_x and
|
||||
game.current_bubble.y == game.launcher_y and
|
||||
game.current_bubble.velocity_x == 0 and
|
||||
game.current_bubble.velocity_y == 0 then
|
||||
game.bubble_swap_tween = {
|
||||
t = 0,
|
||||
d = 30,
|
||||
b1 = game.launcher_x,
|
||||
b2 = game.launcher_x + game.bubble_diameter * 2,
|
||||
c1 = game.bubble_diameter * 2,
|
||||
c2 = -game.bubble_diameter * 2
|
||||
}
|
||||
end
|
||||
elseif key == 'space' then
|
||||
game.paused = not game.paused
|
||||
elseif key == 'n' and game.paused then
|
||||
|
|
|
|||
Loading…
Reference in New Issue