const BridgeComp = require("bridge.component"); var ChatEvent = require("chat_event"); var RoleController = require("role_controller"); var ChatItemController = require("chat_item_controller"); var ChatConst = require("chat_const"); var ChatCtrl = require("chat_controller") cc.Class({ extends: BridgeComp, properties: { input_ed:{ default:null, type:cc.EditBox }, chat_input_list:{ default:null, type:cc.Node } }, // LIFE-CYCLE CALLBACKS: onLoad () { this._super(); this.chat_item_ctrl = ChatItemController.getInstance(); this.ctrl = ChatCtrl.getInstance(); this.item_code_list = {}; // item eqip存储信息 this.item_desc_list = {}; this.select_face = []; this.input_ed.placeholderLabel.string = nx.text.getKey("CHatEmpTips"); this.bindGEvent(ChatEvent.CHAT_SELECT_ITEM,this.onEditTextAddItem.bind(this)); }, start () { }, onEnable(){ }, onDisable(){ }, setSendCallback: function(send_cb) { this.send_cb = send_cb; }, repleaceAtPeopleText:function( text, srv_id ){ var num1 = text.search(/@/); var num2 = text.search(/ /); if(num1!=-1 && num2!=-1){ var at = text.substring(num1,num2); var rep = cc.js.formatStr("%s",srv_id,at+" ") text = text.replace(at,rep); } return text; }, setChannel:function(channel){ this.channel = channel; }, didClickSendBtn: function() { var seedMesageArr = this.getInputText(); if(nx.dt.arrEmpty(seedMesageArr))return; var seedMesage = seedMesageArr[0] || ""; var srv_id = seedMesageArr[1] || ""; if (seedMesage.length > 0 && this.send_cb) { // 替换表情 var message = this.chat_item_ctrl.relapceFaceIconTag(seedMesage); // 替换表情 // 替换teim for (var item_i in this.item_code_list) { var item_info = this.item_code_list[item_i]; message = message.replace(new RegExp(item_info.key, 'i'), item_info.desc); } if(this.channel == ChatConst.Channel.World || this.channel == ChatConst.Channel.Cross || this.channel == ChatConst.Channel.Province || this.channel == ChatConst.Channel.Gang){//世界聊天 跨服聊天 同省聊天 帮派聊天 message = this.repleaceAtPeopleText(message, srv_id); } if(this.ctrl.canSend(this.channel)){ this.input_ed.string = ""; } this.send_cb(message); this.chat_input_list.active = false; this.select_face = []; } }, onClickFaceBtn: function() { let cmp = this.chat_input_list.getComponent("cmp.chat.wnd.inputlist") cmp.setSelectCB(this.onEditTextAddFace.bind(this)); this.chat_input_list.active = !this.chat_input_list.active; }, // 选中表情返回 onEditTextAddFace: function(face_txt) { if (face_txt) { if (this.select_face.length < 5) { this.select_face.push(face_txt); this.input_ed.string += face_txt; } else { nx.tbox(nx.text.getKey("ChatFaceLimit")); } } }, onEditTextAddItem: function(data) { if (!data) return; var text = this.input_ed.string; if(text == ""){ this.item_code_list = {}; this.item_desc_list = {}; } var base_id = data.base_id; var share_id = data.share_id; var count = data.count; var role_vo = RoleController.getInstance().getRoleVo(); var item_config = Utils.getItemConfig(base_id); var code = data.code; if (item_config) { var key = cc.js.formatStr("{%s,%s}", share_id, item_config.name); var desc = this.chat_item_ctrl.buildItemMsg(base_id, role_vo.srv_id, share_id, count); if (this.item_code_list[code]) { var cur_object = this.item_code_list[code]; var cur_key = cur_object.key; var cur_desc = cur_object.desc; // 获取原有的 text = text.replace(cur_key, key); } else { text = text + key; } this.item_code_list[code] = {key:key, desc:desc}; this.input_ed.string = text; } }, setPlacholderLabel:function(str){ if(this.input_ed.placholderLabel && str){ this.input_ed.placholderLabel.string = str; } }, // 文本框内容 getInputText:function(){ return [this.input_ed.string,this.extend]; }, setInputText:function(str, extend){ this.extend = extend; if(this.input_ed){ if(!str){ str=""; } this.input_ed.string = str; } }, // update (dt) {}, });