Files
MVP1/Assets/Scripts/Modules/Population/PopulationRules.cs
T
AlexanderandClaude Opus 5.5 cfbdfd9876 Еда воинов и раненых по типам (решения 01.11, п. 4): 0,15 / 0,20 / 0,15 / 0,15, раненые -- даже в ожидании койки
IArmy.GetAllTroops; PopulationRules.FoodPerTroopTypePerHour (без таблицы -- как раньше);
EconomyConfig.population.foodPerTroopTypePerHour.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 15:13:02 +01:00

40 lines
3.0 KiB
C#

// МОДУЛЬ НАСЕЛЕНИЯ. Документ: Docs/Modules/Population.md
// Правила населения -- только числа, без Unity. Заполняются из EconomyConfig (App/GameModules),
// в тестах -- напрямую. Значения по умолчанию -- из дизайн-документа (этап 2 плана разработки).
public sealed class PopulationRules
{
// Стартовый город T1: 300 человек = 120 рабочих + 30 воинов + 150 остальных.
// Доля способных работать (120 из 270 жителей) сохраняется и при росте города.
public int StartTotal = 300;
public int StartWorkers = 120;
public int StartSoldiers = 30;
// Еда в час
public double FoodPerCivilianPerHour = 0.1;
public double FoodPerSoldierPerHour = 0.2;
// Еда воина по типам войск: пехота, лучники, кавалерия, осадные (решения по отчёту Саши, 01.11, п. 4: 0,15 / 0,20 / 0,15 / 0,15).
// Раненые едят полную норму своего типа, даже ожидая койку. null -- все воины едят FoodPerSoldierPerHour (как раньше).
// Новобранцы в Казармах -- по FoodPerSoldierPerHour (их норма не задана).
public double[] FoodPerTroopTypePerHour = null;
// Прирост +2–3 человека в час, если есть еда
public double GrowthPerHour = 2.5;
// Предел населения (жильё). Решение команды от 19.10.2026: 300 жителей при пределе 300 -- прирост стоит,
// построен Дом -- прирост идёт. Прибавки за Дом и Ратушу НЕ утверждены командой.
public int HousingBase = 300;
public int HousingPerTownHallLevel = 50;
public int HousingPerHouseLevel = 50; // каждый уровень Дома (здание "Население")
// Найм воинов: воины набираются из свободных (не работающих) жителей, гражданский резерв не отдаётся.
// Резерв зависит от уровня Ратуши (регламент 31.10, ТЕСТ): уровни 1-2 -- 10, 3-5 -- 20, 6-10 -- 30.
// Элемент [i] -- резерв на уровне Ратуши i+1; выше последнего уровня -- последнее число.
public int[] CivilianReserveByTownHallLevel = { 10, 10, 20, 20, 20, 30, 30, 30, 30, 30 };
public int PeoplePerSoldier = 1; // сколько жителей стоит один воин (EconomyConfig, раздел "Солдат")
// Офлайн-прогресс досчитывается не больше чем за столько часов. Число НЕ утверждено.
public int MaxOfflineHours = 48;
public int StartCivilians => StartTotal - StartSoldiers;
}