/// <summary> /// Считает промежуточные данные, необходимые для выполнения дальнейших команд /// </summary> /// <param name="bug"> Жук, который сейчас ходит </param> public static bool DoCommand(Bug bug) { Coordinates destination = Coordinates.CoordinateShift[bug.CalculateShift()] + bug.CurrentPosition; DestinationCell = Map.GetMapCell(destination.Y, destination.X); if (Math.Abs(bug.Health - MaxBugHealth) < 10) { return(Multiply(bug)); } else { // Если данному номеру генома присвоена команда, тогда необходимо её выполнить if (MasBugCommands.Length > bug.Gene.genome[bug.Gene.CurrentGenePosition]) { return(MasBugCommands[bug.Gene.genome[bug.Gene.CurrentGenePosition]].Invoke(bug)); } else { // Иначе сделать переход по геному bug.Gene.CurrentGenePosition++; return(GenomJump(bug)); } } }