Use dirty flag when saving data
parent
03f6014fe8
commit
98a0f4bdd3
|
@ -12,6 +12,8 @@ end
|
|||
function banking.add_account(acc)
|
||||
assert(not banking._account_by_owner[acc.owner])
|
||||
|
||||
banking.dirty = true
|
||||
|
||||
banking._accounts[#banking._accounts + 1] = acc
|
||||
banking._account_by_owner[acc.owner] = acc
|
||||
return acc
|
||||
|
@ -56,6 +58,8 @@ function banking.transfer(actor, from, to, amount, reason)
|
|||
|
||||
to_acc:deposit(amount, from_acc, reason)
|
||||
|
||||
banking.dirty = true
|
||||
|
||||
adt:post(actor, from_company and from_company.name,
|
||||
"Transfers " .. amount .. " to " .. to_acc.owner)
|
||||
return true
|
||||
|
|
|
@ -25,6 +25,8 @@ function company.create(obj)
|
|||
return false
|
||||
end
|
||||
|
||||
company.dirty = true
|
||||
|
||||
for _, func in pairs(company.registered_on_creates) do
|
||||
func(obj)
|
||||
end
|
||||
|
|
|
@ -28,7 +28,6 @@ ChatCmdBuilder.new("company", function(cmd)
|
|||
|
||||
if company.create(comp) then
|
||||
adt:post(name, comp.name, "Registered company")
|
||||
company.save()
|
||||
return true, "Registered company"
|
||||
else
|
||||
return false, "Unable to register company, an unknown error occured"
|
||||
|
|
|
@ -22,7 +22,7 @@ ChatCmdBuilder.new("shop", function(cmd)
|
|||
end
|
||||
|
||||
if shop.register_shop(sname, obj) then
|
||||
shop.save()
|
||||
shop.dirty = true
|
||||
return true, "Registered shop"
|
||||
else
|
||||
return false, "Unable to register shop, a shop of that name already exists"
|
||||
|
|
|
@ -9,6 +9,7 @@ function lib_utils.make_saveload(tab, storage, itemarraykey, registername, class
|
|||
|
||||
tab.__saves = tab.__saves or {}
|
||||
tab.__loads = tab.__loads or {}
|
||||
tab.dirty = false
|
||||
|
||||
table.insert(tab.__saves, function()
|
||||
local res = _.map(tab[itemarraykey], function(item)
|
||||
|
@ -27,15 +28,32 @@ function lib_utils.make_saveload(tab, storage, itemarraykey, registername, class
|
|||
end)
|
||||
end)
|
||||
|
||||
if not tab.save then
|
||||
local function step()
|
||||
if tab.dirty then
|
||||
tab.save()
|
||||
end
|
||||
|
||||
minetest.after(20, step)
|
||||
end
|
||||
|
||||
minetest.after(math.random(5,13), step)
|
||||
minetest.register_on_shutdown(function() tab.save() end)
|
||||
end
|
||||
|
||||
tab.save = function()
|
||||
for _, func in pairs(tab.__saves) do
|
||||
func()
|
||||
end
|
||||
|
||||
tab.dirty = false
|
||||
end
|
||||
|
||||
tab.load = function()
|
||||
for _, func in pairs(tab.__loads) do
|
||||
func()
|
||||
end
|
||||
|
||||
tab.dirty = false
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue