class GameHeader extends HTMLElement { connectedCallback() { this.attachShadow({ mode: 'open' }); this.render(); // Listen to global state updates document.addEventListener('state-update', () => this.render()); } render() { const isPlaying = state.personaId && !state.gameOver; const persona = PERSONAS[state.personaId]; // Debt warning logic (Behavioral Nudge) const isDebtCritical = isPlaying && state.stats.debt > 50; const criticalClass = isDebtCritical ? 'debt-critical' : ''; // Dual Wallet Logic (Sunita - Woman) const isDualWallet = isPlaying && PERSONAS[state.personaId].special === 'separation_wallets'; this.shadowRoot.innerHTML = `
${isPlaying ? `
Year ${state.year} - Month ${state.month}
${persona.name}
` : `
PAISA YUDDH 💰
`}
${isPlaying ? ` ${isDualWallet ? this.renderDualWallets() : this.renderSingleWallet()} ${isDebtCritical ? `
DEBT TRAP WARNING
` : ''} ` : `
Select Persona
`}
`; } renderSingleWallet() { return `
Total Balance
₹${state.money.toLocaleString()}
`; } renderDualWallets() { // Calculate max for bars (normalized for visuals) const maxVal = Math.max(Math.abs(state.money), Math.abs(state.businessCash), 5000); return `
₹${state.money.toLocaleString()}
₹${state.businessCash.toLocaleString()}
HOME vs BUSINESS
`; } } customElements.define('game-header', GameHeader);