public bool CanUse(AttributesManager userAttrManager) { bool canUse = false; if (!isEmpty) { Vector3 position = userAttrManager.transform.position; PlayerFaction myFaction = userAttrManager.faction; switch (myItemGroup.itemInfo.effectGroup) { case EffectGroup.MySelf: case EffectGroup.RandomTeammate: case EffectGroup.AllTeammate: case EffectGroup.RandomEnemy: case EffectGroup.AllEnemy: canUse = true; break; case EffectGroup.OneNearbyTeammate: canUse = AttributesManager.FindNearbyPlayer(myFaction, position, myItemGroup.itemInfo.radius) != null; break; case EffectGroup.RangeRandomTeammate: case EffectGroup.RangeTeammate: canUse = AttributesManager.FindRangePlayer(myFaction, position, myItemGroup.itemInfo.radius).Length > 0; break; case EffectGroup.OneNearbyEnemy: canUse = AttributesManager.FindNearbyPlayer(AttributesManager.GetEnemyFaction(myFaction), position, myItemGroup.itemInfo.radius) != null; break; case EffectGroup.RangeRandomEnemy: case EffectGroup.RangeEnemy: canUse = AttributesManager.FindRangePlayer(AttributesManager.GetEnemyFaction(myFaction), position, myItemGroup.itemInfo.radius).Length > 0; break; } } return(canUse); }
// 获得将被影响的AttributesManager private AttributesManager[] GetAllEffectAttrManager(AttributesManager userAttrManager) { PlayerFaction myFaction = userAttrManager.faction; PlayerFaction enemyFaction = AttributesManager.GetEnemyFaction(myFaction); Vector3 position = userAttrManager.transform.position; float radius = myItemGroup.itemInfo.radius; List <AttributesManager> effectAttrManagerList = new List <AttributesManager>(); switch (myItemGroup.itemInfo.effectGroup) { case EffectGroup.MySelf: effectAttrManagerList.Add(userAttrManager); break; case EffectGroup.RandomTeammate: AttributesManager[] teammates = AttributesManager.GetFactionAllAttrManager(myFaction); effectAttrManagerList.Add(teammates[Random.Range(0, teammates.Length)]); break; case EffectGroup.OneNearbyTeammate: AttributesManager nearbyTeammate = AttributesManager.FindNearbyPlayer(myFaction, position, radius); if (nearbyTeammate != null) { effectAttrManagerList.Add(nearbyTeammate); } break; case EffectGroup.RangeRandomTeammate: AttributesManager[] rangeTeamates = AttributesManager.FindRangePlayer(myFaction, position, radius); effectAttrManagerList.Add(rangeTeamates[Random.Range(0, rangeTeamates.Length)]); break; case EffectGroup.RangeTeammate: effectAttrManagerList.AddRange(AttributesManager.FindRangePlayer(myFaction, position, radius)); break; case EffectGroup.AllTeammate: effectAttrManagerList.AddRange(AttributesManager.GetFactionAllAttrManager(myFaction)); break; case EffectGroup.RandomEnemy: AttributesManager[] enemys = AttributesManager.GetFactionAllAttrManager(enemyFaction); effectAttrManagerList.Add(enemys[Random.Range(0, enemys.Length)]); break; case EffectGroup.OneNearbyEnemy: AttributesManager nearbyEnemy = AttributesManager.FindNearbyPlayer(enemyFaction, position, radius); if (nearbyEnemy != null) { effectAttrManagerList.Add(nearbyEnemy); } break; case EffectGroup.RangeRandomEnemy: AttributesManager[] rangeEnemys = AttributesManager.FindRangePlayer(enemyFaction, position, radius); effectAttrManagerList.Add(rangeEnemys[Random.Range(0, rangeEnemys.Length)]); break; case EffectGroup.RangeEnemy: effectAttrManagerList.AddRange(AttributesManager.FindRangePlayer(enemyFaction, position, radius)); break; case EffectGroup.AllEnemy: effectAttrManagerList.AddRange(AttributesManager.GetFactionAllAttrManager(enemyFaction)); break; } return(effectAttrManagerList.ToArray()); }