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() { if (Main == this) 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); } }