/* Tweaks panel for Hop! — physics + debug controls */
(function () {
  const root = document.createElement('div');
  root.id = 'tweaks-mount';
  document.body.appendChild(root);

  function App() {
    const defaults = window.HOP_TWEAKS_DEFAULTS;
    const [tweaks, setTweak] = window.useTweaks(defaults);
    React.useEffect(() => {
      window.applyHopTweaks(tweaks);
    }, [tweaks]);

    const skipMaxAlt = () => {
      window.HOP.SAVE.bestAltitude = 200000;
      window.HOP.SAVE.coins = 9999;
      window.HOP.SAVE.worldsUnlocked = window.HOP.SAVE.worldsUnlocked.map(() => true);
      window.HOP.persist();
      window.HOP.refreshMenu();
      window.HOP.showScene('menu');
    };
    const resetSave = () => {
      if (confirm('Reset all progress?')) {
        localStorage.removeItem('hop_save_v1');
        location.reload();
      }
    };

    return (
      <window.TweaksPanel title="Tweaks">
        <window.TweakSection title="Physics">
          <window.TweakSlider label="Gravity" value={tweaks.gravity} min={0.1} max={0.8} step={0.02} onChange={(v) => setTweak('gravity', v)} />
          <window.TweakSlider label="Jump velocity" value={tweaks.jumpVel} min={-18} max={-6} step={0.5} onChange={(v) => setTweak('jumpVel', v)} />
          <window.TweakSlider label="Move speed" value={tweaks.moveSpeed} min={2} max={12} step={0.5} onChange={(v) => setTweak('moveSpeed', v)} />
          <window.TweakSlider label="Spring boost" value={tweaks.springBoost} min={1.5} max={4} step={0.1} onChange={(v) => setTweak('springBoost', v)} />
        </window.TweakSection>
        <window.TweakSection title="Spawning">
          <window.TweakSlider label="Platform density" value={tweaks.platformDensity} min={0.5} max={2} step={0.1} onChange={(v) => setTweak('platformDensity', v)} />
          <window.TweakSlider label="Jetpack duration (s)" value={tweaks.jetpackDuration} min={2} max={15} step={1} onChange={(v) => setTweak('jetpackDuration', v)} />
        </window.TweakSection>
        <window.TweakSection title="Save state">
          <window.TweakButton onClick={skipMaxAlt}>Unlock all worlds</window.TweakButton>
          <window.TweakButton onClick={resetSave}>Reset progress</window.TweakButton>
        </window.TweakSection>
      </window.TweaksPanel>
    );
  }

  // Wait for tweaks-panel.jsx to define globals
  function tryMount() {
    if (window.TweaksPanel && window.useTweaks) {
      ReactDOM.createRoot(root).render(<App />);
    } else {
      setTimeout(tryMount, 50);
    }
  }
  tryMount();
})();
