import GameModel from "../ts/core/GameModel"; import ItemUtil from "../ts/core/ItemUtil"; import SKDataUtil from "../ts/gear_2.3.4/util/SKDataUtil"; import SKUIUtil from "../ts/gear_2.3.4/util/SKUIUtil"; let CPubFunction = require('./PubFunction'); let CMainPlayerInfo = require('./MainPlayerInfo'); cc.Class({ extends: cc.Component, properties: { selectedItem:{ default:0, type:cc.Integer, }, nodComposItem: cc.Prefab, NumPad: cc.Prefab, num_bar: { default: null, type: cc.ProgressBar, }, num_slider:{ default: null, type: cc.Slider, } }, onLoad() { this.num_slider.progress=0; this.num_bar.progress=0; }, start() { this.btnFatherItem = cc.find('btnFatherItem', this.node); this.stFatherItemInfo = null; this.vecTempA = []; this.vecTempB = []; cc.find('btnClose', this.node).getComponent(cc.Button).clickEvents.push(CPubFunction.CreateEventHandler(this.node, "ComposUI", "Close", 0)); cc.find('btnFatherItem', this.node).getComponent(cc.Button).clickEvents.push(CPubFunction.CreateEventHandler(this.node, "ComposUI", "OpenNumPad", 0)); cc.find('btnOK', this.node).getComponent(cc.Button).clickEvents.push(CPubFunction.CreateEventHandler(this.node, "ComposUI", "OnOK", 0)); if(this.selectedItem != 0){ this.stFatherItemInfo = { nItemID:this.selectedItem, nNum: 1 }; } this.InitFatherItemList(); }, Close() { this.node.destroy(); }, onSliderClicked(slider, data) { this.num_bar.progress = slider.progress; this.resetSendCount(); }, resetSendCount(){ let n = Math.floor(this.currNum / this.needNum); let label = cc.find('numStr', this.node).getComponent(cc.Label); let m = Math.floor(this.num_slider.progress * n); if (n > 0 && m <= 0) { m = 1; } this.numSend = m; label.string = m + '/' + n; }, InitFatherItemList() { let goContent = cc.find('scvFather/view/content', this.node); SKUIUtil.destroyList(this.vecTempA); let stStart = { nX: -90, nY: -58 }; let nIndex = -1; let synthesis=ItemUtil.synthesisMap(); for (let key in synthesis) { nIndex++; let stPos = cc.v2(stStart.nX + (nIndex % 3) * 90, stStart.nY - Math.floor(nIndex / 3) * 90); let goItem = SKUIUtil.createSubNode(goContent, stPos, this.nodComposItem, ''); goItem.getComponent(cc.Button).clickEvents.push(CPubFunction.CreateEventHandler(this.node,"ComposUI",'SetFatherItem',{ nItemID:key, nNum: 1 })); if (this.stFatherItemInfo == null) { this.stFatherItemInfo = { nItemID:key, nNum: 1 }; } this.SetItemInfo(goItem,key, ''); this.vecTempA.push(goItem); } this.SetFatherItem(0, this.stFatherItemInfo); let height=Math.max(goContent.height, Math.ceil((SKDataUtil.getLength(synthesis) + 1) / 3) * 90 + 20); goContent.height = height; }, SetItemInfo(goItem, nID, strText) { let data = ItemUtil.getItemData(nID); cc.find('Icon', goItem).getComponent(cc.Sprite).spriteFrame = ItemUtil.getItemIconBy(data); if (Math.floor(this.cunt) < 1 && strText.length >= 3) { cc.find('Label', goItem).getComponent(cc.Label).node.color = new cc.color(255, 0, 0, 255); } cc.find('Label', goItem).getComponent(cc.Label).string = strText; }, SetFatherItem(event, data) { if(data==null){ cc.warn(`$警告:設置父道具為空!`); return; } this.stFatherItemInfo = data; this.SetItemInfo(this.btnFatherItem, data.nItemID, data.nNum); SKUIUtil.destroyList(this.vecTempB); let goContent = cc.find('scvSon/view/content', this.node); let vecSonItem = ItemUtil.getSynthesisItem(data.nItemID); let nLen = vecSonItem.length; let index=0; for (let key in vecSonItem) { let vecData = vecSonItem[key].split(':'); let stSonInfo = { nItemID: parseInt(vecData[0]), nNum: parseInt(vecData[1]) }; let stPos = cc.v2( - 90 * (nLen - 1) / 2 + index * 90, 0 ); let goSun = SKUIUtil.createSubNode(goContent, stPos, this.nodComposItem, ''); this.currNum = CMainPlayerInfo.GetBagItemCnt(stSonInfo.nItemID); this.needNum = this.stFatherItemInfo.nNum * stSonInfo.nNum; let n = 0; this.cunt = this.currNum / this.needNum; if (Math.floor(this.cunt) >= 1) { n = 1; } let show=n + '/' + Math.floor(this.cunt); cc.find('numStr', this.node).getComponent(cc.Label).string = show; this.SetItemInfo(goSun, stSonInfo.nItemID, `${CMainPlayerInfo.GetBagItemCnt(stSonInfo.nItemID)}/${this.stFatherItemInfo.nNum * stSonInfo.nNum}`); this.vecTempB.push(goSun); index++; } this.num_slider.progress=(this.cunt<1 ?0:1); this.num_bar.progress=(this.cunt<1 ?0:1); this.resetSendCount(); }, OpenNumPad(e, d) { if (null == this.stFatherItemInfo) return; CPubFunction.FindAndDeleteNode(this.node, 'NumPad'); let goNumPad = SKUIUtil.createSubNode(this.node,cc.v2(177,188), this.NumPad, 'NumPad'); goNumPad.getComponent('NumPad').NumPad_Init((nNum) => { let nCnt = CPubFunction.ChangeNumToRange(nNum, 1, 10000); this.SetComposCnt(nCnt); }); }, SetComposCnt(nCnt) { if (null == this.stFatherItemInfo) return; this.stFatherItemInfo.nNum = nCnt; this.SetFatherItem(this.btnFatherItem, this.stFatherItemInfo); }, OnReceiveBagItem() { this.SetFatherItem(0, this.stFatherItemInfo); }, OnOK() { let num = 0; if (null == this.stFatherItemInfo) return; if (Math.floor(this.cunt) == 0) { num = 1; } else { if (this.numSend == null || this.numSend == 0) { num = 1; } else { num = this.numSend; } } GameModel.send('c2s_compose', { nFatherItem: this.stFatherItemInfo.nItemID, nNum: num }); }, });