mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-23 19:49:50 +02:00
feat: more stats 2
This commit is contained in:
1 parent
948ea0bb8d
commit
b929e9449d
2 files changed
+54
-16
No files matched your search
@@ -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>
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user