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

371 lines
12 KiB
JavaScript

import GameModel from "../ts/core/GameModel";
import ItemUtil from "../ts/core/ItemUtil";
import TransformationUtil from "../ts/transformation/TransformationUtil";
import HorsePanel from "../ts/horse/HorsePanel";
import MsgAlert from "../ts/game/msg/MsgAlert";
import SKUIUtil from "../ts/gear_2.3.4/util/SKUIUtil";
import SKDataUtil from "../ts/gear_2.3.4/util/SKDataUtil";
import Transformation from "../ts/transformation/Transformation";
import Bag from "../ts/bag/Bag";
import FactionTalent from "../ts/FactionTalent";
import BabyMgrPannel from "../ts/nurture/BabyMgrPannel";
import DestinyPannel from "../ts/nurture/DestinyPannel";
import StarHome from "../ts/star/StarHome";
let GoodsMgr = require('../game/GoodsMgr');
let PubFunction = require('../game/PubFunction');
cc.Class({
extends: cc.Component,
properties: {
bgNode: cc.Node,
itemIcon: cc.Sprite,
transformationType: cc.Sprite,
transformationChange: cc.Sprite,
typeLab: cc.Label,
nameLab: cc.Label,
infoLab: cc.Label,
gongxiaoLab: cc.Label,
delNode: cc.Node,
operationNode: cc.Node,
operationAllNode: cc.Node,
composeNode: cc.Node,
resolveNode: cc.Node,
ComposUI: cc.Prefab,
PetsPanel: cc.Prefab,
WorkShopPanel: cc.Prefab,
RestoryUI: cc.Prefab,
XianQiUpPanel: cc.Prefab,
ShenBingCombinePanel: cc.Prefab,
PetHeChengPanel: cc.Prefab,
PartnerUI: cc.Prefab,
NoticeEditUI: cc.Prefab,
SafeNotice: cc.Prefab,
},
onLoad() {
this.operationNode.active = false;
this.operationAllNode.active = false;
this.composeNode.active = false;
this.resolveNode.active = false;
this.delNode.active = false;
this.node.on(cc.Node.EventType.TOUCH_START, this.touchBegan.bind(this));
this.typearr = ['物品', '五行天書', '材料', '藥品', '經驗', '銀兩', '仙玉', '神兵', '仙器', '召喚獸', '技能書', '綁定仙玉', '元氣丹', '寶箱', `鑰匙`, `變身卡`, "特效", "法寶","守護信物","孩子道具"];
},
loadInfo(info) {
this.iteminfo = info;
this.itemIcon.spriteFrame = ItemUtil.getItemIconBy(info);
let type = this.typearr[info.type];
this.typeLab.string = type;
this.nameLab.string = info.name;
this.infoLab.string = info.description;
this.gongxiaoLab.string = `【用途】${info.usedetail}`;
cc.tween(this.node).delay(0.05).call(() => {
this.gongxiaoLab.node.y = this.infoLab.node.y - this.infoLab.node.height - 10;
}).start();
// 變身卡 需要添加類型圖標
if (info.type == 15) {
if (info.level == 1003) {
// 橘色
var typeArr = ["9CC2C05E", "44D85091", "4988966A"]//強 抗 物
this.transformationType.spriteFrame = ItemUtil.getItemIcon(typeArr[info.attrType - 1]);
if (TransformationUtil.Instance.getCardsInfo(info.id).cardstate == 0)
this.transformationChange.spriteFrame = null
else
this.transformationChange.spriteFrame = ItemUtil.getItemIcon("743CB1F3")
} else if (info.level == 1002) {
// 紫色
var typeArr = ["A1519957", "7844A6C6", "A71F8CC7"]//強 抗 物
this.transformationType.spriteFrame = ItemUtil.getItemIcon(typeArr[info.attrType - 1]);
this.transformationChange.spriteFrame = null
} else if (info.level == 1001) {
// 藍色
var typeArr = ["905A9C64", "56878EC7", "CD606498"]//強 抗 物
this.transformationType.spriteFrame = ItemUtil.getItemIcon(typeArr[info.attrType - 1]);
if (TransformationUtil.Instance.getCardsInfo(info.id).cardstate == 0)
this.transformationChange.spriteFrame = null
else
this.transformationChange.spriteFrame = ItemUtil.getItemIcon("4FF0E3B9")
} else if (info.level == 1000) {
// 綠色
var typeArr = ["ECAE61A5", "6A45551C", "71EA9A95"]//強 抗 物
this.transformationType.spriteFrame = ItemUtil.getItemIcon(typeArr[info.attrType - 1]);
if (TransformationUtil.Instance.getCardsInfo(info.id).cardstate == 0)
this.transformationChange.spriteFrame = null
else
this.transformationChange.spriteFrame = ItemUtil.getItemIcon("CE379C20")
} else {
return
}
this.transformationType.node.active = true;
this.transformationChange.node.active = true;
}
},
showOperation() {
this.operationNode.active = true;
this.delNode.active = true;
if (this.iteminfo.undel) {
this.delNode.active = false
}
if (this.iteminfo.type == 19 && ItemUtil.getBagItemCount(this.iteminfo.id) == 0) {
this.operationNode.active = false
}
if (this.iteminfo.noopt){
this.operationNode.active = false
}
this.composeNode.active = ItemUtil.canSynthesis(this.iteminfo.id);
let count = ItemUtil.canResolve(this.iteminfo);
if (count > 0) {
this.resolveNode.active = true;
if (this.composeNode.active) {
this.resolveNode.y = -160;
}
}
else if (this.iteminfo.type == 10) {
this.resolveNode.active = true;
this.resolveNode.y = -80
}
else {
this.resolveNode.active = false;
this.resolveNode.y = -80;
}
if (this.canUseAll(this.iteminfo.id)) {
var offY = 0
if (this.composeNode.active)
offY++;
if (this.resolveNode.active)
offY++;
this.operationAllNode.y = -80 - 80 * offY;
this.operationAllNode.active = true;
}
},
// 點擊合成
composBtnClicked() {
let composUI = PubFunction.CreateSubNode(cc.find('Canvas/MainUI'), { nX: 0, nY: 0 }, this.ComposUI, 'ComposUI');
let itemId = SKDataUtil.toNumber(this.iteminfo.id);
if (isNaN(itemId)) {
itemId = 0;
}
let ui = composUI.getComponent('ComposUI');
ui.selectedItem = itemId;
this.node.destroy();
Bag.Instance.closeBagPanel();
},
// 點擊分解
clickResolve() {
ItemUtil.itemResolve(this.iteminfo);
this.node.destroy();
},
useBtnClicked(e, d) {
this.node.destroy();
let canuse = true;
if (ItemUtil.isPetUse(this.iteminfo.id)) { // 親密丹,靈獸丹,聖獸丹,神獸丹,凝魂丹,龍之骨,金柳露
let petpanel = cc.instantiate(this.PetsPanel);
petpanel.name = 'PetPanel';
petpanel.parent = cc.find('Canvas/MainUI');
canuse = false;
}
else if (this.iteminfo.id == 10401) {//悔夢石
let workshop = cc.instantiate(this.WorkShopPanel);
workshop.parent = cc.find('Canvas');
workshop.getComponent('WorkShopPanel').setCurPanel(4);
canuse = false;
Bag.Instance.closeBagPanel();
}
else if (this.iteminfo.id == 10201) //回夢丹
{
Bag.Instance.closeBagPanel();
PubFunction.CreateSubNode(cc.find('Canvas/MainUI'), { nX: 0, nY: 0 }, this.RestoryUI, 'RestoryUI');
canuse = false;
}
else if (this.iteminfo.id >= 10402 && this.iteminfo.id <= 10404) {
let workshop = cc.instantiate(this.WorkShopPanel);
workshop.parent = cc.find('Canvas');
workshop.getComponent('WorkShopPanel').setCurPanel(2);
canuse = false;
Bag.Instance.closeBagPanel();
}
else if (this.iteminfo.id == 10405) {//盤古精鐵
let workshop = cc.instantiate(this.WorkShopPanel);
workshop.parent = cc.find('Canvas');
canuse = false;
Bag.Instance.closeBagPanel();
}
else if (this.iteminfo.id == 10406) {//八荒遺風
let xianqi = cc.instantiate(this.XianQiUpPanel);
xianqi.parent = cc.find('Canvas');
canuse = false;
Bag.Instance.closeBagPanel();
}
else if (this.iteminfo.id == 10408) {//神兵碎片
let shenbing = cc.instantiate(this.ShenBingCombinePanel);
shenbing.parent = cc.find('Canvas');
canuse = false;
Bag.Instance.closeBagPanel();
}
else if (this.iteminfo.id >= 20001 && this.iteminfo.id <= 20015) {//五行材料,合成召喚獸
let hecheng = cc.instantiate(this.PetHeChengPanel);
hecheng.parent = cc.find('Canvas');
canuse = false;
Bag.Instance.closeBagPanel();
}
else if (this.iteminfo.id == 10202 || this.iteminfo.id == 10204) {//夥伴修煉冊
PubFunction.CreateSubNode(cc.find('Canvas/MainUI'), { nX: 0, nY: 0 }, this.PartnerUI, 'PartnerUI');
canuse = false;
Bag.Instance.closeBagPanel();
}
else if (this.iteminfo.id == 10205) { // 世界鈴鐺廣播 relive
let myLevel = GameModel.player.relive;
let itemLevel = this.iteminfo.relive;
if (myLevel < itemLevel) {
MsgAlert.addMsg(`${this.iteminfo.name}需要${this.iteminfo.level}转才能使用`);
return;
}
let lgNode = cc.find("Canvas/PalaceNotice")
if (SKUIUtil.isValid(lgNode)) {
let lg = lgNode.getComponent("PalaceNotice");
if (lg) {
if (lg.str_list && lg.str_list.length > 10) {
MsgAlert.addMsg(`鈴鐺消息隊列已滿,請稍後使用`);
return;
}
}
}
let notice_edit_node = cc.instantiate(this.NoticeEditUI);
notice_edit_node.parent = cc.find('Canvas');
canuse = false;
Bag.Instance.closeBagPanel();
}
else if (this.iteminfo.id >= 10501 && this.iteminfo.id <= 10583) { //元氣丹
let petpanel = cc.instantiate(this.PetsPanel);
petpanel.name = 'PetPanel';
petpanel.parent = cc.find('Canvas/MainUI');
canuse = false;
Bag.Instance.closeBagPanel();
}
// 使用坐騎修煉丹,則打開坐騎面板,關閉背包
else if (SKDataUtil.atRange(this.iteminfo.id, [10605, 10606, 10607, 10608])) {
HorsePanel.shared.show();
canuse = false;
Bag.Instance.closeBagPanel();
}
// 使用變身卡
else if (this.isComposeTransformation(this.iteminfo.id)) {
Transformation.Instance.openComposePanel(ItemUtil.getBagItemCount(this.iteminfo.id), this.iteminfo.id)
return;
}
// 合成天演符
else if (this.iteminfo.id == 100320) {
FactionTalent.Instance.openComposeFcFuPanel(ItemUtil.getBagItemCount(this.iteminfo.id))
return;
}
else if (this.iteminfo.id == 100321) {
GameModel.send("c2s_authenticate_ofuda", {
roleid: GameModel.player.roleid,
ofudatype: 1
})
return;
}
else if (this.iteminfo.id == 100322) {
GameModel.send("c2s_authenticate_ofuda", {
roleid: GameModel.player.roleid,
ofudatype: 2
})
return;
}
else if (this.iteminfo.id == 100323) {
GameModel.send("c2s_authenticate_ofuda", {
roleid: GameModel.player.roleid,
ofudatype: 3
})
return;
}else if (this.iteminfo.id == 9650) {
BabyMgrPannel.shared.onClickDestiny()
DestinyPannel.shared.onUpgrade()
return
}else if (this.iteminfo.id == 9651) {
BabyMgrPannel.shared.onClickDestiny()
return
}else if (this.iteminfo.id == 9654){//煉星石
StarHome.shared.show()
}else if (this.iteminfo.id == 9655){//渾天石
StarHome.shared.show()
StarHome.shared.onClickStarInfo()
}
if (!canuse) {
Bag.Instance.closeBagPanel();
let bagLayer = cc.find('Canvas/MainUI/BagPanel');
if (bagLayer != null) {
bagLayer.destroy();
}
return;
}
if (d == "all")
ItemUtil.useItem(this.iteminfo.id, ItemUtil.getBagItemCount(this.iteminfo.id), this.iteminfo.operateid);
else
ItemUtil.useItem(this.iteminfo.id, 1, this.iteminfo.operateid);
},
// 刪除道具
delBtnClicked() {
let count = GameModel.player.itemList[this.iteminfo.id];
let info = `是否刪除${this.iteminfo.name}${count}個?`;
let self = this;
GameModel.notice.addMsg(1, info, () => {
if (GameModel.player.safe_lock == 1) {
let safe_notice = cc.instantiate(self.SafeNotice);
if (SKUIUtil.isValid(safe_notice)) {
safe_notice.parent = cc.find('Canvas');
Bag.Instance.hideBagPanel()
safe_notice.getComponent('SafeNotice').setCallback(() => {
GoodsMgr.subItem(this.iteminfo.id);
self.node.destroy();
Bag.Instance.showBagPanel()
});
}
}
else {
if (self.iteminfo) {
GoodsMgr.subItem(self.iteminfo.id);
self.node.destroy();
}
}
}, () => { });
},
touchBegan(event) {
if (this.bgNode.getBoundingBoxToWorld().contains(event.getLocation())) {
return;
}
this.node.runAction(cc.sequence(cc.fadeOut(0.1), cc.removeSelf()));
},
// 能否批量使用
canUseAll(id) {
// if (SKDataUtil.atRange(id, [80001,50020,50018,50016,50015,50014,50013,50012,50011])) {
// return true;
// }
return false;
},
isComposeTransformation(id) {
if (SKDataUtil.atRange(id, [100311, 100313, 100315, 100317])) {
return true;
}
return false;
}
});