using System.Collections.Generic; using UnityEngine; // Окно "ВОЙСКО ВЕРНУЛОСЬ" в городе (слой приложения): куда ходили, итог, сколько вернулось, добыча. // Показывается по событию MarchReturnedEvent модуля Мира -- в том числе за походы, закончившиеся, // пока игра была закрыта. Несколько возвращений -- окна по очереди. На карте мира своё окно (WorldMapController). // Подключается в App/GameModules. Документ: Docs/Modules/World.md public static class MarchReturnPopup { static readonly Queue queue = new Queue(); static bool showing; public static void Reset() { queue.Clear(); showing = false; } public static void OnMarchReturned(MarchReturnedEvent e) { // Только в городе: на карте мира возвращение уже показывает её собственное окно if (!GameServices.TryGet(out ISettlement settlement) || !settlement.IsCityLoaded) return; queue.Enqueue(e); if (!showing) ShowNext(); } static void ShowNext() { if (queue.Count == 0) { showing = false; return; } showing = true; MarchReturnedEvent e = queue.Dequeue(); string target = string.IsNullOrEmpty(e.TargetName) ? "поход" : $"Поход на «{e.TargetName}»"; string result = e.Victory ? "победа" : "поражение"; int lost = Mathf.Max(0, e.Sent - e.Survivors); string text = $"{target}: {result}\n" + $"Вернулись {e.Survivors} из {e.Sent} воинов" + (lost > 0 ? $" (погибли {lost})" : "") + "\n" + $"Добыча: {e.LootText}"; UIKit.Message("ВОЙСКО ВЕРНУЛОСЬ", text, "ОК", ShowNext); } }