public IEnumerator Siege(ArmyController army, ProvinceController province)
    {
        army.besieging = true;
        var siegeProgress = 0;
        var day           = TimeController.Instance.Date;

        while (siegeProgress != Constants.ProvinceSiegeDuration)
        {
            if (!army.besieging)
            {
                yield break;
            }

            while (!TimeController.Instance.Date.Equals(day.AddDays(1)))
            {
                yield return(null);
            }

            day = TimeController.Instance.Date;

            if (!army.fighting)
            {
                siegeProgress++;
            }
        }

        province.TransferProvince(army.nationId);

        army.besieging = false;
        yield return(null);
    }