175 lines
4.4 KiB
JavaScript
175 lines
4.4 KiB
JavaScript
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("<on click='handler' param='atpeople srvid=%s'><u>%s</u></on>",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) {},
|
|
});
|