2024-02-09 18:25:23 -06:00
|
|
|
import { use, useMemo } from 'react';
|
2024-04-23 09:57:59 -05:00
|
|
|
import { equipmentDefinitions } from '../core/blitzkit/equipmentDefinitions';
|
2024-07-09 20:35:36 -05:00
|
|
|
import * as Duel from '../stores/duel';
|
2024-02-09 18:25:23 -06:00
|
|
|
|
2024-02-22 16:41:42 -06:00
|
|
|
export function useEquipment(id: number, antagonist = false) {
|
2024-02-09 18:25:23 -06:00
|
|
|
const awaitedEquipmentDefinitions = use(equipmentDefinitions);
|
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-02-09 18:25:23 -06:00
|
|
|
const equipmentRows =
|
2024-02-22 16:41:42 -06:00
|
|
|
awaitedEquipmentDefinitions.presets[member.tank.equipment];
|
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
|
|
|
);
|
|
|
|
|
const value = useMemo(
|
|
|
|
|
() =>
|
|
|
|
|
equipmentRows.some((equipmentRow, rowIndex) => {
|
|
|
|
|
return equipmentRow.some((equipment, columnIndex) => {
|
|
|
|
|
const choice = equipmentMatrix[rowIndex][columnIndex];
|
|
|
|
|
if (choice === 0) return false;
|
|
|
|
|
const equipped = equipment[choice === -1 ? 0 : 1];
|
|
|
|
|
return equipped === id;
|
|
|
|
|
});
|
|
|
|
|
}),
|
2024-02-22 16:41:42 -06:00
|
|
|
[equipmentMatrix, member.tank],
|
2024-02-09 18:25:23 -06:00
|
|
|
);
|
|
|
|
|
|
|
|
|
|
return value;
|
|
|
|
|
}
|