From e1e1f5d58f68ffc03e8010f164f8aa4d605f3b63 Mon Sep 17 00:00:00 2001 From: Chris B <1029chris@gmail.com> Date: Thu, 25 Feb 2016 20:05:39 -0800 Subject: Rewrote layer system, I hope it works this time... --- window.lua | 302 ++++++++++++++++++++++++++----------------------------------- 1 file changed, 126 insertions(+), 176 deletions(-) (limited to 'window.lua') diff --git a/window.lua b/window.lua index 7cb9bbd..16f3911 100644 --- a/window.lua +++ b/window.lua @@ -25,13 +25,13 @@ function drawWindow(id) win[id].update = false end if(sys.mouse.x >= win[id].x and sys.mouse.x <= win[id].x+win[id].w - and sys.mouse.y >= win[id].y and sys.mouse.y <= win[id].y+win[id].h) then + and sys.mouse.y >= win[id].y and sys.mouse.y <= win[id].y+win[id].h and win[id].ex == false) then win[id].hov = true winHover = true else win[id].hov = false end - if layer[1] ~= 0 then + if layer[1] ~= 0 and win[id].ex == false then if win[id].layer ~= 1 and win[layer[1]].hov == true then win[id].hover = false elseif win[id].layer ~= 1 and win[id].layer ~= 2 and layer[1] ~= 0 and layer[2] ~= 0 then @@ -52,14 +52,16 @@ function drawWindow(id) if sys.mouse.y >= sys.h-panel.thick then win[id].hover = false end + if win[id].ex == true then + win[id].hover = false + end if(sys.mouse.p.x >= win[id].x and sys.mouse.p.x <= win[id].x+win[id].w and sys.mouse.p.y >= win[id].y and sys.mouse.p.y <= win[id].y+win[id].h) then else win[id].hover = false end if win[id].hover == true and sys.mouse.p.p == true and sys.mouse.drag == false then - win[id].oldlayer = win[id].layer - win[id].layer = 1 + layer.sentToFront = id end if(sys.mouse.p.p == true and sys.mouse.p.x >= win[id].x+2 and sys.mouse.p.x <= (win[id].x+2)+(win[id].w-44) and sys.mouse.p.y >= win[id].y+2 and sys.mouse.p.y <= win[id].y+22 and win[id].hover == true) then @@ -109,115 +111,27 @@ function drawWindow(id) end love.graphics.setColor(255,255,255) end -function orderWindow(id) - if win[id].ex == true and win[id].s == 0 then - if layer[1] == id then - layer[1] = 0 - end - if layer[2] == id then - layer[2] = 0 - end - if layer[3] == id then - layer[3] = 0 - end - if layer[4] == id then - layer[4] = 0 - end - if layer[5] == id then - layer[5] = 0 - end - if layer[6] == id then - layer[6] = 0 - end - if layer[7] == id then - layer[7] = 0 - end - win[id].oldlayer = win[id].layer - win[id].layer = 0 - end - if win[id].ex == true then - win[id].hover = false - end - if win[id].ex == true and win[id].s == 0 then - win[id].oldlayer = win[id].layer - win[id].layer = 0 - win[id].panel = 0 - if panel.b[1] == id then - panel.b[1] = panel.b[2] - panel.b[2] = panel.b[3] - panel.b[3] = panel.b[4] - panel.b[4] = panel.b[5] - panel.b[5] = panel.b[6] - panel.b[6] = panel.b[7] - elseif panel.b[2] == id then - panel.b[2] = panel.b[3] - panel.b[3] = panel.b[4] - panel.b[4] = panel.b[5] - panel.b[5] = panel.b[6] - panel.b[6] = panel.b[7] - elseif panel.b[3] == id then - panel.b[3] = panel.b[4] - panel.b[4] = panel.b[5] - panel.b[5] = panel.b[6] - panel.b[6] = panel.b[7] - elseif panel.b[4] == id then - panel.b[4] = panel.b[5] - panel.b[5] = panel.b[6] - panel.b[6] = panel.b[7] - elseif panel.b[5] == id then - panel.b[5] = panel.b[6] - panel.b[6] = panel.b[7] - elseif panel.b[6] == id then - panel.b[6] = panel.b[7] - end - elseif win[id].ex == false or win[id].s ~= 0 then - if layer[1] == 0 and layer[2] == id then - layer[1] = id - win[id].oldlayer = win[id].layer - win[id].layer = 1 - elseif layer[1] == 0 and layer[2] == 0 and layer[3] == id then - layer[1] = id - win[id].oldlayer = win[id].layer - win[id].layer = 1 - elseif layer[1] == 0 and layer[2] == 0 and layer[3] == 0 and layer[4] == id then - layer[1] = id - win[id].oldlayer = win[id].layer - win[id].layer = 1 - elseif(layer[1] == 0 and layer[2] == 0 and layer[3] == 0 and layer[4] == 0 - and layer[5] == id) then - layer[1] = id - win[id].oldlayer = win[id].layer - win[id].layer = 1 - elseif(layer[1] == 0 and layer[2] == 0 and layer[3] == 0 and layer[4] == 0 - and layer[5] == 0 and layer[6] == id) then - layer[1] = id - win[id].oldlayer = win[id].layer - win[id].layer = 1 - elseif(layer[1] == 0 and layer[2] == 0 and layer[3] == 0 and layer[4] == 0 - and layer[5] == 0 and layer[6] == 0 and layer[7] == id) then - layer[1] = id - win[id].oldlayer = win[id].layer - win[id].layer = 1 - elseif layer[1] ~= id and win[id].layer == 1 then - if win[id].oldlayer == 2 then +function orderWindows() + if layer.sentToFront ~= 0 and layer[1] ~= layer.sentToFront then + if win[layer.sentToFront].oldlayer == 2 then layer[2] = layer[1] layer[1] = id - elseif win[id].oldlayer == 3 then + elseif win[layer.sentToFront].oldlayer == 3 then layer[3] = layer[2] layer[2] = layer[1] layer[1] = id - elseif win[id].oldlayer == 4 then + elseif win[layer.sentToFront].oldlayer == 4 then layer[4] = layer[3] layer[3] = layer[2] layer[2] = layer[1] layer[1] = id - elseif win[id].oldlayer == 5 then + elseif win[layer.sentToFront].oldlayer == 5 then layer[5] = layer[4] layer[4] = layer[3] layer[3] = layer[2] layer[2] = layer[1] layer[1] = id - elseif win[id].oldlayer == 6 then + elseif win[layer.sentToFront].oldlayer == 6 then layer[6] = layer[5] layer[5] = layer[4] layer[4] = layer[3] @@ -233,90 +147,126 @@ function orderWindow(id) layer[2] = layer[1] layer[1] = id end - win[id].layer = 1 - if layer[7] ~= 0 then - win[layer[7]].oldlayer = win[layer[7]].layer - win[layer[7]].layer = 7 - end - if layer[6] ~= 0 then - win[layer[6]].oldlayer = win[layer[6]].layer - win[layer[6]].layer = 6 - end - if layer[5] ~= 0 then - win[layer[5]].oldlayer = win[layer[5]].layer - win[layer[5]].layer = 5 - end - if layer[4] ~= 0 then - win[layer[4]].oldlayer = win[layer[4]].layer - win[layer[4]].layer = 4 - end - if layer[3] ~= 0 then - win[layer[3]].oldlayer = win[layer[3]].layer - win[layer[3]].layer = 3 - end - if layer[2] ~= 0 then - win[layer[2]].oldlayer = win[layer[2]].layer - win[layer[2]].layer = 2 - end - if layer[1] ~= 0 then - win[layer[1]].oldlayer = win[layer[1]].layer - win[layer[1]].layer = 1 - end - end - if layer[2] == id and win[id].layer ~= 2 and layer[1] == id then - layer[2] = 0 - end - if layer[3] == id and win[id].layer ~= 3 and layer[1] == id then - layer[3] = 0 - end - if layer[4] == id and win[id].layer ~= 4 and layer[1] == id then - layer[4] = 0 - end - if layer[5] == id and win[id].layer ~= 5 and layer[1] == id then - layer[5] = 0 - end - if layer[6] == id and win[id].layer ~= 6 and layer[1] == id then - layer[6] = 0 - end - if layer[7] == id and win[id].layer ~= 7 and layer[1] == id then - layer[7] = 0 - end - if panel.b[1] == 0 then - panel.b[1] = id - elseif panel.b[2] == 0 and panel.b[1] ~= id then - panel.b[2] = id - elseif panel.b[3] == 0 and panel.b[1] ~= id and panel.b[2] ~= id then - panel.b[3] = id - elseif (panel.b[4] == 0 and panel.b[1] ~= id and panel.b[2] ~= id - and panel.b[3] ~= id) then - panel.b[4] = id - elseif (panel.b[5] == 0 and panel.b[1] ~= id and panel.b[2] ~= id - and panel.b[3] ~= id and panel.b[4] ~= id) then - panel.b[5] = id - elseif (panel.b[6] == 0 and panel.b[1] ~= id and panel.b[2] ~= id - and panel.b[3] ~= id and panel.b[4] ~= id and panel.b[5] ~= id) then - panel.b[6] = id - end - drawWindow(id) + layer[1] = layer.sentToFront + win[layer.sentToFront].oldlayer = win[layer.sentToFront].layer + win[layer.sentToFront].layer = 1 + layer.sentToFront = 0 end - if layer[2] == 0 and layer[3] ~= 0 then - layer[2] = layer[3] - layer[3] = 0 + closeWindow(1) + closeWindow(2) + closeWindow(3) + closeWindow(4) + closeWindow(5) + closeWindow(6) + if layer[6] == 0 and layer[7] ~= 0 then + layer[6] = layer[7] + layer[7] = 0 end - if layer[3] == 0 and layer[4] ~= 0 then - layer[3] = layer[4] - layer[4] = 0 + if layer[5] == 0 and layer[6] ~= 0 then + layer[5] = layer[6] + layer[6] = 0 end if layer[4] == 0 and layer[5] ~= 0 then layer[4] = layer[5] layer[5] = 0 end - if layer[5] == 0 and layer[6] ~= 0 then - layer[5] = layer[6] - layer[6] = 0 + if layer[3] == 0 and layer[4] ~= 0 then + layer[3] = layer[4] + layer[4] = 0 end - if layer[6] == 0 and layer[7] ~= 0 then - layer[6] = layer[7] - layer[7] = 0 + if layer[2] == 0 and layer[3] ~= 0 then + layer[2] = layer[3] + layer[3] = 0 + end + if layer[1] == 0 and layer[2] ~= 0 then + layer[1] = layer[2] + layer[2] = 0 + end + setWindow(6) + setWindow(5) + setWindow(4) + setWindow(3) + setWindow(2) + setWindow(1) + setPanel(1) + setPanel(2) + setPanel(3) + setPanel(4) + setPanel(5) + setPanel(6) + drawWindow(1) + drawWindow(2) + drawWindow(3) + drawWindow(4) + drawWindow(5) + drawWindow(6) +end +function setWindow(id) + if layer[id] ~= 0 then + win[layer[id]].oldlayer = win[layer[id]].layer + win[layer[id]].layer = id + end +end +function setPanel(id) + if win[id].ex == false then + if panel.b[1] == 0 then + panel.b[1] = id + elseif panel.b[2] == 0 and panel.b[1] ~= id then + panel.b[2] = id + elseif panel.b[3] == 0 and panel.b[1] ~= id and panel.b[2] ~= id then + panel.b[3] = id + elseif (panel.b[4] == 0 and panel.b[1] ~= id and panel.b[2] ~= id + and panel.b[3] ~= id) then + panel.b[4] = id + elseif (panel.b[5] == 0 and panel.b[1] ~= id and panel.b[2] ~= id + and panel.b[3] ~= id and panel.b[4] ~= id) then + panel.b[5] = id + elseif (panel.b[6] == 0 and panel.b[1] ~= id and panel.b[2] ~= id + and panel.b[3] ~= id and panel.b[4] ~= id and panel.b[5] ~= id) then + panel.b[6] = id + end + end + if win[id].ex == true then + if panel.b[1] == id then + panel.b[1] = panel.b[2] + panel.b[2] = panel.b[3] + panel.b[3] = panel.b[4] + panel.b[4] = panel.b[5] + panel.b[5] = panel.b[6] + panel.b[6] = panel.b[7] + elseif panel.b[2] == id then + panel.b[2] = panel.b[3] + panel.b[3] = panel.b[4] + panel.b[4] = panel.b[5] + panel.b[5] = panel.b[6] + panel.b[6] = panel.b[7] + elseif panel.b[3] == id then + panel.b[3] = panel.b[4] + panel.b[4] = panel.b[5] + panel.b[5] = panel.b[6] + panel.b[6] = panel.b[7] + elseif panel.b[4] == id then + panel.b[4] = panel.b[5] + panel.b[5] = panel.b[6] + panel.b[6] = panel.b[7] + elseif panel.b[5] == id then + panel.b[5] = panel.b[6] + panel.b[6] = panel.b[7] + elseif panel.b[6] == id then + panel.b[6] = panel.b[7] + end + end +end +function closeWindow(id) + if win[id].ex == true and win[id].s == 0 then + win[id].exit = true + win[id].oldlayer = win[id].layer + else + win[id].exit = false + end + if win[id].layer ~= 0 and win[id].exit == true then + layer[win[id].layer] = 0 + win[id].oldlayer = win[id].layer + win[id].layer = 0 end end -- cgit