computing/api.lua

212 lines
7.1 KiB
Lua
Raw Normal View History

2024-11-18 10:02:54 -03:00
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] "
..(
2024-11-18 10:02:54 -03:00
"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)
2024-11-18 10:02:54 -03:00
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))
2024-11-18 10:02:54 -03:00
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,
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
2024-11-18 10:02:54 -03:00
else
--modComputing.debug("[debug] modComputing.add_app() : E")
return false, modComputing.log("modComputing.add_app(appname, def) : Invalid 'def.icon_descryption' variable!")
end
2024-11-18 10:02:54 -03:00
else
--modComputing.debug("[debug] modComputing.add_app() : D")
return false, modComputing.log("modComputing.add_app(appname, def) : Invalid 'def.icon_title' variable!")
2024-11-18 10:02:54 -03:00
end
else
--modComputing.debug("[debug] modComputing.add_app() : C")
return false, modComputing.log("modComputing.add_app(appname, def) : Invalid 'def.icon_name' variable!")
2024-11-18 10:02:54 -03:00
end
else
--modComputing.debug("[debug] modComputing.add_app() : B")
2024-11-18 10:02:54 -03:00
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")
2024-11-18 10:02:54 -03:00
return false, modComputing.log("modComputing.add_app(appname, def) : Invalid 'appname' variable!")
end
end
modComputing.add_app_test = function(buttoname)
modComputing.add_app(buttoname, {
icon_name = buttoname,
icon_type = "button_exit", --types: button/button_exit
icon_title = buttoname,
icon_descryption = "Exemplo de botão!",
icon_image = "icon_smartphone_128x128.png",
--on_iconclick = modComputing.show_smartphone_config,
on_iconclick = function()
core.chat_send_all("Button '"..icon_title.."' pressed!")
end,
})
end
2024-11-18 10:02:54 -03:00
modComputing.get_appnames = function()
local appnames = {}
2024-11-18 10:02:54 -03:00
for k,v in pairs(modComputing.apps) do
table.insert(appnames, k)
end
table.sort(appnames)
2024-11-18 10:02:54 -03:00
return appnames
end
modComputing.get_apps = function()
return modComputing.apps
end
2024-11-18 10:02:54 -03:00
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 nowMount = (math.floor(totalDays/28)%4)+1
local txtMounts3S = {
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), txtMounts3S[nowMount], nowDay)
local nowDate = modComputing.translate(
"@1-@2",
("%3s"):format(txtMounts3S[nowMount]),
("%02d"):format(nowDay)
)
--:format((nowYear+1), txtMounts3S[nowMount], 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