export interface OceanDepthStop {
  depth: number; // 음수 (ex: -8000)
  color: string; // hex
}

export type OceanLabelLanguage = 'ko' | 'en' | 'ja' | 'zh' | 'local';
export type OceanDepthLabelSize = 'small' | 'medium' | 'large';

export interface OceanMapSettings {
  // ── 수심 색상 ──
  depthStops: OceanDepthStop[];
  depthOpacity: number; // 0~1

  // ── 등심선 (contour lines) ──
  contourVisible: boolean;
  contourColor: string;
  contourOpacity: number; // 0~1
  contourWidth: number; // px, 0.5~3

  // ── 수심 라벨 ──
  depthLabelsVisible: boolean;
  depthLabelColor: string;
  depthLabelSize: OceanDepthLabelSize;

  // ── Hillshade ──
  hillshadeVisible: boolean;
  hillshadeExaggeration: number; // 0~1
  hillshadeColor: string;

  // ── Landform 라벨 (해저 지형명) ──
  landformLabelsVisible: boolean;
  landformLabelColor: string;

  // ── 배경 ──
  backgroundColor: string;

  // ── 레이블 언어 ──
  labelLanguage: OceanLabelLanguage;
}

/**
 * Ocean 커스텀 수심 색상 프리셋 (12구간).
 * 사용자가 "커스텀" 버튼을 누르면 이 값으로 초기화된다.
 * Ocean 스타일에 어울리는 심해 → 천해 블루 그라데이션.
 */
export const OCEAN_PRESET_DEPTH_STOPS: OceanDepthStop[] = [
  { depth: -11000, color: '#0a0e2a' },
  { depth: -8000, color: '#0c1836' },
  { depth: -6000, color: '#0e2444' },
  { depth: -4000, color: '#103252' },
  { depth: -2000, color: '#134060' },
  { depth: -1000, color: '#175070' },
  { depth: -200, color: '#1c6480' },
  { depth: -100, color: '#217890' },
  { depth: -50, color: '#288da0' },
  { depth: -20, color: '#30a2b0' },
  { depth: -10, color: '#3ab5be' },
  { depth: 0, color: '#48c8cc' },
];

/**
 * Ocean 스타일 기본 설정.
 * depthStops에 프리셋 색상이 기본 적용되며, 사용자가 자유롭게 변경 가능.
 * "초기화" 시 프리셋 색상으로 복원된다.
 */
export const DEFAULT_OCEAN_MAP_SETTINGS: OceanMapSettings = {
  depthStops: OCEAN_PRESET_DEPTH_STOPS,
  depthOpacity: 1,

  contourVisible: true,
  contourColor: '#4a90c2',
  contourOpacity: 0.15,
  contourWidth: 0.6,

  depthLabelsVisible: true,
  depthLabelColor: '#a0c4e8',
  depthLabelSize: 'medium',

  hillshadeVisible: true,
  hillshadeExaggeration: 0.5,
  hillshadeColor: '#0a1628',

  landformLabelsVisible: true,
  landformLabelColor: '#7ea8c8',

  backgroundColor: '#0b1a2e',

  labelLanguage: 'ko',
};
