越南语变音字母简化函数改为全unicode版本

限制自定义菜单背景选择范围
微调自定义背景设置ui
整理代码
This commit is contained in:
MrZ_26
2023-12-31 23:32:19 +08:00
parent 19ea76dc4c
commit 3a4fcf6d7b
16 changed files with 140 additions and 133 deletions

48
Zframework/diacritics.txt Normal file
View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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
]],

View File

@@ -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",

View File

@@ -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."},

View File

@@ -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",

View File

@@ -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;

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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
},

View File

@@ -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<n and n<5 then
BG. setDefault(SETTING.defaultBG)
BGM.setDefault(seasonT[n])
end
if type(theme)=='string' and theme:sub(1,6)=='season' then
BG.setDefault(SETTING.defaultBG)
BGM.setDefault(({season1='null',season2='nil',season3='vaccum',season4='space'})[theme])
elseif not SETTING.noTheme then
if theme=='xmas' then
BG.setDefault('snow')
@@ -99,7 +93,9 @@ function THEME.set(theme)
else
return
end
else THEME.set(THEME.calculate('0',os.date('%m'),'0')) return end
else
return THEME.set(THEME.calculate('0',os.date('%m'),'0'))
end
THEME.cur=theme
BG.set()