Esempio n. 1
0
    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);
    }
Esempio n. 2
0
    // 获得将被影响的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());
    }