restructuring folders, planning on dev for games as standalone first and then porting them to the main thing

This commit is contained in:
2018-09-02 03:29:25 +02:00
parent d0fb98ad8c
commit 10be7e0363
6 changed files with 5 additions and 5 deletions

107
lib/helpers/gamemanager.lua Normal file
View File

@@ -0,0 +1,107 @@
require "lib.tools.ui"
require "lib.minigames.snake"
require "lib.minigames.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

@@ -0,0 +1,348 @@
--[[
FOR NINTENDO 3DS ONLY
You may use this for -Love Potion- only!
This is to allow filesystem calls to be made
without the need to understand io operation.
Only works for Love Potion 1.0.8
If you want to use view this in 3DSXL mode:
Use love.graphics.scale(scale, scale) before drawing in love.draw!
require this at the **END** of your main.lua file
TurtleP
--]]
if not love.filesystem then
love.filesystem = {}
function love.filesystem.isFile(path)
return io.open(path)
end
function love.filesystem.isDirectory(path)
return love.filesystem.isFile(path):read(1) == 21
end
function love.filesystem.write(path, data)
if path and data then
local file = io.open(path, "w")
if file then
file:write(data)
file:flush()
file:close()
else
error("Could not create file!")
end
else
error("Could not write file: " .. path .. "!")
end
end
function love.filesystem.read(path)
if path then
local file = io.open(path, "r")
if file then
return file:read()
else
error("Could not read file, does not exist!")
end
else
assert(type(path) == "string", "String expected, got " .. type(path))
end
end
function love.filesystem.remove(path)
if path then
os.remove(path)
end
end
local function fsize(file)
local startf = file:seek("start")
local sizeof = file:seek("end")
file:seek("set", startf)
return sizeof
end
function love.filesystem.getDirectoryItems(path)
if type(path) ~= "string" then
error("String expected, got " .. type(path))
else
if love.filesystem.isDirectory(path) then
end
end
end
end
if not love.graphics.scale then
function love.graphics.scale(scalarX, scalarY)
--do nothing
end
end
if not love.graphics.setDefaultFilter then
function love.graphics.setDefaultFilter(min, max)
--do nothing
end
end
if not love.audio.setVolume then
function love.audio.setVolume(volume)
--do nothing
end
end
if not love.math then
love.math = {}
function love.math.random(min, max)
return math.random(min, max)
end
end
local oldSetColor = love.graphics.setColor
function love.graphics.setColor(r, g, b, a)
if type(r) == "table" then
oldSetColor(unpack(r))
else
oldSetColor(r, g, b, a)
end
end
--Because tables
local oldSetColor = love.graphics.setColor
function love.graphics.setColor(r, g, b, a)
if type(r) == "table" then
oldSetColor(unpack(r))
else
oldSetColor(r, g, b, a)
end
end
if love.system.getOS() == "3ds" then
return
end
local _KEYNAMES =
{
"a", "b", "select", "start",
"dright", "dleft", "dup", "ddown",
"rbutton", "lbutton", "x", "y",
"lzbutton", "rzbutton", "cstickright",
"cstickleft", "cstickup", "cstickdown",
"cpadright", "cpadleft", "cpadup", "cpaddown"
}
BUTTONCONFIG =
{
["a"] = "z",
["b"] = "x",
["y"] = "c",
["x"] = "v",
["start"] = "return",
["select"] = "rshift",
["dup"] = "w",
["dleft"] = "a",
["dright"] = "d",
["ddown"] = "s",
["rbutton"] = "kp0",
["lbutton"] = "rctrl",
["cpadright"] = "right",
["cpadleft"] = "left",
["cpadup"] = "up",
["cpaddown"] = "down",
["cstickleft"] = "",
["cstickright"] ="",
["cstickup"] = "",
["cstickdown"] = ""
}
function love.graphics.setDepth(depthValue)
assert(depthValue and type(depthValue) == "number", "Number expected: got " .. type(depthValue))
end
function love.graphics.set3D(enable3D)
assert(enable3D and type(enable3D) == "boolean", "Boolean expected: got " .. type(depthValue))
end
local olddraw = love.graphics.draw
function love.graphics.draw(...)
local args = {...}
local image = args[1]
local quad
local x, y, r = 0, 0, 0
local scalex, scaley
if type(args[2]) == "userdata" then
quad = args[2]
x = args[3] or 0
y = args[4] or 0
scalex, scaley = args[5], args[6]
else
x, y = args[2] or 0, args[3] or 0
r = args[4] or 0
end
if love.graphics.getScreen() == "bottom" then
x = x + 40
y = y + 240
end
if not quad then
if r then
olddraw(image, x + image:getWidth() / 2, y + image:getHeight() / 2, r, 1, 1, image:getWidth() / 2, image:getHeight() / 2)
else
olddraw(image, x, y)
end
else
olddraw(image, quad, x, y, 0, 1, 1)
end
end
local oldRectangle = love.graphics.rectangle
function love.graphics.rectangle(mode, x, y, width, height)
local x = x or 0
local y = y or 0
if love.graphics.getScreen() == "bottom" then
x = x + 40
y = y + 240
end
oldRectangle(mode, x, y, width, height)
end
local oldCircle = love.graphics.circle
function love.graphics.circle(mode, x, y, r, segments)
local x = x or 0
local y = y or 0
if love.graphics.getScreen() == "bottom" then
x = x + 40
y = y + 240
end
oldCircle(mode, x, y, r, segments)
end
local oldPrint = love.graphics.print
function love.graphics.print(text, x, y, r, scalex, scaley, sx, sy)
local x = x or 0
local y = y or 0
if love.graphics.getScreen() == "bottom" then
x = x + 40
y = y + 240
end
oldPrint(text, x, y, r, scalex, scaley, sx, sy)
end
local oldKey = love.keypressed
function love.keypressed(key)
for k, v in pairs(BUTTONCONFIG) do
if key == v then
oldKey(k)
break
end
end
end
local oldKey = love.keyreleased
function love.keyreleased(key)
for k, v in pairs(BUTTONCONFIG) do
if key == v then
oldKey(k)
break
end
end
if key == "1" or key == "2" then
love.system.setModel(tonumber(key))
end
end
function math.clamp(low, n, high)
return math.min(math.max(low, n), high)
end
local oldMousePressed = love.mousepressed
function love.mousepressed(x, y, button)
x, y = math.clamp(0, x - 40, 320), math.clamp(0, y - 240, 240)
if oldMousePressed then
oldMousePressed(x, y, 1)
end
end
local oldMouseReleased = love.mousereleased
function love.mousereleased(x, y, button)
x, y = math.clamp(0, x - 40, 320), math.clamp(0, y - 240, 240)
if oldMouseReleased then
oldMouseReleased(x, y, 1)
end
end
_SCREEN = "top"
models = {"3DS", "3DSXL"}
function love.system.getModel()
return models[scale]
end
function love.system.setModel(s)
scale = s
love.window.setMode(400 * scale, 240 * scale, {vsync = true})
love.window.setTitle(love.filesystem.getIdentity() .. " :: " .. love.system.getModel())
end
love.system.setModel(1)
function love.graphics.setScreen(screen)
assert(type(screen) == "string", "String expected, got " .. type(screen))
_SCREEN = screen
love.graphics.setColor(32, 32, 32)
love.graphics.rectangle("fill", 0, 240, 40, 240)
love.graphics.rectangle("fill", 360, 240, 40, 240)
love.graphics.setColor(255, 255, 255)
if screen == "top" then
love.graphics.setScissor(0, 0, 400 * scale, 240 * scale)
elseif screen == "bottom" then
love.graphics.setScissor(40 * scale, 240 * scale, 320 * scale, 240 * scale)
end
end
function love.graphics.getWidth()
if love.graphics.getScreen() == "bottom" then
return 320
end
return 400
end
function love.graphics.getHeight()
return 240
end
function love.graphics.getScreen()
return _SCREEN
end
local oldclear = love.graphics.clear
function love.graphics.clear(r, g, b, a)
love.graphics.setScissor()
oldclear(r, g, b, a)
end