SamsaraGame/assets/Script/panel/RelationShowPanel.js
2025-04-24 17:03:28 +08:00

126 lines
3.8 KiB
JavaScript

import GameModel from "../ts/core/GameModel";
let GameDefine = require('../game/GameDefine');
let CPubFunction = require('../game/PubFunction');
let CNpcMgr = require('../game/NpcMgr');
cc.Class({
extends: cc.Component,
properties: {
emojiAtlas: cc.SpriteAtlas,
},
onLoad() {
},
start(){
},
//播放效果
playBrotherCreateShow(data){
let actionArrs = [];
let gameLogic = this.getGameLogic();
if(gameLogic){
let sayArr = GameDefine.relationMsg.filter(e =>{
return e.action == GameDefine.relationActionType.Bro_Create;
});
let members = JSON.parse(data.members);
if(sayArr.length > 0){
sayArr.forEach((e,index) =>{
if(e.target == 1){
//玩家說的話
members.forEach((i,index) => {
let curRole = null;
if (i.onlyid == GameModel.player.onlyid) {
curRole = gameLogic.mapLogic.roleNode;
}
if (curRole == null) {
curRole = gameLogic.GetPlayerObjs(i.onlyid);
}
//拼接顯示的話
let sayStr = e.msg1;
if(e.msg2 != ''){
let nameArrs = this.getOtherMembersName(members,i.name);
nameArrs.forEach((j,index)=>{
if(index > 0)
sayStr = sayStr + ',';
sayStr = sayStr + j;
});
sayStr = sayStr + e.msg2;
}
let sayFunc = cc.callFunc(() => {
CPubFunction.CreateRoleEmojBroadCast(curRole, sayStr,this.emojiAtlas);
});
actionArrs.push(sayFunc);
});
}else if(e.target == 2){
//NPC說的話
let sayStr = e.msg1;
if(e.msg2 != ''){
let memberCount = members.length;
sayStr = sayStr + memberCount + e.msg2;
}
let sayFunc = cc.callFunc(() => {
CPubFunction.CreateRoleEmojBroadCast(CNpcMgr.FindNpcByConfigID(30049), sayStr,this.emojiAtlas);
});
actionArrs.push(sayFunc);
}
actionArrs.push(cc.delayTime(4));
});
}
actionArrs.push(cc.delayTime(0.2));
actionArrs.push(cc.callFunc(() => {
this.closeShow();
}));
let mainNode = cc.find('Canvas/MainUI');
if(mainNode)
mainNode.runAction(cc.sequence(actionArrs));
}
},
getOtherMembersName(arr,name){
let arr1 = arr.filter(e =>{
return e.name != name;
})
let nameArrs = [];
arr1.forEach(e=>{
nameArrs.push(e.name);
});
return nameArrs;
},
getGameLogic() {
if (GameModel.currentScene == 'MainScene') {
let logic = cc.find('Canvas').getComponent('GameLogic');
if (logic != null) {
return logic;
}
}
return null;
},
closeShow(){
this.node.destroy();
}
});