1
0
mirror of https://github.com/LDDestroier/CC/ synced 2025-06-07 21:34:05 +00:00

Finalized palette number indicator

Also improved modifier keys, so right CTRL or Shift or Alt will always work in the stead of left.
I need to work on the mouse input bug, though.
This commit is contained in:
LDDestroier 2019-04-11 14:06:08 -04:00 committed by GitHub
parent ab5075b347
commit eedab81142
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

154
pain2.lua
View File

@ -7,7 +7,7 @@ local miceDown = {} -- list of all clicked mice buttons
local dragPoses = {{{},{}}, {{},{}}, {{},{}}} -- records initial and current mouse position per button while scrolling local dragPoses = {{{},{}}, {{},{}}, {{},{}}} -- records initial and current mouse position per button while scrolling
local TICKNO = 0 -- iterates every time main() loops local TICKNO = 0 -- iterates every time main() loops
local flashPaletteOnBar = false -- whether or not to flash the dot palette numbers on the bottom bar local flashPaletteOnBar = 0 -- whether or not to flash the dot palette numbers on the bottom bar, 0 is false, greater than 0 is true
-- debug renderer is slower, but the normal one isn't functional yet -- debug renderer is slower, but the normal one isn't functional yet
local useDebugRenderer = false local useDebugRenderer = false
@ -132,12 +132,32 @@ local control = {
switchNextFrame = { switchNextFrame = {
key = keys.rightBracket, key = keys.rightBracket,
holdDown = false, holdDown = false,
modifiers = {}, modifiers = {
[keys.leftShift] = true
},
}, },
switchPrevFrame = { switchPrevFrame = {
key = keys.leftBracket, key = keys.leftBracket,
holdDown = false, holdDown = false,
modifiers = {}, modifiers = {
[keys.leftShift] = true
},
},
swapNextFrame = {
key = keys.rightBracket,
holdDownn = false,
modifiers = {
[keys.leftShift] = true,
[keys.leftAlt] = true,
}
},
swapPrevFrame = {
key = keys.leftBracket,
holdDownn = false,
modifiers = {
[keys.leftShift] = true,
[keys.leftAlt] = true,
}
}, },
increaseBrushSize = { increaseBrushSize = {
key = keys.equals, key = keys.equals,
@ -211,83 +231,73 @@ local control = {
selectPalette_0 = { selectPalette_0 = {
key = keys.zero, key = keys.zero,
holdDown = false, holdDown = false,
modifiers = { modifiers = {},
[keys.leftShift] = true
},
}, },
selectPalette_1 = { selectPalette_1 = {
key = keys.one, key = keys.one,
holdDown = false, holdDown = false,
modifiers = { modifiers = {},
[keys.leftShift] = true
},
}, },
selectPalette_2 = { selectPalette_2 = {
key = keys.two, key = keys.two,
holdDown = false, holdDown = false,
modifiers = { modifiers = {},
[keys.leftShift] = true
},
}, },
selectPalette_3 = { selectPalette_3 = {
key = keys.three, key = keys.three,
holdDown = false, holdDown = false,
modifiers = { modifiers = {},
[keys.leftShift] = true
},
}, },
selectPalette_4 = { selectPalette_4 = {
key = keys.four, key = keys.four,
holdDown = false, holdDown = false,
modifiers = { modifiers = {},
[keys.leftShift] = true
},
}, },
selectPalette_5 = { selectPalette_5 = {
key = keys.five, key = keys.five,
holdDown = false, holdDown = false,
modifiers = { modifiers = {},
[keys.leftShift] = true
},
}, },
selectPalette_6 = { selectPalette_6 = {
key = keys.six, key = keys.six,
holdDown = false, holdDown = false,
modifiers = { modifiers = {},
[keys.leftShift] = true
},
}, },
selectPalette_7 = { selectPalette_7 = {
key = keys.seven, key = keys.seven,
holdDown = false, holdDown = false,
modifiers = { modifiers = {},
[keys.leftShift] = true
},
}, },
selectPalette_8 = { selectPalette_8 = {
key = keys.eight, key = keys.eight,
holdDown = false, holdDown = false,
modifiers = { modifiers = {},
[keys.leftShift] = true
},
}, },
selectPalette_9 = { selectPalette_9 = {
key = keys.nine, key = keys.nine,
holdDown = false, holdDown = false,
modifiers = { modifiers = {},
[keys.leftShift] = true },
}, selectNextPalette = {
key = keys.rightBracket,
holdDown = false,
modifiers = {},
},
selectPrevPalette = {
key = keys.leftBracket,
holdDown = false,
modifiers = {},
}, },
} }
local checkControl = function(name) local checkControl = function(name)
local modlist = { local modlist = {
keys.leftCtrl, keys.leftCtrl,
keys.rightCtrl, -- keys.rightCtrl,
keys.leftShift, keys.leftShift,
keys.rightShift, -- keys.rightShift,
keys.leftAlt, keys.leftAlt,
keys.rightAlt, -- keys.rightAlt,
} }
for i = 1, #modlist do for i = 1, #modlist do
if control[name].modifiers[modlist[i]] then if control[name].modifiers[modlist[i]] then
@ -473,10 +483,14 @@ local render = function(x, y, width, height)
term.setCursorPos(pain.size.x, -1 + pain.size.y + pain.size.height) term.setCursorPos(pain.size.x, -1 + pain.size.y + pain.size.height)
term.write("[" .. pain.scrollX .. "," .. pain.scrollY .. "] ") term.write("[" .. pain.scrollX .. "," .. pain.scrollY .. "] ")
for i = 1, #pain.dots do for i = 1, #pain.dots do
if flashPaletteOnBar then if flashPaletteOnBar > 0 then
term.blit(table.unpack(pain.dots[i])) if i == dot then
term.blit(tostring(i), "0", pain.dots[i][3])
else
term.blit(tostring(i), "7", pain.dots[i][3])
end
else else
term.blit(tostring(i), "7", pain.dots[i][3]) term.blit(table.unpack(pain.dots[i]))
end end
end end
if pain.barlife > 0 then if pain.barlife > 0 then
@ -629,6 +643,7 @@ local tools = {
run = function(arg) run = function(arg)
local dots local dots
while miceDown[arg.button] do while miceDown[arg.button] do
arg.size = pain.brushSize
dots = getDotsInLine( dots = getDotsInLine(
dragPoses[arg.button][1].x + (arg.scrollX - pain.scrollX), dragPoses[arg.button][1].x + (arg.scrollX - pain.scrollX),
dragPoses[arg.button][1].y + (arg.scrollY - pain.scrollY), dragPoses[arg.button][1].y + (arg.scrollY - pain.scrollY),
@ -706,6 +721,11 @@ end
local getInput = function() local getInput = function()
local evt, adjX, adjY, paletteListX local evt, adjX, adjY, paletteListX
local keySwapList = {
[keys.rightShift] = keys.leftShift,
[keys.rightAlt] = keys.leftAlt,
[keys.rightCtrl] = keys.leftCtrl,
}
while true do while true do
evt = {os.pullEvent()} evt = {os.pullEvent()}
if evt[1] == "mouse_click" or evt[1] == "mouse_drag" then if evt[1] == "mouse_click" or evt[1] == "mouse_drag" then
@ -741,22 +761,26 @@ local getInput = function()
y = evt[4] y = evt[4]
} }
} }
miceDown[evt[2]] = { if evt[1] == "mouse_click" or miceDown[evt[2]] then
event = evt[1], miceDown[evt[2]] = {
button = evt[2], event = evt[1],
x = evt[3], button = evt[2],
y = evt[4], x = evt[3],
} y = evt[4],
}
end
end end
end end
elseif evt[1] == "key" then elseif evt[1] == "key" then
keysDown[evt[2]] = true keysDown[evt[2]] = true
keysDown[keySwapList[evt[2]] or evt[2]] = true
elseif evt[1] == "mouse_up" then elseif evt[1] == "mouse_up" then
dragPoses[evt[2]] = {{},{}}, {{},{}}, {{},{}} dragPoses[evt[2]] = {{},{}}, {{},{}}, {{},{}}
miceDown[evt[2]] = false miceDown[evt[2]] = false
elseif evt[1] == "key_up" then elseif evt[1] == "key_up" then
keysDown[evt[2]] = false keysDown[evt[2]] = false
keysDown[keySwapList[evt[2]] or evt[2]] = false
end end
end end
end end
@ -767,14 +791,6 @@ main = function()
if not pain.paused then if not pain.paused then
if TICKNO % 30 <= 20 then
flashPaletteOnBar = true
pain.doRender = true
elseif (TICKNO + 3) % 30 <= 20 then
flashPaletteOnBar = false
pain.doRender = true
end
if pain.doRender then if pain.doRender then
render() render()
pain.doRender = false pain.doRender = false
@ -813,10 +829,29 @@ main = function()
pain.doRender = true pain.doRender = true
end end
end end
if checkControl("selectNextPalette") then
if dot < #pain.dots then
dot = dot + 1
flashPaletteOnBar = 6
setBarMsg("Switched to next palette " .. dot .. ".")
else
setBarMsg("Reached end of palette list.")
end
end
if checkControl("selectPrevPalette") then
if dot > 1 then
dot = dot - 1
flashPaletteOnBar = 6
setBarMsg("Switched to previous palette " .. dot .. ".")
else
setBarMsg("Reached beginning of palette list.")
end
end
for i = 0, 9 do for i = 0, 9 do
if checkControl("selectPalette_" .. i) then if checkControl("selectPalette_" .. i) then
if pain.dots[i] then if pain.dots[i] then
dot = i dot = i
flashPaletteOnBar = 6
setBarMsg("Selected palette " .. dot .. ".") setBarMsg("Selected palette " .. dot .. ".")
break break
else else
@ -839,11 +874,18 @@ main = function()
setBarMsg("Selected line tool.") setBarMsg("Selected line tool.")
end end
pain.barlife = math.max(pain.barlife - 1, 0) -- decrement bar life and palette number indicator
if pain.barlife == 0 and pain.barmsg ~= "" then -- if it's gonna hit zero, make sure it re-renders
pain.barmsg = ""
if pain.barlife == 1 then
pain.doRender = true pain.doRender = true
end end
pain.barlife = math.max(pain.barlife - 1, 0)
if flashPaletteOnBar == 1 then
pain.doRender = true
end
flashPaletteOnBar = math.max(flashPaletteOnBar - 1, 0)
end end