summaryrefslogtreecommitdiff
path: root/server/server.lua
diff options
context:
space:
mode:
Diffstat (limited to 'server/server.lua')
-rw-r--r--server/server.lua30
1 files changed, 23 insertions, 7 deletions
diff --git a/server/server.lua b/server/server.lua
index 097bc99..24b49ae 100644
--- a/server/server.lua
+++ b/server/server.lua
@@ -7,6 +7,8 @@ local Pos = coords.Pos
local worldgen = require"worldgen"
local MapS = require"map".MapS
local posix_time = require"posix.time"
+local posix_signal = require"posix.signal"
+
math.randomseed(os.time())
local host = enet.host_create("*:8473",nil,2)
@@ -181,20 +183,34 @@ local function player_near_chunk(cp)
return false
end
+local function save_things()
+ for cp,ch in map:iter_chunks() do
+ map:save_chunk(cp)
+ if not player_near_chunk(cp) then
+ -- print("unloading chunk",cp)
+ map:remove_chunk(cp)
+ end
+ end
+end
+
local function tick(ntick)
if ntick % 30 == 0 then
-- print("saving things")
- for cp,ch in map:iter_chunks() do
- map:save_chunk(cp)
- if not player_near_chunk(cp) then
- -- print("unloading chunk",cp)
- map:remove_chunk(cp)
- end
- end
+ save_things()
end
end
+local stopping=false
+
+posix_signal.signal(posix_signal.SIGINT, function() stopping=true end)
+
while true do
+ if stopping then
+ print("stopping...")
+ save_things()
+ break
+ end
+
local now = timenow()
local dt = now - last_tick_time
local time_till_next_tick = (last_tick_time+tick_interval)-now