private void FindAvailableFights()
    {
        var unitsPositionsEntities = unitsPositions.Entities
                                     .Where(e => e.IsNotNullAndAlive() &&
                                            e.Get <MovementComponent>().IsObjectAlive);
        var enemyUnitsPositionsEntities = enemyUnits.Entities
                                          .Where(e => e.IsNotNullAndAlive() &&
                                                 e.Get <MovementComponent>().IsObjectAlive);

        foreach (var allyUnit in unitsPositionsEntities)
        {
            foreach (var enemyUnit in enemyUnitsPositionsEntities)
            {
                var allyUnitAttackComponent    = allyUnit.Get <AttackComponent>();
                var allyUnitMovementComponent  = allyUnit.Get <MovementComponent>();
                var enemyUnitMovementComponent = enemyUnit.Get <MovementComponent>();

                if (AttackHelper.CanAttack(
                        allyUnitAttackComponent,
                        allyUnitMovementComponent,
                        enemyUnitMovementComponent))
                {
                    AttackHelper.CreateAttackEvent(allyUnit, enemyUnit);
                    break;
                }
            }
        }
    }