2025-06-04 05:02:57 +08:00

194 lines
5.4 KiB
Plaintext

ReplaceView = class("ReplaceView", ContainerView)
ReplaceView.ViewType = UIViewType.NormalLayer
autoImport("ReplaceEquipItemCell");
function ReplaceView:Init()
self:InitView();
self:MapEvent();
end
function ReplaceView:InitView()
local targetCellGO = self:FindGO("TargetCell");
self.targetCell = BaseItemCell.new(targetCellGO)
self.targetCell:AddEventListener(MouseEvent.MouseClick, self.clickTargetCell, self);
self.bg = self:FindComponent("PanelBg", UISprite);
local rmgrid = self:FindComponent("ReplaceMaterialGrid", UIGrid);
self.materialCtl = UIGridListCtrl.new(rmgrid, ReplaceEquipItemCell, "DropItemCell");
self.materialCtl:AddEventListener(MouseEvent.MouseClick, self.ClickMaterial, self);
self.replaceTitle = self:FindComponent("ReplaceTitle", UILabel);
self.replaceTip = self:FindComponent("ReplaceTip", UILabel);
self.zenyCost = self:FindComponent("ZenyCost", UILabel);
local coins = self:FindChild("TopCoins");
local usergold = self:FindGO("Gold", coins);
self.goldLabel = self:FindComponent("Label", UILabel, usergold);
local userRob = self:FindGO("Silver", coins);
self.robLabel = self:FindComponent("Label", UILabel, userRob);
self.replaceButton = self:FindGO("ReplaceBtn");
self:AddClickEvent(self.replaceButton, function (go)
local pos = self.nowItemData and self.nowItemData.index;
ServiceItemProxy.Instance:CallEquipExchangeItemCmd(pos);
end);
end
function ReplaceView:clickTargetCell(cellCtl)
self:ShowItemTipByItemCell(cellCtl);
end
function ReplaceView:ClickMaterial(cellCtl)
self:ShowItemTipByItemCell(cellCtl);
end
function ReplaceView:ShowItemTipByItemCell(cellCtl)
if(self.lastCtl ~= cellCtl)then
local callback = function ()
self.lastCtl = nil;
end;
local sdata = {
itemdata = cellCtl.data,
ignoreBounds = {cellCtl.gameObject},
callback = callback,
};
self:ShowItemTip(sdata, self.bg, NGUIUtil.AnchorSide.Left, {-180,0});
self.lastCtl = cellCtl;
else
self:ShowItemTip();
self.lastCtl = nil;
end
end
function ReplaceView:UpdateCoins()
self.goldLabel.text = StringUtil.NumThousandFormat(MyselfProxy.Instance:GetGold())
self.robLabel.text = StringUtil.NumThousandFormat(MyselfProxy.Instance:GetROB())
-- self.Diamondlabel.text = StringUtil.NumThousandFormat(MyselfProxy.Instance:GetDiamond());
end
function ReplaceView:UpdateItemInfo()
if(self.nowItemData)then
self.composeId = self.nowItemData.staticData.ComposeID;
if(self.composeId)then
local composeData = Table_Compose[self.composeId];
if(composeData)then
local composeCost = composeData.BeCostItem;
local materials = {};
local maxNeedNum, hasNum = 0,0;
for i=1,#composeCost do
local itemCfg = composeCost[i];
local itemid = itemCfg.id;
local bagItems = BagProxy.Instance:GetItemsByStaticID(itemid);
local searchNum = 0;
if(bagItems)then
for j = #bagItems,1,-1 do
-- 強化/精煉/插過卡裝備無法作為材料
local equipInfo = bagItems[j].equipInfo;
local equipCards = bagItems[j].equipedCardInfo
local enchantInfo = bagItems[j].enchantInfo;
if(equipInfo)then
if( equipInfo.strengthlv > 0
or equipInfo.refinelv > 0
or (equipCards and #equipCards > 0)
or (enchantInfo and enchantInfo:HasAttri()) )then
table.remove(bagItems, j);
end
end
end
end
local searchNum = bagItems and #bagItems or 0;
hasNum = hasNum + searchNum;
local maxNum = itemCfg.num or 0;
maxNeedNum = maxNeedNum + maxNum;
for k=1,maxNum do
if(bagItems and bagItems[k])then
table.insert(materials, bagItems[k]);
else
local itemData = ItemData.new("LackItem", itemCfg.id);
table.insert(materials, itemData);
end
end
end
self.materialCtl:ResetDatas(materials);
local cost = composeData.ROB;
self.zenyCost.text = tostring(cost);
self.replaceTitle.text = string.format(ZhString.ReplaceView_ReplaceTitle, hasNum, maxNeedNum);
local toItemId = composeData.Product.id;
if(toItemId)then
local toItemData = ItemData.new("ToItem", toItemId);
local toItemName = toItemData.staticData.NameZh;
local nowItemName = self.nowItemData.staticData.NameZh;
self.replaceTip.text = string.format(ZhString.ReplaceView_ReplaceTip, tostring(nowItemName), toItemName);
self.targetCell:SetData(toItemData);
end
end
end
end
end
function ReplaceView:UpdateReplaceInfo()
self:UpdateCoins();
local viewdata = self.viewdata and self.viewdata.viewdata;
self.nowItemData = viewdata.itemData;
self:UpdateItemInfo();
end
function ReplaceView:MapEvent()
self:AddListenEvt(ServiceEvent.ItemEquipExchangeItemCmd, self.HandleReplaceResult);
end
function ReplaceView:HandleReplaceResult(note)
MsgManager.FloatMsgTableParam(nil, "Replace Success");
self:ShowEndDialog();
self:CloseSelf();
end
function ReplaceView:OnEnter()
ReplaceView.super.OnEnter(self);
self:UpdateReplaceInfo();
self.npcdata = self.viewdata.viewdata and self.viewdata.viewdata.npcdata;
if(self.npcdata)then
self:CameraFocusOnNpc(self.npcdata.roleAgent.transform);
else
self:CameraRotateToMe();
end
end
function ReplaceView:OnExit()
ReplaceView.super.OnExit(self);
self:CameraReset();
end
function ReplaceView:ShowEndDialog()
local viewdata = {
viewname = "DialogView",
dialoglist = { ZhString.ReplaceView_ReplaceSuccess },
npcinfo = self.npcdata,
};
GameFacade.Instance:sendNotification(UIEvent.ShowUI, viewdata);
end