2025-04-24 17:03:28 +08:00

340 lines
14 KiB
JavaScript

import GameModel from "../ts/core/GameModel";
import ItemUtil from "../ts/core/ItemUtil";
import SKUIUtil from "../ts/gear_2.3.4/util/SKUIUtil";
import Report from "../ts/gear_2.3.4/net/Report";
import SKDataUtil from "../ts/gear_2.3.4/util/SKDataUtil";
import SkillUtil from "../ts/game/skill/core/SkillUtil";
import GameUtil from "../ts/core/GameUtil";
import ExpUtil from "../ts/core/ExpUtil";
import MsgAlert from "../ts/game/msg/MsgAlert";
let CPubFunction = require('./PubFunction');
let CMainPlayerInfo = require('./MainPlayerInfo');
cc.Class({
extends: cc.Component,
properties: {
itemUI: cc.Prefab,
rowPartnerAttrib: cc.Prefab,
goAtribLine: cc.Prefab,
rowPartnerZiZhi: cc.Prefab,
ChuanGongUI: cc.Prefab,
btnPartner: cc.Prefab,
},
onLoad() {
let avatar = cc.find('nodRole/avater', this.node);
if (avatar) {
avatar.active = false;
}
},
start() {
this.svPartnerAttribute = cc.find('svPartnerAttribute', this.node);
this.cvZiZhi = cc.find('cvZiZhi', this.node);
cc.find('btnClose', this.node).getComponent(cc.Button).clickEvents.push(CPubFunction.CreateEventHandler(this.node, "PartnerUI", "Close", 0));
cc.find('btnChangeState', this.node).getComponent(cc.Button).clickEvents.push(CPubFunction.CreateEventHandler(this.node, "PartnerUI", "ChangePartnerState", 0));
cc.find('btnChuanGong', this.node).getComponent(cc.Button).clickEvents.push(CPubFunction.CreateEventHandler(this.node, "PartnerUI", "OpenChunGongUI", 0));
cc.find('btnRelive', this.node).getComponent(cc.Button).clickEvents.push(CPubFunction.CreateEventHandler(this.node, "PartnerUI", "DoRelive", 0));
cc.find('nodRole/btnKangXing', this.node).getComponent(cc.Button).clickEvents.push(CPubFunction.CreateEventHandler(this.node, "PartnerUI", "ShowAttribute", 0));
cc.find('svPartnerAttribute/btnClose', this.node).getComponent(cc.Button).clickEvents.push(CPubFunction.CreateEventHandler(this.node, "PartnerUI", "CloseAtrib", 0));
cc.find('nodRole/btnZiZhi', this.node).getComponent(cc.Button).clickEvents.push(CPubFunction.CreateEventHandler(this.node, "PartnerUI", "ShowZiZhi", 0));
cc.find('cvZiZhi/btnClose', this.node).getComponent(cc.Button).clickEvents.push(CPubFunction.CreateEventHandler(this.node, "PartnerUI", "CloseZiZhi", 0));
cc.find('nodRole/btnAddExp', this.node).getComponent(cc.Button).clickEvents.push(CPubFunction.CreateEventHandler(this.node, "PartnerUI", "ShowBook", 0));
this.nCurSelect = -1;
this.vecPartnerBtn = [];
this.vecAtrib = [];
this.ShowPartnerList();
GameModel.send('c2s_get_bagitem', { roleid: Report.roleId });
GameModel.send('c2s_ask_partner_list', { nRoleID: Report.roleId });
},
CloseAtrib() {
this.svPartnerAttribute.active = false;
},
CloseZiZhi() {
this.cvZiZhi.active = false;
},
ReplaceAtriPos(contentRow, mapAll) {
let nCurY = 0;
contentRow.height = 480;
for (var itAll in mapAll) {
nCurY -= 50;
let goTitle = SKUIUtil.createSubNode(contentRow, cc.v2(300, nCurY), this.rowPartnerAttrib, 'rowPartnerAttrib');
goTitle.getComponent(cc.Label).string = itAll;
cc.find('Value', goTitle).getComponent(cc.Label).string = '';
this.vecAtrib.push(goTitle);
nCurY -= 20;
let goLine = SKUIUtil.createSubNode(contentRow, cc.v2(330, nCurY), this.goAtribLine, 'goAtribLine');
this.vecAtrib.push(goLine);
let mapAtrib = mapAll[itAll];
let nIndex = -1;
for (var it in mapAtrib) {
nIndex++;
let bNewLine = (nIndex % 2) == 0 ? true : false;
nCurY -= bNewLine ? 50 : 0;
let goAtrib = CPubFunction.CreateSubNode(contentRow, { nX: (bNewLine ? 72 : 372), nY: nCurY }, this.rowPartnerAttrib, 'rowPartnerAttrib');
goAtrib.getComponent(cc.Label).string = CPubFunction.GetAttributeName(it);
let nValue = mapAtrib[it];
let bIn = false;
if (CPubFunction.IsDataInVecter(it, ['Atk', 'Speed', 'AdDefEhan', 'HitCombo', 'HpMax', 'MpMax', 'Basecon', 'Wakan', 'Power', 'Agility'])) {
bIn = true;
}
nValue = bIn ? nValue : nValue / 10;
let strValue = bIn ? `${nValue}` : `${nValue}%`;
cc.find('Value', goAtrib).getComponent(cc.Label).string = strValue;
this.vecAtrib.push(goAtrib);
}
}
contentRow.height = Math.max(contentRow.height, Math.abs(nCurY) + 50);
},
//zzzErr
ShowAttribute() {
this.svPartnerAttribute.active = true;
let contentRow = cc.find('view/content', this.svPartnerAttribute);
SKUIUtil.destroyList(this.vecAtrib);
let mapInfo = this.GetCurSelectPartnerInfo();
let mapFenLei = {};
for (var it in mapInfo) {
let strTypeName = CPubFunction.GetAttributeType(it);
if ('' == strTypeName)
continue;
if (SKDataUtil.hasProperty(mapFenLei, strTypeName) == false)
mapFenLei[strTypeName] = {};
mapFenLei[strTypeName][it] = mapInfo[it];
}
this.ReplaceAtriPos(contentRow, mapFenLei);
},
ShowZiZhi() {
this.cvZiZhi.active = true;
SKUIUtil.destroyList(this.vecAtrib);
let mapCurInfo = this.GetCurSelectPartnerInfo();
if (!mapCurInfo) {
return;
}
cc.find('DingWei/Label', this.cvZiZhi).getComponent(cc.Label).string = mapCurInfo['dingwei'];
let mapZiZhi = SKDataUtil.jsonBy(mapCurInfo['mapZiZhi']);
let nCurY = 84;
let nIndex = -1;
for (var it in mapZiZhi) {
nIndex++;
let bNewLine = (nIndex % 2) == 0 ? true : false;
nCurY -= bNewLine ? 40 : 0;
let rowPartnerZiZhi = CPubFunction.CreateSubNode(this.cvZiZhi, { nX: (bNewLine ? -230 : 17), nY: nCurY }, this.rowPartnerZiZhi, 'rowPartnerZiZhi');
rowPartnerZiZhi.getComponent(cc.Label).string = CPubFunction.GetAttributeName(it);
let nValue = mapZiZhi[it];
cc.find('picPecent/Label', rowPartnerZiZhi).getComponent(cc.Label).string = `${nValue}%`;
cc.find('picPecent/picBar', rowPartnerZiZhi).width = nValue;
this.vecAtrib.push(rowPartnerZiZhi);
}
},
loadInfo(info) {
let data = ItemUtil.getItemData(info.itemid);
if (data) {
this.itemInfo = data;
this.itemInfo.count = info.count;
this.itemBg.active = true;
this.itemCount.string = info.count;
this.itemIcon.spriteFrame = ItemUtil.getItemIconBy(this.itemInfo);
}
},
ShowBook(e, d) {
if (this.itemui) {
let valid = SKUIUtil.isValid(this.itemui);
if (valid) {
this.itemui.destroy();
}
this.itemui = null;
}
let stPartnerInfo = this.GetCurSelectPartnerInfo();
this.itemui = cc.instantiate(this.itemUI);
this.itemui.parent = this.node;
this.itemui.getComponent('UseItemUI').setUIPos(220, -150);
this.itemui.getComponent('UseItemUI').loadList('點擊/長按可使用修煉冊', [10202, 10204], stPartnerInfo.id, true);
},
OnReceiveBagItem() {
if (this.itemui != null && this.itemui.parent != null) {
this.itemui.getComponent('UseItemUI').refreshInfoNum();
// this.ShowBook();
}
},
GetPartnerInfoByPartnerID(nID) {
for (var it in CMainPlayerInfo.vecPartnerInfo) {
if (CMainPlayerInfo.vecPartnerInfo[it].id == nID)
return CMainPlayerInfo.vecPartnerInfo[it];
}
return null;
},
GetCurSelectPartnerInfo() {
if (this.nCurSelect >= CMainPlayerInfo.vecPartnerInfo)
return null;
return CMainPlayerInfo.vecPartnerInfo[this.nCurSelect];
},
DoRelive() {
let pPartnerInfo = this.GetCurSelectPartnerInfo();
if (null == pPartnerInfo)
return;
GameModel.send('c2s_partner_relive', { nPartnerID: pPartnerInfo.id });
},
OpenChunGongUI() {
let goUI = CPubFunction.CreateSubNode(cc.find('Canvas/MainUI'), { nX: 0, nY: 0 }, this.ChuanGongUI, 'ChuanGongUI');
if (CMainPlayerInfo.vecPartnerInfo.length < 2)
return;
goUI.getComponent('ChuanGongUI').Init(CMainPlayerInfo.vecPartnerInfo, this.nCurSelect);
},
GetFreePos() {
for (var it in CMainPlayerInfo.vecChuZhan) {
if (CMainPlayerInfo.vecChuZhan[it] == 0)
return it;
}
return -1;
},
ChangePartnerState() {
if (CMainPlayerInfo.vecPartnerInfo.length <= this.nCurSelect || this.vecPartnerBtn.length <= this.nCurSelect)
return;
let stInfo = CMainPlayerInfo.vecPartnerInfo[this.nCurSelect];
let nChuZhanPos = CMainPlayerInfo.GetParterChuZhanPos(stInfo.id);
if (nChuZhanPos == -1) {
let nToPos = this.GetFreePos();
if (nToPos == -1) {
MsgAlert.addMsg("最多只能4個夥伴參戰!");
return;
}
cc.find('picState', this.vecPartnerBtn[this.nCurSelect]).active = true;
CMainPlayerInfo.ChangeChuZhan(nToPos, stInfo.id);
GameModel.send('c2s_change_partner_state', { nPartnerID: stInfo.id, nPos: nToPos });
}
else {
cc.find('picState', this.vecPartnerBtn[this.nCurSelect]).active = false;
CMainPlayerInfo.ChangeChuZhan(nChuZhanPos, 0);
GameModel.send('c2s_change_partner_state', { nPartnerID: 0, nPos: nChuZhanPos });
}
this.SetButtonText(stInfo.id);
},
ShowPartnerList() {
SKUIUtil.destroyList(this.vecPartnerBtn);
let goContent = cc.find('svPartnerList/view/content', this.node);
let stStart = { nX: 120, nY: -45 };
for (let i = 0; i < CMainPlayerInfo.vecPartnerInfo.length; i++) {
let stInfo = CMainPlayerInfo.vecPartnerInfo[i];
let goPartner = CPubFunction.CreateSubNode(goContent, { nX: stStart.nX, nY: stStart.nY - i * 90 }, this.btnPartner, 'btnPartner');
goPartner.getComponent(cc.Button).clickEvents.push(CPubFunction.CreateEventHandler(this.node, "PartnerUI", "ShowPartnerInfo", i));
SKUIUtil.setSpriteFrame(cc.find('HeadPic/Icon', goPartner), 'Common/huoban', 'huoban_' + stInfo.resid);
cc.find('Name', goPartner).getComponent(cc.Label).string = stInfo.name;
let level_lb = cc.find('Level', goPartner).getComponent(cc.Label);
GameUtil.setReliveLabel(level_lb, 0, stInfo.relive, stInfo.level);
cc.find('picState', goPartner).active = CMainPlayerInfo.GetParterChuZhanPos(stInfo.id) >= 0;
if (this.vecPartnerBtn) {
this.vecPartnerBtn.push(goPartner);
}
}
goContent.height = Math.max(goContent.height, CMainPlayerInfo.vecPartnerInfo.length * 90);
this.ShowPartnerInfo(0, 0);
},
ChangePartnerExp(nResID, nExp) {
for (var it in CMainPlayerInfo.vecPartnerInfo) {
if (CMainPlayerInfo.vecPartnerInfo[it].resid == nResID) {
CMainPlayerInfo.vecPartnerInfo[it].exp = nExp;
break;
}
}
},
ShowPartnerInfo(stEvent, nIndex) {
let stInfo = CMainPlayerInfo.vecPartnerInfo[nIndex];
if (!stInfo) {
return;
}
cc.find('nodRole/Name', this.node).getComponent(cc.Label).string = stInfo.name;
let level_lb = cc.find('nodRole/Level', this.node).getComponent(cc.Label);
GameUtil.setReliveLabel(level_lb, 0, stInfo.relive, stInfo.level);
// cc.log(`${stInfo.name},${stInfo.relive},${stInfo.level}`);
cc.find('nodRole/DingWei/Label', this.node).getComponent(cc.Label).string = stInfo.dingwei;
SKUIUtil.setSpriteFrame(cc.find('nodRole/Race', this.node), 'Common/ui_common', CPubFunction.GetRaceFileName(stInfo.race));
for (var itSkill in stInfo.skill_list) {
SKUIUtil.setSpriteFrameFgui(cc.find('nodRole/nodSkill', this.node), itSkill);
// SKUIUtil.setSpriteFrame(cc.find('nodRole/nodSkill', this.node), 'icon/skill', itSkill);
cc.find('nodRole/nodSkill/Name', this.node).getComponent(cc.Label).string = SkillUtil.getSkill(itSkill).name;
cc.find('nodRole/nodSkill/SkillExp/Label', this.node).getComponent(cc.Label).string = stInfo.skill_list[itSkill];
break;
}
cc.find('nodRole/Blood/Title/Label', this.node).getComponent(cc.Label).string = stInfo.HpMax;
cc.find('nodRole/Atk/Title/Label', this.node).getComponent(cc.Label).string = stInfo.Atk;
cc.find('nodRole/Speed/Title/Label', this.node).getComponent(cc.Label).string = stInfo.Speed;
let nMax = ExpUtil.getPartnerUpgradeExp(stInfo.relive, stInfo.level);
let strTmp = `${stInfo.exp}/${nMax}`;
cc.find('nodRole/nodExp/picText/Label', this.node).getComponent(cc.Label).string = strTmp;
let fPercent = Math.min(stInfo.exp / nMax, 1);
cc.find('nodRole/nodExp/picText/picBar', this.node).width = cc.find('nodRole/nodExp/picText', this.node).width * fPercent;
this.SetButtonText(stInfo.id);
level_lb = cc.find('Level', this.vecPartnerBtn[nIndex]).getComponent(cc.Label);
GameUtil.setReliveLabel(level_lb, 0, stInfo.relive, stInfo.level);
if (this.nCurSelect != nIndex) {
this.nCurSelect = nIndex;
let target = cc.find('nodRole/goAvater', this.node);
let avatar = cc.find('nodRole/avater', this.node);
SKUIUtil.showDragonBone(target, `dragonbone/${stInfo.resid}`, "idle", avatar, `ui/photo/${stInfo.resid}`);
}
},
SetButtonText(nPartnerID) {
let nPos = CMainPlayerInfo.GetParterChuZhanPos(nPartnerID);
cc.find('btnChangeState/Label', this.node).getComponent(cc.Label).string = nPos == -1 ? '參戰' : '休息';
},
Close() {
this.node.destroy();
let goTeamUI = cc.find('Canvas/MainUI/TeamUI');
if (goTeamUI) {
goTeamUI.getComponent('TeamUI').CreateCardList();
}
},
});