Feature/3d hud #18
@@ -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]
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user