diff --git a/parts/modeTree.lua b/parts/modeTree.lua index 82746cc5..38337dd1 100644 --- a/parts/modeTree.lua +++ b/parts/modeTree.lua @@ -8,28 +8,6 @@ return{ {name='sprint_1000l'}, }, - {folder=true,name='sprint_special', - {name='sprintPenta'}, - {name='sprintMPH'}, - {name='sprintSmooth'}, - {name='sprintMD'}, - {name='sprintSym'}, - {name='sprintLock'}, - {name='sprintFix'}, - }, - - {folder=true,name='drought', - {name='drought_n'}, - {name='drought_l'}, - }, - - {folder=true,name='dig_sprint', - {name='dig_10l'}, - {name='dig_40l'}, - {name='dig_100l'}, - {name='dig_400l'}, - }, - {folder=true,name='marathon', {name='marathon_n'}, {name='marathon_h'}, @@ -47,6 +25,35 @@ return{ {name='strategy_u_plus'}, }, + {folder=true,name='dig_sprint', + {name='dig_10l'}, + {name='dig_40l'}, + {name='dig_100l'}, + {name='dig_400l'}, + }, + + {folder=true,name='survival', + {folder=true,name='survivor', + {name='survivor_e'}, + {name='survivor_n'}, + {name='survivor_h'}, + {name='survivor_l'}, + {name='survivor_u'}, + }, + {folder=true,name='attacker', + {name='attacker_h'}, + {name='attacker_u'}, + }, + {folder=true,name='defender', + {name='defender_n'}, + {name='defender_l'}, + }, + {folder=true,name='dig', + {name='dig_h'}, + {name='dig_u'}, + }, + }, + {folder=true,name='battle', {folder=true,name='solo', {name='solo_e'}, @@ -72,6 +79,11 @@ return{ }, }, + {folder=true,name='drought', + {name='drought_n'}, + {name='drought_l'}, + }, + {folder=true,name='blind', {name='blind_e'}, {name='blind_n'}, @@ -87,28 +99,6 @@ return{ {name='classic_u'}, }, - {folder=true,name='survival', - {folder=true,name='survivor', - {name='survivor_e'}, - {name='survivor_n'}, - {name='survivor_h'}, - {name='survivor_l'}, - {name='survivor_u'}, - }, - {folder=true,name='attacker', - {name='attacker_h'}, - {name='attacker_u'}, - }, - {folder=true,name='defender', - {name='defender_n'}, - {name='defender_l'}, - }, - {folder=true,name='dig', - {name='dig_h'}, - {name='dig_u'}, - }, - }, - {folder=true,name='train', {name='clearRush'}, {name='c4wtrain_n'}, @@ -157,4 +147,14 @@ return{ {name='infinite_dig'}, {name='marathon_inf'}, }, + + {folder=true,name='sprint_special', + {name='sprintPenta'}, + {name='sprintMPH'}, + {name='sprintSmooth'}, + {name='sprintMD'}, + {name='sprintSym'}, + {name='sprintLock'}, + {name='sprintFix'}, + }, } diff --git a/parts/scenes/mode.lua b/parts/scenes/mode.lua index 87e917d9..076c89b7 100644 --- a/parts/scenes/mode.lua +++ b/parts/scenes/mode.lua @@ -1,16 +1,14 @@ local gc=love.graphics local gc_push,gc_pop=gc.push,gc.pop -local gc_translate,gc_scale,gc_rotate,gc_shear=gc.translate,gc.scale,gc.rotate,gc.shear -local gc_setCanvas,gc_setShader,gc_setBlendMode=gc.setCanvas,gc.setShader,gc.setBlendMode +local gc_translate=gc.translate local gc_setColor,gc_setLineWidth=gc.setColor,gc.setLineWidth local gc_draw,gc_line=gc.draw,gc.line -local gc_rectangle,gc_circle,gc_polygon=gc.rectangle,gc.circle,gc.polygon +local gc_rectangle,gc_circle=gc.rectangle,gc.circle local gc_print,gc_printf=gc.print,gc.printf local gc_stencil,gc_setStencilTest=gc.stencil,gc.setStencilTest local max,min=math.max,math.min -local int,abs=math.floor,math.abs -local rnd=math.random +local int=math.floor local ins=table.insert @@ -23,10 +21,6 @@ local selectedItem local path={} local pathStr="/" -local function _comp(a,b) - return a.type~=b.type and a.type=='folder' -end - function _setPos(self,x,y,dx,dy) self.x0,self.y0=x,y self.x,self.y=x+dx,y+dy @@ -46,7 +40,7 @@ end local _backItem={folder=true,name='_back'} local function _freshPacks() - TABLE.cut(results) + --Change directory local t=MODETREE for i=1,#path do for j=1,#t do @@ -56,19 +50,33 @@ local function _freshPacks() end end end - local count=0 + + --Get items with searchText + local r={} if path[1]then - ins(results,_newItem(_backItem)) - count=1 + ins(r,_newItem(_backItem)) end for i=1,#t do local item=t[i] if #searchText==0 or item.name:find(searchText)then - ins(results,_newItem(item)) - count=count+1 + ins(r,_newItem(item)) end end - table.sort(results,_comp) + + --Add items in correct order + TABLE.cut(results) + for i=1,#r do + if r[i].type=='folder'then + ins(results,r[i]) + end + end + for i=1,#r do + if r[i].type~='folder'then + ins(results,r[i]) + end + end + + --Set items' positions for i=0,#results-1 do results[i+1]:setPos(180*(i%4),200*int(i/4),15*i,i) end