computing/api.lua
Lunovox 86b3a3df21
2024-11-26 03:47:28 -03:00

249 lines
8.6 KiB
Lua

modComputing.apps = { }
modComputing.debug = function(text, playername)
if text ~= nil
and type(text) == "string"
and text ~= ""
then
if core.settings:get_bool(modComputing.modname..".debug") then
if playername ~= nil
and type(playername) == "string"
and playername ~= ""
then
local player = core.get_player_by_name(playername)
if player ~=nil and player:is_player() then
core.chat_send_player(
playername, text
)
core.log('action',"["..modComputing.modname:upper()..":DEBUG:"..playername.."] "..text)
else
core.log('error',
"["..modComputing.modname:upper()..":DEBUG] "
..(
"Unable to address debug for player '%s'."
):format(dump(playername))
)
core.log('action',"["..modComputing.modname:upper()..":DEBUG] "..text)
end
else
core.chat_send_all(text)
core.log('action',"["..modComputing.modname:upper()..":DEBUG] "..text)
end
end
end
end
modComputing.log = function(text)
local sufix = "["..modComputing.modname:upper()..":ERRO] "
core.chat_send_all(sufix..text)
core.log('action',sufix..text)
return sufix..text
end
modComputing.add_app = function(appname, def)
--modComputing.debug("[debug] modComputing.add_app(appname="..dump(appname)..", def) : def="..dump(def))
if type(appname)=="string" and appname~="" then
if type(modComputing.apps[appname])~="table" then
if type(def.icon_name)=="string" and def.icon_name~="" then
if type(def.icon_title)=="string" and def.icon_title~="" then
if type(def.icon_descryption)=="string" and def.icon_descryption~="" then
if type(def.icon_type)=="string" and def.icon_type~="" then
if type(def.icon_image)=="string" and def.icon_image~="" then
if type(def.on_iconclick)=="function" then
modComputing.apps[appname] = {
icon_name = def.icon_name,
icon_title = def.icon_title,
icon_descryption = def.icon_descryption,
icon_type = def.icon_type,
icon_image = def.icon_image,
is_visible = def.is_visible or true,
on_iconclick = def.on_iconclick,
}
return true
else
--modComputing.debug("[debug] modComputing.add_app() : H")
return false, modComputing.log("modComputing.add_app(appname, def) : Invalid 'def.on_iconclick' variable!")
end
else
--modComputing.debug("[debug] modComputing.add_app() : G")
return false, modComputing.log("modComputing.add_app(appname, def) : Invalid 'def.icon_image' variable!")
end
else
--modComputing.debug("[debug] modComputing.add_app() : F")
return false, modComputing.log("modComputing.add_app(appname, def) : Invalid 'def.icon_type' variable!")
end
else
--modComputing.debug("[debug] modComputing.add_app() : E")
return false, modComputing.log("modComputing.add_app(appname, def) : Invalid 'def.icon_descryption' variable!")
end
else
--modComputing.debug("[debug] modComputing.add_app() : D")
return false, modComputing.log("modComputing.add_app(appname, def) : Invalid 'def.icon_title' variable!")
end
else
--modComputing.debug("[debug] modComputing.add_app() : C")
return false, modComputing.log("modComputing.add_app(appname, def) : Invalid 'def.icon_name' variable!")
end
else
--modComputing.debug("[debug] modComputing.add_app() : B")
return false, modComputing.log("modComputing.add_app(appname, def) : "..
("Unable to repeatedly add appname '%s'!"):format(appname)
)
end
else
--modComputing.debug("[debug] modComputing.add_app() : A")
return false, modComputing.log("modComputing.add_app(appname, def) : Invalid 'appname' variable!")
end
end
modComputing.add_test_apps = function()
--[[
if core.settings:get_bool(modComputing.modname..".debug") then
modComputing.add_app("computing:btnMinetest", {
icon_name = "btnMinetest",
icon_type = "button", --types: button/button_exit
icon_title = "MINETEST",
icon_descryption = "Jogo de Voxel muito legal.",
icon_image = "icon_smartphone_128x128.png",
--on_iconclick = modComputing.show_smartphone_config,
on_iconclick = function()
core.chat_send_all("Button 'btnMinetest' pressed!")
end,
})
modComputing.add_app("computing:btnDoom", {
icon_name = "btnDoom",
icon_type = "button", --types: button/button_exit
icon_title = "DOOM",
icon_descryption = "Jogo de tiro em primeira pessoa.",
icon_image = "icon_smartphone_128x128.png",
--on_iconclick = modComputing.show_smartphone_config,
on_iconclick = function()
core.chat_send_all("Button 'btnDoom' pressed!")
end,
})
modComputing.add_app("computing:btnMastodon", {
icon_name = "btnMastodon",
icon_type = "button", --types: button/button_exit
icon_title = "MASTODON",
icon_descryption = "Uma rede social muito legal.",
icon_image = "icon_smartphone_128x128.png",
--on_iconclick = modComputing.show_smartphone_config,
on_iconclick = function()
core.chat_send_all("Button 'btnMastodon' pressed!")
end,
})
modComputing.add_app("computing:btnLockPhone", {
icon_name = "btnLockPhone",
icon_type = "button_exit", --types: button/button_exit
icon_title = "LOCK",
icon_descryption = "Bloqueia tela do Smartphone.",
icon_image = "icon_smartphone_128x128.png",
--on_iconclick = modComputing.show_smartphone_config,
on_iconclick = function()
core.chat_send_all("Button 'btnLockPhone' pressed!")
end,
})
end
--[[ ]]
end
modComputing.get_appnames = function()
local appnames = {}
for k,v in pairs(modComputing.apps) do
table.insert(appnames, k)
end
table.sort(appnames)
return appnames
end
modComputing.get_apps = function()
return modComputing.apps
end
modComputing.get_app = function(appname)
if type(appname)=="string" and appname~="" then
if type(modComputing.apps[appname])=="table" then
return modComputing.apps[appname]
else
return false, modComputing.log("modComputing.get_app(appname) : "..
("Cannot find appname '@1'!"):format(appname)
)
end
else
return false, modComputing.log("modComputing.get_app(appname) : Invalid 'appname' variable!")
end
end
modComputing.getTextNowWeekDay3S = function()
local txtWeekDays3S = {
modComputing.translate("Sun"), --Sunday
modComputing.translate("Mon"), --Monday
modComputing.translate("Tue"), --Tuesday
modComputing.translate("Wed"), --Wednesday
modComputing.translate("Thu"), --Thursday
modComputing.translate("Fri"), --Friday
modComputing.translate("Sat"), --Saturday
}
local totalDays = core.get_day_count() + 1
local nowRow = math.floor((totalDays-1)/7)+1
local nowCol = totalDays - ((nowRow-1)*7)
return txtWeekDays3S[nowCol]
end
modComputing.getTextNowTime = function()
local current_time = math.floor(core.get_timeofday() * 1440)
local minutes = current_time % 60
local hour = (current_time - minutes) / 60
return ("%02d:%02d"):format(hour, minutes)
end
modComputing.getNowYear = function()
local totalDays = core.get_day_count()
local nowYear = totalDays/(28*4)
return nowYear
end
modComputing.getTextNowDate = function()
local totalDays = core.get_day_count()
local nowMonth = (math.floor(totalDays/28)%4)+1
local txtMonths3S = {
modComputing.translate("SPR"),
modComputing.translate("SUM"),
modComputing.translate("AUT"),
modComputing.translate("WIN"),
} --SPRING, SUMMER, AUTUMN, WINTER
local nowDay = math.floor(totalDays%28)+1
--local nowDate = ("%04d-%3s-%02d"):format((nowYear+1), txtMonths3S[nowMonth], nowDay)
local nowDate = modComputing.translate(
"@1-@2",
("%3s"):format(txtMonths3S[nowMonth]),
("%02d"):format(nowDay)
)
--:format((nowYear+1), txtMonths3S[nowMonth], nowDay)
return nowDate
end
modComputing.doJumpDay = function(pular)
if type(tonumber(pular)) == "number" and tonumber(pular) >= 1 then
--modComputing.debug("pulando = "..pular)
for n = 1, tonumber(pular) do
core.set_timeofday(0.0)
core.set_timeofday(5/24) --It goes to 05h in the morning, time to wake up.
end
local diaAtual = core.get_day_count()
--core.chat_send_player(playername,
core.chat_send_all(
"[".. core.colorize("#00FFFF", modComputing.modname:upper()).."] "
..modComputing.translate(
"Now this is the day @1°.",
string.format("%02d", diaAtual)
)
)
--modComputing.update_cicle()
return true
else
return false
end
end