import * as THREE from 'three';

export interface Palette {
  name: string;
  skyTop: THREE.Color;
  skyHorizon: THREE.Color;
  nebula: THREE.Color;
  auroraA: THREE.Color;
  auroraB: THREE.Color;
  moonA: THREE.Color;
  moonB: THREE.Color;
  deep: THREE.Color;
  glint: THREE.Color;
  mist: THREE.Color;
  spark: THREE.Color;
}

const c = (hex: number) => new THREE.Color(hex);

export const PALETTES: Palette[] = [
  {
    // the hero look: cold mercury night
    name: 'mercury night',
    skyTop: c(0x030514),
    skyHorizon: c(0x0c1a2c),
    nebula: c(0x2a3f80),
    auroraA: c(0x19e8a0),
    auroraB: c(0x8a4fff),
    moonA: c(0xffe9c4),
    moonB: c(0x9fd2ff),
    deep: c(0x05080f),
    glint: c(0xffffff),
    mist: c(0x9fc8e8),
    spark: c(0x9ef3d8),
  },
  {
    // wine-dark dusk, copper moon
    name: 'rose dusk',
    skyTop: c(0x0d0410),
    skyHorizon: c(0x3a1428),
    nebula: c(0x6e2150),
    auroraA: c(0xff5e8a),
    auroraB: c(0xffb36b),
    moonA: c(0xffc89a),
    moonB: c(0xe8a8ff),
    deep: c(0x0c0509),
    glint: c(0xffe0d0),
    mist: c(0xe8a8c0),
    spark: c(0xffc4a0),
  },
  {
    // green-black storm-glass
    name: 'emerald storm',
    skyTop: c(0x02100a),
    skyHorizon: c(0x072b20),
    nebula: c(0x155040),
    auroraA: c(0x3dffba),
    auroraB: c(0x1f8fff),
    moonA: c(0xd8f5e4),
    moonB: c(0xbfffe0),
    deep: c(0x030a07),
    glint: c(0xdfffec),
    mist: c(0xa0e8c8),
    spark: c(0x7dffd0),
  },
];
