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

395 lines
12 KiB
Plaintext

EquipAlchemyView = class("EquipAlchemyView", ContainerView)
EquipAlchemyView.ViewType = UIViewType.NormalLayer
autoImport("EquipAlchemyItemCell");
autoImport("EquipAlchemyMakeCell");
autoImport("EquipAlchemyMaterialCell");
local tempV3 = LuaVector3();
function EquipAlchemyView:Init()
self:InitView();
self:MapEvent();
end
function EquipAlchemyView:InitView()
-- coins
local coins = self:FindChild("TopCoins");
self.lottery = self:FindChild("Lottery", coins);
self.lotterylabel = self:FindComponent("Label", UILabel, self.lottery);
local icon = self:FindComponent("symbol", UISprite, self.lottery);
IconManager:SetItemIcon(Table_Item[151].Icon, icon);
self.userRob = self:FindChild("Silver", coins);
self.robLabel = self:FindComponent("Label", UILabel, self.userRob);
self.alchemyBord = self:FindGO("AlchemyBord");
self.makeButton = self:FindGO("MakeBtn");
self.costTip = self:FindGO("CostTip");
self.makeCostLabel = self:FindComponent("Cost", UILabel);
-- coins
local equipalcheMy_Container = self:FindGO("EquipAlchemy_ItemContainer");
local alchemyGO = self:LoadPreferb_ByFullPath(ResourcePathHelper.UICell("EquipAlchemyItemCell"), equipalcheMy_Container);
self.selectCell = EquipAlchemyItemCell.new(alchemyGO);
self.selectCell:SetMinDepth(50);
self.selectCell:AddEventListener(MouseEvent.MouseClick, self.ClickEquipAlchemyItem, self)
self.vmSlider = self:FindComponent("VMSlider", UISlider);
self.vmSlider_Thumb = self:FindGO("Thumb", self.vmSlider.gameObject);
self.vmSlider_Thumb_Label = self:FindComponent("PctLabel", UILabel, self.vmSlider.gameObject);
self.vmSlider_Foreground = self:FindComponent("Foreground", UITexture, self.vmSlider.gameObject);
self.mmSlider = self:FindComponent("MMSlider", UISlider);
self.mmSlider_Thumb = self:FindGO("Thumb", self.mmSlider.gameObject);
self.mmSlider_Thumb_Label = self:FindComponent("PctLabel", UILabel, self.mmSlider.gameObject);
self.mmSlider_Foreground = self:FindComponent("Foreground", UITexture, self.vmSlider.gameObject);
-- ctls
local mkContainer = self:FindGO("MKContainer");
local mkConfig = {
wrapObj = mkContainer,
pfbNum = 7,
cellName = "EquipAlchemyMakeCell",
control = EquipAlchemyMakeCell,
dir = 1,
};
self.mkCtl = WrapCellHelper.new(mkConfig);
self.mkCells = self.mkCtl:GetCellCtls();
self.mkCtl:AddEventListener(MouseEvent.MouseClick, self.UpdateSeleceCell, self);
local vmWrap = self:FindGO("VMWrap");
local vmConfig = {
wrapObj = vmWrap,
pfbNum = 6,
cellName = "EquipAlchemyMaterialCell",
control = EquipAlchemyMaterialCell,
dir = 2,
};
self.vmCtl = WrapCellHelper.new(vmConfig);
self.vmCells = self.vmCtl:GetCellCtls();
self.vmCtl:AddEventListener(MouseEvent.MouseClick, self.AddVMaterial, self);
self.vmCtl:AddEventListener(EquipAlchemyMaterialEvent.Remove, self.RemoveVMaterial, self);
self.vmCtl:AddEventListener(EquipAlchemyMaterialEvent.LongPress, self.ConsAddVMaterial, self);
local mmWrap = self:FindGO("MMWrap");
local mmConfig = {
wrapObj = mmWrap,
pfbNum = 6,
cellName = "EquipAlchemyMaterialCell",
control = EquipAlchemyMaterialCell,
dir = 2,
};
self.mmCtl = WrapCellHelper.new(mmConfig);
self.mmCells = self.mmCtl:GetCellCtls();
self.mmCtl:AddEventListener(MouseEvent.MouseClick, self.AddMMaterial, self);
self.mmCtl:AddEventListener(EquipAlchemyMaterialEvent.Remove, self.RemoveMMaterial, self);
self.mmCtl:AddEventListener(EquipAlchemyMaterialEvent.LongPress, self.ConsAddMMaterial, self);
-- ctls
self.effectContainer = self:FindGO("EffectContainer");
local costTip = self:FindGO("CostTip");
self.cost = self:FindComponent("Cost", UILabel, costTip);
self.makeButton = self:FindGO("MakeBtn");
self.makeButton_Collider = self.makeButton:GetComponent(BoxCollider);
self.makeButton_Sprite = self.makeButton:GetComponent(UISprite);
self.makeButton_Label = self:FindComponent("Label", UILabel, self.makeButton);
self:AddClickEvent(self.makeButton, function (go)
self:DoMake();
end)
self.chooseVMs = {};
self.chooseMMs = {};
self.normalStick = self:FindComponent("Stick", UIWidget);
end
function EquipAlchemyView:ClickEquipAlchemyItem(cell)
local data = cell.itemData;
if(data == nil)then
return;
end
local sdata = {
itemdata = data,
funcConfig = _EmptyTable,
callback = callback,
};
self:ShowItemTip(sdata, self.normalStick, nil, {-170, 0});
end
function EquipAlchemyView:AddVMaterial(cell)
local data = cell.data;
if(data)then
if(cell.leftNum and cell.leftNum < 1)then
MsgManager.ShowMsgByID(252);
return;
end
if(self.vmSlider.value >= 1)then
MsgManager.ShowMsgByID(4100);
return;
end
local sid = data.staticData.id;
self:_HelpUpdateMaterial(sid, 1, self.chooseVMs, self.vmCells, self.vmSlider, self.vmSlider_Thumb, self.vmSlider_Thumb_Label, -1, self.selectData.ViceMaterial);
self:UpdateActiveButton();
end
end
function EquipAlchemyView:ConsAddVMaterial(param)
local cell, open = param[1], param[2];
if(open)then
TimeTickManager.Me():CreateTick(0, 100, function ()
self:AddVMaterial(cell);
end, self, 11);
else
TimeTickManager.Me():ClearTick(self, 11)
end
end
function EquipAlchemyView:RemoveVMaterial(cell)
local data = cell.data;
if(data)then
local sid = data.staticData.id;
self:_HelpUpdateMaterial(sid, -1, self.chooseVMs, self.vmCells, self.vmSlider, self.vmSlider_Thumb, self.vmSlider_Thumb_Label, -1, self.selectData.ViceMaterial);
self:UpdateActiveButton();
end
end
function EquipAlchemyView:AddMMaterial(cell)
local data = cell.data;
if(data)then
if(cell.leftNum and cell.leftNum < 1)then
MsgManager.ShowMsgByID(252);
return;
end
if(self.mmSlider.value >= 1)then
MsgManager.ShowMsgByID(4100);
return;
end
local sid = data.staticData.id;
self:_HelpUpdateMaterial(sid, 1, self.chooseMMs, self.mmCells, self.mmSlider, self.mmSlider_Thumb, self.mmSlider_Thumb_Label, 1, self.selectData.MainMaterial);
self:UpdateActiveButton();
end
end
function EquipAlchemyView:ConsAddMMaterial(param)
local cell, open = param[1], param[2];
if(open)then
TimeTickManager.Me():CreateTick(0, 100, function ()
self:AddMMaterial(cell);
end, self, 12);
else
TimeTickManager.Me():ClearTick(self, 12)
end
end
function EquipAlchemyView:RemoveMMaterial(cell)
local data = cell.data;
if(data)then
local sid = data.staticData.id;
self:_HelpUpdateMaterial(sid, -1, self.chooseMMs, self.mmCells, self.mmSlider, self.mmSlider_Thumb, self.mmSlider_Thumb_Label, 1, self.selectData.MainMaterial);
self:UpdateActiveButton();
end
end
function EquipAlchemyView:_HelpUpdateMaterial(sid, changeNum, chooseInfos, updateCells, slider, slider_thumb, slider_thumb_label, dir, weightMap)
local num = chooseInfos[sid] or 0;
num = num + changeNum;
if(num <= 0)then
chooseInfos[sid] = nil;
else
chooseInfos[sid] = num;
end
self:_HelpUpdateChooseInfo(chooseInfos, updateCells, slider, slider_thumb, slider_thumb_label, dir, weightMap);
end
function EquipAlchemyView:_HelpUpdateChooseInfo(chooseInfos, updateCells, slider, slider_thumb, slider_thumb_label, dir, weightMap)
for i=1,#updateCells do
updateCells[i]:SetChoosedInfo(chooseInfos);
end
local sliderValue = 0;
local mweight = 2;
for id, num in pairs(chooseInfos)do
for i=1,#weightMap do
if(weightMap[i][1] == id)then
mweight = weightMap[i][2]/10;
break;
end
end
sliderValue = sliderValue + num * mweight;
end
sliderValue = math.clamp(sliderValue, 0, 100);
slider.value = sliderValue/100;
local x, y = LuaGameObject.GetLocalPosition(slider.transform)
local degree = (180 * sliderValue / 100) * dir + 270
local radAngle = math.rad(degree);
tempV3:Set(x + math.cos(radAngle) * 135, y + math.sin(radAngle) * 135);
slider_thumb.transform.localPosition = tempV3;
slider_thumb_label.text = math.floor(sliderValue * 10)/10 .. "%"
local dq = self:FindGO("Dq", slider.gameObject);
dq.transform:LookAt(slider.transform);
end
function EquipAlchemyView:ClearVMs()
TableUtility.TableClear(self.chooseVMs);
self:_HelpUpdateChooseInfo(self.chooseVMs, self.vmCells, self.vmSlider, self.vmSlider_Thumb, self.vmSlider_Thumb_Label, -1);
end
function EquipAlchemyView:ClearMMs()
TableUtility.TableClear(self.chooseMMs);
self:_HelpUpdateChooseInfo(self.chooseMMs, self.mmCells, self.mmSlider, self.mmSlider_Thumb, self.mmSlider_Thumb_Label, 1);
end
function EquipAlchemyView:DoMake()
local npcInfo = self:GetCurNpc();
if(npcInfo == nil)then
return;
end
if(self.selectData == nil)then
return;
end
ServiceItemProxy.Instance:CallHighRefineMatComposeCmd(self.selectData.id, npcInfo.data.id, self.chooseMMs, self.chooseVMs)
end
function EquipAlchemyView:UpdateSeleceCell(cell)
local data = cell.data;
if(data)then
self.selectData = data;
self.selectCell:SetData(data);
local vmMalterials = {};
for i=1,#data.ViceMaterial do
local m = data.ViceMaterial[i];
local item = ItemData.new("VMaterial", m[1]);
table.insert(vmMalterials, item);
end
self.vmCtl:UpdateInfo(vmMalterials);
self.vmCtl:ResetPosition();
local mmMaterials = {};
for i=1,#data.MainMaterial do
local m = data.MainMaterial[i];
local item = ItemData.new("MMaterial", m[1]);
table.insert(mmMaterials, item)
end
self.mmCtl:UpdateInfo(mmMaterials);
self.mmCtl:ResetPosition();
self.makeCostLabel.text = data.Cost;
for i=1,#self.mkCells do
self.mkCells[i]:SetChooseId(data.id);
end
self:ClearVMs();
self:ClearMMs();
self:UpdateActiveButton();
end
end
function EquipAlchemyView:UpdateActiveButton()
self:ActiveMakeButton(self.vmSlider.value >= 1 and self.mmSlider.value >= 1);
end
function EquipAlchemyView:ActiveMakeButton(b)
if(b)then
self.makeButton_Sprite.color = ColorUtil.NGUIWhite;
self.makeButton_Collider.enabled = true;
self.makeButton_Label.effectColor = ColorUtil.ButtonLabelOrange;
else
self.makeButton_Sprite.color = ColorUtil.NGUIShaderGray;
self.makeButton_Collider.enabled = false;
self.makeButton_Label.effectColor = ColorUtil.NGUIGray;
end
end
function EquipAlchemyView:UpdateMakeDatas(groupid)
local hRefineDatas = BlackSmithProxy.Instance:GetHighRefineComposeData(groupid);
self.mkCtl:UpdateInfo(hRefineDatas);
end
function EquipAlchemyView:UpdateCoins()
self.robLabel.text = StringUtil.NumThousandFormat(MyselfProxy.Instance:GetROB());
self.lotterylabel.text = StringUtil.NumThousandFormat(MyselfProxy.Instance:GetLottery());
-- self.Diamondlabel.text = StringUtil.NumThousandFormat(MyselfProxy.Instance:GetDiamond());
-- self.goldlabel.text = StringUtil.NumThousandFormat(MyselfProxy.Instance:GetGold());
end
function EquipAlchemyView:MapEvent()
self:AddListenEvt(MyselfEvent.MyDataChange,self.UpdateCoins);
self:AddListenEvt(ServiceEvent.ItemHighRefineMatComposeCmd,self.HandleMakeSuccess);
self:AddListenEvt(ItemEvent.ItemUpdate,self.RefreshSelectCell);
end
function EquipAlchemyView:HandleMakeSuccess(note)
self:PlayUIEffect(EffectMap.UI.UltimateSuccess, self.effectContainer, true)
self:RefreshSelectCell();
end
function EquipAlchemyView:RefreshSelectCell()
self:ClearVMs();
self:ClearMMs();
self:UpdateSeleceCell(self.selectCell);
end
function EquipAlchemyView:GetCurNpc()
if(self.npcguid)then
return NSceneNpcProxy.Instance:Find(self.npcguid);
end
return nil
end
function EquipAlchemyView:OnEnter()
EquipAlchemyView.super.OnEnter(self);
local npcInfo = self.viewdata.viewdata.npcdata;
self.npcguid = npcInfo and npcInfo.data.id;
local npcinfo = self:GetCurNpc();
if(npcinfo)then
local rootTrans = npcinfo.assetRole.completeTransform;
self:CameraFocusOnNpc(rootTrans);
else
self:CameraRotateToMe();
end
self:UpdateCoins();
local groupid = self.viewdata.viewdata.groupid;
self:UpdateMakeDatas(groupid);
self:UpdateSeleceCell(self.mkCells[1]);
PictureManager.Instance:SetUI("alchemy_bg_bar", self.vmSlider_Foreground)
PictureManager.Instance:SetUI("alchemy_bg_bar", self.mmSlider_Foreground)
end
function EquipAlchemyView:OnExit()
self:CameraReset()
self:ClearVMs();
self:ClearMMs();
EquipAlchemyView.super.OnExit(self);
PictureManager.Instance:UnLoadUI("alchemy_bg_bar", self.vmSlider_Foreground)
PictureManager.Instance:UnLoadUI("alchemy_bg_bar", self.mmSlider_Foreground)
end