395 lines
12 KiB
Plaintext
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 |