85 lines
1.9 KiB
Lua
85 lines
1.9 KiB
Lua
local core = minetest
|
|
|
|
-- members: {name = "serialized meta"}
|
|
|
|
-- init(partyname, data, members)
|
|
-- create(partyname)
|
|
|
|
-- delete() -- must guarantee that getMembers will still work afterwards
|
|
-- rename
|
|
-- GetName()
|
|
-- GetData()
|
|
-- GetMembers()
|
|
-- Join()
|
|
-- leave(playername)
|
|
|
|
-- core.write_json / core.parse_json has problems when called on {}
|
|
local serialize = core.serialize
|
|
local deserialize = core.deserialize
|
|
|
|
local PartyObject = {}
|
|
|
|
PartyObject.getName = function(self)
|
|
return self.name
|
|
end
|
|
|
|
PartyObject.getData = function(self)
|
|
local result = {}
|
|
result.created = self.created
|
|
return result
|
|
end
|
|
|
|
PartyObject.getMembers = function(self)
|
|
return self.members
|
|
end
|
|
|
|
PartyObject.delete = function()
|
|
return "OK"
|
|
end
|
|
|
|
PartyObject.rename = function() -- function(self, newname)
|
|
return "OK"
|
|
end
|
|
|
|
PartyObject.join = function(self, playername)
|
|
local metadata = {joined = os.time()}
|
|
self.members[playername] = serialize(metadata)
|
|
return "OK"
|
|
end
|
|
|
|
PartyObject.leave = function (self, playername)
|
|
self.members[playername] = nil
|
|
return "OK"
|
|
end
|
|
|
|
PartyObject.getPlayerData = function (self, playername)
|
|
if not self.members[playername] then
|
|
return false, "player is not part of the party"
|
|
end
|
|
return deserialize(self.members[playername])
|
|
end
|
|
|
|
PartyObject.setPlayerData = function (self, playername, data)
|
|
if not self.members[playername] then
|
|
return false, "player is not part of the party"
|
|
end
|
|
self.members[playername] = serialize(data)
|
|
return "OK"
|
|
end
|
|
|
|
PartyObject.load = function (partyname, data, members)
|
|
local party = table.copy(data)
|
|
party.name = partyname
|
|
party.members = members
|
|
return setmetatable(party, {__index = PartyObject})
|
|
end
|
|
|
|
PartyObject.create = function(partyname)
|
|
local data = {
|
|
created = os.time()
|
|
}
|
|
local members = {}
|
|
return PartyObject.load(partyname, data, members)
|
|
end
|
|
|
|
return PartyObject |