mirror of
https://github.com/ctruLua/uCompat.git
synced 2025-10-28 00:59:31 +00:00
Added Rumble and Timer libs, implemented the offset system for drawing.
This commit is contained in:
parent
703418a419
commit
5eeb78d9ec
3 changed files with 88 additions and 16 deletions
17
Rumble.lua
Normal file
17
Rumble.lua
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
--[[
|
||||||
|
Rumble pack related µLua compatibility layer/lib for ctrµLua
|
||||||
|
|
||||||
|
As the 3DS doesn't have a rumble function, I couldn't implement this.
|
||||||
|
]]
|
||||||
|
|
||||||
|
-- Module
|
||||||
|
|
||||||
|
Rumble = {}
|
||||||
|
|
||||||
|
function Rumble.isInserted()
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
function Rumble.set(s)
|
||||||
|
|
||||||
|
end
|
||||||
53
Timer.lua
Normal file
53
Timer.lua
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
--[[
|
||||||
|
Timers related µLua compatibility layer/lib for ctrµLua
|
||||||
|
|
||||||
|
The code comes directly from µLua, befores timers were coded in C, but with
|
||||||
|
the name patch.
|
||||||
|
]]
|
||||||
|
|
||||||
|
-- Local
|
||||||
|
|
||||||
|
local ctr = require("ctr")
|
||||||
|
|
||||||
|
-- Module
|
||||||
|
|
||||||
|
Timer = {
|
||||||
|
new = function()
|
||||||
|
local t = ctr.time()
|
||||||
|
local isStarted = false
|
||||||
|
local tick = 0
|
||||||
|
|
||||||
|
local time = function(self)
|
||||||
|
if isStarted then return ctr.time() - t
|
||||||
|
else return tick end
|
||||||
|
end
|
||||||
|
|
||||||
|
local stop = function(self)
|
||||||
|
if isStarted then
|
||||||
|
isStarted = false
|
||||||
|
tick = ctr.time() - t
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local start = function(self)
|
||||||
|
if not isStarted then
|
||||||
|
isStarted = true
|
||||||
|
t = ctr.time() - tick
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local reset = function(self)
|
||||||
|
t = ctr.time()
|
||||||
|
isStarted = false
|
||||||
|
tick = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
return{
|
||||||
|
time = time,
|
||||||
|
getTime = time, -- name patch
|
||||||
|
stop = stop,
|
||||||
|
start = start,
|
||||||
|
reset = reset
|
||||||
|
}
|
||||||
|
end
|
||||||
|
}
|
||||||
34
screen.lua
34
screen.lua
|
|
@ -39,6 +39,7 @@ local videoStack = {}
|
||||||
local alpha = ALPHA_RESET
|
local alpha = ALPHA_RESET
|
||||||
|
|
||||||
local drawScreen = SCREEN_UP
|
local drawScreen = SCREEN_UP
|
||||||
|
local offsetX, offsetY = 0,0
|
||||||
|
|
||||||
local fpscount = 0
|
local fpscount = 0
|
||||||
local fpstime = ctr.time()
|
local fpstime = ctr.time()
|
||||||
|
|
@ -53,12 +54,6 @@ function startDrawing()
|
||||||
end
|
end
|
||||||
|
|
||||||
function stopDrawing()
|
function stopDrawing()
|
||||||
-- As you can change the screen size, we have to re-calculate this every time.
|
|
||||||
local offsetX = (gfx.BOTTOM_WIDTH-SCREEN_WIDTH)/2
|
|
||||||
local offsetY = (gfx.BOTTOM_HEIGHT-SCREEN_HEIGHT)/2
|
|
||||||
if drawScreen == gfx.SCREEN_UP then
|
|
||||||
offsetX = offsetX + 40
|
|
||||||
end
|
|
||||||
|
|
||||||
-- FPS counter
|
-- FPS counter
|
||||||
fpscount = fpscount + 1
|
fpscount = fpscount + 1
|
||||||
|
|
@ -98,35 +93,35 @@ function screen.setAlpha(level, layer)
|
||||||
end
|
end
|
||||||
|
|
||||||
function screen.print(scr, x, y, text, color)
|
function screen.print(scr, x, y, text, color)
|
||||||
videoStack[scr][#videoStack[scr]] = {"text", {x, y, text, 8, RGB2RGBA(color), nil}}
|
videoStack[scr][#videoStack[scr]] = {"text", {offsetX+x, offsetY+y, text, 8, RGB2RGBA(color), nil}}
|
||||||
end
|
end
|
||||||
|
|
||||||
function screen.printFont(scr, x, y, text, color, font)
|
function screen.printFont(scr, x, y, text, color, font)
|
||||||
videoStack[scr][#videoStack[scr]] = {"text", {x, y, text, 8, RGB2RGBA(color), font}}
|
videoStack[scr][#videoStack[scr]] = {"text", {offsetX+x, offsetY+y, text, 8, RGB2RGBA(color), font}}
|
||||||
end
|
end
|
||||||
|
|
||||||
function screen.blit(scr, x, y, img, sx, sy, w, h)
|
function screen.blit(scr, x, y, img, sx, sy, w, h)
|
||||||
local sizex, sizey = img:getSize()
|
local sizex, sizey = img:getSize()
|
||||||
videoStack[scr][#videoStack[scr]] = {"img", {x, y, (sx or 0), (sy or 0), (w or sizex), (h or sizey)}}
|
videoStack[scr][#videoStack[scr]] = {"img", {offsetX+x, offsetY+y, (sx or 0), (sy or 0), (w or sizex), (h or sizey)}}
|
||||||
end
|
end
|
||||||
|
|
||||||
function screen.drawPoint(scr, x, y, color)
|
function screen.drawPoint(scr, x, y, color)
|
||||||
videoStack[scr][#videoStack[scr]] = {"point", {x, y, RGB2RGBA(color)}}
|
videoStack[scr][#videoStack[scr]] = {"point", {offsetX+x, offsetY+y, RGB2RGBA(color)}}
|
||||||
end
|
end
|
||||||
|
|
||||||
function screen.drawLine(scr, x0, y0, x1, y1, color)
|
function screen.drawLine(scr, x0, y0, x1, y1, color)
|
||||||
videoStack[scr][#videoStack[scr]] = {"line", {x0, y0, x1, y1, RGB2RGBA(color)}}
|
videoStack[scr][#videoStack[scr]] = {"line", {offsetX+x0, offsetX+y0, offsetX+x1, offsetY+y1, RGB2RGBA(color)}}
|
||||||
end
|
end
|
||||||
|
|
||||||
function screen.drawRect(scr, x0, y0, x1, y1, color)
|
function screen.drawRect(scr, x0, y0, x1, y1, color)
|
||||||
videoStack[scr][#videoStack[scr]] = {"line", {x0, y0, x0, y1, RGB2RGBA(color)}}
|
videoStack[scr][#videoStack[scr]] = {"line", {offsetX+x0, offsetY+y0, offsetX+x0, offsetY+y1, RGB2RGBA(color)}}
|
||||||
videoStack[scr][#videoStack[scr]] = {"line", {x0, y0, x1, y0, RGB2RGBA(color)}}
|
videoStack[scr][#videoStack[scr]] = {"line", {offsetX+x0, offsetY+y0, offsetX+x1, offsetY+y0, RGB2RGBA(color)}}
|
||||||
videoStack[scr][#videoStack[scr]] = {"line", {x0, y1, x1, y1, RGB2RGBA(color)}}
|
videoStack[scr][#videoStack[scr]] = {"line", {offsetX+x0, offsetY+y1, offsetX+x1, offsetY+y1, RGB2RGBA(color)}}
|
||||||
videoStack[scr][#videoStack[scr]] = {"line", {x1, y0, x1, y1, RGB2RGBA(color)}}
|
videoStack[scr][#videoStack[scr]] = {"line", {offsetX+x1, offsetY+y0, offsetX+x1, offsetY+y1, RGB2RGBA(color)}}
|
||||||
end
|
end
|
||||||
|
|
||||||
function screen.drawFillRect(scr, x0, y0, x1, y1, color)
|
function screen.drawFillRect(scr, x0, y0, x1, y1, color)
|
||||||
videoStack[scr][#videoStack[scr]] = {"rectangle", {x0, y0, (x1-x0), (y1-y0), 0, RGB2RGBA(color)}}
|
videoStack[scr][#videoStack[scr]] = {"rectangle", {offsetX+x0, offsetY+y0, offsetX+(x1-x0), offsetY+(y1-y0), 0, RGB2RGBA(color)}}
|
||||||
end
|
end
|
||||||
|
|
||||||
function screen.drawGradientRect(scr, x0, y0, x1, y1, color, color, color, color)
|
function screen.drawGradientRect(scr, x0, y0, x1, y1, color, color, color, color)
|
||||||
|
|
@ -162,6 +157,13 @@ function screen.startDrawing2D() -- unused
|
||||||
videoStack = {}
|
videoStack = {}
|
||||||
videoStack[0] = {}
|
videoStack[0] = {}
|
||||||
videoStack[1] = {}
|
videoStack[1] = {}
|
||||||
|
|
||||||
|
-- As you can change the screen size, we have to re-calculate this every time.
|
||||||
|
offsetX = (gfx.BOTTOM_WIDTH-SCREEN_WIDTH)/2
|
||||||
|
offsetY = (gfx.BOTTOM_HEIGHT-SCREEN_HEIGHT)/2
|
||||||
|
if drawScreen == gfx.SCREEN_UP then
|
||||||
|
offsetX = offsetX + 40
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function screen.endDrawing()
|
function screen.endDrawing()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue