132 lines
3.5 KiB
Plaintext
132 lines
3.5 KiB
Plaintext
autoImport("SceneObjectProxy")
|
|
SceneTriggerProxy = class('SceneTriggerProxy', SceneObjectProxy)
|
|
|
|
SceneTriggerProxy.Instance = nil;
|
|
|
|
SceneTriggerProxy.NAME = "SceneTriggerProxy"
|
|
|
|
-- autoImport("Table_RoleData")
|
|
|
|
function SceneTriggerProxy:ctor(proxyName, data)
|
|
self:Reset()
|
|
self.addMode = SceneObjectProxy.AddMode.Normal
|
|
self.proxyName = proxyName or SceneTriggerProxy.NAME
|
|
SceneTriggerProxy.Instance = self
|
|
if data ~= nil then
|
|
self:setData(data)
|
|
end
|
|
self.typeFunc = {}
|
|
self.typeFunc[SceneMap_pb.EACTTYPE_PURIFY] = self.SpawnPurify
|
|
self.typeFunc[SceneMap_pb.EACTTYPE_SEAL] = self.RepairSeal;
|
|
self.typeFunc[SceneMap_pb.EACTTYPE_SCENEEVENT or 3] = self.SceneEvent;
|
|
self.typeFunc[AreaTrigger_Common_ClientType.GvgDroiyan_FightForArea] = self.GvgDroiyan_FightForArea_Handle
|
|
end
|
|
|
|
function SceneTriggerProxy:Reset()
|
|
self.userMap = {}
|
|
end
|
|
|
|
function SceneTriggerProxy:onRegister()
|
|
end
|
|
|
|
function SceneTriggerProxy:onRemove()
|
|
end
|
|
|
|
function SceneTriggerProxy:PureAddSome(datas)
|
|
printRed("PureAddSome");
|
|
for i=1,#datas do
|
|
self:Add(datas[i])
|
|
end
|
|
end
|
|
|
|
function SceneTriggerProxy:Add(data)
|
|
if(self:Find(data.id)==nil) then
|
|
local func = self.typeFunc[data.type]
|
|
if(func) then
|
|
local trigger = func(self,data)
|
|
self.userMap[trigger.id] = trigger
|
|
Game.AreaTrigger_Common:AddCheck(trigger)
|
|
-- print("add trigger range:",data.range)
|
|
end
|
|
end
|
|
end
|
|
|
|
-- 凈化
|
|
function SceneTriggerProxy:SpawnPurify(data)
|
|
local skillID = 20001001
|
|
local pos = PosUtil.DevideVector3( data.pos.x,data.pos.y,data.pos.z )
|
|
local skill = SkillProxy.Instance:GetLearnedSkillWithSameSort(skillID)
|
|
FunctionPurify.Me():StartDarkCover(data.masterid)
|
|
local result = ReusableTable.CreateTable()
|
|
result.id = data.id
|
|
result.pos = pos
|
|
result.reachDis=data.range
|
|
result.type = data.type
|
|
result.serverData = data
|
|
result.data = {id=skill.id, dis = data.range, skill = skillID}
|
|
result.params = {data.actvalue}
|
|
result.master = data.masterid
|
|
return result;
|
|
end
|
|
|
|
function SceneTriggerProxy:RepairSeal(data)
|
|
local pos = PosUtil.DevideVector3( data.pos.x,data.pos.y,data.pos.z )
|
|
local result = ReusableTable.CreateTable()
|
|
result.id = data.id
|
|
result.pos = pos
|
|
result.reachDis = data.range
|
|
result.type = data.type
|
|
result.serverData = data
|
|
return result;
|
|
end
|
|
|
|
function SceneTriggerProxy:SceneEvent(data)
|
|
local pos = PosUtil.DevideVector3( data.pos.x, data.pos.y, data.pos.z )
|
|
local result = ReusableTable.CreateTable()
|
|
result.id = data.id
|
|
result.pos = LuaVector3(data.pos.x, data.pos.y, data.pos.z);
|
|
result.reachDis = data.range
|
|
result.type = data.type
|
|
result.serverData = data
|
|
return result;
|
|
end
|
|
|
|
function SceneTriggerProxy:GvgDroiyan_FightForArea_Handle(data)
|
|
local pos = PosUtil.DevideVector3( data.pos.x, data.pos.y, data.pos.z )
|
|
local result = ReusableTable.CreateTable()
|
|
result.id = data.id
|
|
result.pos = LuaVector3(data.pos.x, data.pos.y, data.pos.z);
|
|
result.reachDis = data.range
|
|
result.type = data.type
|
|
result.serverData = data
|
|
return result;
|
|
end
|
|
|
|
function SceneTriggerProxy:Remove(guid)
|
|
local trigger = self:Find(guid)
|
|
if(trigger~=nil) then
|
|
print("移除mapact",guid)
|
|
self.userMap[guid] = nil
|
|
local areaTrigger = Game.AreaTrigger_Common
|
|
if(areaTrigger) then
|
|
local removed = areaTrigger:RemoveCheck(guid)
|
|
if(removed) then
|
|
ReusableTable.DestroyAndClearTable(removed)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function SceneTriggerProxy:Clear()
|
|
local areaTrigger = Game.AreaTrigger_Common
|
|
if(areaTrigger) then
|
|
local removed
|
|
for k,v in pairs(self.userMap) do
|
|
removed = areaTrigger:RemoveCheck(k)
|
|
if(removed) then
|
|
ReusableTable.DestroyAndClearTable(removed)
|
|
end
|
|
end
|
|
end
|
|
self:Reset()
|
|
end |