mirror of
https://github.com/ExeVirus/formspec_editor.git
synced 2025-03-23 09:52:22 +00:00
globalstep based formspec updating
This commit is contained in:
parent
4d7f2970c1
commit
6de8e67842
1 changed files with 63 additions and 53 deletions
|
@ -10,7 +10,8 @@ minetest.register_alias("mapgen_water_source", "air")
|
|||
--Variables
|
||||
local modpath = minetest.get_modpath("formspec_edit")
|
||||
local insecure_env = minetest.request_insecure_environment()
|
||||
local auto_update_time = 0.2 --seconds
|
||||
local update_time = 0.2 --seconds
|
||||
|
||||
local error_formspec = [[
|
||||
formspec_version[4]
|
||||
size[8,2]
|
||||
|
@ -19,11 +20,17 @@ label[0.375,0.5;Error:formspec.spec is either ]
|
|||
label[0.375,1;non-existent,or empty]
|
||||
]]
|
||||
|
||||
--Crash if not singleplayer
|
||||
--TODO: hide the 'Host server' checkbox in main menu then possible
|
||||
if not minetest.is_singleplayer() then
|
||||
error("[formspec_editor] This game doesn't work in multiplayer!")
|
||||
end
|
||||
|
||||
--function declarations
|
||||
local update_formspec = nil
|
||||
local load_formspec = nil
|
||||
local auto_update = nil
|
||||
local turn_off_hud = nil
|
||||
local set_sky
|
||||
|
||||
--Registrations
|
||||
|
||||
|
@ -32,7 +39,6 @@ local turn_off_hud = nil
|
|||
-----------------------------------
|
||||
minetest.register_on_joinplayer(
|
||||
function(player_ref,_)
|
||||
auto_update(player_ref:get_player_name())
|
||||
turn_off_hud(player_ref)
|
||||
set_sky(player_ref)
|
||||
end
|
||||
|
@ -51,14 +57,6 @@ end
|
|||
|
||||
--function definitions
|
||||
|
||||
-----------------------------------
|
||||
--auto_update()
|
||||
-----------------------------------
|
||||
auto_update = function(player_name)
|
||||
update_formspec(player_name)
|
||||
minetest.after(auto_update_time,auto_update,player_name)
|
||||
end
|
||||
|
||||
-----------------------------------
|
||||
--update_formspec()
|
||||
-----------------------------------
|
||||
|
@ -117,3 +115,15 @@ set_sky = function(player_ref)
|
|||
player_ref:set_sky(sky)
|
||||
player_ref:override_day_night_ratio(0)
|
||||
end
|
||||
|
||||
local time = 0
|
||||
minetest.register_globalstep(function(dtime)
|
||||
time = time + dtime
|
||||
if time >= update_time then
|
||||
local player = minetest.get_connected_players()[1]
|
||||
if player then
|
||||
update_formspec(player:get_player_name())
|
||||
end
|
||||
time = 0
|
||||
end
|
||||
end)
|
||||
|
|
Loading…
Add table
Reference in a new issue