- Ядро (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>
25 lines
977 B
C#
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;
|
|
}
|
|
}
|