Окна зданий, уровни Казарм и открытие войск по уровню Казарм; население: группы, найм, голод

This commit is contained in:
2026-10-31 20:52:28 +03:00
parent ed01ba67bd
commit 1a54890a09
19 changed files with 703 additions and 121 deletions
+16 -3
View File
@@ -1,13 +1,18 @@
using System;
using UnityEngine;
// МОДУЛЬ ПОСЕЛЕНИЯ. Документ: Docs/Modules/Settlement.md
// Вешается на объект Ратуши, который уже стоит на карте.
// Хранит текущий уровень -- от него зависит, какие здания разблокированы в BuildManager.
// Тап по Ратуше открывает окно Ратуши (слой приложения подписан на Tapped), улучшение -- кнопкой в окне.
public class TownHall : MonoBehaviour
{
public static TownHall Instance { get; private set; }
// Тап по Ратуше: интерфейс откроет её окно (модуль про интерфейс не знает)
public static event Action<TownHall> Tapped;
[Header("Уровень")]
public int currentLevel = 1;
public int maxLevel = 10;
@@ -64,10 +69,18 @@ public class TownHall : MonoBehaviour
EventBus.Publish(new TownHallLevelChangedEvent { Level = currentLevel });
Debug.Log($"[РАТУША] Улучшена до уровня {currentLevel}!");
}
Vector3 downPos;
void OnMouseDown()
{
if (UIBlocker.IsPointerOverUI()) return; // клик по панели HUD не должен улучшать Ратушу под ней
Debug.Log($"[Ратуша] Клик! текущий уровень: {currentLevel}. Улучшение...");
Upgrade();
downPos = Input.mousePosition;
}
// Отпустил палец на Ратуше, почти не сдвинув (а не тащил камеру) -- окно Ратуши. Раньше тап сразу улучшал
void OnMouseUpAsButton()
{
if (UIBlocker.IsPointerOverUI()) return; // клик по панели HUD не должен проходить на Ратушу под ней
if ((Input.mousePosition - downPos).magnitude > 25f) return;
Tapped?.Invoke(this);
}
}