2025-01-29 19:22:49 +05:00
|
|
|
local S = minetest.get_translator("surface_effect")
|
|
|
|
|
|
|
|
local version = "0.0.1"
|
2025-02-04 18:15:45 +05:00
|
|
|
local width = 15
|
|
|
|
local height = 10
|
|
|
|
local winsize = "size["..width..",".. height .."]"
|
|
|
|
local bgimage = "no_prepend[] bgcolor[#FFFFFF;true] background[0,-1;15,11;surface_effect_tablet_bg.png]"
|
|
|
|
surface_effect.display = {}
|
|
|
|
|
|
|
|
local function get_charge_indicator(power)
|
|
|
|
local arm = 65535 / 100
|
|
|
|
local percent = (65535 - (power - 65535))/arm
|
2025-01-29 19:22:49 +05:00
|
|
|
|
2025-02-04 18:15:45 +05:00
|
|
|
if percent > 55 then
|
|
|
|
return 3
|
|
|
|
elseif percent > 15 then
|
|
|
|
return 2
|
|
|
|
elseif percent < 10 then
|
|
|
|
return 1
|
|
|
|
end
|
|
|
|
return 0
|
|
|
|
end
|
|
|
|
|
|
|
|
function surface_effect.display.main(player, power)
|
2025-01-29 19:22:49 +05:00
|
|
|
local pos = player:get_pos()
|
|
|
|
local info_biome = minetest.get_biome_data(pos)
|
|
|
|
--minetest.log(dump(info_biome))
|
|
|
|
local formspec = {
|
|
|
|
"formspec_version[4]",
|
|
|
|
winsize,
|
|
|
|
bgimage,
|
2025-02-04 18:15:45 +05:00
|
|
|
"container[0,0]",
|
|
|
|
"style_type[label;textcolor=green;bgcolor=red]",
|
|
|
|
"label[1.0,0.5;"..S("Software version: @1", minetest.colorize("#FF0000", version)).."]",
|
|
|
|
"image[".. width - 2 ..",0.3;1.0,0.5;surface_effect_tablet_charge_level".. get_charge_indicator(power) .. ".png]",
|
|
|
|
"container_end[]",
|
|
|
|
"image[1.0,1.0;0.7,0.7;surface_effect_thermometer.png]",
|
|
|
|
"label[1.5,1.0;"..math.floor(info_biome.heat).."]",
|
|
|
|
"button[".. width / 2 .. ",".. height - 1 ..";0.5,0.5;home;|]"
|
2025-01-29 19:22:49 +05:00
|
|
|
--"style[weather;textcolor=black;size=2]",
|
|
|
|
--"image_button[0.5,0.5;1.5,1.5;surface_effect_weather_btn.png;weather;Weather]"
|
|
|
|
}
|
|
|
|
|
|
|
|
return table.concat(formspec, "")
|
|
|
|
end
|
|
|
|
|
|
|
|
minetest.register_tool("surface_effect:tablet", {
|
|
|
|
description = S("Tablet"),
|
|
|
|
inventory_image = "surface_effect_tablet.png",
|
|
|
|
wear_represents = "technic_RE_charge",
|
|
|
|
groups = {not_in_creative_inventory = 0},
|
|
|
|
on_use = function(stack, player, pointed)
|
|
|
|
local name = player:get_player_name()
|
|
|
|
local meta = stack:get_meta()
|
|
|
|
local charge = meta:get_int("technic:charge")
|
|
|
|
if charge == -1 then
|
|
|
|
minetest.chat_send_player(name, S("No charge, device needs to be charged"))
|
|
|
|
end
|
|
|
|
charge = charge - 1
|
|
|
|
|
|
|
|
if charge < 0 then
|
|
|
|
technic.set_RE_wear(stack, 0, 65535)
|
|
|
|
meta:set_int("technic:charge", -1)
|
|
|
|
minetest.chat_send_player(name, S("Not charged, the device needs to be charged"))
|
|
|
|
end
|
|
|
|
|
|
|
|
if charge > 0 then
|
|
|
|
technic.set_RE_wear(stack, charge, 65535)
|
|
|
|
meta:set_int("technic:charge", charge)
|
2025-02-04 18:15:45 +05:00
|
|
|
minetest.show_formspec(name, "surface_effect:display_main", surface_effect.display.main(player, charge))
|
2025-01-29 19:22:49 +05:00
|
|
|
--stack:set_stack()
|
|
|
|
end
|
|
|
|
return stack
|
|
|
|
end,
|
|
|
|
})
|
|
|
|
|
|
|
|
if minetest.get_modpath("technic") then
|
|
|
|
technic.register_power_tool("surface_effect:tablet", 65535)
|
2025-02-04 18:15:45 +05:00
|
|
|
end
|