private void ResetDirectionTroop(Troop troop) { if (this != troop) { int num3; int num4; int num = troop.Position.X - this.Position.X; int num2 = troop.Position.Y - this.Position.Y; if (Math.Abs(num) == Math.Abs(num2)) { if (num == 0) { num3 = 0; num4 = 0; } else { num3 = (num > 0) ? 1 : -1; num4 = (num2 > 0) ? 1 : -1; } } else if (Math.Abs(num) > Math.Abs(num2)) { if (num2 == 0) { num3 = (num > 0) ? 1 : -1; num4 = 0; } else if ((Math.Abs(num) / Math.Abs(num2)) < 2) { num3 = (num > 0) ? 1 : -1; num4 = (num2 > 0) ? 1 : -1; } else { num3 = (num > 0) ? 1 : -1; num4 = 0; } } else if (num == 0) { num3 = 0; num4 = (num2 > 0) ? 1 : -1; } else if ((Math.Abs(num2) / Math.Abs(num)) < 2) { num3 = (num > 0) ? 1 : -1; num4 = (num2 > 0) ? 1 : -1; } else { num3 = 0; num4 = (num2 > 0) ? 1 : -1; } this.SetDirection(num3, num4); troop.SetDirection(-num3, -num4); } }