Как ограничить время бонуса при отсутствие в игре?

У меня есть код, который считает сколько денег заработал человек при отсутствии в игре. Каким способом можно ограничить время получения бонусов до 30 минут? Чтобы после 30 минут бонус не прибавлялся.

DateTime dt = new DateTime(sv.date[0], sv.date[1], sv.date[2], sv.date[3], sv.date[4], sv.date[5]);
TimeSpan ts = DateTime.Now - dt;
float offlineBonus = (int)ts.TotalSeconds * totalBonusPS;
score += offlineBonus;
SecondMoney += offlineBonus;
print("Вы отсутствовали: " + ts.Days + "Д. " + ts.Hours + "Ч. " + ts.Minutes + "М. " + ts.Seconds + "S.");
print("Ваши рабочие заработали: " + offlineBonus + "$");

sv.date[0] = DateTime.Now.Year;
sv.date[1] = DateTime.Now.Month;
sv.date[2] = DateTime.Now.Day;
sv.date[3] = DateTime.Now.Hour;
sv.date[4] = DateTime.Now.Minute;
sv.date[5] = DateTime.Now.Second;

Ответы (1 шт):

Автор решения: Andrei Khotko

Для этого достаточно понять, что если человек отсутствует в игре больше 30 минут, то бонус будет такой же, как и за 30 минут. Тогда код подсчета бонуса будет такой:

TimeSpan ts = DateTime.Now - dt;
var secondsOffline = (int)ts.TotalSeconds;
const int maxTimeForBonusInSeconds = 1800;
float offlineBonus = secondsOffline < maxTimeForBonusInSeconds
    ? secondsOffline * totalBonusPS
    : maxTimeForBonusInSeconds * totalBonusPS;

score += offlineBonus;
SecondMoney += offlineBonus;
→ Ссылка