//
//  TSTextGeneralRintoneVM.swift
//  AIRingtone
//
//  Created by 100Years on 2025/3/6.
//

import ObjectMapper

let kRandomTextToRintone:[String] = [
    "Create a upbeat Pop ringtone with a catchy melody, bright synths, and a cheerful vibe. Use a BPM of 120-130 and keep it energetic and memorable.",
    "Generate a cinematic ringtone with orchestral strings, powerful brass, and a dramatic build-up. Use a BPM of 60-80 for a grand, inspiring feel.",
    "Produce a Lo-Fi ringtone with a relaxed piano melody, soft beats, and warm vinyl crackle. Use a BPM of 70-90 for a cozy, laid-back vibe.",
    "Create a EDM ringtone with a pulsating bassline, uplifting synths, and a quick build-up. Use a BPM of 128-132 for a high-energy, festival-ready sound.",
    "Generate a Jazz ringtone with a smooth saxophone melody, soft piano chords, and a gentle swing rhythm. Use a BPM of 90-100 for a classy, sophisticated tone.",
    "Produce a Funk ringtone with a groovy bassline, rhythmic guitar chops, and punchy brass hits. Use a BPM of 100-110 for a lively, danceable vibe.",
    "Create a Dubstep ringtone with heavy bass wobbles, aggressive synths, and a quick drop. Use a BPM of 140-150 for an intense, edgy sound.",
    "Generate a Folk ringtone with a fingerpicked acoustic guitar melody and light percussion. Use a BPM of 80-90 for a warm, earthy feel.",
    "Produce a Synthwave ringtone with retro arpeggiated synths, a driving beat, and an 80s-inspired vibe. Use a BPM of 100-110 for a nostalgic, futuristic tone.",
    "Create a Techno ringtone with a repetitive bassline, crisp hi-hats, and subtle synth textures. Use a BPM of 125-130 for a sleek, modern sound.",
]

class TSTextGeneralRintoneVM {
    
    //选择 prompt 类型组
    lazy var ptpStyleModels: [TSPTPStyleModel] = {
        var ptpStyleModels = [TSPTPStyleModel]()
        if let dataArray = Mapper<TSPTPStyleModel>().mapArray(JSONfile: "text_rintone_style.json"){
            ptpStyleModels = dataArray
            
            if let model = dataArray.first {
                selectPromptModel = model //加上默认的选择
            }
        }
        
        return ptpStyleModels
    }()
    
    //输入框内容
    var promptText:String = "" {
        didSet{
            isCanGennerateBlock?(isCanGennerate)
        }
    }
    
    //选择的生成图片的 type
    var gennerateType:TSGennerateType = .poster{
        didSet{
            isCanGennerateBlock?(isCanGennerate)
        }
    }

    //选择的 prompt 类型
    var selectPromptModel:TSPTPStyleModel?{
        didSet{
            isCanGennerateBlock?(isCanGennerate)
        }
    }
    
    //可生成状态变化 block
    var isCanGennerateBlock:((Bool)->Void)?
}


extension TSTextGeneralRintoneVM {
    //是否满足生成条件
    var isCanGennerate:Bool {
        if  selectPromptModel != nil ,
            promptText.replacingOccurrences(of: " ", with: "").count > 0
        {
            return true
        }
        return false
    }


    var prompt:String{
        var prompt = promptText
        if let selectPromptModel = selectPromptModel {
            prompt+=", \(selectPromptModel.prompt)"
        }
        return prompt
    }

    func saveModel(model:TSActionInfoModel){
        TSAIRintoneHistory.saveModel(model: model)
    }
}
