53 lines
2.0 KiB
C#
53 lines
2.0 KiB
C#
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
// ТЕРЕМ БОГАТЫРЯ -- дом героя в городе.
|
|
// - Пока Терем построен, у его ворот появляется герой и гуляет по свободным клеткам города (HeroWalker).
|
|
// Тап по герою или по Терему -- окно героя (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 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);
|
|
}
|
|
}
|