mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-23 19:49:50 +02:00
feat: hide tanks from lost if placed
This commit is contained in:
1 parent
6ace0aa38a
commit
258279205d
4 files changed
+14
-3
No files matched your search
@@ -15,4 +15,3 @@ export const tierListRowElements = new Set<HTMLTableRowElement>();
|
|||||||
export const tierListCardElements = tierListRows.map(
|
export const tierListCardElements = tierListRows.map(
|
||||||
() => new Set<HTMLDivElement>(),
|
() => new Set<HTMLDivElement>(),
|
||||||
);
|
);
|
||||||
export const placedTanks = new Set<number>();
|
|
||||||
@@ -107,6 +107,7 @@ export function TierListTile(props: TierListTileProps) {
|
|||||||
row.filter((tankId) => tankId !== props.tank.id),
|
row.filter((tankId) => tankId !== props.tank.id),
|
||||||
);
|
);
|
||||||
draft.tanks[rowIndex].splice(tileIndex, 0, props.tank.id);
|
draft.tanks[rowIndex].splice(tileIndex, 0, props.tank.id);
|
||||||
|
draft.placedTanks.add(props.tank.id);
|
||||||
});
|
});
|
||||||
|
|
||||||
wasPlaced = true;
|
wasPlaced = true;
|
||||||
@@ -120,6 +121,7 @@ export function TierListTile(props: TierListTileProps) {
|
|||||||
row.filter((tankId) => tankId !== props.tank.id),
|
row.filter((tankId) => tankId !== props.tank.id),
|
||||||
);
|
);
|
||||||
draft.tanks[rowIndex].push(props.tank.id);
|
draft.tanks[rowIndex].push(props.tank.id);
|
||||||
|
draft.placedTanks.add(props.tank.id);
|
||||||
});
|
});
|
||||||
|
|
||||||
wasPlaced = true;
|
wasPlaced = true;
|
||||||
@@ -133,6 +135,7 @@ export function TierListTile(props: TierListTileProps) {
|
|||||||
draft.tanks = draft.tanks.map((row) =>
|
draft.tanks = draft.tanks.map((row) =>
|
||||||
row.filter((tankId) => tankId !== props.tank.id),
|
row.filter((tankId) => tankId !== props.tank.id),
|
||||||
);
|
);
|
||||||
|
draft.placedTanks.delete(props.tank.id);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import { times } from 'lodash-es';
|
|||||||
import { useMemo, useState } from 'react';
|
import { useMemo, useState } from 'react';
|
||||||
import { filterTank } from '../../core/blitzkit/filterTank';
|
import { filterTank } from '../../core/blitzkit/filterTank';
|
||||||
import { $tankFilters } from '../../stores/tankFilters';
|
import { $tankFilters } from '../../stores/tankFilters';
|
||||||
|
import { TierList } from '../../stores/tierList';
|
||||||
import { SkeletonTankCard } from '../TankSearch/components/SkeletonTankCard';
|
import { SkeletonTankCard } from '../TankSearch/components/SkeletonTankCard';
|
||||||
import { TankCardWrapper } from '../TankSearch/components/TankCardWrapper';
|
import { TankCardWrapper } from '../TankSearch/components/TankCardWrapper';
|
||||||
import { TierListTile } from './Tile';
|
import { TierListTile } from './Tile';
|
||||||
@@ -21,13 +22,16 @@ const DEFAULT_LOADED_CARDS = 75;
|
|||||||
|
|
||||||
export function TierListTiles() {
|
export function TierListTiles() {
|
||||||
const filters = useStore($tankFilters);
|
const filters = useStore($tankFilters);
|
||||||
|
const placedTanks = TierList.use((state) => state.placedTanks);
|
||||||
const sorted = useMemo(
|
const sorted = useMemo(
|
||||||
() =>
|
() =>
|
||||||
metaSortTank(
|
metaSortTank(
|
||||||
tanks.filter((tank) => filterTank(filters, tank)),
|
tanks.filter(
|
||||||
|
(tank) => filterTank(filters, tank) && !placedTanks.has(tank.id),
|
||||||
|
),
|
||||||
gameDefinitions,
|
gameDefinitions,
|
||||||
).reverse(),
|
).reverse(),
|
||||||
[filters],
|
[filters, placedTanks],
|
||||||
);
|
);
|
||||||
const [loadedTiles, setLoadedTiles] = useState(DEFAULT_LOADED_CARDS);
|
const [loadedTiles, setLoadedTiles] = useState(DEFAULT_LOADED_CARDS);
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { enableMapSet } from 'immer';
|
||||||
import { create } from 'zustand';
|
import { create } from 'zustand';
|
||||||
import { subscribeWithSelector } from 'zustand/middleware';
|
import { subscribeWithSelector } from 'zustand/middleware';
|
||||||
import { tierListRows } from '../components/TierList/Table/constants';
|
import { tierListRows } from '../components/TierList/Table/constants';
|
||||||
@@ -6,13 +7,17 @@ import { createContextualStore } from '../core/zustand/createContextualStore';
|
|||||||
export interface TierList {
|
export interface TierList {
|
||||||
dragging: boolean;
|
dragging: boolean;
|
||||||
tanks: number[][];
|
tanks: number[][];
|
||||||
|
placedTanks: Set<number>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enableMapSet();
|
||||||
|
|
||||||
export const TierList = createContextualStore(() =>
|
export const TierList = createContextualStore(() =>
|
||||||
create<TierList>()(
|
create<TierList>()(
|
||||||
subscribeWithSelector<TierList>(() => ({
|
subscribeWithSelector<TierList>(() => ({
|
||||||
dragging: false,
|
dragging: false,
|
||||||
tanks: tierListRows.map(() => []),
|
tanks: tierListRows.map(() => []),
|
||||||
|
placedTanks: new Set(),
|
||||||
})),
|
})),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
Reference in new issue
Block a user