Constconst [comboState, setComboState] = useState({
count: 0,
lastHitTime: 0,
window: 200,
});
// On technique hit
const handleTechniqueHit = (technique: TrigramStanceTechnique) => {
const now = Date.now();
const elapsed = now - comboState.lastHitTime;
if (elapsed <= comboState.window) {
// Combo continues
setComboState({
count: comboState.count + 1,
lastHitTime: now,
window: technique.comboWindow || 200,
});
} else {
// Combo resets
setComboState({
count: 1,
lastHitTime: now,
window: technique.comboWindow || 200,
});
}
};
<ComboCounter
comboCount={comboState.count}
comboWindow={comboState.window}
timeSinceLastHit={Date.now() - comboState.lastHitTime}
isActive={comboState.count > 0}
showOnMobile={true}
/>
ComboCounter Component
Displays combo count and timing window for Son (Wind) stance combo chains. Provides visual feedback for optimal technique timing within combo flow.