X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=resources%2Fjs%2Fcomponents%2Faos-generate%2FGenerate.js;fp=resources%2Fjs%2Fcomponents%2Faos-generate%2FGenerate.js;h=cbdeeb0077aeff76b2126e84dd009ae3fea0d643;hb=a5e53546a5960f54fb45e06767f89e9dfeef6a47;hp=0000000000000000000000000000000000000000;hpb=80c51af075a5a86641cf47ba5024994a1310e9d6;p=alttp.git diff --git a/resources/js/components/aos-generate/Generate.js b/resources/js/components/aos-generate/Generate.js new file mode 100644 index 0000000..cbdeeb0 --- /dev/null +++ b/resources/js/components/aos-generate/Generate.js @@ -0,0 +1,266 @@ +import { withFormik } from 'formik'; +import PropTypes from 'prop-types'; +import React from 'react'; +import { Button, Col, Container, Form, Row } from 'react-bootstrap'; +import { withTranslation } from 'react-i18next'; + +import i18n from '../../i18n'; + +const settings = [ + 'logic', + 'nodupes', + 'panther', + 'area', + 'boss', + 'enemy', + 'itempool', + 'weight', + 'grahm', + 'kicker', + 'startshop', + 'shopprice', + 'shopSouls', + 'levelexp', + 'telestart', + 'mapassist', + 'doublechaos', + 'reqallsouls', + 'noww', + 'palette', +]; + +const settingValues = { + area: [ + 'AreaRandom', + 'DoorRandom', + 'Vanilla', + ], + boss: [ + 'Dead-endShuffle', + 'Vanilla', + ], + doublechaos: [ + 'false', + 'true', + ], + enemy: [ + 'RandomNoLimit', + 'RandomP20M5', + 'RandomP30M10', + 'RandomPM10', + 'RandomPM20', + 'RandomPMaxM5', + 'Vanilla', + ], + grahm: [ + 'AllBosses', + 'BookSouls', + 'NoCheck', + ], + itempool: [ + 'AllSouls', + 'Standard', + ], + kicker: [ + 'false', + 'true', + ], + levelexp: [ + 'Casual', + 'Hard', + 'Lvl1', + 'Vanilla', + ], + logic: [ + 'AreaTechTiers', + 'AreaTechTiersHard', + 'ForwardFeed', + 'ForwardFeedHard', + 'HybridProgression', + 'VeryRandom', + 'VeryRandomHard', + 'VeryRandomHardOnly', + ], + mapassist: [ + 'false', + 'true', + ], + nodupes: [ + 'false', + 'true', + ], + noww: [ + 'false', + 'true', + ], + palette: [ + 'Mode1', + 'Mode1.5', + 'Mode2', + 'Vanilla', + ], + panther: [ + 'AlwaysRand', + 'ExtraFairRand', + 'FirstAlways', + 'NeverExists', + 'Rand70Dup', + ], + reqallsouls: [ + 'false', + 'true', + ], + shopprice: [ + 'RandHV', + 'Vanilla', + ], + shopSouls: [ + '2PerGroup', + 'Half', + 'OnlySouls', + 'Vanilla', + ], + startshop: [ + 'Unlocked', + 'Unlocked30k', + 'Vanilla', + ], + telestart: [ + 'false', + 'true', + ], + weight: [ + '0', + '1.0', + '1.5', + '2.0', + '2.5', + '3.0', + '3.5', + ], +}; + +const Generate = ({ + handleBlur, + handleChange, + handleSubmit, + presets, + setFieldValue, + values, +}) => + +

{i18n.t('aosGenerate.heading')}

+
+ + + + + {i18n.t('aosSeeds.preset')} + + { + const presetName = e.target.value; + const preset = presets.find(p => p.value === presetName); + if (preset) { + setFieldValue('settings', preset.settings); + } + return handleChange(e); + }} + value={values.preset} + > + + {presets.map(preset => + + )} + + + + + + + {i18n.t('button.generate')} + +
+ +
+
+ +
+ + {settings.map(setting => + + + {i18n.t(`aosSeeds.settingName.${setting}`)} + + { + setFieldValue('preset', 'custom'); + return handleChange(e); + }} + value={values.settings[setting]} + > + {settingValues[setting].map(value => + + )} + + + )} + +
+
; + +Generate.propTypes = { + handleBlur: PropTypes.func, + handleChange: PropTypes.func, + handleSubmit: PropTypes.func, + presets: PropTypes.arrayOf(PropTypes.shape({ + settings: PropTypes.shape({ + }), + value: PropTypes.string, + })), + setFieldValue: PropTypes.func, + values: PropTypes.shape({ + preset: PropTypes.string, + settings: PropTypes.shape({ + }), + }), +}; + +export default withFormik({ + displayName: 'AosGenerateForm', + mapPropsToValues: () => ({ + preset: 'Normal', + settings: { + area: 'Vanilla', + boss: 'Vanilla', + doublechaos: 'false', + enemy: 'Vanilla', + grahm: 'BookSouls', + itempool: 'Standard', + kicker: 'false', + levelexp: 'Vanilla', + logic: 'AreaTechTiers', + mapassist: 'false', + nodupes: 'false', + noww: 'false', + palette: 'Vanilla', + panther: 'Rand70Dup', + reqallsouls: 'false', + shopprice: 'Vanilla', + shopSouls: 'Vanilla', + startshop: 'Vanilla', + telestart: 'false', + weight: '2.5', + }, + }), +})(withTranslation()(Generate));