Files
JJBB/Assets/Project/Script/Player/Impact/Impact_ClientNpc.cs
2024-08-23 15:49:34 +08:00

90 lines
2.9 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Games.LogicObj;
using GCGame.Table;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 客户端NPC 有些NPC需要客户端自己在一定的条件触发
/// Effect.txt 表格扩展参数说明
/// Param1 EffectParam.txt中id值
/// Param2 EffectParam.txt中id值
/// Param3 EffectParam.txt中id值
/// Param4 EffectParam.txt中id值
/// EffectParams
/// 参数1 ClientNpc.txt表格中的ID
/// 参数2 ClientNpc.txt表格中的ID
/// 参数3 ClientNpc.txt表格中的ID
/// 参数4 ClientNpc.txt表格中的ID
/// </summary>
public class Impact_ClientNpc : ImpactEffectBase
{
public override EffectLogic.EffectType ImpactEffectType
{
get { return EffectLogic.EffectType.TYPE_CLIENTNPC; }
}
List<Obj_ClientNPC> m_clientNpcs = new List<Obj_ClientNPC>();
public override void StartEffect()
{
base.StartEffect();
for(int i=0;i<Data.getParamValueCount();i++)
{
var paramid = Data.GetParamValuebyIndex(i);
var param = TableManager.GetEffectParamByID(paramid, 0);
if (param != null)
{
for(int j=0;j<param.getParamValueCount();j++)
{
int id = -1;
string indexStr = param.GetParamValuebyIndex(j);
if(int.TryParse(indexStr, out id))
{
Tab_ClientNPC npc = TableManager.GetClientNPCByID(id, 0);
if(npc!=null)
{
CreateNPC(npc);
}
}
}
}
}
}
public void CreateNPC(Tab_ClientNPC npc)
{
Obj_ClientNPC_Init_Data initData = new Obj_ClientNPC_Init_Data();
initData.m_ClientNPC = npc;
initData.m_fX = npc.StartPosX;
initData.m_fZ = npc.StartPosZ;
initData.m_fDir = npc.FaceDir;
if(npc.IsFellowOwer==1)
{
Vector3 newPos = objCharacter.Position - objCharacter.ObjTransform.forward;
initData.m_fX = newPos.x;
initData.m_fZ = newPos.z;
initData.m_OwnerObjId = objCharacter.ServerID;
initData.m_OwerName = objCharacter.name;
}
initData.m_RoleBaseID = npc.RoleBaseID;
initData.m_StrName = npc.Name;
ObjParent newNPC = Singleton<ObjManager>.Instance.NewCharacterObj(Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_CLIENTNPC, initData);
if(newNPC!=null)
{
Obj_ClientNPC clientNpc = newNPC as Obj_ClientNPC;
if (clientNpc != null)
m_clientNpcs.Add(clientNpc);
}
}
public override void StopEffect()
{
base.StopEffect();
for(int i=0;i<m_clientNpcs.Count;i++)
{
m_clientNpcs[i].DestroyObj();
}
m_clientNpcs.Clear();
}
}