// ─── Crafting Store Initial State ─────────────────────────────────────────────
// Helper to generate the starting equipment instances for new games.

import * as CraftingUtils from '../crafting-utils';
import type { EquipmentInstance } from '../types';
import type { CraftingState } from './craftingStore.types';

/**
 * Create the full default state for the crafting store.
 * Used by both initial store creation and resetCrafting().
 */
export function createDefaultCraftingState(): CraftingState {
  const initial = createInitialEquipmentInstances();
  return {
    designProgress: null,
    designProgress2: null,
    preparationProgress: null,
    applicationProgress: null,
    equipmentCraftingProgress: null,
    completedEnchantmentDesigns: [],
    unlockedEffects: [],
    unlockedRecipes: [],
    equippedInstances: initial.equippedInstances,
    equipmentInstances: initial.instances,
    lootInventory: {
      materials: {},
      blueprints: [],
    },
    enchantmentSelection: {
      selectedEquipmentType: null,
      selectedEffects: [],
      designName: '',
      selectedDesign: null,
      selectedEquipmentInstance: null,
    },
    lastError: null,
    activeCraftingSubTab: 'fabricator',
  };
}

export function createInitialEquipmentInstances() {
  const staffId = CraftingUtils.generateInstanceId();
  const staffInstance: EquipmentInstance = {
    instanceId: staffId,
    typeId: 'basicStaff',
    name: 'Basic Staff',
    enchantments: [{ effectId: 'spell_manaBolt', stacks: 1, actualCost: 50 }],
    usedCapacity: 50,
    totalCapacity: 50,
    rarity: 'common',
    quality: 100,
    tags: [],
    weaponMana: 0,
    weaponManaMax: 0,
    weaponManaRegen: 0,
    weaponManaType: 'raw',
  };

  const shirtId = CraftingUtils.generateInstanceId();
  const shirtInstance: EquipmentInstance = {
    instanceId: shirtId,
    typeId: 'civilianShirt',
    name: 'Civilian Shirt',
    enchantments: [],
    usedCapacity: 0,
    totalCapacity: 30,
    rarity: 'common',
    quality: 100,
    tags: [],
  };

  const shoesId = CraftingUtils.generateInstanceId();
  const shoesInstance: EquipmentInstance = {
    instanceId: shoesId,
    typeId: 'civilianShoes',
    name: 'Civilian Shoes',
    enchantments: [],
    usedCapacity: 0,
    totalCapacity: 15,
    rarity: 'common',
    quality: 100,
    tags: [],
  };

  return {
    instances: {
      [staffId]: staffInstance,
      [shirtId]: shirtInstance,
      [shoesId]: shoesInstance,
    } as Record<string, EquipmentInstance>,
    equippedInstances: {
      mainHand: staffId,
      offHand: null,
      head: null,
      body: shirtId,
      hands: null,
      feet: shoesId,
      accessory1: null,
      accessory2: null,
    } as Record<string, string | null>,
  };
}
