Поход помнит название цели: итог сбора с истощённой точки показывает её имя

При перемотке войско могло дойти, истощить точку и вернуться за один расчёт мира —
точка убиралась с карты раньше, чем показывались сообщения, и название было пустым.
MarchData.targetName запоминается при выступлении, WorldSimulation.TargetName.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Alexander
2026-10-31 16:31:12 +01:00
co-authored by Claude Opus 5.5
parent ae9c141b49
commit ded11b5a3f
4 changed files with 20 additions and 9 deletions
@@ -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)
{