aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--panel.lua3
-rw-r--r--startmenu.lua2
-rw-r--r--system.lua7
-rw-r--r--var.lua2
-rw-r--r--window.lua302
5 files changed, 131 insertions, 185 deletions
diff --git a/panel.lua b/panel.lua
index ef77d1b..5e381a1 100644
--- a/panel.lua
+++ b/panel.lua
@@ -8,8 +8,7 @@ function drawPanelButton(id)
and sys.mouse.p.x <= (panel.s.x+72+(137*id-137))+(panel.s.width*2)
and sys.mouse.p.y >= panel.s.y and sys.mouse.p.y <= panel.s.y+panel.s.height) then
if win[panel.b[id]].min == false then
- win[panel.b[id]].oldlayer = win[panel.b[id]].layer
- win[panel.b[id]].layer = 1
+ layer.sentToFront = panel.b[id]
elseif win[panel.b[id]].min == true then
win[panel.b[id]].min = false
win[panel.b[id]].oldlayer = win[panel.b[id]].layer
diff --git a/startmenu.lua b/startmenu.lua
index 69fd0c0..a49d5bd 100644
--- a/startmenu.lua
+++ b/startmenu.lua
@@ -9,7 +9,7 @@ function drawMenuItems(id)
win[id].ex = false
win[id].s = 0.2
win[id].oldlayer = win[id].layer
- win[id].layer = 1
+ layer.sentToFront = id
end
else
love.graphics.rectangle("fill", 35, 5+(id*55-55), 208, 50)
diff --git a/system.lua b/system.lua
index d9203eb..cf97133 100644
--- a/system.lua
+++ b/system.lua
@@ -6,12 +6,7 @@ end
function drawSystem()
love.graphics.setBackgroundColor(0, 128, 128)
drawDesktop()
- orderWindow(1)
- orderWindow(2)
- orderWindow(3)
- orderWindow(4)
- orderWindow(5)
- orderWindow(6)
+ orderWindows()
if (win[1].hov == false and win[2].hov == false and win[3].hov == false
and win[4].hov == false and win[5].hov == false and win[6].hov == false) then
winHover = false
diff --git a/var.lua b/var.lua
index 5edaf33..111f69e 100644
--- a/var.lua
+++ b/var.lua
@@ -20,6 +20,7 @@ function loadWin(id, w, h, title, ico)
win[id].hover = false
win[id].update = true
win[id].icon = ico
+ win[id].exit = true
end
function loadVar()
sys = {}
@@ -80,6 +81,7 @@ function loadVar()
layer[5] = 0
layer[6] = 0
layer[7] = 0
+ layer.sentToFront = 0
desktop.bg.current = 0
fade = 0
fadeOpacity = 0
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