diff --git a/parts/language/lang_en.lua b/parts/language/lang_en.lua index 3e013b7d..c5cf8c3d 100644 --- a/parts/language/lang_en.lua +++ b/parts/language/lang_en.lua @@ -77,6 +77,8 @@ return{ VKCurW="Current. Pos. Weight", noScore="No Scores Yet", + modeLocked="Locked", + unlockHint="Achieve Rank D or above in prerequisite modes to unlock.", highScore="Personal Bests", newRecord="New Record!", diff --git a/parts/language/lang_zh.lua b/parts/language/lang_zh.lua index 3542117c..6e486080 100644 --- a/parts/language/lang_zh.lua +++ b/parts/language/lang_zh.lua @@ -77,6 +77,8 @@ return{ VKCurW="当前点权重", noScore="暂无成绩", + modeLocked="暂未解锁", + unlockHint="前一模式达到成绩D或以上即可解锁", highScore="最佳成绩", newRecord="打破纪录", diff --git a/parts/list.lua b/parts/list.lua index aec2b5b6..4581b244 100644 --- a/parts/list.lua +++ b/parts/list.lua @@ -175,7 +175,7 @@ do--drawableText combo=T(20),maxcmb=T(20), pc=T(20),ko=T(25), - noScore=T(45),highScore=T(30), + noScore=T(45),highScore=T(30),modeLocked=T(45), } end do--BLOCKS diff --git a/parts/scenes/mode.lua b/parts/scenes/mode.lua index 7e6ddf01..6e402df0 100644 --- a/parts/scenes/mode.lua +++ b/parts/scenes/mode.lua @@ -30,6 +30,15 @@ local scene={} function scene.sceneInit(org) BG.set() mapCam.zoomK=org=='main'and 5 or 1 + VisibleModes = {} -- 1 for unlocked, 2 for locked but visible + for name,M in next,MODES do + if RANKS[name]and M.unlock and M.x then + VisibleModes[name] = 1 + for _=1,#M.unlock do + VisibleModes[M.unlock[_]] = VisibleModes[M.unlock[_]] or 2 + end + end + end end local function getK() @@ -39,11 +48,9 @@ local function getPos() return mapCam.xOy:inverseTransformPoint(0,0) end -local function onMode(x,y) - x,y=x-640,y-360 - x,y=mapCam.xOy:inverseTransformPoint(x,y) +local function onModeRaw(x,y) for name,M in next,MODES do - if RANKS[name]and M.x then + if VisibleModes[name]and M.x then local s=M.size if M.shape==1 then if x>M.x-s and xM.y-s and yM.x-s and xM.y-s and y