using vnxbqy.UI;
|
using UnityEngine;
|
|
public class GA_NpcSummonFight : GActorNpcFight
|
{
|
private H0408_tagPlayerSummonNPCAppear m_H0408;
|
|
// 用于触发点击的组件
|
private NPCInteractProcessor m_NPCInteractProcessor;
|
|
protected override void OnInit(GameNetPackBasic package)
|
{
|
m_H0408 = package as H0408_tagPlayerSummonNPCAppear;
|
|
if (m_H0408 == null)
|
{
|
return;
|
}
|
|
ActorInfo.ownerSID = m_H0408.PlayerID;
|
ActorInfo.moveSpeed = 1;
|
ActorInfo.serverBornPos = new UnityEngine.Vector2(m_H0408.PosX, m_H0408.PosY);
|
if (ClientDungeonStageUtility.isClientDungeon)
|
{
|
var _delta = new Vector3(ActorInfo.serverBornPos.x, 0, ActorInfo.serverBornPos.y) - GA_Hero.recordServerPos;
|
var _real = new Vector3(PlayerDatas.Instance.hero.Pos.x * 2, 0, PlayerDatas.Instance.hero.Pos.z * 2);
|
AdjustPos((ushort)_real.x, (ushort)_real.z);
|
}
|
else
|
{
|
AdjustPos(m_H0408.PosX, m_H0408.PosY);
|
}
|
|
base.OnInit(package);
|
|
// 可选择对象创建碰撞区
|
if (CanBeSelected())
|
{
|
m_NPCInteractProcessor = Root.AddMissingComponent<NPCInteractProcessor>();
|
m_NPCInteractProcessor.npcIntergactEvent -= OnClick;
|
m_NPCInteractProcessor.npcIntergactEvent += OnClick;
|
}
|
|
GActor _parent = GAMgr.Instance.GetBySID(m_H0408.PlayerID);
|
if (_parent != null)
|
{
|
ActorInfo.moveSpeed = _parent.ActorInfo.moveSpeed;
|
}
|
}
|
|
protected override void OnMainModelLoaded()
|
{
|
base.OnMainModelLoaded();
|
|
uint _parentSID = ActorInfo.ownerSID;
|
if (_parentSID != PlayerDatas.Instance.PlayerId)
|
{
|
GA_Player _player = GAMgr.Instance.GetBySID(_parentSID) as GA_Player;
|
if (_player != null)
|
{
|
if (!_player.ShowOrHide)
|
{
|
ShowOrHideModel(false);
|
}
|
}
|
}
|
}
|
|
public sealed override void RequestLifeBar() { }
|
public sealed override void ReleaseLifeBar() { }
|
public sealed override void RefreshLifeBar(ulong value) { }
|
|
public sealed override void RequestName() { }
|
public sealed override void ReleaseName() { }
|
public sealed override void RequestDialogueBubble() { }
|
protected sealed override void UpdateTimeDialogueBubble() { }
|
protected sealed override void OnUpdate() { }
|
protected sealed override void OnLateUpdate() { }
|
protected sealed override void OnFixedUpdate() { }
|
|
public sealed override bool CanAtked()
|
{
|
return NpcConfig.NPCType == (int)E_NpcType.PersonalEnemy;
|
}
|
|
public sealed override bool CanAtkedRotate()
|
{
|
return false;
|
}
|
|
public sealed override bool CanPushedBack()
|
{
|
return false;
|
}
|
|
public sealed override bool CanHurted()
|
{
|
return false;
|
}
|
|
public sealed override bool CanDieFly()
|
{
|
return false;
|
}
|
|
public sealed override bool CanBeSelected()
|
{
|
return NpcConfig.NPCType == (int)E_NpcType.PersonalEnemy;
|
}
|
public sealed override void OnSelect()
|
{
|
if (NpcConfig.NPCType == (int)E_NpcType.PersonalEnemy)
|
{
|
SelectionManager.Request(SelectionManager.E_Type.Red, this, NpcConfig.ModelRadius * 2);
|
}
|
}
|
public sealed override void OnUnSelect()
|
{
|
if (NpcConfig.NPCType == (int)E_NpcType.PersonalEnemy)
|
{
|
SelectionManager.Release(SelectionManager.E_Type.Red);
|
}
|
}
|
public sealed override void OnClick()
|
{
|
if (ActorInfo.serverDie
|
|| BossShowModel.Instance.BossShowing
|
|| StatusMgr.Instance.IsInvisible(ServerInstID))
|
{
|
return;
|
}
|
|
GA_Hero _hero = PlayerDatas.Instance.hero;
|
|
// 当前锁定的目标已经是此对象
|
if (_hero.LockTarget == this && CanAtked())
|
{
|
// 开启攻击至死AI
|
_hero.Behaviour.StartKillUntilDieAI();
|
}
|
else
|
{
|
// 设置锁定目标为此对象
|
_hero.LockTarget = this;
|
_hero.SelectTarget = this;
|
GA_Hero.CallLockTargetChanged(ServerInstID);
|
}
|
}
|
}
|