X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=resources%2Fjs%2Fcomponents%2Ftracker%2FToolbar.js;h=85e0f0428bf6bb4d47c7dbfa6833d602a9c1df80;hb=07c9bbbb2c6ddde460f48245699f27eaf66b8ac3;hp=169d7bc3bce7eedc6ff72e77dba50c7faeb4251e;hpb=b5a50d74cf042fa7fc874d8184dc37ae20bb74dd;p=alttp.git diff --git a/resources/js/components/tracker/Toolbar.js b/resources/js/components/tracker/Toolbar.js index 169d7bc..85e0f04 100644 --- a/resources/js/components/tracker/Toolbar.js +++ b/resources/js/components/tracker/Toolbar.js @@ -1,8 +1,13 @@ import React from 'react'; -import { Container, Navbar } from 'react-bootstrap'; +import { Button, Container, Form, Navbar } from 'react-bootstrap'; +import { useTranslation } from 'react-i18next'; import AutoTracking from './AutoTracking'; +import ConfigDialog from './ConfigDialog'; import ToggleIcon from './ToggleIcon'; +import Icon from '../common/Icon'; +import ZeldaIcon from '../common/ZeldaIcon'; +import { getConfigValue } from '../../helpers/tracker'; import { useTracker } from '../../hooks/tracker'; const mapWild = { @@ -13,28 +18,126 @@ const mapWild = { }; const Toolbar = () => { - const { config, setConfig } = useTracker(); + const [showConfigDialog, setShowConfigDialog] = React.useState(false); + const { config, saveConfig } = useTracker(); + const { t } = useTranslation(); - const controller = React.useMemo(() => ({ + const handleConfigChange = React.useCallback(({ target: { name, value } }) => { + saveConfig({ [name]: value }); + }, [saveConfig]); + + const bossController = React.useMemo(() => ({ + getActive: (state, icons) => config.bossShuffle ? icons[0] : null, + getDefault: (state, icons) => icons[0], + handlePrimary: () => { + saveConfig({ bossShuffle: !config.bossShuffle}); + }, + handleSecondary: () => null, + }), [config, saveConfig]); + + const wildController = React.useMemo(() => ({ getActive: (state, icons) => config[mapWild[icons[0]]] ? icons[0] : null, getDefault: (state, icons) => icons[0], handlePrimary: (state, setState, icons) => { const prop = mapWild[icons[0]]; - setConfig(c => ({ ...c, [prop]: !c[prop] })); + saveConfig({ [prop]: !config[prop] }); }, handleSecondary: () => null, - }), [config, setConfig]); + }), [config, saveConfig]); + + const worldController = React.useMemo(() => ({ + getActive: (state, icons) => config.worldState === 'inverted' ? icons[1] : icons[0], + getDefault: (state, icons) => icons[0], + handlePrimary: () => { + saveConfig({ worldState: config.worldState == 'inverted' ? 'open' : 'inverted' }); + }, + handleSecondary: () => null, + }), [config, saveConfig]); return
- - - - + + + + + + + +
+
+ + + + + + {['?', 0, 1, 2, 3, 4, 5, 6, 7].map(n => + + )} + + + + + + + + {['?', 0, 1, 2, 3, 4, 5, 6, 7].map(n => + + )} + + + + + + + + {['ganon', 'fast', 'ad', 'ped', 'trinity', 'thunt', 'ghunt'].map(n => + + )} + + +
+
+
-
+ setShowConfigDialog(false)} show={showConfigDialog} />
; };