--[[------------------------------------------------------------------------------------------------------------------ Класс "actor_proxy". Обеспечивает поддержку актёра, даже если он в офлайне. Чугай Алексадр --------------------------------------------------------------------------------------------------------------------]] class "actor_proxy" -- конструктор function actor_proxy:__init() self.initialized = false end -- инициализация. -- происходит только в момент первого после старта симулятора обращения. function actor_proxy:init() if not self.initialized then -- printf( "actor_proxy: init" ) self.online = false self.alife = alife() if self.alife then self.actor_id = self.alife:actor().id end self.actor = nil self.initialized = true end end -- деинициализация. -- происходит в момент дерегистрации серверных объектов. -- вызывается из se_smart_terrain:on_unregister() TODO remove this hack function actor_proxy:deinit() if self.initialized then -- printf( "actor_proxy: deinit" ) self.alife = nil self.actor = nil self.initialized = false end end -- Получение ID игрока function actor_proxy:id() self:init() return self.actor_id end function actor_proxy:has_info( name ) self:init() has_alife_info(name) end function actor_proxy:dont_has_info( name ) self:init() if self.online then -- printf( "actor_proxy: dont_has_info online: info=%s", name ) return not has_alife_info( name ) else -- printf( "actor_proxy: dont_has_info offline: info=%s", name ) return not has_alife_info( self.actor_id, name ) end end -- рождение актёра в онлайн function actor_proxy:net_spawn( obj ) self:init() self.online = true self.actor = obj end -- уход актёра из онлайна function actor_proxy:net_destroy() self:init() self.online = false self.actor = nil end