mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-21 02:37:05 +02:00
fix: no suspense on shell switching
This commit is contained in:
1 parent
83599539b5
commit
d81eddba44
3 files changed
+34
-20
No files matched your search
@@ -2,6 +2,7 @@ import { Flex, Heading } from '@radix-ui/themes';
|
||||
import { use } from 'react';
|
||||
import { ProvisionButton } from '../../../../../../../components/ModuleButtons/ProvisionButton';
|
||||
import { availableProvisions } from '../../../../../../../core/blitzkrieg/availableProvisions';
|
||||
import { provisionDefinitions } from '../../../../../../../core/blitzkrieg/provisionDefinitions';
|
||||
import { useDuel } from '../../../../../../../stores/duel';
|
||||
import {
|
||||
mutateTankopediaTemporary,
|
||||
@@ -12,7 +13,12 @@ import { ConfigurationChildWrapper } from './ConfigurationChildWrapper';
|
||||
export function Provisions() {
|
||||
const { tank, gun } = useDuel((state) => state.protagonist!);
|
||||
const provisions = useTankopediaTemporary((state) => state.provisions);
|
||||
const provisionsList = use(availableProvisions(tank, gun));
|
||||
const awaitedProvisionDefinitions = use(provisionDefinitions);
|
||||
const provisionsList = availableProvisions(
|
||||
tank,
|
||||
gun,
|
||||
awaitedProvisionDefinitions,
|
||||
);
|
||||
|
||||
return (
|
||||
<ConfigurationChildWrapper>
|
||||
|
||||
@@ -4,6 +4,7 @@ import { Flex } from '@radix-ui/themes';
|
||||
import { use, useEffect } from 'react';
|
||||
import PageWrapper from '../../../../components/PageWrapper';
|
||||
import { availableProvisions } from '../../../../core/blitzkrieg/availableProvisions';
|
||||
import { provisionDefinitions } from '../../../../core/blitzkrieg/provisionDefinitions';
|
||||
import { tankDefinitions } from '../../../../core/blitzkrieg/tankDefinitions';
|
||||
import { useWideFormat } from '../../../../hooks/useWideFormat';
|
||||
import { mutateDuel, useDuel } from '../../../../stores/duel';
|
||||
@@ -23,7 +24,6 @@ export default function Page({ params }: { params: { id: string } }) {
|
||||
const awaitedTankDefinitions = use(tankDefinitions);
|
||||
const tank = awaitedTankDefinitions[id];
|
||||
const gun = tank.turrets.at(-1)!.guns.at(-1)!;
|
||||
const provisionsList = use(availableProvisions(tank, gun));
|
||||
const assigned = useDuel((state) => state.assigned);
|
||||
const wideFormat = useWideFormat();
|
||||
|
||||
@@ -41,21 +41,6 @@ export default function Page({ params }: { params: { id: string } }) {
|
||||
draft.antagonist = { ...draft.protagonist };
|
||||
});
|
||||
|
||||
mutateTankopediaTemporary((draft) => {
|
||||
draft.model.pose.yaw = 0;
|
||||
draft.model.pose.pitch = 0;
|
||||
draft.consumables = [];
|
||||
draft.provisions = provisionsList
|
||||
.filter((provision) => provision.crew !== undefined)
|
||||
.map((provision) => provision.id);
|
||||
draft.shot = undefined;
|
||||
draft.equipmentMatrix = [
|
||||
[1, -1, -1],
|
||||
[0, 0, 0],
|
||||
[0, 0, 0],
|
||||
];
|
||||
});
|
||||
|
||||
function handleKeyDown(event: KeyboardEvent) {
|
||||
if (document.activeElement instanceof HTMLInputElement) return;
|
||||
|
||||
@@ -87,6 +72,28 @@ export default function Page({ params }: { params: { id: string } }) {
|
||||
}
|
||||
}
|
||||
|
||||
(async () => {
|
||||
const provisionsList = availableProvisions(
|
||||
tank,
|
||||
gun,
|
||||
await provisionDefinitions,
|
||||
);
|
||||
mutateTankopediaTemporary((draft) => {
|
||||
draft.model.pose.yaw = 0;
|
||||
draft.model.pose.pitch = 0;
|
||||
draft.consumables = [];
|
||||
draft.provisions = provisionsList
|
||||
.filter((provision) => provision.crew !== undefined)
|
||||
.map((provision) => provision.id);
|
||||
draft.shot = undefined;
|
||||
draft.equipmentMatrix = [
|
||||
[1, -1, -1],
|
||||
[0, 0, 0],
|
||||
[0, 0, 0],
|
||||
];
|
||||
});
|
||||
})();
|
||||
|
||||
window.addEventListener('keydown', handleKeyDown);
|
||||
|
||||
return () => {
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
import { checkConsumableProvisionInclusivity } from './checkConsumableProvisionInclusivity';
|
||||
import { provisionDefinitions } from './provisionDefinitions';
|
||||
import { ProvisionDefinitions } from './provisionDefinitions';
|
||||
import { GunDefinition, TankDefinition } from './tankDefinitions';
|
||||
|
||||
export async function availableProvisions(
|
||||
export function availableProvisions(
|
||||
tank: TankDefinition,
|
||||
gun: GunDefinition,
|
||||
provisionDefinitions: ProvisionDefinitions,
|
||||
) {
|
||||
return Object.values(await provisionDefinitions).filter((provision) =>
|
||||
return Object.values(provisionDefinitions).filter((provision) =>
|
||||
checkConsumableProvisionInclusivity(provision, tank, gun),
|
||||
);
|
||||
}
|
||||
Reference in new issue
Block a user