--[[------------------------------------------------------------------------------------------------------------------
Класс "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
