using System.Collections.Generic; using UnityEngine; // ТЕРЕМ БОГАТЫРЯ -- дом героя в городе. // - Пока Терем построен, у его ворот появляется герой и гуляет по свободным клеткам города (HeroWalker). // Тап по герою или по Терему -- окно героя (App/BuildingWindow): уровень, сила, бонус армии, навыки, улучшение. // - Механику героя не меняет: уровень, цена улучшения и бонусы те же, что в панели "Герой" (GameProgress). // Нужен ли Терем для улучшения героя, даёт ли уровни и сколько стоит -- решает Дима (сейчас ТЕСТ). // - Терем один на город: второй ничего не добавляет, герой живёт у первого. // Вешается на копию обычного здания (HeroCastleBootstrap). public class HeroCastle : MonoBehaviour { public static readonly List All = new List(); 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 Start() { // Герой-фигурка ходит по клеткам 2D-города (BuildGrid). В 3D-поселении сетки нет -- Терем работает без прогулки if (Main == this && BuildGrid.Instance != null) HeroWalker.Spawn(this); } void OnDestroy() { All.Remove(this); HeroWalker.OnCastleRemoved(this); } Vector3 downPos; void OnMouseDown() { downPos = Input.mousePosition; } // Тап (а не перетаскивание камеры) -- окно героя void OnMouseUpAsButton() { if (UIBlocker.IsPointerOverUI()) return; if ((Input.mousePosition - downPos).magnitude > 25f) return; BuildingWindow.Open(gameObject); } }