This commit is contained in:
Bandwidth
2026-04-26 18:33:24 +02:00
parent e9c85ac8d3
commit 796ba0906d
5 changed files with 651 additions and 40 deletions

View File

@@ -248,11 +248,24 @@ public class MapPathway
public string? Name { get; set; }
public bool IsWalkable { get; set; } = true;
public double Width { get; set; } = 2.0;
[JsonIgnore]
public bool IsFullyReachable { get; set; }
[JsonIgnore]
public bool IsPartiallyReachable { get; set; }
/// <summary>
/// P11: True only when this pathway is unambiguously publicly accessible
/// for foot traffic - no `access=private`, no `foot=no`, and the highway
/// type itself is one we trust to be a place a player can safely and
/// legally stand. Server-internal (JsonIgnore) - clients don't need it.
/// Used by OverpassService.GetPubliclyAccessiblePositions to constrain
/// task placement to "absolutely public" geometry per Bandwidth's brutal
/// filter directive. Falls back to any-pathway-point when this set is
/// empty (rural / forest / open-field scenario).
/// </summary>
[JsonIgnore]
public bool IsPubliclyAccessible { get; set; }
}
/// <summary>Area like park or garden</summary>
@@ -759,6 +772,24 @@ public class ReturnedToLobbyPayload
public string Message { get; set; } = "";
}
// ── P12: Admin lobby manipulation event payloads ────────────────────────────
// Broadcast by LobbyActor when an admin uses the new admin-panel endpoints
// (force-phase, edit-settings). Spectators and live clients re-render against
// these so they see admin overrides without having to reload.
public class PhaseChangedPayload
{
public GamePhase Phase { get; set; }
}
public class LobbySettingsChangedPayload
{
public double Radius { get; set; }
public int ImpostorCount { get; set; }
public int TaskCount { get; set; }
public string TiePolicy { get; set; } = "NoEject";
}
public class HostChangedPayload
{
public required string NewHostId { get; set; }