Compare commits
2 Commits
9df738465a
...
7c1e0de4ff
| Author | SHA1 | Date | |
|---|---|---|---|
| 7c1e0de4ff | |||
| aa64d18060 |
@@ -4,8 +4,9 @@
|
||||
network = false,
|
||||
app = false,
|
||||
http = false,
|
||||
peripheral = false
|
||||
},
|
||||
author = "CadenCoaster",
|
||||
name = "Dookie Clicker",
|
||||
name = "Bad Clicker",
|
||||
appid = "com.ruffles.clicker",
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
14335
global-libraries/pixelui_compressed.lua
Normal file
14335
global-libraries/pixelui_compressed.lua
Normal file
File diff suppressed because it is too large
Load Diff
1053
global-libraries/shrekbox.lua
Normal file
1053
global-libraries/shrekbox.lua
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1323,7 +1323,21 @@ function lib.getENV(fspath, term_override, perms)
|
||||
global.network = network
|
||||
end
|
||||
if app and perms.app then
|
||||
global.app = app
|
||||
global.app = deepcopy(app)
|
||||
global.app.launch = function(id,app_perms) app.launch(id,app_perms,perms) end
|
||||
end
|
||||
if global and not perms.peripheral then
|
||||
global.peripheral.wrap = function () end
|
||||
global.peripheral.find = function () end
|
||||
global.peripheral.getNames = function () return {} end
|
||||
global.peripheral.getType = function () end
|
||||
global.peripheral.isPresent = function () return false end
|
||||
global.peripheral.hasType = function () end
|
||||
global.peripheral.call = function () end
|
||||
global.peripheral.getMethods = function () end
|
||||
end
|
||||
if repo and perms.repo then
|
||||
global.repo = repo
|
||||
end
|
||||
global.settings = settings
|
||||
global._ENV = global
|
||||
|
||||
@@ -7,6 +7,60 @@ local function add(t, v)
|
||||
end
|
||||
end
|
||||
end
|
||||
local function normalize_color(c)
|
||||
if type(c) ~= "number" then error("bad color", 2) end
|
||||
if c < 1 then error("bad color", 2) end
|
||||
|
||||
-- If c is already a power of two, this keeps it.
|
||||
-- If it's a mask, this picks the highest power-of-two <= c.
|
||||
local p = 1
|
||||
while p * 2 <= c do p = p * 2 end
|
||||
return p
|
||||
end
|
||||
|
||||
-- Returns: bestColor, bestCount, totalCells, countsTable
|
||||
-- countsTable maps colorBit -> count
|
||||
local function most_common_bg(win, opts)
|
||||
opts = opts or {}
|
||||
|
||||
local w, h
|
||||
if win.getSize then
|
||||
w, h = win.getSize()
|
||||
else
|
||||
w, h = win.w, win.h
|
||||
end
|
||||
|
||||
local ignore = opts.ignore
|
||||
if ignore ~= nil then ignore = normalize_color(ignore) end
|
||||
|
||||
local counts = {}
|
||||
local total = 0
|
||||
|
||||
for x = 1, w do
|
||||
local col = win.buffer and win.buffer[x]
|
||||
for y = 1, h do
|
||||
local cell = col and col[y]
|
||||
local bc = cell and cell.bc or win.bgColor or colors.black
|
||||
bc = normalize_color(bc)
|
||||
|
||||
if not ignore or bc ~= ignore then
|
||||
counts[bc] = (counts[bc] or 0) + 1
|
||||
total = total + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local fallback = normalize_color(opts.fallback or win.bgColor or colors.black)
|
||||
local best, bestN = fallback, -1
|
||||
|
||||
for c, n in pairs(counts) do
|
||||
if n > bestN or (n == bestN and c == fallback) then
|
||||
best, bestN = c, n
|
||||
end
|
||||
end
|
||||
|
||||
return best, bestN, total, counts
|
||||
end
|
||||
|
||||
-- hex <-> color bit lookups (Lua 5.1 safe)
|
||||
local HEX = "0123456789abcdef"
|
||||
@@ -64,6 +118,11 @@ function lib.create(name, w, h, x, y)
|
||||
closing = false,
|
||||
_palette = {}, -- optional local palette store
|
||||
}
|
||||
|
||||
function t.getMostCommonBackgroundColor(opts)
|
||||
local c, n, total, counts = most_common_bg(t, opts)
|
||||
return c, color_to_hex[c], n, total, counts
|
||||
end
|
||||
|
||||
local function init_col(xi)
|
||||
local w = t.w
|
||||
|
||||
@@ -14,7 +14,6 @@ function _G.app.getApps()
|
||||
local out = {}
|
||||
for _,f in ipairs(fs.list("/apps-meta")) do
|
||||
if fs.exists(fs.combine("/apps-meta",f)) then
|
||||
print(f)
|
||||
local file = fs.open(fs.combine("/apps-meta",f),"r")
|
||||
if file then
|
||||
out[#out+1] = textutils.unserialise(file.readAll())
|
||||
@@ -24,13 +23,54 @@ function _G.app.getApps()
|
||||
end
|
||||
return out
|
||||
end
|
||||
function _G.app.launch(id,perms)
|
||||
function _G.app.closeApp(pid)
|
||||
if pid == focusedapp then
|
||||
app.focusapp(-1)
|
||||
apps[pid] = nil
|
||||
else
|
||||
apps[pid] = nil
|
||||
end
|
||||
end
|
||||
function _G.app.getRunningApps()
|
||||
local pids = {}
|
||||
for k,_ in pairs(apps) do
|
||||
pids[#pids+1] = k
|
||||
end
|
||||
return pids
|
||||
end
|
||||
function _G.app.getTitle(pid)
|
||||
if not apps[pid] then return false, "Process not found" end
|
||||
return apps[pid].title
|
||||
end
|
||||
function _G.app.getDetail(pid)
|
||||
if not apps[pid] then return false, "Process not found" end
|
||||
local registered_apps = app.getApps()
|
||||
local appid = apps[pid].id
|
||||
local appdetails = nil
|
||||
local msg = "Details not found (likely doesn't have a metadata file)"
|
||||
for _,registered_app in ipairs(registered_apps) do
|
||||
if registered_app.appid == appid then
|
||||
appdetails = registered_app
|
||||
msg = nil
|
||||
break
|
||||
end
|
||||
end
|
||||
return appdetails, msg
|
||||
end
|
||||
function _G.app.launch(id,perms,parentperms)
|
||||
if parentperms then
|
||||
for k,v in pairs(perms) do
|
||||
if v and not parentperms[k] then
|
||||
return false, "Unable to grant permission: "..k
|
||||
end
|
||||
end
|
||||
end
|
||||
local w,h = term.getSize()
|
||||
if not fs.exists(fs.combine("/apps",id)) then return false,"App Not Found" end
|
||||
local win = windows.create(id,w,h-2,1,2)
|
||||
local env = containers.getENV(fs.combine("/apps",id), win, perms)
|
||||
local appobj = {win=win,co=nil,id=id,title=id}
|
||||
function env.setAppTitle(str) appobj.title=str end
|
||||
function env.setAppTitle(str) appobj.title=tostring(str) end
|
||||
appobj.co = coroutine.create(function () containers.start(env) end)
|
||||
local pid = -1
|
||||
for k=1,#apps+1 do
|
||||
@@ -75,7 +115,7 @@ local function render()
|
||||
term.setCursorPos(1,1)
|
||||
term.setBackgroundColor(colors.black)
|
||||
if focusedapp then
|
||||
term.setBackgroundColor(focusedapp.win.getBackgroundColour())
|
||||
term.setBackgroundColor(focusedapp.win.getMostCommonBackgroundColor())
|
||||
end
|
||||
term.clearLine()
|
||||
term.write(os.date("%I:%M %p"))
|
||||
@@ -87,6 +127,7 @@ local function render()
|
||||
term.setCursorPos(w-right:len()+1,1)
|
||||
term.write(right)
|
||||
term.setCursorPos((w/2)-(home_button:len()/2)+1,h)
|
||||
term.clearLine()
|
||||
term.write(home_button)
|
||||
term.setCursorPos(1,h)
|
||||
if focusedapp then
|
||||
@@ -119,16 +160,7 @@ local function process()
|
||||
event[4] = event[4]-1
|
||||
end
|
||||
if focusedapp then
|
||||
if focusedapp.event then
|
||||
local success, content = coroutine.resume(focusedapp.co,table.unpack(focusedapp.event))
|
||||
if success then
|
||||
-- print(focusedapp.title,focusedapp.filter)
|
||||
focusedapp.event = nil
|
||||
focusedapp.filter = content
|
||||
else
|
||||
app.focusapp(-1)
|
||||
end
|
||||
elseif focusedapp.filter == nil or focusedapp.filter == event[1] then
|
||||
if focusedapp.filter == nil or focusedapp.filter == event[1] then
|
||||
local success, content = coroutine.resume(focusedapp.co,table.unpack(event))
|
||||
if success then
|
||||
focusedapp.filter = content
|
||||
@@ -138,13 +170,16 @@ local function process()
|
||||
end
|
||||
end
|
||||
for k,v in pairs(apps) do
|
||||
if v.filter == nil or v.filter == event[1] and v.event == nil and v ~= focusedapp then
|
||||
v.event = event
|
||||
if (v.filter == nil or v.filter == event[1]) and v ~= focusedapp and event[1] ~= "mouse_click" and event[1] ~= "mouse_up" and event[1] ~= "mouse_drag" and event[1] ~= "mouse_scroll" and event[1] ~= "char" and event[1] ~= "key" and event[1] ~= "key_up" then
|
||||
local success, content = coroutine.resume(v.co,table.unpack(event))
|
||||
if success then
|
||||
v.filter = content
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
print("launching launcher app..")
|
||||
launcherapp = app.launch(launcherappid,{http=true,app=true,repo=true,network=true})
|
||||
launcherapp = app.launch(launcherappid,{http=true,app=true,repo=true,network=true,peripheral=true})
|
||||
print("launched launcher app")
|
||||
parallel.waitForAny(process,render,network.run)
|
||||
@@ -3,7 +3,7 @@ local basalt = require("globals.basalt")
|
||||
-- Get the main frame (your window)
|
||||
local count = 0
|
||||
local main = basalt.getMainFrame()
|
||||
main:setBackground(colors.black)
|
||||
main:setBackground(colors.gray)
|
||||
local w,h = term.getSize()
|
||||
main:addLabel({
|
||||
x = w/2-(7/2)+1,
|
||||
|
||||
Reference in New Issue
Block a user