mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-21 10:47:04 +02:00
checkpoint
This commit is contained in:
1 parent
c2714c4d6b
commit
a75c47865b
9 files changed
+70
-61
No files matched your search
@@ -1,4 +1,4 @@
|
||||
import { CamouflageDefinitions } from "@blitzkit/core";
|
||||
import { CamouflageDefinitions } from "@blitzkit/protos";
|
||||
import { Cache } from "./0_base";
|
||||
import { ServerBlitzKitAPI1 } from "./1_tanks";
|
||||
|
||||
|
||||
@@ -1,19 +1,16 @@
|
||||
import {
|
||||
Armor,
|
||||
BlitzCrewType,
|
||||
ChassisDefinitionsList,
|
||||
Crew,
|
||||
EngineDefinitionsList,
|
||||
GunDefinitionsList,
|
||||
ModelDefinitions,
|
||||
TankParameters,
|
||||
toUniqueId,
|
||||
TurretDefinitionsList,
|
||||
Vector3,
|
||||
VehicleDefinitionArmor,
|
||||
VehicleDefinitionList,
|
||||
VehicleDefinitions,
|
||||
} from "@blitzkit/core";
|
||||
import { Armor, Crew, ModelDefinitions, Vector3 } from "@blitzkit/protos";
|
||||
import { Vector3Tuple } from "three";
|
||||
import { Cache } from "./0_base";
|
||||
import { ServerBlitzKitAPI2 } from "./2_camouflages";
|
||||
|
||||
@@ -3,6 +3,7 @@ import {
|
||||
ProvisionDefinitions,
|
||||
TankDefinition,
|
||||
} from "../../../protos/src/blitzkit";
|
||||
import { isTankCompatible } from "../tankopedia";
|
||||
|
||||
export function availableProvisions(
|
||||
tank: TankDefinition,
|
||||
@@ -10,6 +11,6 @@ export function availableProvisions(
|
||||
provisionDefinitions: ProvisionDefinitions,
|
||||
) {
|
||||
return Object.values(provisionDefinitions.provisions).filter((provision) =>
|
||||
checkConsumableProvisionInclusivity(provision, tank, gun),
|
||||
isTankCompatible(tank, gun, provision.include, provision.exclude),
|
||||
);
|
||||
}
|
||||
@@ -7,4 +7,5 @@ export * from "./math";
|
||||
export * from "./patreon";
|
||||
export * from "./statistics";
|
||||
export * from "./streams";
|
||||
export * from "./tankopedia";
|
||||
export * from "./types";
|
||||
@@ -0,0 +1 @@
|
||||
export * from "./isTankCompatible";
|
||||
@@ -0,0 +1,57 @@
|
||||
import {
|
||||
ConsumableTankCategoryFilterCategory,
|
||||
GunDefinition,
|
||||
TankDefinition,
|
||||
TankInclusivityFilter,
|
||||
} from "@blitzkit/protos";
|
||||
|
||||
export function isTankCompatible(
|
||||
tank: TankDefinition,
|
||||
gun: GunDefinition,
|
||||
include?: TankInclusivityFilter[],
|
||||
exclude?: TankInclusivityFilter[],
|
||||
) {
|
||||
const included = include?.every((rule) => {
|
||||
switch (rule.filter_type!.$case) {
|
||||
case "tiers":
|
||||
return (
|
||||
rule.filter_type!.value.min <= tank.tier &&
|
||||
tank.tier <= rule.filter_type!.value.max
|
||||
);
|
||||
|
||||
case "ids":
|
||||
return rule.filter_type!.value.ids.includes(tank.id);
|
||||
|
||||
case "nations":
|
||||
return rule.filter_type!.value.nations.includes(tank.nation);
|
||||
|
||||
case "categories":
|
||||
throw new SyntaxError("Category filtering found in include rule");
|
||||
}
|
||||
});
|
||||
const excluded = exclude?.some((rule) => {
|
||||
switch (rule.filter_type!.$case) {
|
||||
case "tiers":
|
||||
return (
|
||||
rule.filter_type!.value.min <= tank.tier &&
|
||||
tank.tier <= rule.filter_type!.value.max
|
||||
);
|
||||
|
||||
case "ids":
|
||||
return rule.filter_type!.value.ids.includes(tank.id);
|
||||
|
||||
case "nations":
|
||||
return rule.filter_type!.value.nations.includes(tank.nation);
|
||||
|
||||
case "categories":
|
||||
return rule.filter_type!.value.categories.some((category) => {
|
||||
switch (category) {
|
||||
case ConsumableTankCategoryFilterCategory.CONSUMABLE_TANK_CATEGORY_FILTER_CATEGORY_CLIP:
|
||||
return gun.gun_type!.$case !== "regular";
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return include !== undefined && include?.length > 0 && included && !excluded;
|
||||
}
|
||||
Reference in new issue
Block a user