From 3a4fcf6d7bba38003e0bcc004e2b170359c2ca17 Mon Sep 17 00:00:00 2001 From: MrZ_26 <1046101471@qq.com> Date: Sun, 31 Dec 2023 23:32:19 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B6=8A=E5=8D=97=E8=AF=AD=E5=8F=98=E9=9F=B3?= =?UTF-8?q?=E5=AD=97=E6=AF=8D=E7=AE=80=E5=8C=96=E5=87=BD=E6=95=B0=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E5=85=A8unicode=E7=89=88=E6=9C=AC=20=E9=99=90?= =?UTF-8?q?=E5=88=B6=E8=87=AA=E5=AE=9A=E4=B9=89=E8=8F=9C=E5=8D=95=E8=83=8C?= =?UTF-8?q?=E6=99=AF=E9=80=89=E6=8B=A9=E8=8C=83=E5=9B=B4=20=E5=BE=AE?= =?UTF-8?q?=E8=B0=83=E8=87=AA=E5=AE=9A=E4=B9=89=E8=83=8C=E6=99=AF=E8=AE=BE?= =?UTF-8?q?=E7=BD=AEui=20=E6=95=B4=E7=90=86=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Zframework/diacritics.txt | 48 +++++++++++++++++++++++++++ Zframework/stringExtend.lua | 58 ++++++++++++--------------------- Zframework/vi_diaractics.txt | 12 ------- main.lua | 18 ++++------ parts/eventsets/master_g.lua | 2 +- parts/gameFuncs.lua | 53 +++++++++++++++--------------- parts/language/dict_vi.lua | 4 +-- parts/language/lang_en.lua | 2 +- parts/language/lang_es.lua | 2 +- parts/language/lang_vi.lua | 3 +- parts/language/manual_vi.txt | 6 ++-- parts/scenes/app_arithmetic.lua | 6 ++-- parts/scenes/app_piano.lua | 2 +- parts/scenes/dict.lua | 20 +++++------- parts/scenes/setting_video.lua | 21 ++++++------ parts/theme.lua | 16 ++++----- 16 files changed, 140 insertions(+), 133 deletions(-) create mode 100644 Zframework/diacritics.txt delete mode 100644 Zframework/vi_diaractics.txt diff --git a/Zframework/diacritics.txt b/Zframework/diacritics.txt new file mode 100644 index 00000000..3372094c --- /dev/null +++ b/Zframework/diacritics.txt @@ -0,0 +1,48 @@ +Á=A,Ă=A,Ắ=A,Ặ=A,Ằ=A,Ẳ=A,Ẵ=A,Ǎ=A,Â=A,Ấ=A,Ậ=A,Ầ=A,Ẩ=A,Ẫ=A,Ä=A,Ạ=A,À=A,Ả=A,Ā=A,Ą=A,Å=A,Ǻ=A,Ã=A,Æ=AE,Ǽ=AE +Ḅ=B,Ɓ=B,ʚ=B,ɞ=B +Ć=C,Č=C,Ç=C,Ĉ=C,Ċ=C,Ɔ=C,ʗ=C +Ď=D,Ḓ=D,Ḍ=D,Ɗ=D,Ḏ=D,Dz=DZ,Dž=DZ,Đ=D,Ð=D,DZ=DZ,DŽ=DZ +É=E,Ĕ=E,Ě=E,Ê=E,Ế=E,Ệ=E,Ề=E,Ể=E,Ễ=E,Ë=E,Ė=E,Ẹ=E,È=E,Ẻ=E,Ē=E,Ę=E,Ẽ=E,Ɛ=E,Ə=E +Ƒ=F +Ǵ=G,Ğ=G,Ǧ=G,Ģ=G,Ĝ=G,Ġ=G,Ḡ=G,ʛ=G +Ḫ=H,Ĥ=H,Ḥ=H,Ħ=H +Í=I,Ĭ=I,Ǐ=I,Î=I,Ï=I,İ=I,Ị=I,Ì=I,Ỉ=I,Ī=I,Į=I,Ĩ=I,IJ=IJ +Ĵ=J +Ķ=K,Ḳ=K,Ƙ=K,Ḵ=K +Ĺ=L,Ƚ=L,Ľ=L,Ļ=L,Ḽ=L,Ḷ=L,Ḹ=L,Ḻ=L,Ŀ=L,Lj=Lj,Ł=L,LJ=LJ +Ḿ=M,Ṁ=M,Ṃ=M +Ń=N,Ň=N,Ņ=N,Ṋ=N,Ṅ=N,Ṇ=N,Ǹ=N,Ɲ=N,Ṉ=N,Nj=Nj,Ñ=N,NJ=NJ +Ó=O,Ŏ=O,Ǒ=O,Ô=O,Ố=O,Ộ=O,Ồ=O,Ổ=O,Ỗ=O,Ö=O,Ọ=O,Ő=O,Ò=O,Ỏ=O,Ơ=O,Ớ=O,Ợ=O,Ờ=O,Ở=O,Ỡ=O,Ō=O,Ɵ=O,Ǫ=O,Ø=O,Ǿ=O,Õ=O,Œ=OE,ɶ=Oe +Þ=P +Ŕ=R,Ř=R,Ŗ=R,Ṙ=R,Ṛ=R,Ṝ=R,Ṟ=R,ʁ=R +Ś=S,Š=S,Ş=S,Ŝ=S,Ș=S,Ṡ=S,Ṣ=S,ẞ=S +Ť=T,Ţ=T,Ṱ=T,Ț=T,Ṭ=T,Ṯ=T,Ŧ=T,Þ=T,Ð=T +Ú=U,Ŭ=U,Ǔ=U,Û=U,Ü=U,Ǘ=U,Ǚ=U,Ǜ=U,Ǖ=U,Ụ=U,Ű=U,Ù=U,Ủ=U,Ư=U,Ứ=U,Ự=U,Ừ=U,Ử=U,Ữ=U,Ū=U,Ų=U,Ů=U,Ũ=U +Ẃ=W,Ŵ=W,Ẅ=W,Ẁ=W,ʬ=W +Ý=Y,Ŷ=Y,Ÿ=Y,Ẏ=Y,Ỵ=Y,Ỳ=Y,Ƴ=Y,Ỷ=Y,Ȳ=Y,Ỹ=Y +Ź=Z,Ž=Z,Ż=Z,Ẓ=Z,Ẕ=Z,Ƶ=Z +á=a,ă=a,ắ=a,ặ=a,ằ=a,ẳ=a,ẵ=a,ǎ=a,â=a,ấ=a,ậ=a,ầ=a,ẩ=a,ẫ=a,ä=a,ạ=a,à=a,ả=a,ā=a,ą=a,å=a,ǻ=a,ã=a,æ=a,ǽ=a,ɑ=a,ɐ=a,ɒ=a +ḅ=b,ɓ=b,ß=b +ć=c,č=c,ç=c,ĉ=c,ɕ=c,ċ=c +ď=d,ḓ=d,ḍ=d,ɗ=d,ḏ=d,đ=d,ɖ=d,ʤ=d,dz=d,ʣ=d,ʥ=d,dž=d,ð=d +é=e,ĕ=e,ě=e,ê=e,ế=e,ệ=e,ề=e,ể=e,ễ=e,ë=e,ė=e,ẹ=e,è=e,ẻ=e,ē=e,ę=e,ẽ=e,ʒ=e,ǯ=e,ʓ=e,ɘ=e,ɜ=e,ɝ=e,ə=e,ɚ=e,ʚ=e,ɞ=e +ƒ=f,ſ=f,ʩ=f,fi=f,fl=f,ʃ=f,ʆ=f,ʅ=f,ɟ=f,ʄ=f +ǵ=g,ğ=g,ǧ=g,ģ=g,ĝ=g,ġ=g,ɠ=g,ḡ=g,ɡ=g,ɣ=g +ḫ=h,ĥ=h,ḥ=h,ɦ=h,ẖ=h,ħ=h,ɧ=h,ɥ=h,ʮ=h,ʯ=h,ų=h +í=i,ĭ=i,ǐ=i,î=i,ï=i,ị=i,ì=i,ỉ=i,ī=i,į=i,ɨ=i,ĩ=i,ɩ=i,ı=i,ij=ij,ɟ=i +ǰ=j,ĵ=j,ʝ=j,ȷ=j,ɟ=j,ʄ=j +ķ=k,ḳ=k,ƙ=k,ḵ=k,ĸ=k,ʞ=k +ĺ=l,ƚ=l,ɬ=l,ľ=l,ļ=l,ḽ=l,ḷ=l,ḹ=l,ḻ=l,ŀ=l,ɫ=l,ɭ=l,ł=l,ƛ=l,ɮ=lz,lj=lj,ʪ=ls,ʫ=lz +ḿ=m,ṁ=m,ṃ=m,ɱ=m,ɯ=m,ɰ=m +ʼn=n,ń=n,ň=n,ņ=n,ṋ=n,ṅ=n,ṇ=n,ǹ=n,ɲ=n,ṉ=n,ɳ=n,ñ=n,nj=nj,ŋ=n,Ŋ=n +ó=o,ŏ=o,ǒ=o,ô=o,ố=o,ộ=o,ồ=o,ổ=o,ỗ=o,ö=o,ọ=o,ő=o,ò=o,ỏ=o,ơ=o,ớ=o,ợ=o,ờ=o,ở=o,ỡ=o,ō=o,ǫ=o,ø=o,ǿ=o,õ=o,ɛ=o,ɔ=o,ɵ=o,ʘ=o,œ=oe +ɸ=p,þ=p +ʠ=q +ŕ=r,ř=r,ŗ=r,ṙ=r,ṛ=r,ṝ=r,ɾ=r,ṟ=r,ɼ=r,ɽ=r,ɿ=r,ɹ=r,ɻ=r,ɺ=r +ś=s,š=s,ş=s,ŝ=s,ș=s,ṡ=s,ṣ=s,ʂ=s,ſ=s,ʃ=s,ʆ=s,ß=s,ʅ=s +ť=t,ţ=t,ṱ=t,ț=t,ẗ=t,ṭ=t,ṯ=t,ʈ=t,ŧ=t,ʨ=t,ʧ=t,þ=t,ð=t,ʦ=t,ʇ=t +ʉ=u,ú=u,ŭ=u,ǔ=u,û=u,ü=u,ǘ=u,ǚ=u,ǜ=u,ǖ=u,ụ=u,ű=u,ù=u,ủ=u,ư=u,ứ=u,ự=u,ừ=u,ử=u,ữ=u,ū=u,ų=u,ů=u,ũ=u,ʊ=u +ʋ=v,ʌ=v +ẃ=w,ŵ=w,ẅ=w,ẁ=w,ʍ=w +ý=y,ŷ=y,ÿ=y,ẏ=y,ỵ=y,ỳ=y,ƴ=y,ỷ=y,ȳ=y,ỹ=y,ʎ=y +ź=z,ž=z,ʑ=z,ż=z,ẓ=z,ẕ=z,ʐ=z,ƶ=z diff --git a/Zframework/stringExtend.lua b/Zframework/stringExtend.lua index 20ca83ec..75c5913a 100644 --- a/Zframework/stringExtend.lua +++ b/Zframework/stringExtend.lua @@ -37,7 +37,7 @@ do-- function STRING.shiftChar(c) end -- [LOW PERFORMANCE!] -local upperData,lowerData,VIdiaData +local upperData,lowerData,diaData function STRING.upperUTF8(str) for _,pair in next,upperData do str=str:gsub(pair[1],pair[2]) @@ -50,12 +50,8 @@ function STRING.lowerUTF8(str) end return str end ---[[ - [FOR VIETNAMESE ONLY] - Remove all diacritics in strings written in Vietnamese -]] -function STRING.viRemoveDiacritics(str) - for _,pair in next,VIdiaData do +function STRING.remDiacritics(str) + for _,pair in next,diaData do str=str:gsub(pair[1],pair[2]) end return str @@ -402,43 +398,31 @@ function STRING.unpackTable(t) end do - local function readF(fname) + local function parseFile(fname) + local d if love and love.filesystem and type(love.filesystem.read)=='function' then - f=love.filesystem.read(fname) + d=love.filesystem.read(fname) else local f=io.open(fname,'r') - local d=f:read('a') - f:close() + if f then + d=f:read('a') + f:close() + end end - return f - end - upperData=readF('Zframework/upcaser.txt') - lowerData=readF('Zframework/lowcaser.txt') - VIdiaData=readF('Zframework/vi_diaractics.txt') - local function splitData(data) - for i=1,#data do - local pair=STRING.split(data[i],'=') - data[i]=pair + if not d then + print("ERROR: Failed to read the data from "..fname) + return {} end - return data - end - if upperData then upperData=splitData(STRING.split(gsub(upperData,'\n',','),',')) - else - upperData={} - LOG('ERROR: Failed to read the data from Zframework/upcaser.txt') - end - if lowerData then lowerData=splitData(STRING.split(gsub(lowerData,'\n',','),',')) - else - lowerData={} - LOG('ERROR: Failed to read the data from Zframework/lowcaser.txt') - end - - if VIdiaData then VIdiaData=splitData(STRING.split(gsub(VIdiaData,'\n',','),',')) - else - VIdiaData={} - LOG('ERROR: Failed to read the data from Zframework/vi_diaractics.txt') + d=STRING.split(gsub(d,'\n',','),',') + for i=1,#d do + d[i]=STRING.split(d[i],'=') + end + return d end + upperData=parseFile('Zframework/upcaser.txt') + lowerData=parseFile('Zframework/lowcaser.txt') + diaData=parseFile('Zframework/diacritics.txt') end return STRING diff --git a/Zframework/vi_diaractics.txt b/Zframework/vi_diaractics.txt deleted file mode 100644 index 931974a7..00000000 --- a/Zframework/vi_diaractics.txt +++ /dev/null @@ -1,12 +0,0 @@ -Á=A,À=A,Ả=A,Ã=A,Ạ=A,Ă=A,Ắ=A,Ằ=A,Ẳ=A,Ẵ=A,Ặ=A,Â=A,Ấ=A,Ầ=A,Ẩ=A,Ẫ=A,Ậ=A -á=a,à=a,ả=a,ã=a,ạ=a,ă=a,ắ=a,ằ=a,ẳ=a,ẵ=a,ặ=a,â=a,ấ=a,ầ=a,ẩ=a,ẫ=a,ậ=a -Đ=D,đ=d -É=E,È=E,Ẻ=E,Ẽ=E,Ẹ=E,Ê=E,Ế=E,Ề=E,Ể=E,Ễ=E,Ệ=E -é=e,è=e,ẻ=e,ẽ=e,ẹ=e,ê=e,ế=e,ề=e,ể=e,ễ=e,ệ=e -Í=I,Ì=I,Ỉ=I,Ĩ=I,Ị=I -í=i,ì=i,ỉ=i,ĩ=i,ị=i -Ó=O,Ò=O,Ỏ=O,Õ=O,Ọ=O,Ô=O,Ố=O,Ồ=O,Ổ=O,Ỗ=O,Ộ=O,Ơ=O,Ớ=O,Ờ=O,Ở=O,Ỡ=O,Ợ=O -ó=o,ò=o,ỏ=o,õ=o,ọ=o,ô=o,ố=o,ồ=o,ổ=o,ỗ=o,ộ=o,ơ=o,ớ=o,ờ=o,ở=o,ỡ=o,ợ=o -Ú=U,Ù=U,Ủ=U,Ũ=U,Ụ=U,Ư=U,Ứ=U,Ừ=U,Ử=U,Ữ=U,Ự=U -ú=u,ù=u,ủ=u,ũ=u,ụ=u,ư=u,ứ=u,ừ=u,ử=u,ữ=u,ự=u -Ý=Y,Ỳ=Y,Ỷ=Y,Ỹ=Y,Ỵ=Y,ý=y,ỳ=y,ỷ=y,ỹ=y,ỵ=y \ No newline at end of file diff --git a/main.lua b/main.lua index 95091435..f113639e 100644 --- a/main.lua +++ b/main.lua @@ -49,19 +49,15 @@ SCR.setSize(1280,720) -- Initialize Screen size BGM.setMaxSources(5) VOC.setDiversion(.62) -ChangeButtonColorIfThemeUsed=function() - if SCN.cur~='net_game' and SCN.cur~='custom_field' then - local colorList=THEME.getThemeColor() - if colorList then - for _,W in next,SCN.scenes[SCN.cur].widgetList do - if W.color then - W.color=colorList[math.random(#colorList)] - end - end +WIDGET.setOnChange(function() + if SCN.cur=='net_game' or SCN.cur=='custom_field' then return end + local colorList=THEME.getThemeColor() + if colorList then + for _,W in next,SCN.scenes[SCN.cur].widgetList do + W.color=W.color and colorList[math.random(#colorList)] end end -end -WIDGET.setOnChange(ChangeButtonColorIfThemeUsed) +end) -- Create shortcuts setFont=FONT.set diff --git a/parts/eventsets/master_g.lua b/parts/eventsets/master_g.lua index 0077d1a8..ad40f2d1 100644 --- a/parts/eventsets/master_g.lua +++ b/parts/eventsets/master_g.lua @@ -175,7 +175,7 @@ return { GC.rectangle('line',0,240,126,80,4) GC.setColor(.98,.98,.98,.4) GC.rectangle('fill',0+2,240+2,126-4,80-4,2) -- draw time box - + setFont(45) -- Draw time text local t=(P.stat.frame-D.prevSectTime)/60 local T=("%.1f"):format(60-t) diff --git a/parts/gameFuncs.lua b/parts/gameFuncs.lua index cd5cffeb..e701217d 100644 --- a/parts/gameFuncs.lua +++ b/parts/gameFuncs.lua @@ -115,7 +115,7 @@ do-- function applySettings() light={.2,.8}, color={-.2,1.2}, } - function applySettings(arg) + function applySettings(reason) -- Apply language text=LANG.get(SETTING.locale) WIDGET.setLang(text.WidgetText) @@ -157,34 +157,33 @@ do-- function applySettings() SHADER.fieldSatur:send('k',m[2]) -- Apply BG - if not (arg and arg=='fullscreen') then - if SETTING.bg=='on' then - BG.unlock() - BG.setDefault(SETTING.defaultBG) - BG.set() - if SETTING.lockBG then BG.lock() end - elseif SETTING.bg=='off' then + if reason=='fullscreen' then return end + if SETTING.bg=='on' then + BG.unlock() + BG.setDefault(SETTING.defaultBG) + BG.set() + if SETTING.lockBG then BG.lock() end + elseif SETTING.bg=='off' then + BG.unlock() + BG.set('fixColor',SETTING.bgAlpha,SETTING.bgAlpha,SETTING.bgAlpha) + BG.lock() + elseif SETTING.bg=='custom' then + if love.filesystem.getInfo('conf/customBG') then + local res,image=pcall(GC.newImage,love.filesystem.newFile('conf/customBG')) + if res then + BG.unlock() + GC.setDefaultFilter('linear','linear') + BG.set('custom',SETTING.bgAlpha,image) + GC.setDefaultFilter('nearest','nearest') + BG.lock() + else + MES.new('error',text.customBGloadFailed) + end + else-- Switch off when custom BG not found + SETTING.bg='off' BG.unlock() BG.set('fixColor',SETTING.bgAlpha,SETTING.bgAlpha,SETTING.bgAlpha) BG.lock() - elseif SETTING.bg=='custom' then - if love.filesystem.getInfo('conf/customBG') then - local res,image=pcall(GC.newImage,love.filesystem.newFile('conf/customBG')) - if res then - BG.unlock() - GC.setDefaultFilter('linear','linear') - BG.set('custom',SETTING.bgAlpha,image) - GC.setDefaultFilter('nearest','nearest') - BG.lock() - else - MES.new('error',text.customBGloadFailed) - end - else-- Switch off when custom BG not found - SETTING.bg='off' - BG.unlock() - BG.set('fixColor',SETTING.bgAlpha,SETTING.bgAlpha,SETTING.bgAlpha) - BG.lock() - end end end end @@ -196,7 +195,7 @@ local function getSmallNum(num) local str=tostring(num) local out="" for i=1,#str do - out=out..smallDigits[tonumber(string.sub(str,i,i))] + out=out..smallDigits[tonumber(str:sub(i,i))] end return out end diff --git a/parts/language/dict_vi.lua b/parts/language/dict_vi.lua index f932c94b..50adf09a 100644 --- a/parts/language/dict_vi.lua +++ b/parts/language/dict_vi.lua @@ -584,7 +584,7 @@ Tốc độ gạch rơi xuống. Đơn vị là "G". Chỉ số hàng gạch rơi xuống trong một khung hình. Con số này luôn đi kèm với giả thiết là game đang chạy ở 60FPS. -Ví dụ: gạch di chuyển xuống 1 ô / 60 khung hình (1 ô / giây) thì tốc độ rơi là ¹⁄₆₀ G +Ví dụ: gạch di chuyển xuống 1 ô / 60 khung hình (1 ô / giây) thì tốc độ rơi là ¹⁄₆₀ G Tốc độ tối đa của game xếp gạch hiện đại là 20G (bởi vì có 20 hàng trong vùng nhìn thấy được). @@ -712,7 +712,7 @@ Techmino cũng có finesse rate (%) (tỉ lệ *không* mắc lỗi di chuyển) - 0% (Truợt - Miss) khi số lần nhấn phím cao hơn mức chuẩn 3 phím Một Bad hoặc Miss sẽ phá combo finesse. -Lưu ý: +Lưu ý: - Finesse thường sẽ không được tính trong một vài tình huống như tốc độ rơi cao, phải sử dụng thả nhẹ hay bảng rất cao. Tuy nhiên, bộ đếm finesse của Techmino vẫn chạy bất chấp ở điều kiện nào (kể cả tốc độ rơi cao như 20G). Do vậy finesse rate thường sẽ không mang ý nghĩa gì trong trường hợp này. - Bạn sẽ không bị mất Finesse khi bạn nhét gạch hay thực hiện Spin vì Techmino chỉ kiểm tra những vị trí không yêu cầu soft drop ]], diff --git a/parts/language/lang_en.lua b/parts/language/lang_en.lua index 55c1ca0a..9a7ce550 100644 --- a/parts/language/lang_en.lua +++ b/parts/language/lang_en.lua @@ -589,7 +589,7 @@ C. Gamepad bg_off="No B.G.", bg_custom="Custom B.G.", defaultBG="Default B.G.", - resetDbg="Reset default B.G.", + resetDbg="Reset to default", lockBG="Lock B.G.", noTheme="Disable theme", diff --git a/parts/language/lang_es.lua b/parts/language/lang_es.lua index 01fee6b1..0865eb50 100644 --- a/parts/language/lang_es.lua +++ b/parts/language/lang_es.lua @@ -884,7 +884,7 @@ return { -- ['blind_h']= {"Invisible", "INSTANT", "For the experienced"}, -- ['blind_l']= {"Invisible", "NO GHOST", "For professionals"}, -- ['blind_u']= {"Invisible", "NO FIELD", "Are you ready?"}, - -- ['blind_wtf']= {"Invisible", "VOID", "You're not ready."}, + -- ['blind_wtf']= {"Invisible", "VOID", "You're not ready."}, ['blind_e']= {"A Ciegas", "Parcial", "Para novatos."}, ['blind_n']= {"A Ciegas", "Total", "Para jugadores intermedios."}, ['blind_h']= {"A Ciegas", "Inmediato", "Para jugadores experimentados."}, diff --git a/parts/language/lang_vi.lua b/parts/language/lang_vi.lua index 95fa050c..14ef6c2e 100644 --- a/parts/language/lang_vi.lua +++ b/parts/language/lang_vi.lua @@ -600,8 +600,7 @@ C. Tay cầm chơi game (Gamepad): bg_off="Không ảnh nền", bg_custom="Ảnh nền tự chọn", defaultBG="Nền mặc định", - -- resetDbg='Đặt lại →', - resetDbg="Đặt lại ảnh nền mặc định", + resetDbg='Đặt lại', lockBG="Khóa ảnh nền", noTheme="Tắt theme", diff --git a/parts/language/manual_vi.txt b/parts/language/manual_vi.txt index 3f66db44..954ac59a 100644 --- a/parts/language/manual_vi.txt +++ b/parts/language/manual_vi.txt @@ -84,7 +84,7 @@ Hệ thống tính điểm: Khoảng thời gian chờ trước khi tấn công: Một đòn sát thương sẽ không có hiệu lực ngay lập tức để người chơi có chút thời gian phản ứng trước khi tràn vào bảng. - Thời gian chờ của các đòn tấn công như sau, sắp xếp từ nhanh nhất tới lâu nhất: + Thời gian chờ của các đòn tấn công như sau, sắp xếp từ nhanh nhất tới lâu nhất: — Double và Triple (Đôi và Tam) là nhanh nhất — Theo sau là Techrash, Techrash+, spin; Mini, B2B và B3B có thêm thêm chút thời gian chờ nữa. — Sát thương từ combo có thời gian chờ lâu nhất.. @@ -107,14 +107,14 @@ Chế độ Battle Royale: 3. K.O.s: Nhắm vào bot “đang thở máy, đang hấp hối”. Tự động nhắm lại sau mỗi giây. 4. Phản công: tấn công tất cả bot đang nhắm vào bạn. Bạn sẽ gửi tấn công đến tất cả bọn chúng. Nếu bạn không nhắm vào mục tiêu nào, thì bạn sẽ tấn công một bot ngẫu nhiên (không nhắm) - + Người cuối cùng trụ lại thành công sẽ là người chiến thắng sau khi đã loại được toàn bộ đối thủ. Chế độ Tự do: Bạn có thể tự do tùy chỉnh nhiều thông số (nhưng không bao gồm các hiệu ứng đặc biệt từ các chế độ khác). Bạn có thể vẽ một cái bảng để tập xóa (Clear mode) hoặc tập xây theo mẫu (Puzzle mode) - + Ở chế độ Puzzle, bạn có thể nhấn F1 để chọn có hiện bảng mẫu hay không. Để thắng được game ở chế độ Puzzle thì toàn bộ… ô có X thì không được có gạch; diff --git a/parts/scenes/app_arithmetic.lua b/parts/scenes/app_arithmetic.lua index 95ffaf9d..e6677ac0 100644 --- a/parts/scenes/app_arithmetic.lua +++ b/parts/scenes/app_arithmetic.lua @@ -174,7 +174,7 @@ local levels={ local b=STRING.toBin(a) local l=floor(math.log(a,2)+1) for i=1,l do - drawChar(tonumber(string.sub(b,i,i)),320,420-100*(l-i),.5) + drawChar(tonumber(b:sub(i,i)),320,420-100*(l-i),.5) ins(drawLines,{370,480-100*(l-i),410,440-100*(l-i)}) ins(drawLines,{370,440-100*(l-i),410,480-100*(l-i)}) drawChar(2,430,420-100*(l-i),.5) @@ -193,7 +193,7 @@ local levels={ local b=STRING.toOct(a) local l=floor(math.log(a,8)+1) for i=1,l do - drawChar(tonumber(string.sub(b,i,i)),320,420-100*(l-i),.5) + drawChar(tonumber(b:sub(i,i)),320,420-100*(l-i),.5) ins(drawLines,{370,480-100*(l-i),410,440-100*(l-i)}) ins(drawLines,{370,440-100*(l-i),410,480-100*(l-i)}) drawChar(8,430,420-100*(l-i),.5) @@ -212,7 +212,7 @@ local levels={ local b=STRING.toHex(a) local l=floor(math.log(a,16)+1) for i=1,l do - local c=string.sub(b,i,i) + local c=b:sub(i,i) if ("0123456789"):find(c,nil,true) then c=tonumber(c) else diff --git a/parts/scenes/app_piano.lua b/parts/scenes/app_piano.lua index 4087046d..5c925865 100644 --- a/parts/scenes/app_piano.lua +++ b/parts/scenes/app_piano.lua @@ -214,7 +214,7 @@ generateVKey=function() -- activateState: 0=off, 1=on then off, 2=on local activationTime=self.ATV or 0 local maxTime=6.2 - + if activateState~=nil then self.activateState=activateState elseif (self.activateState==1 and activationTime==maxTime) or not self.activateState then self.activateState=0 end -- LIKELY NOT POSSIBLE TO DO diff --git a/parts/scenes/dict.lua b/parts/scenes/dict.lua index 74e04bd8..bad3648b 100644 --- a/parts/scenes/dict.lua +++ b/parts/scenes/dict.lua @@ -17,8 +17,7 @@ local lastSearch -- Last searched string local lastSelected -- Last selected item local currentFontSize=25 -- Current font size, default: 25 -local needLowerUTF8 -local isLangVi -- There are special handlings that only for Vietnamese --SweetSea-- +local utf8postProcess local typeColor={ help=COLOR.Y, @@ -45,11 +44,11 @@ local function _scanDict(D) for i=1,#D do local O=D[i] O.title,O.title_Org=_filter(O[1]) - O.titleLowered=needLowerUTF8 and STRING.lowerUTF8(O.title) or O.title:lower() - O.titleNoDiaratics=isLangVi and STRING.viRemoveDiacritics(O.titleLowered) + O.titleLowered=utf8postProcess and STRING.lowerUTF8(O.title) or O.title:lower() + O.titleNoDiaratics=utf8postProcess and STRING.remDiacritics(O.titleLowered) O.keywords=O[2] - O.keywordsLowered=needLowerUTF8 and STRING.lowerUTF8(O.keywords) or O.keywords:lower() - O.keywordsNoDiaratics=isLangVi and STRING.viRemoveDiacritics(O.keywordsLowered) + O.keywordsLowered=utf8postProcess and STRING.lowerUTF8(O.keywords) or O.keywords:lower() + O.keywordsNoDiaratics=utf8postProcess and STRING.remDiacritics(O.keywordsLowered) O.type=O[3] O.content,O.content_Org=_filter(O[4]) O.url=O[5] @@ -93,9 +92,9 @@ local function _search() local pos local first _clearResult() - input=needLowerUTF8 and STRING.lowerUTF8(input) or input:lower() + input=utf8postProcess and STRING.lowerUTF8(input) or input:lower() for i=1,#dict do - pos=find(dict[i].titleLowered,input,nil,true) or find(dict[i].keywordsLowered,input,nil,true) or isLangVi and (find(dict[i].titleNoDiaratics,input,nil,true) or find(dict[i].keywordsNoDiaratics,input,nil,true)) + pos=find(dict[i].titleLowered,input,nil,true) or find(dict[i].keywordsLowered,input,nil,true) or utf8postProcess and (find(dict[i].titleNoDiaratics,input,nil,true) or find(dict[i].keywordsNoDiaratics,input,nil,true)) if pos==1 and not first then ins(result,1,dict[i]) first=true @@ -147,9 +146,8 @@ function scene.enter() SETTING.locale:find'vi' and 'vi' or 'en' ) - needLowerUTF8=SETTING.locale:find'vi' - isLangVi=SETTING.locale:find'vi' -- DO NOT CHANGE THIS! --SweetSea-- - + utf8postProcess=SETTING.locale:find'vi' + dict=require(localeFile) _scanDict(dict) diff --git a/parts/scenes/setting_video.lua b/parts/scenes/setting_video.lua index a81330b6..57f96c09 100644 --- a/parts/scenes/setting_video.lua +++ b/parts/scenes/setting_video.lua @@ -90,8 +90,8 @@ scene.widgetList={ WIDGET.newSwitch{name='portrait', x=950,y=1150,lim=360,disp=SETval('portrait'), code=function() SETTING.portrait=not SETTING.portrait; saveSettings(); MES.new('warn',text.settingWarn2,6.26) end,hideF=function() return not MOBILE end}, WIDGET.newSlider{name='msaa', x=950,y=1220,lim=360,w=200,axis={0,4,1},show=_msaaShow,disp=function() return SETTING.msaa==0 and 0 or math.log(SETTING.msaa,2) end,code=function(v) SETTING.msaa=v==0 and 0 or 2^v; saveSettings(); if TASK.lock('warnMessage',6.26) then MES.new('warn',text.settingWarn2,6.26) end end}, - WIDGET.newKey{name='bg_off', x=680,y=1290,w=200,h=60,code=function() SETTING.bg='off'; applySettings() end}, - WIDGET.newKey{name='bg_on', x=900,y=1290,w=200,h=60,code=function() SETTING.bg='on' ; applySettings() end}, + WIDGET.newKey{name='bg_on', x=680,y=1290,w=200,h=60,code=function() SETTING.bg='on' ; applySettings() end}, + WIDGET.newKey{name='bg_off', x=900,y=1290,w=200,h=60,code=function() SETTING.bg='off'; applySettings() end}, WIDGET.newKey{name='bg_custom', x=1120,y=1290,w=200,h=60, code=function() if love.filesystem.getInfo('conf/customBG') then @@ -102,7 +102,7 @@ scene.widgetList={ end end }, - WIDGET.newSlider{name='bgAlpha', x=1020,y=1365,w=200, + WIDGET.newSlider{name='bgAlpha', x=800,y=1365,w=420, axis={0,.8},disp=SETval('bgAlpha'), code=function(v) SETTING.bgAlpha=v @@ -114,9 +114,8 @@ scene.widgetList={ end, hideF=function() return SETTING.bg=='on' end }, - WIDGET.newSelector{name='defaultBG', x=1120,y=1365,w=200,color='G', - limit=370, - list=BG.getList(), + WIDGET.newSelector{name='defaultBG', x=680,y=1365,w=200,color='G', + list={'space','bg1','bg2','rainbow','rainbow2','aura','rgb','glow','matrix','cubes','tunnel','galaxy','quarks','blockfall','blockrain','blockhole','blockspace'}, disp=SETval('defaultBG'), code=function(v) SETTING.defaultBG=v @@ -124,7 +123,7 @@ scene.widgetList={ end, hideF=function() return SETTING.bg~='on' end }, - WIDGET.newKey{name='resetDbg',x=900,y=1365,w=200,h=60,font=25, + WIDGET.newKey{name='resetDbg',x=870,y=1365,w=140,h=60,font=15, code=function() SETTING.defaultBG='space' scene.widgetList.defaultBG:reset() @@ -132,7 +131,7 @@ scene.widgetList={ end, hideF=function() return SETTING.bg~='on' or SETTING.defaultBG=='space' end }, - WIDGET.newSwitch{name='lockBG',x=1170,y=1485, + WIDGET.newSwitch{name='lockBG',x=1170,y=1365,lim=200, disp=SETval('lockBG'), code=function() SETTING.lockBG=not SETTING.lockBG @@ -141,18 +140,18 @@ scene.widgetList={ hideF=function() return SETTING.bg~='on' end }, - WIDGET.newSwitch{name='noTheme',x=1170,y=1545, + WIDGET.newSwitch{name='noTheme',x=1170,y=1435, disp=SETval('noTheme'), code=function() SETTING.noTheme=not SETTING.noTheme local ct=THEME.calculate() - if SETTING.noTheme and type(ct)=='string' and string.sub(ct,1,6)~='season' then + if SETTING.noTheme and type(ct)=='string' and ct:sub(1,6)~='season' then if TASK.lock('warnMessage',6.26) then MES.new('warn',text.settingWarn2,6.26) end else THEME.set(THEME.calculate()) - ChangeButtonColorIfThemeUsed() + WIDGET.setWidgetList(scene.widgetList) end end }, diff --git a/parts/theme.lua b/parts/theme.lua index 49add864..2e0307ec 100644 --- a/parts/theme.lua +++ b/parts/theme.lua @@ -59,15 +59,9 @@ function THEME.calculate(Y,M,D) end function THEME.set(theme) - local seasonT={'null','nil','vaccum','space'} - -- Note: by default, the background will be 'space' unless user changed - -- Because 4 seasonal themes are basically the normal theme, not special like others - if type(theme)=='string' and string.sub(theme,1,6)=='season' then - local n=tonumber(string.sub(theme,7)) - if 0