fixing role ,apping. added accessories to ui

This commit is contained in:
2025-12-13 06:02:05 -05:00
parent 3ddb48fe58
commit 978b9df96c
4 changed files with 243 additions and 194 deletions
+24 -85
View File
@@ -1,102 +1,41 @@
import type { CategoryId } from "@/types/gunbuilder";
// CategoryId -> partRoles
export const CATEGORY_TO_PART_ROLES: Record<CategoryId, string[]> = {
// CORE / EXISTING
upper: ["upper-receiver"],
barrel: ["barrel"],
handguard: ["handguard"],
chargingHandle: ["charging-handle"],
buffer: ["buffer-kit"],
lowerParts: ["lower-parts-kit"],
sights: ["sight"],
lower: ["LOWER_RECEIVER_STRIPPED"],
optic: ["optic"],
stock: ["stock"],
// NEW LOWER PARTS
trigger: ["trigger", "trigger-kit"],
grip: ["pistol-grip", "grip"],
safety: ["safety", "safety-selector"],
completeLower: ["complete-lower"],
// NEW UPPER PARTS
upper: ["upper-receiver", "upper"],
completeUpper: ["complete-upper"],
bcg: ["bcg", "bolt-carrier-group"],
barrel: ["barrel"],
gasBlock: ["gas-block"],
gasTube: ["gas-tube"],
muzzleDevice: ["muzzle-device", "compensator", "brake"],
suppressor: ["suppressor"],
handguard: ["handguard"],
chargingHandle: ["charging-handle"],
bcg: ["bcg", "bolt-carrier-group"],
// ===== ACCESSORIES =====
lower: ["lower-receiver", "lower", "LOWER_RECEIVER_STRIPPED"],
completeLower: ["complete-lower"],
lowerParts: ["lower-parts-kit", "lower-parts"],
trigger: ["trigger", "trigger-kit"],
grip: ["pistol-grip", "grip"],
safety: ["safety", "safety-selector"],
buffer: ["buffer-kit", "buffer"],
stock: ["stock"],
// Magazines
magazine: [
"magazine",
"mag",
"magazine-ar15",
"magazine-308",
"drum-magazine",
],
sights: ["sight", "sights", "iron-sights"],
optic: ["optic", "optics"],
// Lights / Lasers
weaponLight: [
"weapon-light",
"light",
"weapon-light-laser",
"light-laser-combo",
"laser",
],
// Foregrips
foregrip: [
"vertical-grip",
"angled-foregrip",
"foregrip",
"handstop",
],
// Bipods
bipod: [
"bipod",
],
// Slings & mounts
sling: [
"sling",
"sling-mount",
"sling-swivel",
"qd-sling-mount",
],
// Rail sections & covers
railAccessory: [
"rail-section",
"picatinny-rail-section",
"m-lok-rail-section",
"keymod-rail-section",
"rail-cover",
"rail-panel",
],
// Tools & maintenance
tools: [
"tool",
"armorer-tool",
"armorer-wrench",
"cleaning-kit",
"bore-snake",
"vise-block",
"torque-wrench",
],
magazine: ["magazine", "mag", "magazine-ar15", "magazine-308", "drum-magazine"],
weaponLight: ["weapon-light", "light", "weapon-light-laser", "light-laser-combo", "laser"],
foregrip: ["vertical-grip", "angled-foregrip", "foregrip", "handstop"],
bipod: ["bipod"],
sling: ["sling", "sling-mount", "sling-swivel", "qd-sling-mount"],
railAccessory: ["rail-section", "picatinny-rail-section", "m-lok-rail-section", "keymod-rail-section", "rail-cover", "rail-panel"],
tools: ["tool", "armorer-tool", "armorer-wrench", "cleaning-kit", "bore-snake", "vise-block", "torque-wrench"],
};
// Invert to get partRole -> CategoryId
export const PART_ROLE_TO_CATEGORY: Record<string, CategoryId> = Object.entries(
CATEGORY_TO_PART_ROLES,
CATEGORY_TO_PART_ROLES
).reduce((acc, [categoryId, roles]) => {
for (const role of roles) {
acc[role] = categoryId as CategoryId;
}
for (const role of roles) acc[role] = categoryId as CategoryId;
return acc;
}, {} as Record<string, CategoryId>);