Feature/3d hud #18

Merged
Alexander merged 59 commits from feature/3d-hud into develop 2026-11-06 18:09:33 +03:00
4 changed files with 20 additions and 9 deletions
Showing only changes of commit ded11b5a3f - Show all commits
@@ -839,9 +839,11 @@ public class ModuleTests
foreach (var p in world.ResourcePoints) if (p.active && p.kind == 3) activeGold++;
Assert.AreEqual(world.PointRules.PointsPerResource, activeGold, "новая точка золота появилась в другом месте");
string name = world.GetNode(gold.id).displayName;
world.Advance(m.returnMs, new List<WorldEvent>());
Assert.IsNull(world.GetPoint(gold.id), "истощённая точка убрана, когда войско вернулось");
Assert.IsNull(world.GetNode(gold.id));
Assert.AreEqual(name, world.TargetName(m), "название цели помнит сам поход -- для итогов после исчезновения точки");
}
[Test]
+5 -5
View File
@@ -101,7 +101,7 @@ public class MarchManager : MonoBehaviour, IWorld, ISaveParticipant
else if (e.Type == WorldEventType.MarchReturned) HandleMarchReturned(e.March);
else if (e.Type == WorldEventType.GatherStarted) HandleGatherStarted(e.March);
else if (e.Type == WorldEventType.GatherFinished)
Debug.Log($"[СБОР] Сбор окончен: {e.March.cargo} ({World.GetNode(e.March.targetNodeId)?.displayName}), войско идёт домой");
Debug.Log($"[СБОР] Сбор окончен: {e.March.cargo} ({World.TargetName(e.March)}), войско идёт домой");
}
if (events.Count > 0 && GameServices.TryGet(out ISaveSystem save)) save.SaveNow();
@@ -204,9 +204,9 @@ public class MarchManager : MonoBehaviour, IWorld, ISaveParticipant
void HandleGatherStarted(MarchData march)
{
MapNode target = World.GetNode(march.targetNodeId);
if (march.targetEmpty) Debug.Log($"[СБОР] {target?.displayName}: точки уже нет или она занята -- войско возвращается");
else Debug.Log($"[СБОР] {march.soldiers} воинов начали сбор: {target?.displayName}, унесут {march.cargo}");
string target = World.TargetName(march);
if (march.targetEmpty) Debug.Log($"[СБОР] {target}: точки уже нет или она занята -- войско возвращается");
else Debug.Log($"[СБОР] {march.soldiers} воинов начали сбор: {target}, унесут {march.cargo}");
OnGatherStarted?.Invoke(march);
}
@@ -245,7 +245,7 @@ public class MarchManager : MonoBehaviour, IWorld, ISaveParticipant
Sent = march.soldiers,
TargetEmpty = march.targetEmpty,
IsGather = march.gather,
TargetName = World.GetNode(march.targetNodeId)?.displayName ?? "",
TargetName = World.TargetName(march),
LootText = FormatLoot(march.loot)
});
}
@@ -20,6 +20,7 @@ namespace Bogatyri.World
public string ownerId;
public string fromNodeId;
public string targetNodeId;
public string targetName; // название цели на момент выступления: истощённая точка может исчезнуть с карты раньше, чем показан итог
public int soldiers; // сколько ушло
public int survivors; // сколько возвращается (известно после боя)
@@ -250,7 +251,8 @@ namespace Bogatyri.World
departMs = nowMs,
arriveMs = nowMs + TravelTimeMs(from, target, null), // состав уточнит AssignUnits
state = MarchState.Outbound,
gather = target.type == MapNodeType.ResourcePoint
gather = target.type == MapNodeType.ResourcePoint,
targetName = target.displayName
};
// Номер боя -- из данных похода: тот же поход всегда даёт тот же бой.
// В мультиплеере его выдаёт сервер, иначе клиент мог бы подбирать удачный.
@@ -409,6 +411,13 @@ namespace Bogatyri.World
}
}
// Название цели похода: запомненное при выступлении (старые походы -- с карты)
public string TargetName(MarchData m)
{
if (!string.IsNullOrEmpty(m.targetName)) return m.targetName;
return GetNode(m.targetNodeId)?.displayName ?? "";
}
// Номер боя из данных похода (FNV-1a) -- одинаков на любой платформе
public static long BattleSeed(int marchId, long departMs, string targetId)
{
@@ -610,11 +610,11 @@ public class WorldMapController : MonoBehaviour
void HandleGatherStarted(MarchData march)
{
MapNode target = World.GetNode(march.targetNodeId);
string target = World.TargetName(march);
if (march.targetEmpty)
EnqueuePopup("ТОЧКИ НЕТ", $"{target?.displayName ?? "Ресурсная точка"} исчезла или занята\nСбора не было, домой идут все {march.soldiers} воинов");
EnqueuePopup("ТОЧКИ НЕТ", $"{target} исчезла или занята\nСбора не было, домой идут все {march.soldiers} воинов");
else
hintText.text = $"Войско начало сбор: {target?.displayName}, унесёт {march.cargo}";
hintText.text = $"Войско начало сбор: {target}, унесёт {march.cargo}";
}
void HandleMarchReturned(MarchData march)