// config.js
const GAMEMODES = [
  'NETH_POT',
  'CRYSTAL',
  'CLASSIC',
  'BUILDUHC',
  'SUMO',
  'GAP',
  'AXE',
  'SMP',
  'VANILLA',
  'BRIDGE',
  'COMBO',
  'FIREBALL',
];

const GAMEMODE_LABELS = {
  NETH_POT: 'Netherite Pot',
  CRYSTAL: 'Crystal',
  CLASSIC: 'Classic',
  BUILDUHC: 'Build UHC',
  SUMO: 'Sumo',
  GAP: 'Gapple',
  AXE: 'Axe',
  SMP: 'SMP',
  VANILLA: 'Vanilla',
  BRIDGE: 'Bridge',
  COMBO: 'Combo',
  FIREBALL: 'Fireball',
};

const REGIONS = ['NA', 'EU', 'AS', 'AU'];

// Minecraft username regex: 3-16 chars, letters, numbers, underscore
const USERNAME_REGEX = /^[a-zA-Z0-9_]{3,16}$/;

// Helper functions
function avatarUrl(username) {
  return `https://render.crafty.gg/3d/bust/${encodeURIComponent(username)}`;
}

function isValidTier(tier) {
  const valid = ['HT1', 'LT1', 'HT2', 'LT2', 'HT3', 'LT3', 'HT4', 'LT4', 'HT5', 'LT5'];
  return valid.includes(tier);
}

function isValidGamemode(gamemode) {
  return GAMEMODES.includes(gamemode);
}

function isValidRegion(region) {
  return REGIONS.includes(region);
}

function normalizeGamemode(gamemode) {
  if (!gamemode) return null;
  return gamemode.toUpperCase().replace(/\s+/g, '_');
}

function normalizeRegion(region) {
  if (!region) return 'NA';
  return region.toUpperCase().trim();
}

function normalizeTier(tier) {
  if (!tier) return null;
  return tier.toUpperCase().trim();
}

function tierToPoints(tier) {
  if (!tier) return 0;
  const map = {
    HT1: 100,
    LT1: 90,
    HT2: 80,
    LT2: 70,
    HT3: 60,
    LT3: 50,
    HT4: 40,
    LT4: 30,
    HT5: 20,
    LT5: 10,
  };
  return map[tier] || 0;
}

module.exports = {
  GAMEMODES,
  GAMEMODE_LABELS,
  REGIONS,
  USERNAME_REGEX,
  avatarUrl,
  isValidTier,
  isValidGamemode,
  isValidRegion,
  normalizeGamemode,
  normalizeRegion,
  normalizeTier,
  tierToPoints,
};
