i started creating the gamemanager idea and also the ui, started off with a basic main menu, options light up; added a debug mode which right now displays the name of the key you press, which would be handy for the 3ds

This commit is contained in:
2018-09-01 04:52:54 +02:00
parent bebbc8b82e
commit d0fb98ad8c
5 changed files with 333 additions and 5 deletions

107
gamemanager.lua Normal file
View File

@@ -0,0 +1,107 @@
require "ui"
require "snake"
require "swat"
--[[
this library is the library that is combining the minigames into one usable thing,
it will also house the ui elements and general game management (duh).
]]
man = {
paused = true,
debug = true,
tgame = "snake", --game thats happening on top screen
bgame = "swat", --game thats happening on bottom screen
lastkey = ""
}
function man:load()
--love.graphics.set3D(true)
if not man.debug then
snakeplayer:hardreset()
swat:load()
ui:load()
end
end
function man:update(dt)
if not man.debug then
if not man.paused then
if man.tgame == "snake" then
snakeplayer:update(dt)
end
if man.bgame == "swat" then
swat:update(dt)
end
else
ui:update(dt)
end
end
end
function man:draw()
if not man.debug then
if not man.paused then
if man.tgame == "snake" then
snakeplayer:draw()
end
if man.bgame == "swat" then
fly:draw()
end
else
ui:draw()
end
else
love.graphics.print("the last button pressed was: "..man.lastkey)
end
end
function man:keypressed(key)
if not man.debug then
if key == "start" then
man.paused = not man.paused
return
end
if not man.paused then
if man.tgame == "snake" then
snakeplayer:keypressed(key)
end
else
ui:keypressed(key)
end
else
man.lastkey = key
end
end
function man:keyreleased(key)
if not man.debug then
if not man.paused then
else
ui:keyreleased(key)
end
end
end
function man:mousepressed(sx, sy)
local x, y = love.mouse.getPosition()
if not man.debug then
if not man.paused then
if man.bgame == "swat" then
swat:mousepressed(x, y)
end
else
ui:mousepressed(x, y)
end
end
end

View File

@@ -1,10 +1,10 @@
require "snake"
--[[require "snake"
require "swat"
function love.load()
--love.graphics.set3D(true)
snakeplayer:hardreset()
swat:load()
end
@@ -128,5 +128,36 @@ function love.mousepressed(a, b)
local x, y = love.mouse.getPosition()
fly:kill(x, y)
end
]]
--require("potion-compat")
require "gamemanager"
function love.load()
man:load()
end
function love.update(dt)
man:update(dt)
end
function love.draw()
man:draw()
end
function love.keypressed(key)
man:keypressed(key)
end
function love.keyreleased(key)
man:keyreleased(key)
end
function love.mousepressed(x, y)
man:mousepressed(x, y)
end
--this is for debugging on pc
require("potion-compat")

View File

@@ -63,6 +63,94 @@ function snakeplayer:hardreset()
snake.score = 0
end
function snakeplayer:keypressed(key)
if (key == "start") then
--gamemanager:quit()
gamemanager:pause()
end
if (key == "up") then
snakeplayer:move(0, -1)
end
if (key == "down") then
snakeplayer:move(0, 1)
end
if (key == "left") then
snakeplayer:move(-1, 0)
end
if (key == "right") then
snakeplayer:move(1, 0)
end
if (key == "cstickup") then
snakeplayer:move(0, -1)
end
if (key == "cstickdown") then
snakeplayer:move(0, 1)
end
if (key == "cstickleft") then
snakeplayer:move(-1, 0)
end
if (key == "cstickright") then
snakeplayer:move(1, 0)
end
if (key == "cpadup") then
snakeplayer:move(0, -1)
end
if (key == "cpaddown") then
snakeplayer:move(0, 1)
end
if (key == "cpadleft") then
snakeplayer:move(-1, 0)
end
if (key == "cpadright") then
snakeplayer:move(1, 0)
end
if (key == "x") then
snakeplayer:move(0, -1)
end
if (key == "b") then
snakeplayer:move(0, 1)
end
if (key == "y") then
snakeplayer:move(-1, 0)
end
if (key == "a") then
snakeplayer:move(1, 0)
end
if (key == "select") then
--snakeplayer:hardreset()
end
if (key == "lbutton") then
end
if (key == "rbutton") then
end
if (key == "l") then
end
if (key == "r") then
end
if (key == "lzbutton") then
end
if (key == "rzbutton") then
end
end
function snakeplayer:move(xvel, yvel)
if self.xvel == -xvel and self.yvel == -yvel then

View File

@@ -41,6 +41,11 @@ function swat:load()
end
function swat:mousepressed(x, y)
fly:kill(x, y)
end
function swat:update( dt)
if fly.timer then
fly.tl = fly.tl + dt

97
ui.lua Normal file
View File

@@ -0,0 +1,97 @@
ui = {
twidth = 0,
theight = 0,
bwidth = 0,
bheight = 0
}
menu = {
main = {
items = {
"select games",
"settings",
"about",
"exit"
}
},
prop = {
x = 100,
x2 = 200,
bars = 50,
offset = 20,
xoff = 5,
cursel = 1,
curitems = 0
}
}
function ui:load()
love.graphics.setScreen("top")
ui.twidth = love.graphics.getWidth()
ui.theight = love.graphics.getHeight()
love.graphics.setScreen("bottom")
ui.bwidth = love.graphics.getWidth()
ui.bheight = love.graphics.getHeight()
end
function ui:draw()
menu.prop.curitems = table.getn(menu.main.items)
--sqr =
for i in ipairs(menu.main.items) do
temp = ((ui.theight - menu.prop.bars)/(menu.prop.curitems)) * i
--love.graphics.rectangle("fill", menu.prop.xoff, menu.prop.bars , ui.twidth, menu.prop.bars)
local x, y = love.mouse.getPosition()
if i == menu.prop.cursel then
love.graphics.setColor(255, 0, 0)
end
love.graphics.printf(menu.main.items[i], menu.prop.x, temp , menu.prop.x2, "center")
love.graphics.setColor(255,255,255)
end
end
function ui:update(dt)
if menu.prop.cursel < 1 then
menu.prop.cursel = menu.prop.curitems
elseif menu.prop.cursel > menu.prop.curitems then
menu.prop.cursel = 1
end
end
function ui:keypressed(key)
if key == "up" then
menu.prop.cursel = menu.prop.cursel - 1
end
if key == "down" then
menu.prop.cursel = menu.prop.cursel + 1
end
if key == "left" then
end
if key == "right" then
end
if key == "cpadup" then
menu.prop.cursel = menu.prop.cursel - 1
end
if key == "cpaddown" then
menu.prop.cursel = menu.prop.cursel + 1
end
if key == "cpadleft" then
end
if key == "cpadright" then
end
end
function ui:keyreleased(key)
end
function ui:mousepressed(x, y)
end