mirror of https://github.com/mgba-emu/mgba.git
Res: Add demo input display script
This commit is contained in:
parent
7950279a09
commit
0e52f7054f
|
@ -0,0 +1,122 @@
|
||||||
|
input_display = {
|
||||||
|
anchor = "top",
|
||||||
|
offset = {
|
||||||
|
x = 0,
|
||||||
|
y = 0,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
local state = {
|
||||||
|
drawButton = {
|
||||||
|
[0] = function(state) -- A
|
||||||
|
state.painter:drawCircle(27, 6, 4)
|
||||||
|
end,
|
||||||
|
[1] = function(state) -- B
|
||||||
|
state.painter:drawCircle(23, 8, 4)
|
||||||
|
end,
|
||||||
|
[2] = function(state) -- Select
|
||||||
|
state.painter:drawCircle(13, 11, 3)
|
||||||
|
end,
|
||||||
|
[3] = function(state) -- Start
|
||||||
|
state.painter:drawCircle(18, 11, 3)
|
||||||
|
end,
|
||||||
|
[4] = function(state) -- Right
|
||||||
|
state.painter:drawRectangle(9, 7, 4, 3)
|
||||||
|
end,
|
||||||
|
[5] = function(state) -- Left
|
||||||
|
state.painter:drawRectangle(2, 7, 4, 3)
|
||||||
|
end,
|
||||||
|
[6] = function(state) -- Up
|
||||||
|
state.painter:drawRectangle(6, 3, 3, 4)
|
||||||
|
end,
|
||||||
|
[7] = function(state) -- Down
|
||||||
|
state.painter:drawRectangle(6, 10, 3, 4)
|
||||||
|
end,
|
||||||
|
[8] = function(state) -- R
|
||||||
|
state.painter:drawRectangle(28, 0, 4, 3)
|
||||||
|
end,
|
||||||
|
[9] = function(state) -- L
|
||||||
|
state.painter:drawRectangle(0, 0, 4, 3)
|
||||||
|
end
|
||||||
|
},
|
||||||
|
maxKey = {
|
||||||
|
[C.PLATFORM.GBA] = 9,
|
||||||
|
[C.PLATFORM.GB] = 7,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
state.overlay = canvas:newLayer(32, 16)
|
||||||
|
state.painter = image.newPainter(state.overlay.image)
|
||||||
|
state.painter:setBlend(false)
|
||||||
|
state.painter:setFill(true)
|
||||||
|
|
||||||
|
function state.update()
|
||||||
|
local keys = util.expandBitmask(emu:getKeys())
|
||||||
|
local maxKey = state.maxKey[emu:platform()]
|
||||||
|
|
||||||
|
for key = 0, maxKey do
|
||||||
|
if emu:getKey(key) ~= 0 then
|
||||||
|
state.painter:setFillColor(0x80FFFFFF)
|
||||||
|
else
|
||||||
|
state.painter:setFillColor(0x40404040)
|
||||||
|
end
|
||||||
|
state.drawButton[key](state)
|
||||||
|
end
|
||||||
|
state.overlay:update()
|
||||||
|
end
|
||||||
|
|
||||||
|
function state.reset()
|
||||||
|
local endX = canvas:screenWidth() - 32
|
||||||
|
local endY = canvas:screenHeight() - 16
|
||||||
|
|
||||||
|
local anchors = {
|
||||||
|
topLeft = {
|
||||||
|
x = 0,
|
||||||
|
y = 0
|
||||||
|
},
|
||||||
|
top = {
|
||||||
|
x = endX / 2,
|
||||||
|
y = 0
|
||||||
|
},
|
||||||
|
topRight = {
|
||||||
|
x = endX,
|
||||||
|
y = 0
|
||||||
|
},
|
||||||
|
left = {
|
||||||
|
x = 0,
|
||||||
|
y = endY / 2
|
||||||
|
},
|
||||||
|
center = {
|
||||||
|
x = endX / 2,
|
||||||
|
y = endY / 2
|
||||||
|
},
|
||||||
|
right = {
|
||||||
|
x = endX,
|
||||||
|
y = endY / 2
|
||||||
|
},
|
||||||
|
bottomLeft = {
|
||||||
|
x = 0,
|
||||||
|
y = endY
|
||||||
|
},
|
||||||
|
bottom = {
|
||||||
|
x = endX / 2,
|
||||||
|
y = endY
|
||||||
|
},
|
||||||
|
bottomRight = {
|
||||||
|
x = endX,
|
||||||
|
y = endY
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
local pos = anchors[input_display.anchor];
|
||||||
|
pos.x = pos.x + input_display.offset.x;
|
||||||
|
pos.y = pos.y + input_display.offset.y;
|
||||||
|
|
||||||
|
state.overlay:setPosition(pos.x, pos.y);
|
||||||
|
state.painter:setFillColor(0x40808080)
|
||||||
|
state.painter:drawRectangle(0, 0, 32, 16)
|
||||||
|
state.overlay:update()
|
||||||
|
end
|
||||||
|
|
||||||
|
state.reset()
|
||||||
|
callbacks:add("frame", state.update)
|
||||||
|
callbacks:add("start", state.reset)
|
Loading…
Reference in New Issue