import Common5 from "../../Platform/th/Common5";
import User from "../../FrameWork/User/User";
import PrefabManage, { GameType } from "../PrefabManager/PrefabManage";
import ChatDialog from "./ChatDialog";
import { ryw_Event } from "../../FrameWork/Event/EventEnum";
import EventMgr from "../../FrameWork/Event/EventMgr";
const {ccclass, property} = cc._decorator;

@ccclass
export default class ChatManager{

    //获取名字对应的json名
    public static getJsonByName(personName){
        for(var i=0;i<Common5.chatPersonConfig.length;i++){
            if(Common5.chatPersonConfig[i].chatPersonName == personName){
                return Common5.chatPersonConfig[i].jsonName
            }
        }
    }
    //获取json对应的名字
    public static getNameByJson(jsonName){
        for(var i=0;i<Common5.chatPersonConfig.length;i++){
            if(Common5.chatPersonConfig[i].jsonName == jsonName){
                return Common5.chatPersonConfig[i].chatPersonName
            }
        }
    }
    //获取json配置
    public static getConfigByJsonName(jsonName){
        for(var i=0;i<Common5.chatPersonConfig.length;i++){
            if(Common5.chatPersonConfig[i].jsonName == jsonName){
                return Common5.chatPersonConfig[i]
            }
        }
    }
    //判断聊天类型typeStr是否包含聊天索引eventIndex
    public static isChatTypeIncludeEventIndex(typeStr,eventIndex){
        let allEventIndexTab = []
        for(let i=0;i<Common5.chatPersonConfig.length;i++){
            if(Common5.chatPersonConfig[i].type == typeStr){
                let tab = Common5.chatPersonConfig[i].eventIndexStr
                if(tab){
                    for(let j=0;j<tab.length;j++){
                        allEventIndexTab.push(tab[j])
                    }
                }
            }
        }
        if(eventIndex != '' && allEventIndexTab.indexOf(eventIndex) > -1 ){
            return true
        }else{
            return false
        }
    }
  
    //设置单个聊天的状态(生成到内存中)
    public static setSingleChatStatus(type,jsonName,indexStr,bFinish){
        //先判断类型
        if(!this.isChatTypeIncludeEventIndex(type,indexStr)){
            return
        }
        if(!User.checkIsIncludeIndexStr(jsonName,indexStr)){
            this.setChatRecordData(jsonName,indexStr,bFinish)
            console.log('Event_HasNewMsg11')
            EventMgr.emitEvent_custom(ryw_Event.Event_HasNewMsg,true);
        }
    }
    public static setChatRecordData(jsonName,indexStr,bFinish){
        User.setChatRecordData(jsonName,indexStr,bFinish)
    }
    //获取特定聊天人的json
    public static getPersonConfig(jsonName){
        return Common5.allJuQingChatConfig[jsonName]
    }
    //获取chatPerson
    public static getChatPerson(jsonName){
        
    }

    public static getChatMsgByIndex(chatConfig, index){
        for(let i=0;i<chatConfig.length;i++){
            if(chatConfig[i].id == index){
                return chatConfig[i];
            }
        }
        return null;
    }

    public static isHaveNewMessage(){
        let rlt = false;

        // let allRecord = User.getChatData()
        // let chatPeriodTab = User.getChatPeriodTab()


        // let curDay = User.getDay()
        // let allJuQingChatConfig = Common5.allJuQingChatConfig
        // for(var name in allJuQingChatConfig){ 
             
        //     let saveDay = 0
        //     let personJson = ChatManager.getPersonConfig(name)
        //     let chatPerson = ChatManager.getConfigByJsonName(name)
        //     let curPersonRecord = allRecord[name]
        //     let finishDayLength = 0
        //     if(curPersonRecord && curPersonRecord["finishDay"]){
        //         saveDay = curPersonRecord["finishDay"]
        //         finishDayLength = curPersonRecord["finishIndex"].length 
        //     }    
        //     if(chatPerson.triggerType == "time"){
        //         //显示未聊天的第一条
        //         if(!chatPerson.hasOwnProperty('showDay')){
        //             continue;
        //         }
        //         for(var i=0;i<chatPerson.showDay.length;i++){
        //             if(curDay >= (chatPerson.showDay[i]+chatPeriodTab.curDay)){
        //                 if((chatPerson.showDay[i]+chatPeriodTab.curDay) > saveDay){
        //                     let firstChatId = 0
        //                     for(var j=0;j<personJson.length;j++){
        //                         if(personJson[j].dayIndex == (chatPerson.showDay[i])){
        //                             firstChatId = personJson[j].id
        //                             //flagNode.active = true
        //                             return true;
        //                         }
        //                     }
        //                 }
        //             }
        //         } 
        //     }else if(chatPerson.triggerType == "event"){
        //         if(!chatPerson.hasOwnProperty('showDay')){
        //             continue;
        //         }
        //         if(finishDayLength <=0){
        //             // finishDayLength = curPersonRecord["finishIndex"].length 
        //             //flagNode.active = true 
        //             //显示未聊天的第一条
        //             return true;
        //         }

        //     }
        // }    

        return rlt;
    }
    //事件聊天直接打开聊天内容
    public static eventOpenChatContent(type,jsonName,indexStr){
        // if(indexStr == ''){
        //     PrefabManage.showTextTips('未传入聊天id==')
        //     return 
        // }
        this.setSingleChatStatus(type,jsonName,indexStr,false)
        //     console.log("事件加载聊天json成功==",jsonName,indexStr)
        PrefabManage.loadPrefabByType(GameType.ChatDialog,null,(prefabNode)=>{
            prefabNode.getComponent(ChatDialog).enterDialog(jsonName,indexStr,()=>{
                console.log("关闭聊天的回调")
            })
        })
            
        // }
        // ChatManager.reloadChatPersonConfig(jsonName,loadFinishCallFunc)
    }

    public static getAllChatRecordData(){
        return User.getAllChatRecordData()
    }
    public static getChatRecordDataByJson(jsonName){
        let recordData = this.getAllChatRecordData()
        return recordData[jsonName]
    }













}