import * as THREE from 'three';
import { state } from './state.js';

// --- Utility: Random Color (seeded) ---
export function getRandomColor() {
    const hue = seededRandom();
    const saturation = 0.6 + seededRandom() * 0.4; 
    const lightness = 0.3 + seededRandom() * 0.4; 
    return new THREE.Color().setHSL(hue, saturation, lightness).getHex();
}

/**
 * Converts degrees to radians.
 * @param {number} degrees
 * @returns {number}
 */
export function degToRad(degrees) {
    return degrees * (Math.PI / 180);
}

// --- Seedable Random Number Generator (Mulberry32) ---
export function seededRandom() {
    let t = state.seed += 0x6D2B79F5;
    t = Math.imul(t ^ t >>> 15, t | 1);
    t ^= t + Math.imul(t ^ t >>> 7, t | 61);
    return ((t ^ t >>> 14) >>> 0) / 4294967296;
}

// --- Helper function to format seconds into MM:SS ---
export function formatTime(seconds) {
    if (isNaN(seconds) || seconds === Infinity || seconds < 0) return '--:--';
    const minutes = Math.floor(seconds / 60);
    const remainingSeconds = Math.floor(seconds % 60);
    const paddedMinutes = String(minutes).padStart(2, '0');
    const paddedSeconds = String(remainingSeconds).padStart(2, '0');
    return `${paddedMinutes}:${paddedSeconds}`;
}
