示例#1
0
 public void SetPlace(EUnitRange range, EUnitPosition position)
 {
     Place = UnitData.TemplatePlace.Range != EUnitRange.None && UnitData.TemplatePlace.Position != EUnitPosition.None
         ? UnitData.TemplatePlace : new UnitPlace()
     {
         Range = range, Position = position
     };
 }
 public void SetPlace(EUnitRange range, EUnitPosition position)
 {
     Place = UnitData.TemplatePlace.Range != EUnitRange.None && UnitData.TemplatePlace.Position != EUnitPosition.None
         ? UnitData.TemplatePlace : new UnitPlace() { Range = range, Position = position };
 }
示例#3
0
    List <BaseUnitBehaviour>[] GetRangeUnits(ArrayRO <BaseUnitBehaviour> units)
    {
        List <BaseUnitBehaviour>[] rangeUnits = new List <BaseUnitBehaviour>[3] {
            new List <BaseUnitBehaviour>(),
            new List <BaseUnitBehaviour>(), new List <BaseUnitBehaviour>()
        };
        List <BaseUnitBehaviour> heroes      = rangeUnits[FirstZoneIndex];
        List <BaseUnitBehaviour> remoteUnits = rangeUnits[SecondZoneIndex];
        List <BaseUnitBehaviour> nearUnits   = rangeUnits[ThirdZoneIndex];

        for (int i = 0; i < units.Length; i++)
        {
            BaseUnitBehaviour unit = units[i];
            if (unit != null && unit.UnitData != null)
            {
                EUnitPosition position = unit.Place.Position;
                if (UnitsConfig.Instance.IsHero(unit.UnitData.Data.Key))
                {
                    if (heroes.Count < 3)
                    {
                        heroes.Add(unit);
                    }
                    else if (remoteUnits.Count < 3)
                    {
                        unit.Place = new UnitPlace()
                        {
                            Range = EUnitRange.Ranged, Position = position
                        };
                        remoteUnits.Add(unit);
                    }
                    else if (nearUnits.Count < 3)
                    {
                        unit.Place = new UnitPlace()
                        {
                            Range = EUnitRange.Melee, Position = position
                        };
                        nearUnits.Add(unit);
                    }
                }
                else
                {
                    EUnitRange range = unit.UnitData.TemplatePlace.Range != EUnitRange.None
                        ? unit.UnitData.TemplatePlace.Range : unit.UnitData.Data.BaseRange;
                    if (range == EUnitRange.Ranged)
                    {
                        if (remoteUnits.Count < 3)
                        {
                            unit.Place = new UnitPlace()
                            {
                                Range = EUnitRange.Ranged, Position = position
                            };
                            remoteUnits.Add(unit);
                        }
                        else if (nearUnits.Count < 3)
                        {
                            unit.Place = new UnitPlace()
                            {
                                Range = EUnitRange.Melee, Position = position
                            };
                            nearUnits.Add(unit);
                        }
                    }
                    else if (range == EUnitRange.Melee)
                    {
                        if (nearUnits.Count < 3)
                        {
                            unit.Place = new UnitPlace()
                            {
                                Range = EUnitRange.Melee, Position = position
                            };
                            nearUnits.Add(unit);
                        }
                        else if (remoteUnits.Count < 3)
                        {
                            unit.Place = new UnitPlace()
                            {
                                Range = EUnitRange.Ranged, Position = position
                            };
                            remoteUnits.Add(unit);
                        }
                    }
                }
            }
        }
        return(rangeUnits);
    }