65 lines
2.0 KiB
Plaintext
65 lines
2.0 KiB
Plaintext
SkillFreeCast_Client = class("SkillFreeCast_Client", SkillFreeCast)
|
|
|
|
local FindCreature = SceneCreatureProxy.FindCreature
|
|
|
|
function SkillFreeCast_Client.Create(args)
|
|
return ReusableObject.Create(SkillFreeCast_Client, true, args)
|
|
end
|
|
|
|
function SkillFreeCast_Client:Update_FreeCast(time, deltaTime, creature)
|
|
if not self.info.LogicClass.Client_PreUpdate_FreeCast(self, time, deltaTime, creature) then
|
|
self:_SwitchToNone(creature)
|
|
return false
|
|
end
|
|
return SkillFreeCast_Client.super.Update_FreeCast(self, time, deltaTime, creature)
|
|
end
|
|
|
|
function SkillFreeCast_Client:CheckTargetCreature(creature)
|
|
local targetCreature = FindCreature(self.targetCreatureGUID)
|
|
if nil == targetCreature then
|
|
return false
|
|
end
|
|
|
|
if not self:CheckTargetPosition(creature, targetCreature:GetPosition()) then
|
|
return false
|
|
end
|
|
|
|
return self.info:CheckTarget(creature, targetCreature)
|
|
end
|
|
|
|
function SkillFreeCast_Client:CheckTargetPosition(creature, targetPosition)
|
|
local launchRange = self.info:GetLaunchRange(creature)
|
|
if 0 < launchRange then
|
|
local testRange = launchRange * 1.5
|
|
local currentPosition = creature:GetPosition()
|
|
if VectorUtility.DistanceXZ(currentPosition, targetPosition) > testRange then
|
|
return false
|
|
end
|
|
end
|
|
return true
|
|
end
|
|
|
|
function SkillFreeCast_Client:_SwitchToAttack(creature)
|
|
SkillFreeCast_Client.super._SwitchToAttack(self, creature)
|
|
|
|
local targetCreature
|
|
if self.targetCreatureGUID ~= 0 then
|
|
targetCreature = FindCreature(self.targetCreatureGUID)
|
|
end
|
|
creature:Client_UseSkill(self.info:GetSkillID(creature), targetCreature, self.phaseData:GetPosition(), nil, nil, nil, nil, true, true)
|
|
end
|
|
|
|
function SkillFreeCast_Client:_SwitchToNone(creature)
|
|
local phase = self.phaseData:GetSkillPhase()
|
|
SkillFreeCast_Client.super._SwitchToNone(self, creature)
|
|
if phase == SkillPhase.FreeCast then
|
|
self:_NotifyServer(creature)
|
|
end
|
|
end
|
|
|
|
function SkillFreeCast_Client:_NotifyServer(creature)
|
|
creature:Client_UseSkillHandler(
|
|
self.random,
|
|
self.phaseData,
|
|
self.targetCreatureGUID)
|
|
end |