From e9da50897fd7c260124ebc39d6dfdad3014ea5fa Mon Sep 17 00:00:00 2001 From: Hannah-Dagemark Date: Mon, 4 Sep 2023 14:17:48 +0200 Subject: [PATCH] Menu additions and Function - Menu now has buttons - Menu buttons will change color when hovered over - Menu "start" button now changes stage to the Game Test --- main.lua | 9 ++-- menu.lua | 104 ++++++++++++++++++++++++++++++++++++++++++--- scripts/fonts.lua | 3 +- scripts/inputs.lua | 10 +++++ scripts/items.lua | 8 ++++ weapons.lua | 0 6 files changed, 123 insertions(+), 11 deletions(-) create mode 100644 scripts/inputs.lua create mode 100644 scripts/items.lua delete mode 100644 weapons.lua diff --git a/main.lua b/main.lua index ee8bf3c..ae51e00 100644 --- a/main.lua +++ b/main.lua @@ -8,14 +8,15 @@ functiongenerator = {} check_space = {} function love.load() + window = {} + window.x, window.y = love.window.getDesktopDimensions() math.randomseed(os.time()) Scene = "menu" + inputs_ini = require('scripts/inputs') physics_ini = require('physics') menu_ini = require('menu') menu.load() - window = {} NPCs = {} - window.x, window.y = love.window.getDesktopDimensions() ground = { x = 0, y = window.y, @@ -52,7 +53,9 @@ function love.update(dt) end function love.draw() - if Scene == "gameTest" then + love.graphics.print(Scene, 100, 100) + if Scene == "gameTest" then + if love.graphics.getColor() ~= 1 then love.graphics.setColor(1, 1, 1) end love.graphics.rectangle("line", player.x, player.y, player.width, player.height) if player.bools.isFacingRight then love.graphics.rectangle("line", player.x+10, player.y-20, 20, 20) diff --git a/menu.lua b/menu.lua index 5add5e9..56461bf 100644 --- a/menu.lua +++ b/menu.lua @@ -1,38 +1,128 @@ -menu = {} +menu = { + subScene = "intro" +} +menuButtons = { + Start = {}, + Settings = {}, + Quit = {} +} font_ini = require('scripts/fonts') function menu.load() RGB = 1 + RGB_hover = 0.5 titleCard = { duration = false, mainTitle = { - text = love.graphics.newText(Effexor_Intro, "Void Shot"), + intro_text = love.graphics.newText(Effexor_Intro, "Void Shot"), + main_text = love.graphics.newText(Effexor_menu, "Void Shot"), y = 250, fallingRate = 2 }, secondTitle = { - text = love.graphics.newText(ScratchedCarPaint_Intro, "Endless Desert"), + intro_text = love.graphics.newText(ScratchedCarPaint_Intro, "Endless Desert"), + main_text = love.graphics.newText(ScratchedCarPaint_menu, "Endless Desert"), y = 500, fallingRate = 2 }, targetTime = 1, elapsedTime = 0 } + menuButtons = { + Start = { + x = window.x/2 - 100, + y = window.y / 2 - 200, + width = 200, + height = 75, + text = love.graphics.newText(Effexor_buttons, "Enter") + }, + Settings = { + x = window.x/2 - 100, + y = window.y / 2, + width = 200, + height = 75, + text = love.graphics.newText(Effexor_buttons, "Settings") + }, + Quit = { + x = window.x/2 - 100, + y = window.y / 2 + 200, + width = 200, + height = 75, + text = love.graphics.newText(Effexor_buttons, "Abandon") + } + } end function menu.update(dt) if titleCard.duration == true then titleCardUpdate(dt) + if titleCard.elapsedTime >= titleCard.targetTime then + menu.subScene = "main" + RGB = 1 + titleCard.mainTitle.y = 0 + titleCard.secondTitle.y = 100 + titleCard.duration = false + titleCard.elapsedTime = 0 + titleCard.targetTime = 1 + end + end + if menu.subScene == "main" and love.mouse.isDown(1) then + if mouseOver(menuButtons.Start) then menu.subScene = "end" end + if mouseOver(menuButtons.Settings) then menu.subScene = "settings" end + if mouseOver(menuButtons.Quit) then menu.subScene = "exit" end + end + if menu.subScene == "end" then + if titleCard.elapsedTime < titleCard.targetTime then + titleCard.elapsedTime = titleCard.elapsedTime + love.timer.getDelta() + else + Scene = "gameTest" + end end end function menu.draw() - love.graphics.setColor(RGB, RGB, RGB) - love.graphics.draw(titleCard.mainTitle.text, window.x/2 - titleCard.mainTitle.text:getDimensions()/2, titleCard.mainTitle.y) - love.graphics.draw(titleCard.secondTitle.text, window.x/2 - titleCard.secondTitle.text:getDimensions()*0.5/2, titleCard.secondTitle.y, 0, 0.5, 0.65) + love.graphics.print(menu.subScene, 100, 200) + if menu.subScene == "intro" then + love.graphics.setColor(RGB, RGB, RGB) + love.graphics.draw(titleCard.mainTitle.intro_text, window.x/2 - titleCard.mainTitle.intro_text:getDimensions()/2, titleCard.mainTitle.y) + love.graphics.draw(titleCard.secondTitle.intro_text, window.x/2 - titleCard.secondTitle.intro_text:getDimensions()*0.5/2, titleCard.secondTitle.y, 0, 0.5, 0.65) + elseif menu.subScene == "main" then + love.graphics.setColor(RGB, RGB, RGB) + love.graphics.draw(titleCard.mainTitle.main_text, window.x/2 - titleCard.mainTitle.main_text:getDimensions()/2, titleCard.mainTitle.y) + love.graphics.draw(titleCard.secondTitle.main_text, window.x/2 - titleCard.secondTitle.main_text:getDimensions()*0.5/2, titleCard.secondTitle.y, 0, 0.5, 0.65) + + -- buttons + if mouseOver(menuButtons.Start) then love.graphics.setColor(RGB_hover, RGB_hover, RGB_hover) else love.graphics.setColor(RGB, RGB, RGB) end + love.graphics.draw(menuButtons.Start.text, menuButtons.Start.x, menuButtons.Start.y) + love.graphics.rectangle("line", menuButtons.Start.x, menuButtons.Start.y, menuButtons.Start.width, menuButtons.Start.height) + + if mouseOver(menuButtons.Settings) then love.graphics.setColor(RGB_hover, RGB_hover, RGB_hover) else love.graphics.setColor(RGB, RGB, RGB) end + love.graphics.draw(menuButtons.Settings.text, menuButtons.Settings.x, menuButtons.Settings.y) + love.graphics.rectangle("line", menuButtons.Settings.x, menuButtons.Settings.y, menuButtons.Settings.width, menuButtons.Settings.height) + + if mouseOver(menuButtons.Quit) then love.graphics.setColor(RGB_hover, RGB_hover, RGB_hover) else love.graphics.setColor(RGB, RGB, RGB) end + love.graphics.draw(menuButtons.Quit.text, menuButtons.Quit.x, menuButtons.Quit.y) + love.graphics.rectangle("line", menuButtons.Quit.x, menuButtons.Quit.y, menuButtons.Quit.width, menuButtons.Quit.height) + love.graphics.setColor(RGB, RGB, RGB) + elseif menu.subScene == "end" then + love.graphics.setColor(1,0,0) + + love.graphics.draw(titleCard.mainTitle.main_text, window.x/2 - titleCard.mainTitle.main_text:getDimensions()/2, titleCard.mainTitle.y) + love.graphics.draw(titleCard.secondTitle.main_text, window.x/2 - titleCard.secondTitle.main_text:getDimensions()*0.5/2, titleCard.secondTitle.y, 0, 0.5, 0.65) + + love.graphics.draw(menuButtons.Start.text, menuButtons.Start.x, menuButtons.Start.y) + love.graphics.rectangle("line", menuButtons.Start.x, menuButtons.Start.y, menuButtons.Start.width, menuButtons.Start.height) + + love.graphics.draw(menuButtons.Settings.text, menuButtons.Settings.x, menuButtons.Settings.y) + love.graphics.rectangle("line", menuButtons.Settings.x, menuButtons.Settings.y, menuButtons.Settings.width, menuButtons.Settings.height) + + love.graphics.draw(menuButtons.Quit.text, menuButtons.Quit.x, menuButtons.Quit.y) + love.graphics.rectangle("line", menuButtons.Quit.x, menuButtons.Quit.y, menuButtons.Quit.width, menuButtons.Quit.height) + + end end function titleCardUpdate(dt) - if RGB > 0.001 then + if RGB > 0 then titleCard.elapsedTime = titleCard.elapsedTime + dt RGB = 1 - (titleCard.elapsedTime/titleCard.targetTime) print(RGB) diff --git a/scripts/fonts.lua b/scripts/fonts.lua index 0c062d3..2cec818 100644 --- a/scripts/fonts.lua +++ b/scripts/fonts.lua @@ -2,5 +2,6 @@ CloisterBlackLight = love.graphics.newFont("GFX/fonts/CloisterBlackLight-axjg.tt Dearkatie = love.graphics.newFont("GFX/fonts/Dearkatienbp-nZeg.ttf", 20) Effexor_Intro = love.graphics.newFont("GFX/fonts/Effexor-AEm.ttf", 250) Effexor_menu = love.graphics.newFont("GFX/fonts/Effexor-AEm.ttf", 100) +Effexor_buttons = love.graphics.newFont("GFX/fonts/Effexor-AEm.ttf", 50) ScratchedCarPaint_Intro = love.graphics.newFont("GFX/fonts/ScratchedCarPaint-Kd57.ttf", 100) -ScratchedCarPaint = love.graphics.newFont("GFX/fonts/ScratchedCarPaint-Kd57.ttf", 50) \ No newline at end of file +ScratchedCarPaint_menu = love.graphics.newFont("GFX/fonts/ScratchedCarPaint-Kd57.ttf", 50) \ No newline at end of file diff --git a/scripts/inputs.lua b/scripts/inputs.lua new file mode 100644 index 0000000..7719145 --- /dev/null +++ b/scripts/inputs.lua @@ -0,0 +1,10 @@ +function mouseOver(object) + local mx, my = love.mouse.getPosition() + local time = 0 + if mx > object.x and mx < object.x + object.width then + if my > object.y and my < object.y + object.height then + return true + end + end + return false +end \ No newline at end of file diff --git a/scripts/items.lua b/scripts/items.lua new file mode 100644 index 0000000..3e4ffdf --- /dev/null +++ b/scripts/items.lua @@ -0,0 +1,8 @@ +function item.create(type, commands) + local object = {} + for i = 1, #commands do + object[commands] + i = i + 1 + end + return object +end \ No newline at end of file diff --git a/weapons.lua b/weapons.lua deleted file mode 100644 index e69de29..0000000