mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-23 19:49:50 +02:00
feat: united duel data
This commit is contained in:
1 parent
da767213cb
commit
7e92f8ac50
23 files changed
+249
-249
No files matched your search
@@ -0,0 +1,57 @@
|
||||
import {
|
||||
DuelMember,
|
||||
genericDefaultEquipmentMatrix,
|
||||
mutateDuel,
|
||||
} from '../../stores/duel';
|
||||
import { availableProvisions } from './availableProvisions';
|
||||
import { provisionDefinitions } from './provisionDefinitions';
|
||||
import { tankDefinitions } from './tankDefinitions';
|
||||
|
||||
export async function assignDuelMember(
|
||||
type: 'antagonist' | 'protagonist' | 'both',
|
||||
id: number,
|
||||
) {
|
||||
const awaitedTankDefinitions = await tankDefinitions;
|
||||
const awaitedProvisionDefinitions = await provisionDefinitions;
|
||||
const tank = awaitedTankDefinitions[id];
|
||||
const turret = tank.turrets.at(-1)!;
|
||||
const gun = turret.guns.at(-1)!;
|
||||
const shell = gun.shells[0];
|
||||
const engine = tank.engines.at(-1)!;
|
||||
const track = tank.tracks.at(-1)!;
|
||||
const provisionsList = availableProvisions(
|
||||
tank,
|
||||
gun,
|
||||
awaitedProvisionDefinitions,
|
||||
);
|
||||
const member: DuelMember = {
|
||||
tank,
|
||||
engine,
|
||||
turret,
|
||||
gun,
|
||||
shell,
|
||||
track,
|
||||
equipment: genericDefaultEquipmentMatrix,
|
||||
pitch: 0,
|
||||
yaw: 0,
|
||||
camouflage: true,
|
||||
consumables: [],
|
||||
cooldownBooster: 0,
|
||||
crewMastery: 1,
|
||||
provisions: provisionsList
|
||||
.filter((provision) => provision.crew !== undefined)
|
||||
.map((provision) => provision.id),
|
||||
};
|
||||
|
||||
mutateDuel((draft) => {
|
||||
draft.assigned = true;
|
||||
if (type === 'antagonist') {
|
||||
draft.antagonist = member;
|
||||
} else if (type === 'protagonist') {
|
||||
draft.protagonist = member;
|
||||
} else {
|
||||
draft.protagonist = member;
|
||||
draft.antagonist = { ...member };
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -1,13 +1,13 @@
|
||||
import { useDuel } from '../../stores/duel';
|
||||
import { useTankopediaTemporary } from '../../stores/tankopedia';
|
||||
import { equipmentDefinitions } from './equipmentDefinitions';
|
||||
|
||||
export async function hasEquipment(id: number) {
|
||||
export async function hasEquipment(id: number, antagonist = false) {
|
||||
const awaitedEquipmentDefinitions = await equipmentDefinitions;
|
||||
const protagonist = useDuel.getState().protagonist!;
|
||||
const member = useDuel.getState()[antagonist ? 'antagonist' : 'protagonist']!;
|
||||
const equipmentRows =
|
||||
awaitedEquipmentDefinitions.presets[protagonist.tank.equipment];
|
||||
const equipmentMatrix = useTankopediaTemporary.getState().equipmentMatrix;
|
||||
awaitedEquipmentDefinitions.presets[member.tank.equipment];
|
||||
const equipmentMatrix =
|
||||
useDuel.getState()[antagonist ? 'antagonist' : 'protagonist']!.equipment;
|
||||
|
||||
return equipmentRows.some((equipmentRow, rowIndex) => {
|
||||
return equipmentRow.some((equipment, columnIndex) => {
|
||||
|
||||
Reference in new issue
Block a user