|
@@ -1,8 +1,8 @@
|
|
|
import ms from 'pretty-ms';
|
|
|
import { useCallback, useState } from 'react';
|
|
|
import { createGame } from '../../../domain/apiMethods';
|
|
|
-import { MAP_CRUNCH, RANDOM_STREET_VIEW, URBAN } from '../../../domain/genMethods';
|
|
|
-import { FROZEN, NORMAL, TIME_BANK, RACE } from '../../../domain/ruleSets';
|
|
|
+import { RANDOM_STREET_VIEW, URBAN } from '../../../domain/genMethods';
|
|
|
+import { FROZEN, NORMAL, TIME_BANK, RACE, COUNTRY_RACE } from '../../../domain/ruleSets';
|
|
|
import Loading from '../Loading';
|
|
|
import { Dropdown, DropdownGroup, Item } from './Dropdown';
|
|
|
import styles from './GameCreationForm.module.css';
|
|
@@ -36,6 +36,7 @@ const PRESETS = {
|
|
|
|
|
|
const GameCreationForm = ({ afterCreate }) => {
|
|
|
const [ loading, setLoading ] = useState(false);
|
|
|
+ const [ creationError, setCreationError ] = useState(false);
|
|
|
const [ timer, setTimer ] = useState(DEFAULTS.timer);
|
|
|
const [ rounds, setRounds ] = useState(DEFAULTS.rounds);
|
|
|
const [ onlyAmerica, setOnlyAmerica ] = useState(DEFAULTS.onlyAmerica);
|
|
@@ -58,7 +59,14 @@ const GameCreationForm = ({ afterCreate }) => {
|
|
|
|
|
|
const onCreateGame = async () => {
|
|
|
setLoading(true);
|
|
|
- const gameId = await createGame(timer, rounds, onlyAmerica, genMethod, ruleSet);
|
|
|
+ let gameId;
|
|
|
+ try {
|
|
|
+ gameId = await createGame(timer, rounds, onlyAmerica ? "us" : null, genMethod, ruleSet);
|
|
|
+ } catch (e) {
|
|
|
+ setCreationError(true);
|
|
|
+ setLoading(false);
|
|
|
+ return;
|
|
|
+ }
|
|
|
if (afterCreate) {
|
|
|
afterCreate(gameId);
|
|
|
}
|
|
@@ -66,6 +74,7 @@ const GameCreationForm = ({ afterCreate }) => {
|
|
|
|
|
|
return (
|
|
|
<div className={styles.form}>
|
|
|
+ { creationError && <div className={styles.error}>Error! TODO</div> }
|
|
|
<div className={styles.dropdowns}>
|
|
|
<DropdownGroup>
|
|
|
<Dropdown selected={timer} onSelect={setTimer} open='timer'>
|
|
@@ -85,15 +94,15 @@ const GameCreationForm = ({ afterCreate }) => {
|
|
|
<Item value={true} display='🇺🇸'>Just America</Item>
|
|
|
</Dropdown>
|
|
|
<Dropdown selected={genMethod} onSelect={setGenMethod} open='gen'>
|
|
|
- <Item value={RANDOM_STREET_VIEW} display='RSV'>Random Street View</Item>
|
|
|
+ <Item value={RANDOM_STREET_VIEW} display='🎲'>Random Street View</Item>
|
|
|
<Item value={URBAN} display='🏙️'>Urban Centers</Item>
|
|
|
- <Item value={MAP_CRUNCH} display='MC' default>Map Crunch</Item>
|
|
|
</Dropdown>
|
|
|
<Dropdown selected={ruleSet} onSelect={setRuleSet} open='rule'>
|
|
|
<Item value={NORMAL} display='⏰'>Normal</Item>
|
|
|
<Item value={TIME_BANK} display='🏦'>Time Bank</Item>
|
|
|
<Item value={FROZEN} display='❄️'>Frozen</Item>
|
|
|
<Item value={RACE} display='🏃'>Race</Item>
|
|
|
+ <Item value={COUNTRY_RACE} display='🗾'>Country Race</Item>
|
|
|
</Dropdown>
|
|
|
<Dropdown onSelect={setPreset} open='presets' forceDisplay='⭐'>
|
|
|
<Item value={DEFAULTS} display=''>Default</Item>
|