diff --git a/src/app/tools/tankopedia/[id]/components/Model/GameModeSection.tsx b/src/app/tools/tankopedia/[id]/components/Model/GameModeSection.tsx index c9e3a8cd2..727dd2ca5 100644 --- a/src/app/tools/tankopedia/[id]/components/Model/GameModeSection.tsx +++ b/src/app/tools/tankopedia/[id]/components/Model/GameModeSection.tsx @@ -1,12 +1,16 @@ import { Box, Flex, Heading, Text } from '@radix-ui/themes'; import { use } from 'react'; import { asset } from '../../../../../../core/blitzkit/asset'; +import { consumableDefinitions } from '../../../../../../core/blitzkit/consumableDefinitions'; import { gameDefinitions } from '../../../../../../core/blitzkit/gameDefinitions'; +import { provisionDefinitions } from '../../../../../../core/blitzkit/provisionDefinitions'; import * as Duel from '../../../../../../stores/duel'; export function GameModeSection() { const tank = Duel.use((state) => state.protagonist.tank); const awaitedGameDefinitions = use(gameDefinitions); + const awaitedConsumableDefinitions = use(consumableDefinitions); + const awaitedProvisionDefinitions = use(provisionDefinitions); return ( @@ -19,10 +23,9 @@ export function GameModeSection() { return ( - {gameMode.name} + + {gameMode.name} + + + + {awaitedGameDefinitions.roles[value].provisions.map((id) => { + const provisions = awaitedProvisionDefinitions[id]; + + return ( + + + {provisions.name} + {provisions.name} + + + ); + })} + {awaitedGameDefinitions.roles[value].consumables.map((id) => { + const consumable = awaitedConsumableDefinitions[id]; + + return ( + + + {consumable.name} + {consumable.name} + + + ); + })} + ); diff --git a/src/core/blitzkit/checkConsumableProvisionInclusivity.ts b/src/core/blitzkit/checkConsumableProvisionInclusivity.ts index 27083a6f0..1f72f81f7 100644 --- a/src/core/blitzkit/checkConsumableProvisionInclusivity.ts +++ b/src/core/blitzkit/checkConsumableProvisionInclusivity.ts @@ -7,41 +7,50 @@ export function checkConsumableProvisionInclusivity( tank: TankDefinition, gun: GunDefinition, ) { - const included = consumableProvision.include.every((rule) => { - switch (rule.type) { - case 'tier': - return rule.min <= tank.tier && tank.tier <= rule.max; + const included = + !consumableProvision.gameMode && + consumableProvision.include?.every((rule) => { + switch (rule.type) { + case 'tier': + return rule.min <= tank.tier && tank.tier <= rule.max; - case 'ids': - return rule.ids.includes(tank.id); + case 'ids': + return rule.ids.includes(tank.id); - case 'nation': - return rule.nations.includes(tank.nation); + case 'nation': + return rule.nations.includes(tank.nation); - case 'category': - throw new SyntaxError('Category filtering found in include rule'); - } - }); - const excluded = consumableProvision.exclude?.some((rule) => { - switch (rule.type) { - case 'tier': - return rule.min <= tank.tier && tank.tier <= rule.max; + case 'category': + throw new SyntaxError('Category filtering found in include rule'); + } + }); + const excluded = + consumableProvision.gameMode || + consumableProvision.exclude?.some((rule) => { + switch (rule.type) { + case 'tier': + return rule.min <= tank.tier && tank.tier <= rule.max; - case 'ids': - return rule.ids.includes(tank.id); + case 'ids': + return rule.ids.includes(tank.id); - case 'nation': - return rule.nations.includes(tank.nation); + case 'nation': + return rule.nations.includes(tank.nation); - case 'category': - return rule.categories.some((category) => { - switch (category) { - case 'clip': - return gun.type !== 'regular'; - } - }); - } - }); + case 'category': + return rule.categories.some((category) => { + switch (category) { + case 'clip': + return gun.type !== 'regular'; + } + }); + } + }); - return consumableProvision.include.length > 0 && included && !excluded; + return ( + !consumableProvision.gameMode && + consumableProvision.include?.length > 0 && + included && + !excluded + ); }