2026-10-12 23:54:03 +03:00
|
|
|
using UnityEngine;
|
|
|
|
|
using UnityEngine.UI;
|
|
|
|
|
|
2026-11-06 17:08:16 +01:00
|
|
|
// Кнопка «СТРОЙКА» общего HUD (HUD_Canvas, кнопка Nav_Build вызывает ToggleMode) и «Перенести» в окне здания.
|
|
|
|
|
// Стройку ведёт 3D-поселение: City3DController задаёт ExternalToggle / ExternalMove, пока сцена City3D открыта.
|
|
|
|
|
// 2D-стройка на сетке (BuildManager, BuildGrid, призрак) удалена 06.11 вместе с 2D-городом.
|
2026-10-12 23:54:03 +03:00
|
|
|
public class BuildModeController : MonoBehaviour
|
|
|
|
|
{
|
|
|
|
|
public static BuildModeController Instance { get; private set; }
|
|
|
|
|
|
2026-11-06 17:08:16 +01:00
|
|
|
[Tooltip("Кнопка HUD «СТРОЙКА»")]
|
2026-10-12 23:54:03 +03:00
|
|
|
public Button modeButton;
|
2026-11-06 17:08:16 +01:00
|
|
|
[Tooltip("Старое меню стройки -- прячется, не используется")]
|
2026-10-12 23:54:03 +03:00
|
|
|
public GameObject legacyBuildMenu;
|
|
|
|
|
|
2026-11-06 17:08:16 +01:00
|
|
|
// Своего режима стройки больше нет (он в 3D-сцене) -- всегда false
|
|
|
|
|
public bool IsActive => false;
|
2026-10-12 23:54:03 +03:00
|
|
|
|
2026-11-05 14:18:22 +03:00
|
|
|
public static System.Action ExternalToggle;
|
|
|
|
|
public static System.Action<GameObject> ExternalMove;
|
2026-10-12 23:54:03 +03:00
|
|
|
|
|
|
|
|
void Awake() { Instance = this; }
|
2026-10-28 22:11:36 +03:00
|
|
|
|
|
|
|
|
void OnDestroy()
|
|
|
|
|
{
|
|
|
|
|
if (Instance == this) Instance = null;
|
|
|
|
|
}
|
2026-10-12 23:54:03 +03:00
|
|
|
|
|
|
|
|
void Start()
|
|
|
|
|
{
|
|
|
|
|
if (legacyBuildMenu != null) legacyBuildMenu.SetActive(false);
|
|
|
|
|
}
|
|
|
|
|
|
2026-11-05 14:18:22 +03:00
|
|
|
public void ToggleMode()
|
|
|
|
|
{
|
2026-11-06 17:08:16 +01:00
|
|
|
if (ExternalToggle != null) ExternalToggle();
|
|
|
|
|
else UIKit.Toast("Стройка -- в городе");
|
2026-11-05 14:18:22 +03:00
|
|
|
}
|
2026-10-12 23:54:03 +03:00
|
|
|
|
2026-11-06 17:08:16 +01:00
|
|
|
// Открыть стройку (например, «Построить Казармы» в окне войск)
|
2026-10-12 23:54:03 +03:00
|
|
|
public void SetMode(bool active)
|
|
|
|
|
{
|
2026-11-06 17:08:16 +01:00
|
|
|
if (active) ToggleMode();
|
2026-10-12 23:54:03 +03:00
|
|
|
}
|
|
|
|
|
|
2026-11-02 00:01:51 +03:00
|
|
|
public void StartMove(GameObject building)
|
|
|
|
|
{
|
2026-11-06 17:08:16 +01:00
|
|
|
if (ExternalMove != null) ExternalMove(building);
|
|
|
|
|
else UIKit.Toast("Это здание перенести нельзя");
|
2026-10-12 23:54:03 +03:00
|
|
|
}
|
|
|
|
|
}
|