You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
201 lines
7.2 KiB
201 lines
7.2 KiB
|
|
import User from "../../FrameWork/User/User";
|
|
import Common5 from "../../Platform/th/Common5";
|
|
import GameBase from "../SCommon/GameBase";
|
|
import PrefabManage, { GameType } from "../PrefabManager/PrefabManage";
|
|
import ChatDialog from "./ChatDialog";
|
|
import ChatManager from "./ChatManager";
|
|
import JuQingManager from "./JuQingManager";
|
|
import { ryw_Event } from "../../FrameWork/Event/EventEnum";
|
|
import EventMgr from "../../FrameWork/Event/EventMgr";
|
|
const {ccclass, property} = cc._decorator;
|
|
|
|
@ccclass
|
|
export default class ChatList extends GameBase {
|
|
//聊天列表
|
|
@property(cc.Node)
|
|
chatListNode:cc.Node = null
|
|
@property(cc.Node)
|
|
chatListContent:cc.Node = null
|
|
@property(cc.Node)
|
|
listItem:cc.Node = null
|
|
|
|
curDay = 0//当天
|
|
curChatTag = ''
|
|
isChange = true
|
|
|
|
initView(chatTag){
|
|
this.curChatTag = chatTag
|
|
this.curDay = User.getDay()
|
|
this.initListInfo()
|
|
}
|
|
|
|
onLoad() {
|
|
super.onLoad()
|
|
|
|
}
|
|
|
|
protected start(): void {
|
|
this.curDay = User.getDay()
|
|
this.isChange = true
|
|
this.initListInfo()
|
|
|
|
EventMgr.onEvent_custom(ryw_Event.ExitBtnEvent,()=>{
|
|
|
|
if(cc.isValid(this.node, true)){
|
|
this.isChange = true
|
|
console.log('initListInfo++++++++++++刷新')
|
|
this.chatListContent.removeAllChildren()
|
|
this.chatListContent.destroyAllChildren()
|
|
this.initListInfo()
|
|
}
|
|
|
|
},this)
|
|
console.log('isHaveNewMessage=========================', ChatManager.isHaveNewMessage());
|
|
|
|
this.scheduleOnce(()=>{
|
|
PrefabManage.preloadPrefabByType(GameType.ChatDialog)
|
|
},0)
|
|
}
|
|
onDestroy(): void {
|
|
super.onDestroy()
|
|
}
|
|
|
|
//初始化聊天列表(第几天)
|
|
initListInfo(){
|
|
console.log("当前是第"+this.curDay+"天--")
|
|
|
|
let allJuQingChatConfig:any = Common5.allJuQingChatConfig
|
|
|
|
let nameArray = []
|
|
let tempNameTab = []
|
|
let tempChilds = []
|
|
Object.keys(allJuQingChatConfig).forEach(name => {
|
|
//console.log(name)
|
|
nameArray.push(name)
|
|
});
|
|
let count = nameArray.length;
|
|
let i = 0
|
|
this.schedule(() => {
|
|
let name = nameArray[i]
|
|
let personConfig = JuQingManager.getPersonJsonByJsonName(name)
|
|
if(personConfig.type == 'RJB' || personConfig.type == 'DH'){
|
|
|
|
}else{
|
|
|
|
let personJson = ChatManager.getPersonConfig(name)
|
|
let recordData = ChatManager.getChatRecordDataByJson(name)
|
|
|
|
//console.log(recordData,'recordData+++++++++++++===')
|
|
if(recordData && recordData.length > 0){
|
|
//duihuaArray.push[]
|
|
let childItem = cc.instantiate(this.listItem)
|
|
let nameStr = ChatManager.getNameByJson(name)
|
|
childItem.getChildByName("nameStr").getComponent(cc.Label).string = nameStr
|
|
tempNameTab.push(nameStr)
|
|
let chatPerson = ChatManager.getConfigByJsonName(name)
|
|
|
|
Common5.addUrlSprite_custom("head/"+chatPerson.imgPath, childItem.getChildByName("avatar").getComponent(cc.Sprite));
|
|
let itemInfo = this.getListItemStr(name,personJson,recordData,childItem.getChildByName("flag"))
|
|
let contentStr = itemInfo.contentDesc
|
|
let indexStr = itemInfo.indexStr
|
|
if(contentStr.length > 14){
|
|
contentStr = contentStr.substr(0, 14) + "..."
|
|
}
|
|
childItem.getChildByName("contentStr").getComponent(cc.Label).string = contentStr
|
|
childItem.attr({jsonName:name,playInfo:allJuQingChatConfig[name],indexStr:indexStr})
|
|
childItem.active = true
|
|
let isFinish = true
|
|
for(let rei = 0;rei<recordData.length;rei++){
|
|
let data_ = recordData[rei]
|
|
if(data_.isFinish == false){
|
|
isFinish = false
|
|
break
|
|
}
|
|
}
|
|
childItem['isFinish'] = isFinish
|
|
tempChilds[tempChilds.length] = childItem
|
|
|
|
}
|
|
}
|
|
i++
|
|
|
|
if(i==count && this.isChange){
|
|
//聊天置顶
|
|
this.isChange = false
|
|
if(tempChilds.length>0){
|
|
let idexz = 0
|
|
for(let i = 0;i<tempChilds.length;i++){
|
|
|
|
if(!tempChilds[i]['isFinish']){
|
|
idexz++
|
|
tempChilds[i].zIndex = idexz
|
|
this.chatListContent.addChild(tempChilds[i])
|
|
}
|
|
}
|
|
|
|
for(let i = 0;i<tempChilds.length;i++){
|
|
if(tempChilds[i]['isFinish']){
|
|
idexz++
|
|
tempChilds[i].zIndex = idexz
|
|
this.chatListContent.addChild(tempChilds[i])
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
if(Common5.isOpenChatPeople != ''){
|
|
let people = Common5.isOpenChatPeople;
|
|
let event = {
|
|
target:{
|
|
jsonName: people
|
|
}
|
|
}
|
|
Common5.isOpenChatPeople = ''
|
|
this.onItemListClick(event)
|
|
}
|
|
PrefabManage.preloadPrefabByType(GameType.ChatDialog)
|
|
}
|
|
}, 0, count-1, 0)
|
|
|
|
|
|
}
|
|
//点击进入聊天
|
|
onItemListClick(event){
|
|
PrefabManage.loadPrefabByType(GameType.ChatDialog,null,(prefabNode)=>{
|
|
prefabNode.getComponent(ChatDialog).enterDialog(event.target.jsonName,null,()=>{
|
|
this.initListInfo()
|
|
})
|
|
})
|
|
}
|
|
|
|
//显示列表的显示内容
|
|
getListItemStr(jsonName,personJson,recordData,flagNode){
|
|
let indexStr = ''
|
|
//优先显示未完成对话的第一条
|
|
for(let i=0;i<recordData.length;i++){
|
|
if(!recordData[i].isFinish){
|
|
indexStr = recordData[i].indexStr
|
|
for(let j=0;j<personJson.length;j++){
|
|
if(personJson[j].indexStr == indexStr){
|
|
flagNode.active = true
|
|
return {contentDesc:personJson[j].contentDesc,indexStr:indexStr}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//显示已聊天的最后一条
|
|
indexStr = recordData[recordData.length-1].indexStr
|
|
for(let k=personJson.length-1;k>=0;k--){
|
|
if(personJson[k].indexStr == indexStr){
|
|
flagNode.active = false
|
|
return {contentDesc:personJson[k].contentDesc,indexStr:indexStr}
|
|
}
|
|
}
|
|
|
|
PrefabManage.showTextTips('这里没获取到内容?'+jsonName)
|
|
flagNode.active = false
|
|
return {contentDesc:"",indexStr:""}
|
|
}
|
|
}
|
|
|