Files
MVP1/Assets/Scripts/Modules/Core.Unity/UIBlocker.cs
T
AlexanderandClaude Opus 5.5 964cb23d9d Модульная система: игровое ядро + 6 модулей, документы Docs/Modules
- Ядро (Bogatyri.Core): контракты модулей, EventBus, GameServices, SaveRegistry
- Модули: Экономика, Поселение, Армия, Глобальный мир, Боевая система, Сохранения
  (каждый — отдельный asmdef, видит только ядро)
- App/GameModules: регистрация модулей и связь с GameProgress/Казармами
- Сохранения v2 по секциям модулей, перенос старого save.json и походов из progress.json
- Сброс сохранений: ISaveSystem.ResetAll, ResetState у модулей, меню Tools
- EditMode-тесты модулей, документы по каждому модулю с журналом изменений

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 18:39:28 +02:00

25 lines
977 B
C#

using UnityEngine;
using UnityEngine.EventSystems;
// Проверка "палец/мышь сейчас над UI?".
// Нужна, чтобы клик по кнопке панели НЕ проходил насквозь в мир:
// не собирал ресурсы со здания под панелью, не улучшал Ратушу, не двигал камеру.
public static class UIBlocker
{
public static bool IsPointerOverUI()
{
if (EventSystem.current == null) return false;
// мышь (редактор/ПК) и новый Input System
if (EventSystem.current.IsPointerOverGameObject()) return true;
// тач на телефоне (старый input module требует id пальца)
for (int i = 0; i < Input.touchCount; i++)
{
if (EventSystem.current.IsPointerOverGameObject(Input.GetTouch(i).fingerId))
return true;
}
return false;
}
}