public FlyingItemInfo LookUp(int id) { FlyingItemInfo info = null; m_list.TryGetValue(id, out info); return(info); }
public Info(FlyingItemInfo itemInfo) { m_itemInfo = itemInfo; m_duration = m_itemInfo.Item_ExistTime; m_isLaunchSuspend = m_itemInfo.IsLaunchSuspend; m_bouncyCount = m_itemInfo.Item_BouncyCount; }
//远程攻击-激发飞行特效 void RemoteAttack(AnimationEvent animEvent) { GameObject actorObj = gameObject.transform.parent.gameObject; ActorProp actorProp = actorObj.GetComponent <ActorProp>(); if (actorProp == null) { return; } Actor actor = actorProp.ActorLogicObj; AttackAction action = actor.ActionControl.LookupAction(ActorAction.ENType.enAttackAction) as AttackAction; if (null == action) { Debug.LogWarning("Remote Attack is error, attack action is null"); return; } ++action.m_skillResultIDIndex; if (null == action.m_skillInfo) {//技能为空 Debug.LogWarning("remote attack,skill info is null,skillID:" + action.m_skillID); return; } int skillID = action.m_skillID; //飞行道具的id和SkillResultID是一样的 FlyingItemInfo itemInfo = GameTable.FlyingItemTableAsset.LookUp(action.SkillResultID); if (itemInfo == null) { Debug.LogWarning("flying item info is null, id is " + action.SkillResultID.ToString()); return; } Vector3 targetPos = Vector3.zero; Actor skillTarget = action.m_skillTarget; if (skillTarget != null) { if (skillTarget.Type == ActorType.enMain && skillTarget.IsActorExit) { skillTarget = ActorManager.Singleton.MainActor; action.m_skillTargetID = skillTarget.ID; } targetPos = skillTarget.RealPos; } if (skillTarget != null) { actor.Forward(skillTarget.RealPos); } RemoteAttackManager.Info info = new RemoteAttackManager.Info(itemInfo); info.m_srcActor = actor; info.m_dstActor = skillTarget; info.m_targetPos = targetPos; info.m_skillID = skillID; RemoteAttackManager.Singleton.Add(info); if (animEvent.intParameter != 0) {//隐藏武器 actor.ShowWeaponModelWithTable(false); } }
public void Load(byte[] bytes) { m_list = new Dictionary <int, FlyingItemInfo>(); BinaryHelper helper = new BinaryHelper(bytes); int length = helper.ReadInt(); for (int index = 0; index < length; ++index) { FlyingItemInfo info = new FlyingItemInfo(); info.Load(helper); m_list.Add(info.ID, info); } }
// 加载 远程相关资源 static void LoadRemoteObj(int id) { if (id <= 0) { return; } FlyingItemInfo flyingItemInfo = m_flyingItemTable.LookUp(id); if (null == flyingItemInfo) { return; } // 飞行道具预设 if (!string.IsNullOrEmpty(flyingItemInfo.Item_Name) && !m_hadResourceList.Contains(flyingItemInfo.Item_Name)) { m_resourceList.Add(flyingItemInfo.Item_Name, (int)Type.enEffect); m_hadResourceList.Add(flyingItemInfo.Item_Name); Debug.Log("m_resourceList 添加 flyingItemInfo.Item_Name " + flyingItemInfo.Item_Name); } // 预警特效 if (!string.IsNullOrEmpty(flyingItemInfo.WarningEffectName) && !m_hadResourceList.Contains(flyingItemInfo.WarningEffectName)) { m_resourceList.Add(flyingItemInfo.WarningEffectName, (int)Type.enEffect); m_hadResourceList.Add(flyingItemInfo.WarningEffectName); Debug.Log("m_resourceList 添加 flyingItemInfo.WarningEffectName" + flyingItemInfo.WarningEffectName); } // 移除后特效 if (!string.IsNullOrEmpty(flyingItemInfo.EffectNameForRemove) && !m_hadResourceList.Contains(flyingItemInfo.EffectNameForRemove)) { m_resourceList.Add(flyingItemInfo.EffectNameForRemove, (int)Type.enEffect); m_hadResourceList.Add(flyingItemInfo.EffectNameForRemove); Debug.Log("m_resourceList 添加 flyingItemInfo.EffectNameForRemove" + flyingItemInfo.EffectNameForRemove); } //飞行道具技能Result LoadEffect(flyingItemInfo.Item_ResultID); //移除后效果的resultid LoadEffect(flyingItemInfo.ResultIDForRemove); }
//远程攻击-多个目标 void RemoteAttackMultiTarget(AnimationEvent animEvent) { GameObject actorObj = gameObject.transform.parent.gameObject; ActorProp actorProp = actorObj.GetComponent <ActorProp>(); if (actorProp == null) { return; } m_self = actorProp.ActorLogicObj; AttackAction action = m_self.ActionControl.LookupAction(ActorAction.ENType.enAttackAction) as AttackAction; if (null == action) { Debug.LogWarning("RemoteAttackMultiTarget is error, attack action is null"); return; } ++action.m_skillResultIDIndex; int skillID = action.m_skillID; //animEvent.intParameter;//目标个数 //animEvent.floatParameter;//范围 m_multiTargetNumber = animEvent.intParameter; m_multiTargetRange = animEvent.floatParameter; if (m_multiTargetNumber == 0) {//不填写,只指定技能目标 m_multiTargetNumber = 1; } //find target m_multiTargetList = new List <Actor>(m_multiTargetNumber); if (action.m_skillTarget != null) { m_self.Forward(action.m_skillTarget.RealPos); m_multiTargetList.Add(action.m_skillTarget); } if (m_multiTargetList.Count < m_multiTargetNumber) { ActorManager.Singleton.ForEach(CheckTarget); //while (m_multiTargetList.Count < m_multiTargetNumber) //{//目标数量不足,用技能目标填满 // if (action.m_skillTarget == null) // { // break; // } // m_multiTargetList.Add(action.m_skillTarget); //} } //飞行道具的id和SkillResultID是一样的 FlyingItemInfo itemInfo = GameTable.FlyingItemTableAsset.LookUp(action.SkillResultID); if (itemInfo == null) { Debug.LogWarning("flying item info is null, id is " + action.SkillResultID.ToString()); return; } for (int i = 0; i < m_multiTargetList.Count; ++i) { Vector3 targetPos = Vector3.zero; Actor skillTarget = m_multiTargetList[i]; if (skillTarget.Type == ActorType.enMain && skillTarget.IsActorExit) { skillTarget = ActorManager.Singleton.MainActor; action.m_skillTargetID = skillTarget.ID; } targetPos = skillTarget.RealPos; RemoteAttackManager.Info info = new RemoteAttackManager.Info(itemInfo); info.m_srcActor = m_self; info.m_dstActor = skillTarget; info.m_targetPos = targetPos; info.m_skillID = skillID; RemoteAttackManager.Singleton.Add(info); } if (string.IsNullOrEmpty(animEvent.stringParameter)) {//隐藏武器 m_self.ShowWeaponModelWithTable(false); } }