/
useEndlessProps.ts
34 lines (29 loc) · 1.04 KB
/
useEndlessProps.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import {Game} from "../../game/game";
import {atom, useRecoilState} from "recoil";
import {Command} from "../../game/command";
import {Endless} from "../../game/Endless";
import {v1PracticeCompressor} from "../../game/compressor/v1PracticeCompressor";
import {Seed} from "../../game/seed";
const endlessState= atom({
key: 'endless',
default: Endless.create([Game.create(Seed.random())])
})
export function useEndlessProps() {
const [endless, setEndless] = useRecoilState(endlessState)
const createPracticeQueryParam = (): string => {
const props = endless.createPracticeInitializationProps()
return v1PracticeCompressor.compress(props)
}
return {
currentGame: endless.currentGame,
historySize: endless.historySize,
input: (command: Command) => {
setEndless(endless => endless.input(command))
},
newWithSeed: (seed: Seed) => {
setEndless(Endless.createBySeed(seed))
},
createPracticeQueryParam,
seed: endless.firstSeed,
}
}