diff --git a/zenno/src/routes/doc/race/+page.svelte b/zenno/src/routes/doc/race/+page.svelte index e5cb040..13ad7e3 100644 --- a/zenno/src/routes/doc/race/+page.svelte +++ b/zenno/src/routes/doc/race/+page.svelte @@ -7,10 +7,6 @@ import { resolve } from '$app/paths'; import RaceLenSlider from '$lib/RaceLenSlider.svelte'; - function modemean(x: number, bonus: number, p: number): number { - return x * (1 - p) + x * bonus * p; - } - let style = $state(race.RunningStyle.FrontRunner); let surfaceApt = $state(race.AptitudeLevel.A); let distanceApt = $state(race.AptitudeLevel.A); @@ -84,39 +80,39 @@ ]; const duelSpeed: ComputedSeries[] = [{ label: 'Dueling Speed Boost', y: (x) => race.duelSpeedMod(x) }]; const duelAccel: ComputedSeries[] = [{ label: 'Dueling Acceleration Boost', y: (x) => race.duelAccelMod(x) }]; - const secSpeed: Array = $derived([ + const secSpeedEarly: Array = $derived([ { - label: 'Early Race', + label: styleIsFront ? 'Front S' : 'Style S', + y1: (x) => race.sectionSpeed(raceLen, x * 1.1, style, race.Phase.EarlyRace)[0], + y2: (x) => race.sectionSpeed(raceLen, x * 1.1, style, race.Phase.EarlyRace)[1], + }, + { + label: styleIsFront ? 'Front A' : 'Style A', y1: (x) => race.sectionSpeed(raceLen, x, style, race.Phase.EarlyRace)[0], y2: (x) => race.sectionSpeed(raceLen, x, style, race.Phase.EarlyRace)[1], }, { - label: 'Mid Race', + label: styleIsFront ? 'Front A Speed-Up Mode' : 'Style A Pace-Up Mode', + y1: (x) => race.sectionSpeed(raceLen, x, style, race.Phase.EarlyRace)[0] * 1.04, + y2: (x) => race.sectionSpeed(raceLen, x, style, race.Phase.EarlyRace)[1] * 1.04, + }, + ]); + const secSpeedMid: Array = $derived([ + { + label: styleIsFront ? 'Front S' : 'Style S', + y1: (x) => race.sectionSpeed(raceLen, x * 1.1, style, race.Phase.MidRace)[0], + y2: (x) => race.sectionSpeed(raceLen, x * 1.1, style, race.Phase.MidRace)[1], + }, + { + label: styleIsFront ? 'Front A' : 'Style A', y1: (x) => race.sectionSpeed(raceLen, x, style, race.Phase.MidRace)[0], y2: (x) => race.sectionSpeed(raceLen, x, style, race.Phase.MidRace)[1], }, - styleIsFront - ? { - label: 'Early Race + Mean Speed-Up Mode', - y1: (x) => modemean(race.sectionSpeed(raceLen, x, style, race.Phase.EarlyRace)[0], 1.04, race.frontModeEnterChance(x)), - y2: (x) => modemean(race.sectionSpeed(raceLen, x, style, race.Phase.EarlyRace)[1], 1.04, race.frontModeEnterChance(x)), - } - : { - label: 'Early Race + Mean Pace-Up Mode', - y1: (x) => modemean(race.sectionSpeed(raceLen, x, style, race.Phase.EarlyRace)[0], 1.04, race.paceUpEnterChance(x)), - y2: (x) => modemean(race.sectionSpeed(raceLen, x, style, race.Phase.EarlyRace)[1], 1.04, race.paceUpEnterChance(x)), - }, - styleIsFront - ? { - label: 'Mid Race + Mean Speed-Up Mode', - y1: (x) => modemean(race.sectionSpeed(raceLen, x, style, race.Phase.MidRace)[0], 1.04, race.frontModeEnterChance(x)), - y2: (x) => modemean(race.sectionSpeed(raceLen, x, style, race.Phase.MidRace)[1], 1.04, race.frontModeEnterChance(x)), - } - : { - label: 'Mid Race + Mean Pace-Up Mode', - y1: (x) => modemean(race.sectionSpeed(raceLen, x, style, race.Phase.MidRace)[0], 1.04, race.paceUpEnterChance(x)), - y2: (x) => modemean(race.sectionSpeed(raceLen, x, style, race.Phase.MidRace)[1], 1.04, race.paceUpEnterChance(x)), - }, + { + label: styleIsFront ? 'Front A Speed-Up Mode' : 'Style A Pace-Up Mode', + y1: (x) => race.sectionSpeed(raceLen, x, style, race.Phase.MidRace)[0] * 1.04, + y2: (x) => race.sectionSpeed(raceLen, x, style, race.Phase.MidRace)[1] * 1.04, + }, ]); const downhill: ComputedSeries[] = [ { label: 'Style S', y: (x) => race.downhillAccelEnterChance(x * 1.1) * 100 }, @@ -396,34 +392,42 @@ >Section Speed

Random variance in target speed per race section.

-
+
-
- - - {raceLen}m - - -
+ +
+
+ + + {raceLen}m + +