//
//  Achievement.swift
//  lichunWebsocket
//
//  Achievement model for tracking player progress and milestones
//

import Foundation
import SwiftUI

struct Achievement: Identifiable, Codable {
    let id: String
    let name: String
    let description: String
    let category: AchievementCategory
    let reward: Int // Diamonds
    let requirement: String
    var unlocked: Bool
    var unlockedAt: Date?
    var progress: Int?
    var progressRequired: Int?
    var acknowledged: Bool

    enum AchievementCategory: String, Codable {
        case career = "Career"
        case relationships = "Relationships"
        case education = "Education"
        case wealth = "Wealth"
        case activities = "Activities"

        var icon: String {
            switch self {
            case .career: return "briefcase.fill"
            case .relationships: return "heart.fill"
            case .education: return "graduationcap.fill"
            case .wealth: return "dollarsign.circle.fill"
            case .activities: return "figure.run"
            }
        }

        var color: Color {
            switch self {
            case .career: return AppColors.secondary
            case .relationships: return AppColors.primary
            case .education: return AppColors.intelligence
            case .wealth: return AppColors.money
            case .activities: return AppColors.accent
            }
        }
    }

    var progressPercentage: Double {
        guard let progress = progress, let required = progressRequired, required > 0 else {
            return unlocked ? 1.0 : 0.0
        }
        return min(Double(progress) / Double(required), 1.0)
    }

    var iconName: String {
        unlocked ? "trophy.fill" : "lock.fill"
    }
}
