mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-24 20:19:49 +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 { use } from 'react';
|
||||||
import { ProvisionButton } from '../../../../../../../components/ModuleButtons/ProvisionButton';
|
import { ProvisionButton } from '../../../../../../../components/ModuleButtons/ProvisionButton';
|
||||||
import { availableProvisions } from '../../../../../../../core/blitzkrieg/availableProvisions';
|
import { availableProvisions } from '../../../../../../../core/blitzkrieg/availableProvisions';
|
||||||
|
import { provisionDefinitions } from '../../../../../../../core/blitzkrieg/provisionDefinitions';
|
||||||
import { useDuel } from '../../../../../../../stores/duel';
|
import { useDuel } from '../../../../../../../stores/duel';
|
||||||
import {
|
import {
|
||||||
mutateTankopediaTemporary,
|
mutateTankopediaTemporary,
|
||||||
@@ -12,7 +13,12 @@ import { ConfigurationChildWrapper } from './ConfigurationChildWrapper';
|
|||||||
export function Provisions() {
|
export function Provisions() {
|
||||||
const { tank, gun } = useDuel((state) => state.protagonist!);
|
const { tank, gun } = useDuel((state) => state.protagonist!);
|
||||||
const provisions = useTankopediaTemporary((state) => state.provisions);
|
const provisions = useTankopediaTemporary((state) => state.provisions);
|
||||||
const provisionsList = use(availableProvisions(tank, gun));
|
const awaitedProvisionDefinitions = use(provisionDefinitions);
|
||||||
|
const provisionsList = availableProvisions(
|
||||||
|
tank,
|
||||||
|
gun,
|
||||||
|
awaitedProvisionDefinitions,
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ConfigurationChildWrapper>
|
<ConfigurationChildWrapper>
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { Flex } from '@radix-ui/themes';
|
|||||||
import { use, useEffect } from 'react';
|
import { use, useEffect } from 'react';
|
||||||
import PageWrapper from '../../../../components/PageWrapper';
|
import PageWrapper from '../../../../components/PageWrapper';
|
||||||
import { availableProvisions } from '../../../../core/blitzkrieg/availableProvisions';
|
import { availableProvisions } from '../../../../core/blitzkrieg/availableProvisions';
|
||||||
|
import { provisionDefinitions } from '../../../../core/blitzkrieg/provisionDefinitions';
|
||||||
import { tankDefinitions } from '../../../../core/blitzkrieg/tankDefinitions';
|
import { tankDefinitions } from '../../../../core/blitzkrieg/tankDefinitions';
|
||||||
import { useWideFormat } from '../../../../hooks/useWideFormat';
|
import { useWideFormat } from '../../../../hooks/useWideFormat';
|
||||||
import { mutateDuel, useDuel } from '../../../../stores/duel';
|
import { mutateDuel, useDuel } from '../../../../stores/duel';
|
||||||
@@ -23,7 +24,6 @@ export default function Page({ params }: { params: { id: string } }) {
|
|||||||
const awaitedTankDefinitions = use(tankDefinitions);
|
const awaitedTankDefinitions = use(tankDefinitions);
|
||||||
const tank = awaitedTankDefinitions[id];
|
const tank = awaitedTankDefinitions[id];
|
||||||
const gun = tank.turrets.at(-1)!.guns.at(-1)!;
|
const gun = tank.turrets.at(-1)!.guns.at(-1)!;
|
||||||
const provisionsList = use(availableProvisions(tank, gun));
|
|
||||||
const assigned = useDuel((state) => state.assigned);
|
const assigned = useDuel((state) => state.assigned);
|
||||||
const wideFormat = useWideFormat();
|
const wideFormat = useWideFormat();
|
||||||
|
|
||||||
@@ -41,21 +41,6 @@ export default function Page({ params }: { params: { id: string } }) {
|
|||||||
draft.antagonist = { ...draft.protagonist };
|
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) {
|
function handleKeyDown(event: KeyboardEvent) {
|
||||||
if (document.activeElement instanceof HTMLInputElement) return;
|
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);
|
window.addEventListener('keydown', handleKeyDown);
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
import { checkConsumableProvisionInclusivity } from './checkConsumableProvisionInclusivity';
|
import { checkConsumableProvisionInclusivity } from './checkConsumableProvisionInclusivity';
|
||||||
import { provisionDefinitions } from './provisionDefinitions';
|
import { ProvisionDefinitions } from './provisionDefinitions';
|
||||||
import { GunDefinition, TankDefinition } from './tankDefinitions';
|
import { GunDefinition, TankDefinition } from './tankDefinitions';
|
||||||
|
|
||||||
export async function availableProvisions(
|
export function availableProvisions(
|
||||||
tank: TankDefinition,
|
tank: TankDefinition,
|
||||||
gun: GunDefinition,
|
gun: GunDefinition,
|
||||||
|
provisionDefinitions: ProvisionDefinitions,
|
||||||
) {
|
) {
|
||||||
return Object.values(await provisionDefinitions).filter((provision) =>
|
return Object.values(provisionDefinitions).filter((provision) =>
|
||||||
checkConsumableProvisionInclusivity(provision, tank, gun),
|
checkConsumableProvisionInclusivity(provision, tank, gun),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user