feat: more stats 2

This commit is contained in:
TrèsAbhi committed 2024-04-04 21:56:00 -05:00
1 parent 948ea0bb8d
commit b929e9449d
2 files changed
+54 -16

No files matched your search

+42 -14
View File
@@ -15,14 +15,12 @@ import PageWrapper from '../../../components/PageWrapper';
import { equipmentDefinitions } from '../../../core/blitzkrieg/equipmentDefinitions'; import { equipmentDefinitions } from '../../../core/blitzkrieg/equipmentDefinitions';
import { modelDefinitions } from '../../../core/blitzkrieg/modelDefinitions'; import { modelDefinitions } from '../../../core/blitzkrieg/modelDefinitions';
import { provisionDefinitions } from '../../../core/blitzkrieg/provisionDefinitions'; import { provisionDefinitions } from '../../../core/blitzkrieg/provisionDefinitions';
import { skillDefinitions } from '../../../core/blitzkrieg/skillDefinitions';
import { tankCharacteristics } from '../../../core/blitzkrieg/tankCharacteristics'; import { tankCharacteristics } from '../../../core/blitzkrieg/tankCharacteristics';
import { tankDefinitions } from '../../../core/blitzkrieg/tankDefinitions'; import { tankDefinitions } from '../../../core/blitzkrieg/tankDefinitions';
import { tankIcon } from '../../../core/blitzkrieg/tankIcon'; import { tankIcon } from '../../../core/blitzkrieg/tankIcon';
import { tankToCompareMember } from '../../../core/blitzkrieg/tankToCompareMember'; import { tankToCompareMember } from '../../../core/blitzkrieg/tankToCompareMember';
import mutateCompare, { import mutateCompare, { useCompare } from '../../../stores/compare';
CompareMember,
useCompare,
} from '../../../stores/compare';
import { TankSearch } from '../tankopedia/components/TankSearch'; import { TankSearch } from '../tankopedia/components/TankSearch';
import { TankControl } from './components/TankControl'; import { TankControl } from './components/TankControl';
@@ -30,6 +28,7 @@ export default function Page() {
const pathname = usePathname(); const pathname = usePathname();
const router = useRouter(); const router = useRouter();
const awaitedTankDefinitions = use(tankDefinitions); const awaitedTankDefinitions = use(tankDefinitions);
const awaitedSkillDefinitions = use(skillDefinitions);
const searchParams = useSearchParams(); const searchParams = useSearchParams();
const members = useCompare((state) => state.members); const members = useCompare((state) => state.members);
const [addTankDialogOpen, setAddTankDialogOpen] = useState(false); const [addTankDialogOpen, setAddTankDialogOpen] = useState(false);
@@ -87,11 +86,11 @@ export default function Page() {
draft.members = tanksParam draft.members = tanksParam
.split(',') .split(',')
.map(Number) .map(Number)
.map( .map((id) =>
(id) => tankToCompareMember(
tankToCompareMember( awaitedTankDefinitions[id],
awaitedTankDefinitions[id], awaitedSkillDefinitions,
) satisfies CompareMember, ),
); );
}); });
} }
@@ -147,7 +146,10 @@ export default function Page() {
textAlign: 'center', textAlign: 'center',
}} }}
color={ color={
index === 0 || value === undefined || values[0] === undefined index === 0 ||
value === undefined ||
values[0] === undefined ||
value > values[0]
? undefined ? undefined
: ( : (
deltaType === 'higherIsBetter' deltaType === 'higherIsBetter'
@@ -205,7 +207,9 @@ export default function Page() {
compact compact
onSelect={(tank) => { onSelect={(tank) => {
mutateCompare((draft) => { mutateCompare((draft) => {
draft.members.push(tankToCompareMember(tank)); draft.members.push(
tankToCompareMember(tank, awaitedSkillDefinitions),
);
}); });
setAddTankDialogOpen(false); setAddTankDialogOpen(false);
@@ -309,17 +313,41 @@ export default function Page() {
value="dispersion" value="dispersion"
display={(stats) => stats.dispersion.toFixed(3)} display={(stats) => stats.dispersion.toFixed(3)}
/> />
<Row name="Dispersion moving" value="dispersionMoving" /> <Row
name="Dispersion moving"
value="dispersionMoving"
display={(stats) => stats.dispersionMoving.toFixed(3)}
/>
<Row <Row
name="Dispersion hull traversing" name="Dispersion hull traversing"
value="dispersionHullTraversing" value="dispersionHullTraversing"
display={(stats) => stats.dispersionHullTraversing.toFixed(3)}
/> />
<Row <Row
name="Dispersion turret traversing" name="Dispersion turret traversing"
value="dispersionTurretTraversing" value="dispersionTurretTraversing"
display={(stats) => stats.dispersionTurretTraversing.toFixed(3)}
/>
<Row
name="Dispersion shooting"
value="dispersionShooting"
display={(stats) => stats.dispersionShooting.toFixed(3)}
/>
<Row
name="Dispersion gun damaged"
value="dispersionGunDamaged"
display={(stats) => stats.dispersionGunDamaged.toFixed(3)}
/>
<Row
name="Gun depression"
value="gunDepression"
display={(stats) => stats.gunDepression.toFixed(1)}
/>
<Row
name="Gun elevation"
value="gunElevation"
display={(stats) => stats.gunElevation.toFixed(1)}
/> />
<Row name="Dispersion shooting" value="dispersionShooting" />
<Row name="Dispersion gun damaged" value="dispersionGunDamaged" />
</Table.Body> </Table.Body>
</Table.Root> </Table.Root>
</Flex> </Flex>
+12 -2
View File
@@ -1,12 +1,22 @@
import { CompareMember } from '../../stores/compare'; import { CompareMember } from '../../stores/compare';
import { SkillDefinitions } from './skillDefinitions';
import { TankDefinition } from './tankDefinitions'; import { TankDefinition } from './tankDefinitions';
import { tankToDuelMember } from './tankToDuelMember'; import { tankToDuelMember } from './tankToDuelMember';
export function tankToCompareMember(tank: TankDefinition) { export function tankToCompareMember(
tank: TankDefinition,
skillDefinitions: SkillDefinitions,
) {
const member = { const member = {
...tankToDuelMember(tank), ...tankToDuelMember(tank),
crewSkills: {}, crewSkills: {},
} satisfies CompareMember; } as CompareMember;
Object.values(skillDefinitions.classes).forEach((skills) => {
skills.forEach((skill) => {
member.crewSkills[skill] = 0;
});
});
return member; return member;
} }