Remove: whole keys only if empty
This commit is contained in:
parent
db914eec5a
commit
d00c120cd5
@ -52,7 +52,7 @@ end
|
|||||||
|
|
||||||
--! @brief claim a parcel, update power and update global parcels table
|
--! @brief claim a parcel, update power and update global parcels table
|
||||||
function factions.unclaim_parcel(name, parcelpos)
|
function factions.unclaim_parcel(name, parcelpos)
|
||||||
factions.parcels.remove(parcelpos)
|
factions.remove_key(factions.parcels, parcelpos, nil, "faction", true)
|
||||||
|
|
||||||
local faction = factions.factions.get(name)
|
local faction = factions.factions.get(name)
|
||||||
|
|
||||||
|
@ -99,7 +99,7 @@ end
|
|||||||
-- Create a empty player table.
|
-- Create a empty player table.
|
||||||
function factions.create_player_table()
|
function factions.create_player_table()
|
||||||
local table = {
|
local table = {
|
||||||
faction = ""
|
faction = "",
|
||||||
}
|
}
|
||||||
return factions.on_create_player_table(table)
|
return factions.on_create_player_table(table)
|
||||||
end
|
end
|
||||||
@ -111,3 +111,30 @@ function factions.create_claim_table()
|
|||||||
}
|
}
|
||||||
return factions.on_create_claim_table(table)
|
return factions.on_create_claim_table(table)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- helper functions
|
||||||
|
function factions.db_is_empty(table)
|
||||||
|
for k, v in pairs(table) do
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
function factions.remove_key(db, db_name, db_data, key, write)
|
||||||
|
if not db_data then
|
||||||
|
db_data = db.get(db_name)
|
||||||
|
end
|
||||||
|
|
||||||
|
db_data[key] = nil
|
||||||
|
|
||||||
|
if factions.db_is_empty(db_data) then
|
||||||
|
db.remove(db_name)
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
if write then
|
||||||
|
db.set(db_name, db_data)
|
||||||
|
end
|
||||||
|
|
||||||
|
return db_data
|
||||||
|
end
|
||||||
|
@ -220,7 +220,7 @@ function factions.remove_player(name, player)
|
|||||||
|
|
||||||
factions.factions.set(name, faction)
|
factions.factions.set(name, faction)
|
||||||
|
|
||||||
factions.players.remove(player)
|
factions.remove_key(factions.players, player, nil, "faction", true)
|
||||||
factions.on_player_leave(name, player)
|
factions.on_player_leave(name, player)
|
||||||
|
|
||||||
if factions_config.enable_power_per_player then
|
if factions_config.enable_power_per_player then
|
||||||
@ -281,11 +281,11 @@ function factions.disband(name, reason)
|
|||||||
end
|
end
|
||||||
|
|
||||||
for k, _ in pairs(faction.players) do -- remove players affiliation
|
for k, _ in pairs(faction.players) do -- remove players affiliation
|
||||||
factions.players.remove(k)
|
factions.remove_key(factions.players, k, nil, "faction", true)
|
||||||
end
|
end
|
||||||
|
|
||||||
for k, v in pairs(faction.land) do -- remove parcel claims
|
for k, v in pairs(faction.land) do -- remove parcel claims
|
||||||
factions.parcels.remove(k)
|
factions.remove_key(factions.parcels, k, nil, "faction", true)
|
||||||
end
|
end
|
||||||
|
|
||||||
factions.on_disband(name, reason)
|
factions.on_disband(name, reason)
|
||||||
|
Loading…
Reference in New Issue
Block a user