Compare commits

...

2 Commits

Author SHA1 Message Date
Pascal Abresch 3ccbb66b2d bubbles 2023-11-04 15:15:35 +01:00
Pascal Abresch 609e7ed5fe add layout.labelWShadow
This shouuld be removed later, this is a "cheap" hack
for text shadows and should be done with a GLSL shader properly
2023-11-04 15:14:58 +01:00
2 changed files with 105 additions and 19 deletions

View File

@ -270,6 +270,29 @@ function layout.overlayRect(container, x, y, simulate)
end
function layout.labelWShadow(container, x, y, simulate)
-- TODO: Replace this with a text shadow shader FFS
if not container.font then container.font = fonts.normalFont end
local text = love.graphics.newText( container.font, container.text )
if not text then text = love.graphics.newText( container.font, "Unset text!!") end
if not simulate then
utils.color_push()
love.graphics.setColor(0,0,0)
love.graphics.draw(text, x, y +4)
love.graphics.draw(text, x, y +2)
love.graphics.draw(text, x, y +0)
love.graphics.draw(text, x +2, y +2)
love.graphics.draw(text, x +2, y +0)
love.graphics.draw(text, x +4, y +4)
love.graphics.draw(text, x +4, y +2)
love.graphics.draw(text, x +4, y +0)
utils.color_pop()
love.graphics.draw(text, x +2, y +2)
end
return x + text:getWidth() + 2, y + text:getHeight() +2
end
function layout.label(container, x, y, simulate)
if not container.font then container.font = fonts.normalFont end
local text = love.graphics.newText( container.font, container.text )
@ -278,6 +301,7 @@ function layout.label(container, x, y, simulate)
love.graphics.draw(text, x, y)
end
return x + text:getWidth(), y + text:getHeight()
end

View File

@ -33,11 +33,6 @@ function menu.keypressed(key, _)
end
function menu.update(dt)
love.timer.sleep((1/60) -dt)
end
function menu.resize()
menu.width, menu.height = love.window.getMode()
menu.Canvas = love.graphics.newCanvas(width, height)
@ -108,11 +103,11 @@ menu.serverentry = function(id, description, host, port)
{name = "horizontal",
{name = "drawTexture", texture = love.graphics.newImage("textures/menu/serverPlay.png")},
{name = "spacer", width = 10 },
{name = "label", text = description },
{name = "labelWShadow", text = description },
{name = "spacer", width = 20 },
{name = "label", text = "host: ".. host, font = fonts.smallFont},
{name = "labelWShadow", text = "host: ".. host, font = fonts.smallFont},
{name = "spacer", width = 10 },
{name = "label", text = "port:".. port, font = fonts.smallFont},
{name = "labelWShadow", text = "port:".. port, font = fonts.smallFont},
}
}
end
@ -131,7 +126,7 @@ menu.menuMessage = function(message)
if not message then return {name = "skip"} end
return {name = "color",
color = { 1, .5, .5, 1},
{name = "label", font = fonts.bigFont, text = "Welcome to poppy!"}
{name = "labelWShadow", font = fonts.bigFont, text = "Welcome to poppy!"}
}
end
@ -141,7 +136,7 @@ menu.layout = function(message)
{name = "horizontal",
{name = "spacer", width = 20},
{name = "drawTexture", texture = love.graphics.newImage("ressources/Poppy.png")},
{name = "label", font = fonts.bigFont, text = "Welcome to poppy!"},
{name = "labelWShadow", font = fonts.bigFont, text = "Welcome to poppy!"},
},
menu.menuMessage(message),
{name = "horizontal",
@ -156,7 +151,7 @@ menu.layout = function(message)
texture = love.graphics.newImage("textures/menu/serverPlay.png")
},
{name = "spacer", width = 10},
{name = "label", text = "Spin up a local server"},
{name = "labelWShadow", text = "Spin up a local server"},
}
},
{name = "cursorSelect", kind = "localServer",
@ -167,11 +162,11 @@ menu.layout = function(message)
texture = love.graphics.newImage("textures/menu/serverPlay.png")
},
{name = "spacer", width = 10},
{name = "label", text = "Spin up a local server [IPV4]"},
{name = "labelWShadow", text = "Spin up a local server [IPV4]"},
}
},
{name = "spacer", height = 20},
{name = "label", text = "Or pick a server to join!", font = fonts.headerFont},
{name = "labelWShadow", text = "Or pick a server to join!", font = fonts.headerFont},
{name = "spacer", height = 20},
{name = "horizontal",
{name = "spacer", width = 10},
@ -184,11 +179,11 @@ menu.layout = function(message)
{name = "horizontal",
{name = "drawTexture", texture = love.graphics.newImage("textures/menu/AddIcon.png")},
{name = "spacer", width = 10 },
{name = "label", text = "placeholder (new server)" },
{name = "labelWShadow", text = "placeholder (new server)" },
{name = "spacer", width = 20 },
{name = "label", text = "host: newhost", font = fonts.smallFont},
{name = "labelWShadow", text = "host: newhost", font = fonts.smallFont},
{name = "spacer", width = 10 },
{name = "label", text = "port: newport", font = fonts.smallFont},
{name = "labelWShadow", text = "port: newport", font = fonts.smallFont},
}
}
}
@ -210,22 +205,89 @@ function drawMenu(message)
end
function menu.draw(w, h)
local colortable = {
{234/255, 155/255, 254/255, .8}, --pinkish
{156/255, 154/255, 251/255, .8}, --blueish
{242/255, 228/255, 148/255, .8}, --orange yellowish
{255/255, 156/255, 182/255, .8}, --magenta/orange
{145/255, 237/255, 216/255, .8}
}
local bubbles = {}
function menu.draw()
for i=1, #bubbles do
drawBubble(bubbles[i])
end
love.graphics.draw(menu.Canvas)
end
function menu.update(dt)
for i=1, #bubbles do
local bubble = bubbles[i]
local sx = bubble.sx * dt
local sy = bubble.sy * dt
local bubble = bubbles[i]
bubble.x = bubble.x + sx
bubble.y = bubble.y + sy
if bubble.x + bubble.radius >= menu.width then
bubble.x = menu.width - bubble.radius
bubble.sx = -bubble.sx
end
if bubble.x - bubble.radius <= 0 then
bubble.x = bubble.radius
bubble.sx = -bubble.sx
end
if bubble.y - bubble.radius <= 0 then
bubble.y = bubble.radius
bubble.sy = -bubble.sy
end
if bubble.y + bubble.radius >= menu.height then
bubble.y = menu.height - bubble.radius
bubble.sy = -bubble.sy
end
end
love.timer.sleep((1/60) -dt)
end
function drawBubble(bubble)
utils.color_push()
love.graphics.setColor(bubble.color[1]* .6, bubble.color[2] * .6, bubble.color[3] * .6)
love.graphics.circle("fill", bubble.x, bubble.y, bubble.radius )
love.graphics.setColor(bubble.color[1]* .9, bubble.color[2] * .9, bubble.color[3] * .9)
love.graphics.circle("fill", bubble.x, bubble.y, bubble.radius -3 )
love.graphics.setColor(bubble.color)
love.graphics.circle("fill", bubble.x, bubble.y, bubble.radius/2 )
utils.color_pop()
end
function menu.init(message)
print("init menu")
menuMusic:play()
menu.width, menu.height = love.window.getMode()
print("init menu")
math.randomseed(os.time())
for i=1,24 do
local bubble = {}
bubble.radius = 10 + math.floor(math.random() * 30)
print(math.floor(1 + math.random() * #colortable - 0.001))
bubble.color = colortable[math.floor(1 + math.random() * #colortable - 0.001)]
bubble.y = bubble.radius + math.floor(math.random() * (menu.height - (2* bubble.radius)))
bubble.x = bubble.radius + math.floor(math.random() * (menu.width - (2* bubble.radius)))
bubble.sx = 20 - math.random() * 40
bubble.sy = 20 - math.random() * 40
table.insert(bubbles, bubble)
end
menuMusic:play()
menu.Canvas = love.graphics.newCanvas(menu.width, menu.height)
drawMenu(message)
love.draw = menu.draw
love.update = menu.update
love.keyreleased = menu.keyreleased
love.keypressed = menu.keypressed
love.mousepressed = menu.mousepressed
print("inited menu")
end
return menu