diff --git a/backend/app/maps.py b/backend/app/maps.py index e5cc064..1713050 100644 --- a/backend/app/maps.py +++ b/backend/app/maps.py @@ -618,6 +618,7 @@ def install(api, db, current_user, lobby_for, dm_only, hub, event, store_dir: Pa "vision": {"los": ctx["los"], "empty": ctx["empty"], "rev": ctx["rev"], "fog": ctx.get("fog")}} if ctx["is_dm"]: res["los_on"] = bool(lobby["los"]) + res["wall_count"] = len(ctx["walls"]) res["sight"] = lobby["sight"] if lobby["sight"] is not None else m["sight"] res["sight_map"] = m["sight"] res["fog_on"] = bool(lobby["fog"]) diff --git a/frontend/src/Lobbies.jsx b/frontend/src/Lobbies.jsx index 01ab171..407e0f3 100644 --- a/frontend/src/Lobbies.jsx +++ b/frontend/src/Lobbies.jsx @@ -916,19 +916,19 @@ function LobbyView({ id, rules, user }) { {lobby.members.map((m) => )} )} - {lobby.is_dm && mapState.walls?.length > 0 && mapState.los_on && <> + {lobby.is_dm && mapState.wall_count > 0 && mapState.los_on && <> {mapState.fog_on && } } - {full && mapState.walls?.length > 0 && mapState.los_on && } - {lobby.is_dm && mapState.walls?.length > 0 && } - {full && mapState.walls?.length > 0 && } + {lobby.is_dm && mapState.wall_count > 0 && mapState.los_on && } + {lobby.is_dm && mapState.wall_count > 0 && } + {lobby.is_dm && mapState.wall_count > 0 && } - {full && } - {full && } - {full && } + {lobby.is_dm && } + {lobby.is_dm && } + {lobby.is_dm && } {full && (rv || mapState.reveals?.length > 0) && (
diff --git a/frontend/src/styles.css b/frontend/src/styles.css index ea7bb3e..410bb11 100644 --- a/frontend/src/styles.css +++ b/frontend/src/styles.css @@ -629,3 +629,10 @@ textarea.pwrite:focus { box-shadow: 0 0 0 1px var(--pg); } .tokenform .mini { min-height: 0; padding: .15rem .5rem; } .tokenlist .tokrow > button:first-child { width: auto; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; } .tokenlist .tokrow > button.mini { width: auto; flex: none; } +/* table tool buttons: low and readable on the dark map */ +.maptools button, .maptools select { padding: .1rem .5rem; font-size: .76rem; line-height: 1.2; height: 1.6rem; min-height: 0; } +.maptools button.ghost, .maptools select { background: rgba(20,22,26,.85); color: #f1f1f1; border: 1px solid rgba(255,255,255,.35); } +.maptools button.on { background: var(--accent, #2f7d32); color: #fff; border-color: transparent; } +.maptools button:disabled { opacity: .45; } +.maptools .sightrange input { height: 1.6rem; padding: 0 .3rem; } +.maptools .sightrange { color: #f1f1f1; }