From e5a06c347b813b1dceff396ce0bec1de4ff2c1fa Mon Sep 17 00:00:00 2001 From: Kazhnuz Date: Sat, 9 Mar 2019 21:56:03 +0100 Subject: [PATCH] scenes/mainmenu: initial version of a simple "main menu" --- imperium-porcorum.love/main.lua | 2 +- .../scenes/debugmenu/init.lua | 4 +- .../scenes/debugmenu/mainmenu.lua | 87 +++++++++++++++++++ .../scenes/debugmenu/menus.lua | 4 +- 4 files changed, 93 insertions(+), 4 deletions(-) create mode 100644 imperium-porcorum.love/scenes/debugmenu/mainmenu.lua diff --git a/imperium-porcorum.love/main.lua b/imperium-porcorum.love/main.lua index f098ded..dcbc9b8 100644 --- a/imperium-porcorum.love/main.lua +++ b/imperium-porcorum.love/main.lua @@ -18,7 +18,7 @@ function love.load() -- On charge la scene de départ (pour l'instant le menu, b game = Game() game.pigmanager:addPig("cochon") - scenes.WorldMap() + scenes.MainMenu() end function love.update(dt) diff --git a/imperium-porcorum.love/scenes/debugmenu/init.lua b/imperium-porcorum.love/scenes/debugmenu/init.lua index 5fb21dd..2c15def 100644 --- a/imperium-porcorum.love/scenes/debugmenu/init.lua +++ b/imperium-porcorum.love/scenes/debugmenu/init.lua @@ -43,7 +43,7 @@ function MainMenu:createBackground( filename, emblem_filename ) end local w, h = Emblem:getDimensions() - love.graphics.draw(Emblem, screenwidth/2, screenheight/2, 0, 1, 1, w/2, h/2) + love.graphics.draw(Emblem, screenwidth*5/16, screenheight*10/16, 0, 1, 1, w/2, h/2) love.graphics.setCanvas( ) end @@ -56,6 +56,8 @@ function MainMenu:selectMenu(menuID) error("ERROR, menu " .. menuID .. " doesn't exist in scene menusystem") end + self.menusystem.menus["main"].isVisible = true + self.menusystem.menus[menuID].isVisible = true self.menusystem.menus[menuID].isActive = true diff --git a/imperium-porcorum.love/scenes/debugmenu/mainmenu.lua b/imperium-porcorum.love/scenes/debugmenu/mainmenu.lua new file mode 100644 index 0000000..baffeeb --- /dev/null +++ b/imperium-porcorum.love/scenes/debugmenu/mainmenu.lua @@ -0,0 +1,87 @@ +local Grid = require "core.modules.menusystem.grid" +local MenuObject = Grid:extend() + +local Widget = require "core.modules.menusystem.widgets" +local MainWidget = Widget.Base:extend() +local MapWidget = MainWidget:extend() +local ExitWidget = MainWidget:extend() +local OptionsWidget = MainWidget:extend() + +function MenuObject:new(scene) + self.scene = scene + local screenwidth, screenheight = core.screen:getDimensions() + local menuwidth = screenwidth - 32 * 2 + local menuheight = screenheight - 48 - 16 + + local colNumber, lineNumber + colNumber = math.floor(menuwidth / 16) + lineNumber = math.floor(menuheight / 16) + + menuwidth = colNumber * 16 + menuheight = lineNumber * 16 + + print(colNumber, lineNumber) + + MenuObject.super.new(self, scene.menusystem, "main", 32, 48, menuwidth, menuheight, colNumber, lineNumber) + self.isVisible = true + self.isActive = true + + MapWidget(self) + MainWidget(self, "MANAGE PIGS") + MainWidget(self, "BONUS") + OptionsWidget(self) + ExitWidget(self) + self:addSlot(1, 0, 0, 13, 6) + self:addSlot(2, 13, 0, 6, 6) + self:addSlot(3, 19, 0, 7, 6) + self:addSlot(4, 13, 6, 13, 3) + self:addSlot(5, 13, 9, 13, 3) +end + +function MainWidget:new(menusystem, label) + MainWidget.super.new(self, menusystem) + self.scene = menusystem.scene + self.label = label or "" +end + +function MainWidget:redrawCanvas() + self.width, self.height = self.menu:getWidgetSize(self.id) + self.textbox = game.gui.newTextBox("assets/sprites/gui/textbox/bluebox.png", self.width, self.height) + MainWidget.super.redrawCanvas(self) +end + +function MainWidget:drawCanvas() + love.graphics.draw(self.textbox, 0, 0) + if self.height >= 64 then + love.graphics.printf(self.label, 0, 8, self.width, "center") + else + love.graphics.printf(self.label, 64, 16, self.width, "left") + end +end + +function MapWidget:new(menusystem) + MapWidget.super.new(self, menusystem, "WORLD MAP") +end + +function MapWidget:action() + scenes.WorldMap() +end + +function ExitWidget:new(menusystem) + MapWidget.super.new(self, menusystem, "EXIT") +end + +function ExitWidget:action() + love.event.quit() +end + +function OptionsWidget:new(menusystem) + OptionsWidget.super.new(self, menusystem, "OPTIONS") +end + +function OptionsWidget:action() + self.scene:selectMenu("mainmenu") +end + + +return MenuObject diff --git a/imperium-porcorum.love/scenes/debugmenu/menus.lua b/imperium-porcorum.love/scenes/debugmenu/menus.lua index e163c65..ea587d8 100644 --- a/imperium-porcorum.love/scenes/debugmenu/menus.lua +++ b/imperium-porcorum.love/scenes/debugmenu/menus.lua @@ -29,6 +29,7 @@ menu.Levels = MenuObject:extend() menu.Bonus = MenuObject:extend() menu.Pigs = MenuObject:extend() menu.Options = MenuObject:extend() +menu.newMain = require "scenes.debugmenu.mainmenu" local widgets = require "scenes.debugmenu.widgets" @@ -41,8 +42,6 @@ function menu.Main:new(scene) widgets.Menu(self,"Options", "mainmenu") widgets.Menu(self,"Bonus", "mainmenu") widgets.Exit(self) - self.isVisible = true - self.isActive = true self:getFocus() end @@ -91,6 +90,7 @@ function menu.Options:new(scene) end function menu.Create(scene) + menu.newMain(scene) menu.Main(scene) menu.Debug(scene) menu.Levels(scene)