Exemplo n.º 1
0
        public override EncounterPosition PositionInFormation(int formationNumber, Unit unit)
        {
            EncounterPosition center = unit.RallyPoint;

            int dx = formationNumber % 10;
            int dy = Mathf.FloorToInt(formationNumber / 10) - 1;
            Tuple <int, int> rotated = AIUtils.RotateForFormation(dx, dy, unit.UnitFacing);

            return(new EncounterPosition(center.X + rotated.Item1, center.Y + rotated.Item2));
        }
Exemplo n.º 2
0
        public override EncounterPosition PositionInFormation(int formationNumber, Unit unit)
        {
            EncounterPosition center = unit.RallyPoint;
            int halfFormation        = unit.NumInFormation / 2 + 1;

            if (formationNumber < halfFormation)
            {
                int dx      = formationNumber % 10;
                int dy      = Mathf.FloorToInt(formationNumber / 10) - 1;
                var rotated = AIUtils.RotateForFormation(dx, dy, unit.UnitFacing);
                return(new EncounterPosition(center.X + rotated.Item1, center.Y + rotated.Item2));
            }
            else
            {
                int dx      = formationNumber % 10 - 10;
                int dy      = Mathf.FloorToInt((formationNumber - halfFormation) / 10) - 1;
                var rotated = AIUtils.RotateForFormation(dx, dy, unit.UnitFacing);
                return(new EncounterPosition(center.X + rotated.Item1, center.Y + rotated.Item2));
            }
        }