27 lines
1.1 KiB
TypeScript
27 lines
1.1 KiB
TypeScript
import type { Iwt2BossEntityState } from '../sim'
|
|
import { ArenaBar } from './ArenaBars'
|
|
import { IWT2_BOSS_METADATA } from '../content/bosses'
|
|
|
|
export function BossHud({ boss, bosses }: { boss?: Iwt2BossEntityState, bosses?: Iwt2BossEntityState[] }) {
|
|
const entries = bosses ?? (boss ? [boss] : [])
|
|
return (
|
|
<div className="iwt2-boss-hud">
|
|
{entries.map((entry) => {
|
|
const metadata = IWT2_BOSS_METADATA[entry.bossId]
|
|
return (
|
|
<div className="iwt2-boss-hud-row" key={entry.id}>
|
|
<div>
|
|
<strong>{metadata.name}</strong>
|
|
<small>{Math.ceil(entry.health)} / {entry.maxHealth} HP</small>
|
|
{entry.maxArmor > 0 && <small>{Math.ceil(entry.armor)} / {entry.maxArmor} Armor</small>}
|
|
{entry.mechanicEnergyMax > 0 && <small>{Math.ceil(entry.mechanicEnergy)} / {entry.mechanicEnergyMax} Static</small>}
|
|
</div>
|
|
<small className="iwt2-boss-phase">{entry.attackPhase}</small>
|
|
<ArenaBar className="boss" current={entry.health} max={entry.maxHealth} />
|
|
</div>
|
|
)
|
|
})}
|
|
</div>
|
|
)
|
|
}
|