computing/api.lua

168 lines
5.2 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)
if type(appname)=="string" and appname~="" then
if type(modComputing.apps[appname])~="table" then
if type(def.iconname)=="string" and def.iconname~="" then
if type(def.iconimage)=="string" and def.iconimage~="" then
if type(def.on_iconclick)=="string" and def.on_iconclick~="" then
modComputing.apps[appname] = {
iconname = def.iconname,
iconimage = def.iconimage,
on_iconclick = def.on_iconclick,
}
return true
else
return false, modComputing.log("modComputing.add_app(appname, def) : Invalid 'def.on_iconclick' variable!")
end
else
return false, modComputing.log("modComputing.add_app(appname, def) : Invalid 'def.iconimage' variable!")
end
else
return false, modComputing.log("modComputing.add_app(appname, def) : Invalid 'def.iconname' variable!")
end
else
return false, modComputing.log("modComputing.add_app(appname, def) : "..
("Unable to repeatedly add appname '%s'!"):format(appname)
)
end
else
return false, modComputing.log("modComputing.add_app(appname, def) : Invalid 'appname' variable!")
end
end
modComputing.get_appnames = function()
local appnames = {}
for k,v in pairs(modComputing.apps) do
table.insert(appnames, k)
end
return appnames
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 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