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

377 lines
12 KiB
Plaintext

autoImport("ItemCell")
autoImport('ItemFun')
autoImport('FunctionMiyinStrengthen')
MiyinStrengthen = class('MiyinStrengthen', SubView)
MiyinStrengthen.PfbPath = "part/MiyinStrengthen";
function MiyinStrengthen:Init()
self:Listen()
end
function MiyinStrengthen:InitUI()
self.contaienr = self:FindGO("MiyinStrengthenParent");
self.gameObject = self:LoadPreferb(MiyinStrengthen.PfbPath, self.contaienr, true);
self.gameObject.transform.localPosition = Vector3.zero;
self:CollectGO()
self:AddButtonClickEvent()
self:RegisterItemViewClickEvent()
end
function MiyinStrengthen:CollectGO()
self.previewCell = self:FindGO("ItemCell",self.leftContent)
self.spItemIcon = self:FindGO("Icon_Sprite", self.previewCell):GetComponent(UISprite)
self.labStrengthenLevel = self:FindGO("StrengLv", self.previewCell):GetComponent(UILabel)
self.goCardSlot = self:FindGO("CardSlot", self.previewCell)
self.itemPreviewCell = ItemCell.new(self.previewCell)
self.goNowLevel = self:FindGO("Now")
self.labNowLevelValue = self:FindGO("LevelValue", self.goNowLevel):GetComponent(UILabel)
self.labNowAttributeTitle = self:FindGO("AttributeTitle", self.goNowLevel):GetComponent(UILabel)
self.labNowAttributeValue = self:FindGO("AttributeValue", self.goNowLevel):GetComponent(UILabel)
self.goNextLevel = self:FindGO("Next")
self.labnextLevelTitle = self:FindGO("LevelTitle", self.goNextLevel):GetComponent(UILabel)
self.labNextLevelValue = self:FindGO("LevelValue", self.goNextLevel):GetComponent(UILabel)
self.labNextAttributeTitle = self:FindGO("AttributeTitle", self.goNextLevel):GetComponent(UILabel)
self.labNextAttributeValue = self:FindGO("AttributeValue", self.goNextLevel):GetComponent(UILabel)
self.goMaxLevel = self:FindGO("Max")
self.labMaxLabel = self.goMaxLevel:GetComponent(UILabel)
self.labEquipName = self:FindGO("EquipName",self.leftContent):GetComponent(UILabel)
self.goCost = self:FindGO("CostDesc")
self.labCost = self:FindGO("Cost",self.leftContent):GetComponent(UILabel)
self.goMiyinCost = self:FindGO('Miyin', self.goCost)
self.labMiyinCost = self:FindGO('Count', self.goMiyinCost):GetComponent(UILabel)
self.strengthOneBtn = self:FindGO("StrengthOneBtn")
self.goLevelChangeEmpty = self:FindGO("LevelChangeEmpty")
self.goNow = self:FindGO("Now")
self.goNext = self:FindGO("Next")
self.spUpgradeSymbol = self:FindGO("UpgradeSp"):GetComponent(UISprite)
self.goItemName = self:FindGO("CurrentEquipName")
end
function MiyinStrengthen:AddButtonClickEvent()
self:AddClickEvent(self.strengthOneBtn, function (go)
self:OnButtonStrengthOnceClick()
end)
end
function MiyinStrengthen:RegisterItemViewClickEvent()
self.goBC = self:FindGO('BC', self.contaienr)
self:AddClickEvent(self.goBC, function (go)
self:OnClickForViewItem(go)
end)
end
function MiyinStrengthen:Listen()
self:AddListenEvt(ServiceEvent.ItemEquipStrength, self.StrengthHandler)
self:AddListenEvt(ItemEvent.EquipUpdate, self.OnReceiveEquipUpdate)
self:AddListenEvt(ItemEvent.ItemUpdate, self.OnReceiveItemUpdate)
end
function MiyinStrengthen:GetItemDataFromPartIndex(index)
-- site means part
local equipsData = BagProxy.Instance.roleEquip.siteMap;
return equipsData[index]
end
function MiyinStrengthen:GetItemData()
return self.itemData
end
local buildingType = 4
function MiyinStrengthen:UpdateInfo()
local itemData = self:GetItemData()
if itemData ~= nil then
self.itemPreviewCell:SetData(itemData)
local equipInfo = itemData.equipInfo
local levelMax = GuildBuildingProxy.Instance:GetStrengthMaxLvl()
local currentLv = equipInfo.strengthlv2
local strLevelValue = currentLv .. "/" .. levelMax
self.labNowLevelValue.text = strLevelValue
local strAttributeName = nil
local separator = ':'
local iAttributeValue = 0
local attrDetail = ItemFun.calcStrengthAttr(itemData.staticData.Quality, itemData.equipInfo.equipData.EquipType, currentLv)
local attrID = nil
for k, v in pairs(attrDetail) do
attrID = k; iAttributeValue = v
break
end
self.attrID = attrID
strAttributeName = Table_RoleData[attrID].PropName
self.labNowAttributeTitle.text = strAttributeName .. separator
self.labNowAttributeValue.text = iAttributeValue
local levelIsReachMax = currentLv >= levelMax
if levelIsReachMax then
self.levelReachMax = true
self.labnextLevelTitle.enabled = false;
self.labNextLevelValue.enabled = false;
self.labNextAttributeTitle.enabled = false;
self.labNextAttributeValue.enabled = false;
self.goMaxLevel:SetActive(true)
else
self.levelReachMax = false
self.labnextLevelTitle.enabled = true;
self.labNextLevelValue.enabled = true;
self.labNextAttributeTitle.enabled = true;
self.labNextAttributeValue.enabled = true;
self.goMaxLevel:SetActive(false)
local iUpgradeAttrValue = 0
local nextLv = currentLv + 1
self.upgradeLevel = nextLv
attrDetail = ItemFun.calcStrengthAttr(itemData.staticData.Quality, itemData.equipInfo.equipData.EquipType, nextLv)
for k, v in pairs(attrDetail) do
attrID = k; iUpgradeAttrValue = v
break
end
self.labNextLevelValue.text = nextLv
strAttributeName = Table_RoleData[attrID].PropName
self.labNextAttributeTitle.text = strAttributeName .. separator
self.labNextAttributeValue.text = iUpgradeAttrValue
end
self.labEquipName.text = itemData:GetName() -- itemData.staticData.NameZh -- MsgParserProxy.Instance:GetItemNameWithQuality(itemData.staticData.id)
if levelIsReachMax then
self.goCost:SetActive(false)
else
self.goCost:SetActive(true)
end
end
end
function MiyinStrengthen:OnButtonStrengthOnceClick()
if self.buildingIsPlayingStrengthenAnim then
return
end
local itemData = self:GetItemData()
if itemData == nil then
MsgManager.ShowMsgByIDTable(216)
return
end
if self.levelReachMax then
MsgManager.ShowMsgByIDTable(210)
return
end
local enough,need = self:CheckCost()
if not enough then
MsgManager.ShowMsgByIDTable(1)
end
local enough,need = self:CheckCost_Miyin()
if not enough then
local needItemsList = ReusableTable.CreateArray()
local needItem = ReusableTable.CreateTable()
needItem.id = 5030
needItem.count = need
TableUtility.ArrayPushBack(needItemsList, needItem)
QuickBuyProxy.Instance:TryOpenView(needItemsList)
ReusableTable.DestroyArray(needItemsList)
end
ServiceItemProxy.Instance:CallEquipStrength(itemData.id, 1, nil, nil, nil, nil, nil, SceneItem_pb.ESTRENGTHTYPE_GUILD)
self.buildingIsPlayingStrengthenAnim = true
LeanTween.delayedCall(GameConfig.EquipRefine.delay_time / 1000, function()
self.buildingIsPlayingStrengthenAnim = false
end);
end
-- @return values
-- bool, is enough
-- int, need currency
-- int, own currency
function MiyinStrengthen:CheckCost()
local itemData = self:GetItemData()
if itemData ~= nil then
return CostUtil.CheckMiyinStrengthCost_Zeny(itemData.staticData, self.upgradeLevel)
end
return false,0,0
end
function MiyinStrengthen:CheckCost_Miyin()
local itemData = self:GetItemData()
if itemData ~= nil then
return CostUtil.CheckMiyinStrengthCost_Miyin(itemData.staticData, self.upgradeLevel)
end
return false,0,0
end
function MiyinStrengthen:UpdateCost()
local itemData = self:GetItemData()
if itemData == nil then return end
if not self.levelReachMax then
local enough,need = self:CheckCost()
need = need or 0
need = math.floor(need)
self.labCost.text = need
if enough then
self.labCost.color = Color(0.4, 0.4, 0.4, 1)
else
self.labCost.color = Color(1, 0, 0, 1)
end
enough,need = self:CheckCost_Miyin()
need = need or 0
need = math.floor(need)
self.labMiyinCost.text = need
if enough then
self.labMiyinCost.color = Color(0.4, 0.4, 0.4, 1)
else
self.labMiyinCost.color = Color(1, 0, 0, 1)
end
end
end
function MiyinStrengthen:StrengthHandler(note)
self:RefreshSelf()
note = note.body
local pos = self.previewCell.transform.position
local strengthenCount = note.count
if(strengthenCount>0) then
-- FunctionMiyinStrengthen.Ins():BuildingPlayStrengthenAnim(nil)
local growLv = note.newlv - note.oldlv
local itemData = self:GetItemData()
local strAttributeName = Table_RoleData[self.attrID].PropName
local addEffect = strAttributeName .. ' +' .. self:CaculateDeltaAdditionalAttrValue(note.oldlv, note.newlv)
if(note.cricount >0)then
self:PlayUIEffect(EffectMap.UI.upgrade_surprised,
self.itemPreviewCell.gameObject,
true,
MiyinStrengthen.Upgrade_surprisedEffectHandle,
self)
else
self:PlayUIEffect(EffectMap.UI.upgrade_success,
self.itemPreviewCell.gameObject,
true,
MiyinStrengthen.Upgrade_successEffectHandle,
self)
end
if(note.result == SceneItem_pb.ESTRENGTHRESULT_NOMATERIAL) then
if(note.cricount>0) then
MsgManager.ShowEightTypeMsgByIDTable(214,{note.count,note.cricount,addEffect},pos,{0,10})
else
MsgManager.ShowEightTypeMsgByIDTable(215,{note.count,addEffect},pos,{0,10})
end
else
if(note.destcount == 1) then
if(note.cricount>0) then
MsgManager.ShowEightTypeMsgByIDTable(212,{note.count,note.cricount,addEffect},pos,{0,10})
else
MsgManager.ShowEightTypeMsgByIDTable(211,{growLv,addEffect},pos,{0,10})
end
else
if(note.cricount>0) then
MsgManager.ShowEightTypeMsgByIDTable(212,{note.count,note.cricount,addEffect},pos,{0,10})
else
MsgManager.ShowEightTypeMsgByIDTable(213,{note.count,addEffect},pos,{0,10})
end
end
end
end
end
function MiyinStrengthen.Upgrade_surprisedEffectHandle( effectHandle, owner )
NGUIUtil.ChangeRenderQ(effectHandle.gameObject, 3100)
end
function MiyinStrengthen.Upgrade_successEffectHandle( effectHandle, owner )
NGUIUtil.ChangeRenderQ(effectHandle.gameObject, 3100)
end
function MiyinStrengthen:Show()
if(not self.init)then
self.init = true;
self:InitUI();
end
self:UpdateCost();
self.gameObject:SetActive(true)
end
function MiyinStrengthen:Hide()
if(self.init)then
self.gameObject:SetActive(false)
end
end
function MiyinStrengthen:Refresh(item_data)
if item_data ~= nil then
self:SetNormal()
self.itemData = item_data
self:UpdateInfo()
self:UpdateCost()
end
end
function MiyinStrengthen:RefreshSelf()
if self.itemData then
self:Refresh(self.itemData)
end
end
function MiyinStrengthen:SetEmpty()
self.spItemIcon.spriteName = ""
self.labStrengthenLevel.text = ""
self.goCardSlot:SetActive(false)
self.goNow:SetActive(false)
self.goNext:SetActive(false)
self.goMaxLevel:SetActive(false)
self.spUpgradeSymbol.enabled = false
self.goLevelChangeEmpty:SetActive(true)
self.labCost.text = ""
self.goItemName:SetActive(false)
self.goCost:SetActive(false)
self.strengthOneBtn:SetActive(false)
self.itemPreviewCell:SetData(nil)
end
function MiyinStrengthen:SetNormal()
self.goCardSlot:SetActive(true)
self.goNow:SetActive(true)
self.goNext:SetActive(true)
self.goMaxLevel:SetActive(true)
self.spUpgradeSymbol.enabled = true
self.goLevelChangeEmpty:SetActive(false)
self.goItemName:SetActive(true)
self.goCost:SetActive(true)
self.strengthOneBtn:SetActive(true)
end
function MiyinStrengthen:OnReceiveEquipUpdate()
self:RefreshSelf()
end
function MiyinStrengthen:OnReceiveItemUpdate()
self:UpdateCost()
self:RefreshSelf()
end
function MiyinStrengthen:OnExit()
self.super.OnExit(self)
end
function MiyinStrengthen:OnClickForViewItem(go)
UIViewControllerMiyinStrengthen.instance:LoadView_EquipChooseBoard()
end
function MiyinStrengthen:CaculateDeltaAdditionalAttrValue(lv, upgrade_lv)
local additionalAttrValue = nil
local itemData = self:GetItemData()
local additionalAttrs = ItemFun.calcStrengthAttr(itemData.staticData.Quality, itemData.equipInfo.equipData.EquipType, lv)
for _, v in pairs(additionalAttrs) do
additionalAttrValue = v
break
end
local upgradeAdditionalAttrValue = nil
additionalAttrs = ItemFun.calcStrengthAttr(itemData.staticData.Quality, itemData.equipInfo.equipData.EquipType, upgrade_lv)
for _, v in pairs(additionalAttrs) do
upgradeAdditionalAttrValue = v
break
end
return upgradeAdditionalAttrValue - additionalAttrValue
end