73 lines
1.9 KiB
Text
73 lines
1.9 KiB
Text
--[[------------------------------------------------------------------------------------------------------------------
|
|
Êëàññ "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
|