mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-24 20:19:49 +02:00
feat: added option to hide tank under dynamic armor
This commit is contained in:
1 parent
cc4345f1a3
commit
e9d1c82a60
3 files changed
+23
-1
No files matched your search
@@ -65,6 +65,9 @@ export function Options({ thicknessRange, canvas }: OptionsProps) {
|
|||||||
const greenPenetration = TankopediaPersistent.use(
|
const greenPenetration = TankopediaPersistent.use(
|
||||||
(state) => state.greenPenetration,
|
(state) => state.greenPenetration,
|
||||||
);
|
);
|
||||||
|
const hideTankModelUnderArmor = TankopediaPersistent.use(
|
||||||
|
(state) => state.hideTankModelUnderArmor,
|
||||||
|
);
|
||||||
const advancedHighlighting = TankopediaPersistent.use(
|
const advancedHighlighting = TankopediaPersistent.use(
|
||||||
(state) => state.advancedHighlighting,
|
(state) => state.advancedHighlighting,
|
||||||
);
|
);
|
||||||
@@ -474,6 +477,17 @@ export function Options({ thicknessRange, canvas }: OptionsProps) {
|
|||||||
Green penetration
|
Green penetration
|
||||||
</DropdownMenu.CheckboxItem>
|
</DropdownMenu.CheckboxItem>
|
||||||
|
|
||||||
|
<DropdownMenu.CheckboxItem
|
||||||
|
checked={hideTankModelUnderArmor}
|
||||||
|
onCheckedChange={(checked) => {
|
||||||
|
mutateTankopediaPersistent((draft) => {
|
||||||
|
draft.hideTankModelUnderArmor = checked;
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Hide tank model under armor
|
||||||
|
</DropdownMenu.CheckboxItem>
|
||||||
|
|
||||||
<DropdownMenu.CheckboxItem
|
<DropdownMenu.CheckboxItem
|
||||||
checked={opaque}
|
checked={opaque}
|
||||||
onCheckedChange={(checked) => {
|
onCheckedChange={(checked) => {
|
||||||
|
|||||||
+7
-1
@@ -15,6 +15,7 @@ import { useOnScreen } from '../../../../../hooks/useOnScreen';
|
|||||||
import { useTankModelDefinition } from '../../../../../hooks/useTankModelDefinition';
|
import { useTankModelDefinition } from '../../../../../hooks/useTankModelDefinition';
|
||||||
import { Duel } from '../../../../../stores/duel';
|
import { Duel } from '../../../../../stores/duel';
|
||||||
import { TankopediaEphemeral } from '../../../../../stores/tankopediaEphemeral';
|
import { TankopediaEphemeral } from '../../../../../stores/tankopediaEphemeral';
|
||||||
|
import { TankopediaPersistent } from '../../../../../stores/tankopediaPersistent';
|
||||||
import { TankopediaDisplay } from '../../../../../stores/tankopediaPersistent/constants';
|
import { TankopediaDisplay } from '../../../../../stores/tankopediaPersistent/constants';
|
||||||
import { Armor } from '../../../../Armor';
|
import { Armor } from '../../../../Armor';
|
||||||
import { ArmorPlateDisplay } from '../../../../Armor/components/ArmorPlateDisplay';
|
import { ArmorPlateDisplay } from '../../../../Armor/components/ArmorPlateDisplay';
|
||||||
@@ -49,6 +50,9 @@ export const TankSandbox = forwardRef<HTMLCanvasElement, TankSandboxProps>(
|
|||||||
const gunModelDefinition =
|
const gunModelDefinition =
|
||||||
turretModelDefinition.guns[protagonistGun.gun_type!.value.base.id];
|
turretModelDefinition.guns[protagonistGun.gun_type!.value.base.id];
|
||||||
const display = TankopediaEphemeral.use((state) => state.display);
|
const display = TankopediaEphemeral.use((state) => state.display);
|
||||||
|
const hideTankModelUnderArmor = TankopediaPersistent.use(
|
||||||
|
(state) => state.hideTankModelUnderArmor,
|
||||||
|
);
|
||||||
const onScreen = useOnScreen(canvas);
|
const onScreen = useOnScreen(canvas);
|
||||||
|
|
||||||
useImperativeHandle(ref, () => canvas.current!, []);
|
useImperativeHandle(ref, () => canvas.current!, []);
|
||||||
@@ -190,7 +194,9 @@ export const TankSandbox = forwardRef<HTMLCanvasElement, TankSandboxProps>(
|
|||||||
>
|
>
|
||||||
<Controls naked={naked} />
|
<Controls naked={naked} />
|
||||||
{!naked && <SceneProps />}
|
{!naked && <SceneProps />}
|
||||||
{display !== TankopediaDisplay.StaticArmor && <TankModel />}
|
{(display === TankopediaDisplay.Model ||
|
||||||
|
(display === TankopediaDisplay.DynamicArmor &&
|
||||||
|
!hideTankModelUnderArmor)) && <TankModel />}
|
||||||
<ShotDisplay />
|
<ShotDisplay />
|
||||||
<ArmorPlateDisplay />
|
<ArmorPlateDisplay />
|
||||||
<AutoClear />
|
<AutoClear />
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ export interface TankopediaPersistentStore {
|
|||||||
showExternalModules: boolean;
|
showExternalModules: boolean;
|
||||||
showPrimaryArmor: boolean;
|
showPrimaryArmor: boolean;
|
||||||
recentlyViewed: number[];
|
recentlyViewed: number[];
|
||||||
|
hideTankModelUnderArmor: boolean;
|
||||||
|
|
||||||
sort: {
|
sort: {
|
||||||
by: TankopediaSortBy;
|
by: TankopediaSortBy;
|
||||||
@@ -29,6 +30,7 @@ export const TankopediaPersistent = createContextualStore(() =>
|
|||||||
create<TankopediaPersistentStore>()(
|
create<TankopediaPersistentStore>()(
|
||||||
persist(
|
persist(
|
||||||
subscribeWithSelector<TankopediaPersistentStore>(() => ({
|
subscribeWithSelector<TankopediaPersistentStore>(() => ({
|
||||||
|
hideTankModelUnderArmor: false,
|
||||||
wireframe: false,
|
wireframe: false,
|
||||||
opaque: false,
|
opaque: false,
|
||||||
advancedHighlighting: false,
|
advancedHighlighting: false,
|
||||||
|
|||||||
Reference in new issue
Block a user