2025-06-04 05:12:01 +08:00

576 lines
21 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

AdventureHomePage = class("AdventureHomePage",SubView)
autoImport("AdventureProfessionCell")
autoImport("AdventureCollectionAchShowCell")
autoImport("AdventureAchievementCell")
autoImport("AdventureRewardPanel")
autoImport("AdventureFriendCell")
autoImport("Charactor")
autoImport("ProfessionSkillCell")
autoImport("AdventureAttrCell")
local tempArray = {}
local tempVector3 = LuaVector3.zero
AdventureHomePage.ProfessionIconClick = "ProfessionPage_ProfessionIconClick"
function AdventureHomePage:Init()
self:initView()
self:addViewEventListener()
self:AddListenerEvts()
self:initData()
end
function AdventureHomePage:initView( )
-- -- body
self.gameObject = self:FindGO("AdventureHomePage")
self.playerName = self:FindGO("UserName"):GetComponent(UILabel)
self.manualPoint = self:FindComponent("manualPoint",UILabel)
-- local professionsTable = self:FindGO("professionsTable"):GetComponent(UIGrid)
-- self.professionsTable = UIGridListCtrl.new(professionsTable,AdventureProfessionCell,"AdventureProfessionCell")
-- local achievementShowGird = self:FindGO("achievementShowGird"):GetComponent(UIGrid)
-- self.achievementShowGird = UIGridListCtrl.new(achievementShowGird,AdventureAchievementCell,"AdventureAchievementCell")
-- self.achievementCtTotalNum = self:FindGO("totalNum",self:FindGO("achievementCt")):GetComponent(UILabel)
self.achievementScoreSlider = self:FindGO("progressCt",self:FindGO("achievementCt")):GetComponent(UISlider)
self.achievementCurScore = self:FindGO("curScore",self:FindGO("achievementCt")):GetComponent(UILabel)
-- self.achievemIcon = self:FindGO("rewardIcon",self:FindGO("RewardCt")):GetComponent(UISprite)
self.manualLevel = self:FindGO("manualLevel"):GetComponent(UILabel)
-- self.appellationLevel = self:FindGO("appellationLevel"):GetComponent(UILabel)
local rewardLabel = self:FindGO("rewardLabel"):GetComponent(UILabel)
self.levelGrid = self:FindGO("levelGrid"):GetComponent(UIGrid)
rewardLabel.text = ZhString.AdventureRewardPanel_RewardLabel
self.friendScrollview = self:FindGO("friendRankCt")
self.friendScrollview = self:FindComponent("content",UIScrollView,self.friendScrollview)
self.myRank = self:FindComponent("myRank",UILabel)
self.loading = self:FindGO("Loading")
local ContentContainer = self:FindGO("ContentContainer")
-- local friendsGrid = self:FindGO("friendsGrid"):GetComponent(UIGrid)
-- self.friendsGrid = UIGridListCtrl.new(friendsGrid,,"AdventureFriendCell")
local wrapConfig = {
wrapObj = ContentContainer,
pfbNum = 7,
cellName = "AdventureFriendCell",
control = AdventureFriendCell,
dir = 1,
disableDragIfFit = true,
}
self.itemWrapHelper = WrapCellHelper.new(wrapConfig)
self.itemWrapHelper:AddEventListener(MouseEvent.MouseClick, self.HandleClickItem, self)
-- self.collectionScrollview = self:FindGO("collectionShow")
-- self.collectionScrollview = self:FindGO("content",self.collectionScrollview):GetComponent(UIScrollView)
-- local collectionShowGrid = self:FindGO("collectionShowGrid"):GetComponent(UIGrid)
-- self.collectionShowGrid = UIGridListCtrl.new(collectionShowGrid,AdventureCollectionAchShowCell,"AdventureCollectionAchShowCell")
self.descriptionText = self:FindGO("DescriptionText"):GetComponent(UILabel)
self.secondContent = self:FindGO("secondContent")
local secondContentTitle = self:FindComponent("secondContentTitle",UILabel)
secondContentTitle.text = ZhString.AdventureHomePage_SecondContentTitle
local collectionShowGrid = self:FindComponent("adventureProgressGrid",UIGrid)
self.collectionShowGrid = UIGridListCtrl.new(collectionShowGrid,AdventureCollectionAchShowCell,"AdventureCollectionAchShowCell")
self.thirdContent = self:FindGO("thirdContent")
self.thirdContentTitle = self:FindComponent("thirdContentTitle",UILabel)
-- self.recentFoodList = self:FindComponent("recentFoodList",UIGrid)
-- self.recentFoodList = UIGridListCtrl.new(self.recentFoodList,ItemCell,"RecentFoodItemCell")
self.fourthContent = self:FindGO("fourthContent")
self.fourthContentTitle = self:FindComponent("fourthContentTitle",UILabel)
local unlockAdventureSkillTitle = self:FindComponent("unlockAdventureSkillTitle",UILabel)
unlockAdventureSkillTitle.text = ZhString.AdventureHomePage_UnlockSkillitle
self.fourthSrl = self:FindComponent("ScrollView",UIScrollView,self.fourthContent)
local nextSkills = self:FindComponent("unlockAdventureSkillGrid",UIGrid)
-- self.nextSkillsGrid = UIGridListCtrl.new(nextSkills,AdventureSkillCell,"AdventureSkillCell")
self.nextSkillsGrid = UIGridListCtrl.new(nextSkills,ProfessionSkillCell,"ProfessionSkillCell")
self.nextSkillsGrid:AddEventListener(MouseEvent.MouseClick,self.cellClick,self)
self.propBord = self:FindGO("PropBord")
local proptyBtn = self:FindGO("proptyBtn")
local lable = self:FindComponent("Label",UILabel,proptyBtn)
lable.text = ZhString.AdventureHomePage_PropBordBtn
self:AddClickEvent(proptyBtn,function ( )
-- body
self:showPropView()
end)
self:AddButtonEvent("PropBordClose",function ( )
-- body
self:Hide(self.propBord )
end)
self:AddButtonEvent("PropBordHelp",function ( )
-- body
helplog("help button click")
local data=Table_Help[100001]
if(data)then
TipsView.Me():ShowGeneralHelp(data.Desc, data.Title)
else
-- errorLog("can not find Table_Help content,id is "..self.viewdata.view.id)
end
end)
lable = self:FindComponent("PropBordTitle",UILabel)
lable.text = ZhString.AdventureHomePage_PropBordTitleDes
lable = self:FindComponent("emptyDes",UILabel)
lable.text = ZhString.AdventureHomePage_EmptyPropDes
self.emptyCt = self:FindGO("emptyCt")
self.appellationPropCt = self:FindGO("AppellationPropCt")
self.applationTitle = self:FindComponent("title",UILabel,self.appellationPropCt)
local grid = self:FindComponent("Grid",UIGrid,self.appellationPropCt)
self.appellationGrid = UIGridListCtrl.new(grid,AdventureAttrCell,"AdventureAttrCell")
self.adventurePropCt = self:FindGO("AdventurePropCt")
local title = self:FindComponent("title",UILabel,self.adventurePropCt)
title.text = ZhString.AdventureHomePage_PropBordPropTitleDes
grid = self:FindComponent("Grid",UIGrid,self.adventurePropCt)
self.adventurePropGrid = UIGridListCtrl.new(grid,AdventureAttrCell,"AdventureAttrCell")
end
function AdventureHomePage:cellClick( obj )
-- body
-- local data = obj.data
-- print("cellClick")
local skillId = obj.data
-- printRed(skillId)
local skillItem = SkillItemData.new(skillId)
local tipData = {}
tipData.data = skillItem
TipsView.Me():ShowTip(SkillTip,tipData,"SkillTip")
local tip = TipsView.Me().currentTip
if(tip)then
tempVector3:Set(200,0,0)
tip.gameObject.transform.localPosition = tempVector3
end
end
function AdventureHomePage:Show( target )
-- body
AdventureHomePage.super.Show(self,target)
-- self.collectionScrollview:ResetPosition();
self:setCurrentAchIcon()
self:setCollectionAchievement()
self:setAdventureLevel()
self:setAppellationLevel()
end
local tempVector3 = LuaVector3.zero
function AdventureHomePage:initData( )
-- body
-- self.guidText = nil
-- self.textLen = 0
-- self.starIndex = 0
-- self:updateAdvanceCodition()
self.playerName.text = Game.Myself.data:GetName()
self.manualScore = nil
-- self.professionsTable:ResetDatas(Game.Myself.occupations)
end
function AdventureHomePage:SetData( )
-- body
self:setCurrentAchIcon()
self:setCollectionAchievement()
self:setAdventureLevel()
self:setAppellationLevel()
self:setAchievementShow()
self:setAchievementScore()
self:showScoreUpdateAnim()
-- self.fourthSrl:ResetPosition()
end
function AdventureHomePage:showNextSkillInfo( )
local skills = self:unlockAdventureSkills()
-- printRed(skills)
if(skills and #skills>0)then
TableUtility.ArrayClear(tempArray)
for i=1,#skills do
local data = {}
data[1] = MyselfProxy.Instance:GetMyProfession()
data[2] = skills[i]
tempArray[#tempArray+1] = data
end
self.nextSkillsGrid:ResetDatas(tempArray)
-- self.scView:ResetPosition();
else
-- self:Hide(self.nextSkillGridCt)
end
end
function AdventureHomePage:unlockAdventureSkills()
local achData = MyselfProxy.Instance:GetCurManualAppellation()
if(achData)then
local skills = AdventureDataProxy.Instance:getAdventureSkillByAppellation( achData.staticData.PostID)
return skills
end
end
function AdventureHomePage:showScoreUpdateAnim( )
-- body
self:setAchievementScore()
local curScore = AdventureDataProxy.Instance:getPointData( )
if(self.manualScore and curScore ~= self.manualScore)then
local score = curScore - self.manualScore
if(score<0)then
local manualLevel = AdventureDataProxy.Instance:getManualLevel()
if(Table_AdventureLevel[manualLevel-1])then
score = curScore + Table_AdventureLevel[manualLevel-1].AdventureExp - self.manualScore
end
end
MsgManager.ShowMsgByIDTable(44, {score});
end
self.manualScore = curScore
end
function AdventureHomePage:setCurrentAchIcon()
-- body
local achData = MyselfProxy.Instance:GetCurManualAppellation( )
if(achData)then
local manualLevel = AdventureDataProxy.Instance:getManualLevel()
local itemData = Table_Item[achData.id]
if(itemData)then
-- TODO
-- self.appellationLevel.text = itemData.NameZh
self.descriptionText.text = string.format(ZhString.AdventureHomePage_AppellationDes,itemData.NameZh)
self.manualLevel.text = string.format(ZhString.AdventureHomePage_manualLevel,manualLevel)
-- IconManager:SetItemIcon(itemData.Icon,self.achievemIcon)
else
errorLog("AdventureHomePage:setCurrentAchIcon can't find ItemData by id:",achData.id)
end
else
errorLog("AdventureHomePage:appellation is nil")
end
end
function AdventureHomePage:setAchievementShow( )
-- body
-- local achBag = AdventureDataProxy.Instance.bagMap[SceneManual_pb.EMANUALTYPE_ACHIEVE]
-- local alreadHas = achBag:GetItems()
-- local list = {}
-- for i=1,#alreadHas do
-- local single = alreadHas[i]
-- local groupId = single.staticData.GroupID
-- local group = list[groupId]
-- if(group)then
-- if(group.staticData.id < single.staticData.id)then
-- list[groupId] = single
-- end
-- else
-- list[groupId] = single
-- end
-- end
-- local tempList = {}
-- for k,v in pairs(list) do
-- table.insert(tempList,v)
-- end
-- table.sort(tempList,function ( l,r )
-- -- body
-- return l.staticData.id < r.staticData.id
-- end)
-- self.achievementShowGird:ResetDatas(tempList)
end
function AdventureHomePage:setCollectionAchievement( )
-- body
local bd = NGUIMath.CalculateRelativeWidgetBounds(self.descriptionText.transform)
local height = bd.size.y
local x,y,z = LuaGameObject.GetLocalPosition(self.descriptionText.transform)
y = y - height - 20
local x1,y1,z1 = LuaGameObject.GetLocalPosition(self.secondContent.transform)
tempVector3:Set(x1,y,z1)
self.secondContent.transform.localPosition = tempVector3
local bagMap = AdventureDataProxy.Instance.bagMap
local score = 0
local list = {}
for k,v in pairs(bagMap) do
if(v.tableData.Position == 1 or v.tableData.Position == 3)then
table.insert(list,v)
end
end
table.sort(list,function ( l,r )
-- body
local lTable = Table_ItemTypeAdventureLog[l.type]
local rTable = Table_ItemTypeAdventureLog[r.type]
return lTable.Order < rTable.Order
end)
self.collectionShowGrid:ResetDatas(list)
-- self.collectionScrollview:ResetPosition()
end
function AdventureHomePage:OnEnter( )
-- body
-- self:SetData()
self:setAchievementShow()
self:setAchievementScore()
ServiceSessionSocialityProxy.Instance:CallFrameStatusSocialCmd(true)
-- self:Log("AdventureHomePage OnEnter")
self:setFriendAdData(true)
self:UpdateHead()
self:initScoreData()
end
function AdventureHomePage:initScoreData( )
local curScore = AdventureDataProxy.Instance:getPointData( )
self.manualScore = curScore
end
function AdventureHomePage:OnExit( )
-- body
-- if(self.headCellObj)then
-- Game.GOLuaPoolManager:AddToUIPool(Charactor.PlayerHeadCellResId, self.headCellObj);
-- end
-- self:Log("AdventureHomePage OnExit")
self.manualScore = nil
ServiceSessionSocialityProxy.Instance:CallFrameStatusSocialCmd(false)
end
function AdventureHomePage:setAdventureLevel( )
local bd = NGUIMath.CalculateRelativeWidgetBounds(self.secondContent.transform)
local height = bd.size.y
local x,y,z = LuaGameObject.GetLocalPosition(self.secondContent.transform)
local manualLevel = AdventureDataProxy.Instance:getManualLevel()
local nextLevel = AdventureDataProxy.Instance:getNextAdventureLevelProp(manualLevel)
y = y - height - 20
if(nextLevel ~= "")then
self.thirdContentTitle.text = string.format(ZhString.AdventureHomePage_ThirdContentTitle,manualLevel,manualLevel+1,nextLevel)
else
self.thirdContentTitle.text = string.format(ZhString.AdventureHomePage_ThirdContentTitle,manualLevel,manualLevel+1,"Max")
end
local x1,y1,z1 = LuaGameObject.GetLocalPosition(self.thirdContent.transform)
tempVector3:Set(x1,y,z1)
self.thirdContent.transform.localPosition = tempVector3
end
function AdventureHomePage:setAppellationLevel( )
local bd = NGUIMath.CalculateRelativeWidgetBounds(self.thirdContent.transform)
local height = bd.size.y
local x,y,z = LuaGameObject.GetLocalPosition(self.thirdContent.transform)
y = y - height - 20
local sRet = AdventureDataProxy.Instance:getNextAppellationProp()
local achData = MyselfProxy.Instance:GetCurManualAppellation( )
if(sRet ~="")then
local needLv = GameConfig.AdventureAppellationLevel and GameConfig.AdventureAppellationLevel[achData.staticData.PostID]
self.fourthContentTitle.text = string.format(ZhString.AdventureHomePage_FourThContentTitle,needLv, sRet)
end
local x1,y1,z1 = LuaGameObject.GetLocalPosition(self.fourthContent.transform)
tempVector3:Set(x1,y,z1)
self.fourthContent.transform.localPosition = tempVector3
bd = NGUIMath.CalculateRelativeWidgetBounds(self.fourthContentTitle.transform)
local height = bd.size.y
local x,y,z = LuaGameObject.GetLocalPosition(self.fourthContentTitle.transform)
y = y - height - 95
local x1,y1,z1 = LuaGameObject.GetLocalPosition(self.fourthSrl.transform)
tempVector3:Set(x1,y,z1)
self.fourthSrl.transform.localPosition = tempVector3
-- 升至下一稱號(需要冒險等級達到%s\n%s",
self:showNextSkillInfo()
end
function AdventureHomePage:setAchievementScore( )
-- body
local bagMap = AdventureDataProxy.Instance.bagMap
local score = 0
-- for k,v in pairs(bagMap) do
-- score = score + v.totalScore
-- end
local achData = AdventureDataProxy.Instance:getNextAchievement()
local value = 0
score = AdventureDataProxy.Instance:getPointData()
local nextScore = score
local curAch = AdventureDataProxy.Instance:getCurAchievement( )
-- if(achData)then
-- nextScore = achData.AdventureExp
-- else
nextScore = curAch.AdventureExp
-- end
local manualLevel = AdventureDataProxy.Instance:getManualLevel()
manualLevel = StringUtil.StringToCharArray(tostring(manualLevel))
GameObjectUtil.Instance:DestroyAllChildren(self.levelGrid.gameObject)
for i=1,#manualLevel do
local obj = GameObject("tx")
obj.transform:SetParent(self.levelGrid.transform,false)
obj.layer = self.levelGrid.gameObject.layer
tempVector3:Set(0,0,0)
obj.transform.localPosition = tempVector3
local sprite = obj:AddComponent(UISprite)
sprite.depth = 100
local atlas = RO.AtlasMap.GetAtlas("NewCom")
sprite.atlas = atlas
sprite.spriteName = string.format("txt_%d",manualLevel[i])
sprite:MakePixelPerfect()
end
self.levelGrid:Reposition()
-- if(manualLevel>1)then
-- -- nextScore = nextScore - curAch.AdventureExp
-- score = score - curAch.AdventureExp
-- end
self.achievementCurScore.text = score.."/"..nextScore
self.achievementScoreSlider.value = score/nextScore
local skillPoint = AdventureDataProxy.Instance:getSkillPoint()
self.manualPoint.text = string.format(ZhString.AdventureHomePage_manualPoint,skillPoint)
-- self.achievementCtTotalNum.text = score
end
function AdventureHomePage:addViewEventListener()
--TODO
-- self:AddButtonEvent("appellationLevelCt",function ( )
-- -- body
-- self:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.AdventureRewardPanel,viewdata = {from = AdventureRewardPanel.FromConfig.AdventurePanel}})
-- end)
end
function AdventureHomePage:AddListenerEvts()
self:AddListenEvt(AdventureDataEvent.SceneManualQueryManualData,self.QueryManualHandler)
self:AddListenEvt(AdventureDataEvent.SceneManualManualUpdate,self.SetData)
-- self:AddListenEvt(ServiceEvent.SceneFoodNewFoodDataNtf,self.showScoreUpdateAnim)
self:AddListenEvt(ServiceEvent.SceneManualPointSync,self.showScoreUpdateAnim)
self:AddListenEvt(SceneUserEvent.LevelUp,self.LevelUp)
self:AddListenEvt(ServiceEvent.UserEventNewTitle,self.setCurrentAchIcon)
self:AddListenEvt(ServiceEvent.SessionSocialitySocialUpdate,self.setFriendAdData)
self:AddListenEvt(ServiceEvent.SessionSocialitySocialDataUpdate,self.setFriendAdData)
self:AddListenEvt(ServiceEvent.SessionSocialityQuerySocialData,self.setFriendAdData)
self:AddListenEvt(ServiceEvent.AchieveCmdQueryAchieveDataAchCmd,self.setCollectionAchievement);
self:AddListenEvt(ServiceEvent.AchieveCmdNewAchieveNtfAchCmd,self.setCollectionAchievement);
self:AddListenEvt(AdventureDataEvent.SceneManualManualUpdate,self.showNextSkillInfo)
end
function AdventureHomePage:QueryManualHandler( note )
-- body
self:setFriendAdData(false)
self:SetData()
end
function AdventureHomePage:LevelUp( note )
-- body
if(note.type == SceneUserEvent.ManualLevelUp)then
FloatingPanel.Instance:ShowManualUp()
end
end
function AdventureHomePage:UpdateHead( )
-- body
if(not self.targetCell)then
local headCellObj = self:FindGO("PortraitCell")
self.headCellObj = Game.AssetManager_UI:CreateAsset(Charactor.PlayerHeadCellResId,headCellObj)
tempVector3:Set(0,0,0)
self.headCellObj.transform.localPosition = tempVector3
self.targetCell = PlayerFaceCell.new(self.headCellObj)
-- self.targetCell:Hide(self.targetCell.hp.gameObject)
-- self.targetCell:Hide(self.targetCell.mp.gameObject)
self.targetCell:HideLevel()
self.targetCell:HideHpMp()
end
local headData = HeadImageData.new();
headData:TransByLPlayer(Game.Myself);
-- 臨時處理
headData.frame = nil;
headData.job = nil;
self.targetCell:SetData(headData);
end
function AdventureHomePage:setFriendAdData( resetPos )
local isQuerySocialData = ServiceSessionSocialityProxy.Instance:IsQuerySocialData()
local friends = {unpack(FriendProxy.Instance:GetFriendData())}
if isQuerySocialData then
local data = {}
data.myself = true
-- data.portrait = Game.Myself.data.userdata:Get(UDEnum.PORTRAIT)
data.adventureLv = AdventureDataProxy.Instance:getManualLevel()
data.adventureExp = AdventureDataProxy.Instance:getPointData()
data.guid = Game.Myself.data.id
-- printRed(data.guid)
-- data.profession = Game.Myself.data:GetCurOcc().profession
data.appellation = ""
data.name = Game.Myself.data:GetName()
local achData = MyselfProxy.Instance:GetCurManualAppellation( )
if(achData)then
data.appellation = achData.id
end
table.insert(friends,data)
table.sort(friends,function ( l,r )
-- body
if(l.adventureLv == r.adventureLv)then
if(l.adventureExp == r.adventureExp)then
return l.guid > r.guid
else
return l.adventureExp > r.adventureExp
end
else
return l.adventureLv > r.adventureLv
end
end)
for i=1,#friends do
local single = friends[i]
single.rank = i
if(single.myself)then
self.myRank.text = string.format(ZhString.AdventureHomePage_MyRank,i)
end
end
self.itemWrapHelper:UpdateInfo(friends)
-- self.friendsGrid:ResetDatas(friends)
if(resetPos)then
self.friendScrollview:ResetPosition()
self.itemWrapHelper:ResetPosition()
end
end
self.loading:SetActive(not isQuerySocialData)
end
function AdventureHomePage:showPropView( )
self.propBord:SetActive(not self.propBord.activeSelf);
if(self.propBord.activeSelf)then
local approps = AdventureDataProxy.Instance:GetAppellationProp()
local x,y,z = LuaGameObject.GetLocalPosition(self.appellationPropCt.transform)
local apSize = #approps
if(apSize == 0)then
self:Hide(self.appellationPropCt)
else
local appData = MyselfProxy.Instance:GetCurManualAppellation()
self.applationTitle.text = string.format(ZhString.AdventureHomePage_PropBordAppllationTitleDes,appData.staticData.Name)
self.appellationGrid:ResetDatas(approps)
self:Show(self.appellationPropCt)
local bd = NGUIMath.CalculateRelativeWidgetBounds(self.appellationPropCt.transform)
local height = bd.size.y
y = y - height - 20
end
local x1,y1,z1 = LuaGameObject.GetLocalPosition(self.adventurePropCt.transform)
tempVector3:Set(x1,y,z1)
self.adventurePropCt.transform.localPosition = tempVector3
local props = AdventureDataProxy.Instance:GetAllAdventureProp()
local propSize = #props
if(propSize == 0)then
self:Hide(self.adventurePropCt)
else
self.adventurePropGrid:ResetDatas(props)
self:Show(self.adventurePropCt)
end
if(propSize == 0 and apSize == 0)then
self:Show(self.emptyCt)
else
self:Hide(self.emptyCt)
end
end
end