Concord/concord/builtins/key.lua
2023-02-14 22:20:34 -03:00

37 lines
717 B
Lua

local PATH = (...):gsub('%.builtins%.[^%.]+$', '')
local Component = require(PATH..".component")
local getKey = function (self, key)
local entity = self.__entity
if not entity:inWorld() then
error("entity needs to belong to a world")
end
local world = entity:getWorld()
return world:__assignKey(entity, key)
end
local Key = Component("key", function (self, key)
self.value = getKey(self, key)
end)
function Key:deserialize (data)
self.value = getKey(self, data)
end
function Key:removed (replaced)
if not replaced then
local entity = self.__entity
if entity:inWorld() then
local world = entity:getWorld()
return world:__clearKey(entity)
end
end
end
return Key