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

329 lines
10 KiB
Plaintext

BranchQuestPage = class("BranchQuestPage",SubView)
autoImport("BranchAwardListCell")
autoImport("QuestTraceCell")
autoImport("BlankItemCell")
function BranchQuestPage:Init()
self:initView()
self:addViewEventListener()
-- self:AddListenerEvts()
self:initData()
end
function BranchQuestPage:initView( )
-- -- body
self.gameObject = self:FindGO("BranchQuestPage")
self.questListGrid = self:FindGO("questListGrid")
self.uiGridOfQuestList = self.questListGrid:GetComponent(UIGrid)
if self.listControllerOfQuestList == nil then
self.listControllerOfQuestList = UIGridListCtrl.new(self.uiGridOfQuestList, QuestTraceCell, "QuestTraceLongCell")
end
self.awardListGrid = self:FindGO("awardListGrid")
self.uiGridOfAwardList = self.awardListGrid:GetComponent(UIGrid)
if self.listControllerOfAwardList == nil then
self.listControllerOfAwardList = UIGridListCtrl.new(self.uiGridOfAwardList, BranchAwardListCell, "BranchAwardListCell")
end
self.awardBackListGrid = self:FindGO("awardBackListGrid")
self.uiGridOfAwardBackList = self.awardBackListGrid:GetComponent(UIGrid)
if self.listControllerOfAwardBackList == nil then
self.listControllerOfAwardBackList = UIGridListCtrl.new(self.uiGridOfAwardBackList, BlankItemCell, "BlankItemCell")
end
self.modelStage = self:FindGO("ModelStage");
self.itemmodel = self:FindGO("PlayerModelContainer");
self.itemmodeltexture = self:FindComponent("ModelTexture", UITexture, self.itemmodel);
self.scrollViewAwardList = self:FindComponent("ScrollView_AwardList", UIScrollView)
self.modelStageProgress = self:FindComponent("ModelStageProgress", UISprite);
self.modelStageProgressLabel = self:FindComponent("ModelStageProgressLabel", UILabel);
self.modelStageName = self:FindComponent("ModelStageName", UILabel);
self.panel = self:FindGO("panel")
self.noData = self:FindGO("NoData")
local modelBg = self:FindGO("ModelBg");
self:AddDragEvent(modelBg ,function (go, delta)
if(self.model)then
self.model:RotateDelta( -delta.x );
else
-- self.model:RotateDelta( -delta.x )
end
end);
end
function BranchQuestPage:Show( target )
BranchQuestPage.super.Show(self,target)
end
function BranchQuestPage:Hide( target )
--helplog("====BranchQuestPage:Hide==>>>")
BranchQuestPage.super.Hide(self,target)
if self.currentSelectedCell then
self.currentSelectedCell:setIsSelected(false)
end
end
function BranchQuestPage:initData( )
end
function BranchQuestPage:SetData( version )
self.currentSelectedCell = nil
self.currentVersion = version
local versionData = QuestManualProxy.Instance:GetManualQuestDatas( version )
if versionData then
if versionData.branch and #versionData.branch > 0 then
self.panel:SetActive(true)
self.noData:SetActive(false)
self.listControllerOfAwardList:ResetDatas(versionData.branch)
local backList = {}
local backLength = math.max(8, #versionData.branch)
for i=1,backLength do
backList[#backList + 1] = {id = i}
end
self.listControllerOfAwardBackList:ResetDatas(backList)
self.scrollViewAwardList:ResetPosition()
local cells = self.listControllerOfAwardList:GetCells()
UIModelUtil.Instance:ResetTexture(self.itemmodeltexture)
local firstCell = cells[1]
-- for i=1, #cells do
-- if i == 1 then
-- firstCell = cells[i]
-- end
-- end
if firstCell then
self:LoadAwardQuestListWithoutShowTip(firstCell)
end
self.scrollViewAwardList:ResetPosition()
else
self.modelStage:SetActive(false)
self.panel:SetActive(false)
self.noData:SetActive(true)
self.listControllerOfAwardList:RemoveAll()
end
end
end
function BranchQuestPage:OnEnter( )
end
function BranchQuestPage:OnExit( )
--helplog("==BranchQuestPage:OnExit==>>>")
end
function BranchQuestPage:addViewEventListener()
-- local wrapConfig = {
-- wrapObj = self.wrapObj,
-- pfbNum = 12,
-- cellName = "BranchAwardListCell",
-- control = BranchAwardListCell,
-- dir = 2,
-- };
-- self.awardListCtl = WrapCellHelper.new(wrapConfig);
self.listControllerOfAwardList:AddEventListener(QuestManualEvent.AwardClick, self.LoadAwardQuestList, self);
end
function BranchQuestPage:LoadAwardQuestListWithoutShowTip(cell)
if self.currentSelectedCell then
if self.currentSelectedCell == cell then
return;
else
self.currentSelectedCell:setIsSelected(false)
end
end
self.currentSelectedCell = cell
self.currentSelectedCell:setIsSelected(true)
self.modelStage:SetActive(true)
if cell.data.questList and #cell.data.questList > 0 then
self.listControllerOfQuestList:ResetDatas(cell.data.questList)
else
self.listControllerOfQuestList:RemoveAll()
end
--helplog("==UpdateModelShow==>>>", cell.data.itemid)
local itemData = ItemData.new("", cell.data.itemid)
local s,m = self:GetBranchCellProgress( cell.data.questList )
if m ~= 0 then
self.modelStageProgress.width = s/m * 180
self.modelStageProgressLabel.text = s .. "/" .. m
end
self.modelStageName.text = itemData.staticData.NameZh
self:UpdateModelShow( itemData )
end
function BranchQuestPage:LoadAwardQuestList( cell )
self:LoadAwardQuestListWithoutShowTip(cell)
local itemData = ItemData.new("", cell.data.itemid)
self:ShowAwardItemTip( itemData , cell)
end
function BranchQuestPage:ShowAwardItemTip( itemData , cell)
local data = {itemdata = itemData,
funcConfig = {},
noSelfClose = false}
-- self:ShowItemTip(data , cell.itemCell.icon , NGUIUtil.AnchorSide.Right, {180, 200})
if(UIUtil.isClickLeftScreenArea())then
self:ShowItemTip(data , cell.itemCell.icon, NGUIUtil.AnchorSide.Right, {210,-220})
else
self:ShowItemTip(data , cell.itemCell.icon, NGUIUtil.AnchorSide.Left, {-210,-220})
end
end
function BranchQuestPage:UpdateModelShow( data )
--helplog("==BranchQuestPage:UpdateModelShow-0==>>>")
self.data = data
if(data and data.staticData)then
-- helplog("==BranchQuestPage:UpdateModelShow==>>>", data.staticData.Type)
local itemType = data.staticData.Type
if(data.equipInfo and data.equipInfo.equipData)then
local ismount = data:IsMount();
--helplog("==BranchQuestPage:UpdateModelShow-2==>>>", ismount)
if(ismount)then
self:SetMountModel(data)
else
--helplog("==BranchQuestPage:UpdateModelShow-3==>>>", self.data.tabData.id)
--helplog("==BranchQuestPage:UpdateModelShow-4==>>>", data.equipInfo.equipData.GroupID)
if(self.data.tabData.id == 1045 and data.equipInfo.equipData.GroupID)then
self:SetFashionModel(data)
else
self:SetNormalModel(data)
end
end
self.itemmodel:SetActive(true);
elseif itemType == 50 then
local composeData = Table_Compose[data.staticData.id]
if composeData then
--helplog("==BranchQuestPage:composeData==>>>", composeData.Product.id)
local itemData = ItemData.new("", composeData.Product.id)
self:SetNormalModel(itemData)
end
elseif itemType == 820 or itemType == 821 or itemType == 822 then
local itemData = ItemData.new("", data.staticData.id)
self:SetHairModel(itemData)
else
UIModelUtil.Instance:ResetTexture(self.itemmodeltexture)
end
end
end
function BranchQuestPage:SetMountModel( )
self.model = UIModelUtil.Instance:SetMountModelTexture(self.itemmodeltexture, data.staticData.id)
self.model:SetSacle(0.8);
end
function BranchQuestPage:SetFashionModel( data )
local id = data.staticId
local args,parts = self:getArgsAndParts(true)
local partBody = ItemUtil.getFashionItemRoleBodyPart(id,true);
if(partBody)then
parts[Asset_Role.PartIndex.Body] = partBody.Body
end
UIMultiModelUtil.Instance:SetModels(2,args)
Asset_Role.DestroyPartArray(parts);
args,parts = self:getArgsAndParts(false)
partBody = ItemUtil.getFashionItemRoleBodyPart(id);
if(partBody)then
parts[Asset_Role.PartIndex.Body] = partBody.Body
end
UIMultiModelUtil.Instance:SetModels(3,args)
Asset_Role.DestroyPartArray(parts);
end
function BranchQuestPage:getArgsAndParts(isMale)
-- body
local parts = Asset_Role.CreatePartArray();
local partIndex = Asset_Role.PartIndex;
local partIndexEx = Asset_Role.PartIndexEx;
parts[partIndexEx.HairColorIndex] = self.userdata:Get(UDEnum.HAIRCOLOR) or 0;
parts[partIndex.Eye] = self.userdata:Get(UDEnum.EYE) or 0;
parts[partIndexEx.EyeColorIndex] = self.userdata:Get(UDEnum.EYECOLOR) or 0;
TableUtility.TableClear(tempTable)
tempTable[1]=parts
tempTable[2]=self.itemmodeltexture
if(isMale)then
parts[partIndex.Body] = Table_Class[1].MaleBody
parts[partIndex.Hair] = 2
tempTable[3]=ItemTipModelCell.ModelPos[1].position
tempTable[4]=ItemTipModelCell.ModelPos[1].rotation
else
parts[partIndex.Body] = Table_Class[1].FemaleBody
parts[partIndex.Hair] = 14
tempTable[3]=ItemTipModelCell.ModelPos[2].position
tempTable[4]=ItemTipModelCell.ModelPos[2].rotation
end
-- args[4]=rotation
tempTable[5]=1
-- args[6]=action
-- args[7]=emoji
-- args[8]=emojiRotation
-- args[9]=randomEmojiDuation
-- args[10]=true
return tempTable,parts
end
local tempV3 = LuaVector3();
function BranchQuestPage:SetNormalModel( data )
local sData = data.staticData
local GroupID = data.equipInfo.equipData.GroupID
if(GroupID)then
local equipDatas = AdventureDataProxy.Instance.fashionGroupData[GroupID]
if(not equipDatas or #equipDatas==0)then
return
end
local single = equipDatas[1]
sData = Table_Item[single.id]
end
local partIndex = ItemUtil.getItemRolePartIndex(sData.id);
self.model = UIModelUtil.Instance:SetRolePartModelTexture(self.itemmodeltexture, partIndex, sData.id);
-- UIModelUtil.Instance:SetCellTransparent(self.itemmodeltexture)
local isfashion = BagProxy.fashionType[sData.Type];
if(isfashion)then
tempV3:Set(0,0.5,0)
self.model:ResetLocalPosition(tempV3);
end
tempV3:Set(1,1,1);
self.model:ResetLocalScale(tempV3);
end
local tempV3 = LuaVector3();
function BranchQuestPage:SetHairModel( data )
local sData = data.staticData
local partIndex = ItemUtil.getItemRolePartIndex(sData.id);
local hairid = ShopDressingProxy.Instance:GetHairStyleIDByItemID(sData.id)
self.model = UIModelUtil.Instance:SetRolePartModelTexture(self.itemmodeltexture, partIndex, hairid);
-- UIModelUtil.Instance:SetCellTransparent(self.itemmodeltexture)
local isfashion = BagProxy.fashionType[sData.Type];
if(isfashion)then
tempV3:Set(0,0.5,0)
self.model:ResetLocalPosition(tempV3);
end
tempV3:Set(1,1,1);
self.model:ResetLocalScale(tempV3);
end
function BranchQuestPage:GetBranchCellProgress( questList )
local finishCount = 0
local totalCount = 0
if questList and #questList > 0 then
totalCount = #questList
for i=1, #questList do
if questList[i].type == SceneQuest_pb.EQUESTLIST_SUBMIT then
finishCount = finishCount + 1
end
end
end
return finishCount, totalCount
end