{sorted.map(p => {
- void avatarVer // re-render, wenn Avatare eintrudeln
+ void avatarVer
const hp = clamp(p.alive === false ? 0 : p.hp ?? 100, 0, 100)
const armor = clamp(p.armor ?? 0, 0, 100)
const dead = p.alive === false || hp <= 0
-
- // Avatar aus Store (Fallback: Default)
- const entry = avatarById[p.id] as any
- const avatarUrl =
- entry && !(entry as any)?.notFound && entry?.avatar
- ? entry.avatar
- : '/assets/img/avatars/default_steam_avatar.jpg'
-
- // Layout: Avatar neben Stack(Name+Bars); rechts gespiegelt bei align="right"
+ const entry = avatarById[p.id] as any
+ const avatarUrl =
+ isBotId(p.id) // <- Bot? dann Bot-Icon
+ ? BOT_ICON
+ : (entry && !entry?.notFound && entry?.avatar
+ ? entry.avatar
+ : '/assets/img/avatars/default_steam_avatar.jpg')
const rowDir = isRight ? 'flex-row-reverse text-right' : 'flex-row'
const stackAlg = isRight ? 'items-end' : 'items-start'
@@ -83,26 +122,21 @@ export default function TeamSidebar({
id={`player-${p.id}`}
onMouseEnter={() => onHoverPlayer?.(p.id)}
onMouseLeave={() => onHoverPlayer?.(null)}
- //className={`rounded-md px-2 py-2 bg-neutral-800/40 ${dead ? 'opacity-60' : ''}`}
className={`rounded-md px-2 py-2 transition cursor-pointer
bg-neutral-800/40 hover:bg-neutral-700/40
hover:ring-2 hover:ring-white/20
${dead ? 'opacity-60' : ''}`}
>
- {/* Avatar groß + Team-Ring */}

-
- {/* Stack: Name + Icons, darunter die größeren Balken */}
- {/* Kopfzeile */}
{p.name || p.id}
{p.hasBomb && team === 'T' && 💣}
@@ -110,14 +144,10 @@ export default function TeamSidebar({
{p.defuse && team === 'CT' && 🗝️}
{hp}
-
- {/* Größere Balken */}
- {/* HP */}
- {/* Armor */}