Files
blitzkit/packages/website/src/hooks/useEquipment.ts
T

31 lines
999 B
TypeScript
Raw Normal View History

2024-09-21 20:26:58 -05:00
import { useMemo } from 'react';
2024-11-29 13:20:27 -06:00
import { awaitableEquipmentDefinitions } from '../core/awaitables/equipmentDefinitions';
2024-09-22 21:12:18 -05:00
import { Duel } from '../stores/duel';
2024-02-09 18:25:23 -06:00
2024-11-29 13:20:27 -06:00
const equipmentDefinitions = await awaitableEquipmentDefinitions;
2024-09-21 20:26:58 -05:00
2024-02-22 16:41:42 -06:00
export function useEquipment(id: number, antagonist = false) {
2024-07-09 20:35:36 -05:00
const member = Duel.use(
2024-02-22 16:41:42 -06:00
(state) => state[antagonist ? 'antagonist' : 'protagonist']!,
);
2024-10-07 18:45:11 -05:00
const preset = equipmentDefinitions.presets[member.tank.equipment_preset];
2024-07-09 20:35:36 -05:00
const equipmentMatrix = Duel.use(
2024-04-04 13:51:07 -05:00
(state) =>
state[antagonist ? 'antagonist' : 'protagonist']!.equipmentMatrix,
2024-02-09 18:25:23 -06:00
);
2024-10-05 20:55:44 -05:00
const value = useMemo(() => {
return preset.slots.some((slot, index) => {
const row = Math.floor(index / 3);
const column = index % 3;
const choice = equipmentMatrix[row][column];
if (choice === 0) return false;
const equipped = slot[choice === -1 ? 'left' : 'right'];
return equipped === id;
});
}, [equipmentMatrix, member.tank]);
2024-02-09 18:25:23 -06:00
return value;
}