84 lines
2.7 KiB
Plaintext
84 lines
2.7 KiB
Plaintext
FunctionTransform = class("FunctionTransform")
|
|
|
|
function FunctionTransform.Me()
|
|
if nil == FunctionTransform.me then
|
|
FunctionTransform.me = FunctionTransform.new()
|
|
end
|
|
return FunctionTransform.me
|
|
end
|
|
|
|
function FunctionTransform:ctor()
|
|
-- self.transformedPlayers = {}
|
|
end
|
|
|
|
function FunctionTransform:Reset()
|
|
end
|
|
|
|
--player變身為transformID
|
|
function FunctionTransform:TransformTo(player,transformID)
|
|
player.data.transformData:SetTransformID(player,transformID)
|
|
-- self.transformedPlayers[player.data.id] = player.data.id
|
|
if(player:GetCreatureType() == Creature_Type.Me) then
|
|
EventManager.Me():AddEventListener(SceneUserEvent.SceneAddRoles, self.OnAddUsersHandler, self)
|
|
EventManager.Me():AddEventListener(SceneUserEvent.ChangeProfession, self.TrySetOtherTransformedAtk, self)
|
|
local isTransformAtkMap = self:IsTransformAtkMap()
|
|
if(isTransformAtkMap) then
|
|
self:OnAddUsersHandler(NSceneUserProxy.Instance:GetAll())
|
|
end
|
|
else
|
|
player.data:Camp_SetIsSelfTransformedAtk(self:IsTransformAtkMap())
|
|
end
|
|
-- local data = player.transformData:GetNpcOrMonsterData()
|
|
-- if(data ~= nil) then
|
|
-- printRed( data.FloatHeight)
|
|
-- player.floatHeight = data.FloatHeight
|
|
-- end
|
|
end
|
|
|
|
--結束變身
|
|
function FunctionTransform:EndTransform(player)
|
|
player.data.transformData:SetTransformID(player,0)
|
|
-- printRed( 0)
|
|
-- player.floatHeight = 0
|
|
self:RemovePlayer(player)
|
|
end
|
|
|
|
--移除
|
|
function FunctionTransform:RemovePlayer(player)
|
|
if(player) then
|
|
if(player:GetCreatureType() == Creature_Type.Me) then
|
|
EventManager.Me():RemoveEventListener(SceneUserEvent.SceneAddRoles, self.OnAddUsersHandler, self)
|
|
EventManager.Me():RemoveEventListener(SceneUserEvent.ChangeProfession, self.TrySetOtherTransformedAtk, self)
|
|
local otherPlayers = NSceneUserProxy.Instance:GetAll()
|
|
for k,v in pairs(otherPlayers) do
|
|
v.data:Camp_SetIsOtherTransformedAtk(false)
|
|
end
|
|
else
|
|
player.data:Camp_SetIsSelfTransformedAtk(false)
|
|
end
|
|
-- self.transformedPlayers[player.data.id] = nil
|
|
end
|
|
end
|
|
|
|
function FunctionTransform:IsTransformAtkMap()
|
|
if(Game.MapManager:IsPVPMode_PoringFight())then
|
|
return true
|
|
end
|
|
return SceneProxy.Instance.currentScene and SceneProxy.Instance.currentScene:CanTransformAtk() or false
|
|
end
|
|
|
|
function FunctionTransform:OnAddUsersHandler(players)
|
|
if(self:IsTransformAtkMap()) then
|
|
for k,player in pairs(players) do
|
|
self:TrySetOtherTransformedAtk(player)
|
|
end
|
|
end
|
|
end
|
|
|
|
function FunctionTransform:TrySetOtherTransformedAtk(player)
|
|
-- LogUtility.Info(player.data:GetProfesstion())
|
|
-- LogUtility.Info(player.data.id)
|
|
if(player and player.data:GetProfesstion() ~= RoleDefines_Profession.Novice and self:IsTransformAtkMap()) then
|
|
player.data:Camp_SetIsOtherTransformedAtk(true)
|
|
end
|
|
end |