diff --git a/docs/circular-deps.txt b/docs/circular-deps.txt index 72a78db..9de8b60 100644 --- a/docs/circular-deps.txt +++ b/docs/circular-deps.txt @@ -1,8 +1,8 @@ # Circular Dependencies -Generated: 2026-05-20T00:32:46.898Z +Generated: 2026-05-20T07:28:09.937Z Found: 3 circular chain(s) — these MUST be fixed before modifying involved files. -1. Processed 122 files (2.7s) (4 warnings) +1. Processed 125 files (1.3s) (4 warnings) 2. 1) data/equipment/index.ts > data/equipment/utils.ts 3. 2) data/golems/index.ts > data/golems/utils.ts diff --git a/docs/dependency-graph.json b/docs/dependency-graph.json index 66c3699..4c445d8 100644 --- a/docs/dependency-graph.json +++ b/docs/dependency-graph.json @@ -1,6 +1,6 @@ { "_meta": { - "generated": "2026-05-20T00:32:43.891Z", + "generated": "2026-05-20T07:28:08.406Z", "description": "Import dependency graph for src/lib/game. Keys are files, values are arrays of files they import.", "usage": "To find what a file affects, search for its path in the VALUES. To find what a file depends on, look at its KEY entry." }, @@ -358,6 +358,9 @@ "data/golems/index.ts", "data/golems/types.ts" ], + "data/guardian-encounters.ts": [ + "types.ts" + ], "data/loot-drops.ts": [ "types.ts" ], @@ -572,6 +575,11 @@ "utils/discipline-math.ts": [ "types/disciplines.ts" ], + "utils/enemy-generator.ts": [ + "types.ts", + "utils/enemy-utils.ts", + "utils/floor-utils.ts" + ], "utils/enemy-utils.ts": [ "constants.ts", "types.ts", @@ -601,6 +609,13 @@ "types.ts", "utils/enemy-utils.ts", "utils/floor-utils.ts" + ], + "utils/spire-utils.ts": [ + "constants.ts", + "data/guardian-encounters.ts", + "types.ts", + "utils/enemy-utils.ts", + "utils/floor-utils.ts" ] } } \ No newline at end of file diff --git a/docs/project-structure.txt b/docs/project-structure.txt index 58d7106..9a2b38a 100644 --- a/docs/project-structure.txt +++ b/docs/project-structure.txt @@ -252,6 +252,7 @@ Mana-Loop/ │ │ │ │ ├── body.ts │ │ │ │ ├── casters.ts │ │ │ │ ├── catalysts.ts +│ │ │ │ ├── equipment-types-data.ts │ │ │ │ ├── feet.ts │ │ │ │ ├── hands.ts │ │ │ │ ├── head.ts @@ -263,6 +264,7 @@ Mana-Loop/ │ │ │ ├── golems/ │ │ │ │ ├── base-golems.ts │ │ │ │ ├── elemental-golems.ts +│ │ │ │ ├── golems-data.ts │ │ │ │ ├── hybrid-golems.ts │ │ │ │ ├── index.ts │ │ │ │ ├── types.ts @@ -352,6 +354,7 @@ Mana-Loop/ ├── package.json ├── playwright.config.ts ├── postcss.config.mjs +├── scorecard.png ├── tailwind.config.ts ├── tsconfig.json └── vitest.config.ts diff --git a/scorecard.png b/scorecard.png new file mode 100644 index 0000000..1b41543 Binary files /dev/null and b/scorecard.png differ diff --git a/src/lib/game/data/equipment/equipment-types-data.ts b/src/lib/game/data/equipment/equipment-types-data.ts new file mode 100644 index 0000000..923b60c --- /dev/null +++ b/src/lib/game/data/equipment/equipment-types-data.ts @@ -0,0 +1,26 @@ +// ─── Equipment Types Data ─────────────────────────── +// Combined equipment types from all category modules. +// Extracted to a standalone module to avoid circular dependencies +// between index.ts and utils.ts. + +import { ACCESSORIES_EQUIPMENT } from './accessories'; +import { BODY_EQUIPMENT } from './body'; +import { CASTER_EQUIPMENT } from './casters'; +import { CATALYST_EQUIPMENT } from './catalysts'; +import { FEET_EQUIPMENT } from './feet'; +import { HANDS_EQUIPMENT } from './hands'; +import { HEAD_EQUIPMENT } from './head'; +import { SHIELD_EQUIPMENT } from './shields'; +import { SWORD_EQUIPMENT } from './swords'; + +export const EQUIPMENT_TYPES = { + ...ACCESSORIES_EQUIPMENT, + ...BODY_EQUIPMENT, + ...CASTER_EQUIPMENT, + ...CATALYST_EQUIPMENT, + ...FEET_EQUIPMENT, + ...HANDS_EQUIPMENT, + ...HEAD_EQUIPMENT, + ...SHIELD_EQUIPMENT, + ...SWORD_EQUIPMENT, +}; diff --git a/src/lib/game/data/equipment/index.ts b/src/lib/game/data/equipment/index.ts index b1c473a..22f9645 100644 --- a/src/lib/game/data/equipment/index.ts +++ b/src/lib/game/data/equipment/index.ts @@ -2,40 +2,19 @@ // Re-exports from all equipment type modules // Re-export types -export type { - EquipmentSlot, - EquipmentCategory, - EquipmentType +export type { + EquipmentSlot, + EquipmentCategory, + EquipmentType } from './types'; -export { - EQUIPMENT_SLOTS, - SLOT_NAMES +export { + EQUIPMENT_SLOTS, + SLOT_NAMES } from './types'; -// Import all equipment type groups -import { ACCESSORIES_EQUIPMENT } from './accessories'; -import { BODY_EQUIPMENT } from './body'; -import { CASTER_EQUIPMENT } from './casters'; -import { CATALYST_EQUIPMENT } from './catalysts'; -import { FEET_EQUIPMENT } from './feet'; -import { HANDS_EQUIPMENT } from './hands'; -import { HEAD_EQUIPMENT } from './head'; -import { SHIELD_EQUIPMENT } from './shields'; -import { SWORD_EQUIPMENT } from './swords'; - -// Combine all equipment types into EQUIPMENT_TYPES -export const EQUIPMENT_TYPES = { - ...ACCESSORIES_EQUIPMENT, - ...BODY_EQUIPMENT, - ...CASTER_EQUIPMENT, - ...CATALYST_EQUIPMENT, - ...FEET_EQUIPMENT, - ...HANDS_EQUIPMENT, - ...HEAD_EQUIPMENT, - ...SHIELD_EQUIPMENT, - ...SWORD_EQUIPMENT, -}; +// Re-export combined equipment types data (extracted to avoid circular deps) +export { EQUIPMENT_TYPES } from './equipment-types-data'; // Re-export utility functions export { @@ -47,3 +26,14 @@ export { getValidSlotsForEquipmentType, canEquipInSlot, } from './utils'; + +// Re-export individual equipment groups for direct access +export { ACCESSORIES_EQUIPMENT } from './accessories'; +export { BODY_EQUIPMENT } from './body'; +export { CASTER_EQUIPMENT } from './casters'; +export { CATALYST_EQUIPMENT } from './catalysts'; +export { FEET_EQUIPMENT } from './feet'; +export { HANDS_EQUIPMENT } from './hands'; +export { HEAD_EQUIPMENT } from './head'; +export { SHIELD_EQUIPMENT } from './shields'; +export { SWORD_EQUIPMENT } from './swords'; diff --git a/src/lib/game/data/equipment/utils.ts b/src/lib/game/data/equipment/utils.ts index 1f5de5a..0b9cbd1 100644 --- a/src/lib/game/data/equipment/utils.ts +++ b/src/lib/game/data/equipment/utils.ts @@ -1,7 +1,7 @@ // ─── Equipment Helper Functions ───────────────────────── import type { EquipmentType, EquipmentSlot, EquipmentCategory } from './types'; -import { EQUIPMENT_TYPES } from './index'; +import { EQUIPMENT_TYPES } from './equipment-types-data'; export function getEquipmentType(id: string): EquipmentType | undefined { return EQUIPMENT_TYPES[id]; diff --git a/src/lib/game/data/golems/golems-data.ts b/src/lib/game/data/golems/golems-data.ts new file mode 100644 index 0000000..e9bb79e --- /dev/null +++ b/src/lib/game/data/golems/golems-data.ts @@ -0,0 +1,14 @@ +// ─── Golem Definitions Data ───────────────────────── +// Combined golem definitions from all golem modules. +// Extracted to a standalone module to avoid circular dependencies +// between index.ts and utils.ts. + +import { BASE_GOLEMS } from './base-golems'; +import { ELEMENTAL_GOLEMS } from './elemental-golems'; +import { HYBRID_GOLEMS } from './hybrid-golems'; + +export const GOLEMS_DEF = { + ...BASE_GOLEMS, + ...ELEMENTAL_GOLEMS, + ...HYBRID_GOLEMS, +}; diff --git a/src/lib/game/data/golems/index.ts b/src/lib/game/data/golems/index.ts index ee4543b..1a814e9 100644 --- a/src/lib/game/data/golems/index.ts +++ b/src/lib/game/data/golems/index.ts @@ -4,17 +4,8 @@ // Re-export types export type { GolemDef, GolemManaCost } from './types'; -// Import all golem groups -import { BASE_GOLEMS } from './base-golems'; -import { ELEMENTAL_GOLEMS } from './elemental-golems'; -import { HYBRID_GOLEMS } from './hybrid-golems'; - -// Combine all golems into GOLEMS_DEF -export const GOLEMS_DEF = { - ...BASE_GOLEMS, - ...ELEMENTAL_GOLEMS, - ...HYBRID_GOLEMS, -}; +// Re-export combined golems data (extracted to avoid circular deps) +export { GOLEMS_DEF } from './golems-data'; // Re-export utility functions export { diff --git a/src/lib/game/data/golems/utils.ts b/src/lib/game/data/golems/utils.ts index 1cfb18c..a646069 100644 --- a/src/lib/game/data/golems/utils.ts +++ b/src/lib/game/data/golems/utils.ts @@ -1,7 +1,7 @@ // ─── Golem Helper Functions ───────────────────────── import type { GolemDef, GolemManaCost } from './types'; -import { GOLEMS_DEF } from './index'; +import { GOLEMS_DEF } from './golems-data'; // Get golem slots based on Fabricator attunement level // Level 2 = 1, Level 4 = 2, Level 6 = 3, Level 8 = 4, Level 10 = 5