Files
MVP1/Assets/Scripts/Meta/Build/HeroCastle.cs
T
AlexanderandClaude Opus 5.5 56a5a82a8c 2D-город удалён (решение 05.11, перенос проверен): сцена MVP1, 2D-стройка, 2D-здания и камеры; перенос старых сохранений остаётся
- Удалено: MVP1, Prefab/Buildings, BuildManager/BuildGrid/BuildGhost/BuildSlot, BuildingData (ScriptableObject), HeroWalker, BuildingUI, ResourceProducer, 2D-камеры, UINavigation, редакторские инструменты 2D, _Recovery
- SettlementModule: ISettlement и старая секция settlement как есть -- для переноса в 3D (MoveFrom2D)
- BuildModeController: только кнопка «СТРОЙКА» / «Перенести» для 3D; загрузчики зданий -- только имена
- Build Settings: City3D, WorldMap

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 17:08:16 +01:00

47 lines
1.8 KiB
C#

using System.Collections.Generic;
using UnityEngine;
// ТЕРЕМ БОГАТЫРЯ -- дом героя в городе.
// - Пока Терем построен, у его ворот появляется герой и гуляет по свободным клеткам города (City3D/City3DHero).
// Тап по герою или по Терему -- окно героя (App/BuildingWindow): уровень, сила, бонус армии, навыки, улучшение.
// - Механику героя не меняет: уровень, цена улучшения и бонусы те же, что в панели "Герой" (GameProgress).
// Нужен ли Терем для улучшения героя, даёт ли уровни и сколько стоит -- решает Дима (сейчас ТЕСТ).
// - Терем один на город: второй ничего не добавляет, герой живёт у первого.
// Вешается на копию обычного здания (HeroCastleBootstrap).
public class HeroCastle : MonoBehaviour
{
public static readonly List<HeroCastle> All = new List<HeroCastle>();
public static int Count => All.Count;
public static HeroCastle Main => All.Count > 0 ? All[0] : null;
void OnEnable()
{
if (!All.Contains(this)) All.Add(this);
}
void OnDisable()
{
All.Remove(this);
}
void OnDestroy()
{
All.Remove(this);
}
Vector3 downPos;
void OnMouseDown()
{
downPos = Input.mousePosition;
}
// Тап (а не перетаскивание камеры) -- окно героя
void OnMouseUpAsButton()
{
if (UIBlocker.IsPointerOverUI()) return;
if ((Input.mousePosition - downPos).magnitude > 25f) return;
BuildingWindow.Open(gameObject);
}
}