mirror of
https://github.com/bvanroll/3dsStuff.git
synced 2025-09-02 22:02:40 +00:00
restructuring folders, planning on dev for games as standalone first and then porting them to the main thing
This commit is contained in:
107
lib/helpers/gamemanager.lua
Normal file
107
lib/helpers/gamemanager.lua
Normal 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
|
||||
|
348
lib/helpers/potion-compat.lua
Normal file
348
lib/helpers/potion-compat.lua
Normal 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
|
Reference in New Issue
Block a user