800 lines
24 KiB
Plaintext
800 lines
24 KiB
Plaintext
AdventureAchievementPage = class("AdventureAchievementPage", SubView)
|
|
|
|
autoImport("AdventureResearchCategoryCell");
|
|
autoImport("AdventureResearchDescriptionCell");
|
|
autoImport("AdventureResearchCombineItemCell");
|
|
autoImport("AchievementCategoryCell");
|
|
autoImport("AchievementDescriptionCell");
|
|
autoImport("AchievementSocialCell");
|
|
autoImport("AchievementChangeProCell");
|
|
autoImport("AdventureTitleBufferCell");
|
|
autoImport("TitleAdventureCombineItemCell");
|
|
|
|
AdventureAchievementPage.filterId = {
|
|
all = 1,
|
|
complete = 2,
|
|
uncomplete = 3,
|
|
}
|
|
|
|
AdventureAchievementPage.tabItems =
|
|
{
|
|
{id = AdventureAchievementPage.filterId.all,name = ZhString.AdventureAchievePage_AllAchieve},
|
|
{id = AdventureAchievementPage.filterId.complete,name = ZhString.AdventureAchievePage_Complete},
|
|
{id = AdventureAchievementPage.filterId.uncomplete,name = ZhString.AdventureAchievePage_UnComplete},
|
|
}
|
|
|
|
AdventureAchievementPage.SocialIDPair = {
|
|
max_team = 1,
|
|
max_hand = 2,
|
|
max_wheel = 3,
|
|
max_chat = 4,
|
|
max_music = 5,
|
|
max_save = 6,
|
|
max_besave = 7,
|
|
}
|
|
|
|
AdventureAchievementPage.SocialID = {
|
|
"max_team",
|
|
"max_hand",
|
|
"max_wheel",
|
|
"max_chat",
|
|
"max_music",
|
|
"max_save",
|
|
"max_besave",
|
|
}
|
|
|
|
AdventureAchievementPage.changePf = {
|
|
bepro_1_time = 1,
|
|
bepro_2_time = 2,
|
|
bepro_3_time = 3,
|
|
}
|
|
|
|
AdventureAchievementPage.childGroupCellClick = "AdventureAchievementPage_childGroupCellClick"
|
|
local tempVector3 = LuaVector3.zero
|
|
local tempArray = {}
|
|
function AdventureAchievementPage:Init()
|
|
self:AddViewEvts();
|
|
self:initView();
|
|
self:initTabData()
|
|
local UserName = self:FindComponent("UserName",UILabel)
|
|
UserName.text = Game.Myself.data:GetName()
|
|
self.UserTitle = self:FindComponent("UserTitle",UILabel)
|
|
end
|
|
|
|
function AdventureAchievementPage:AddViewEvts()
|
|
self:AddListenEvt(ServiceEvent.AchieveCmdQueryUserResumeAchCmd,self.QueryUserResumeAchCmd);
|
|
self:AddListenEvt(ServiceEvent.AchieveCmdQueryAchieveDataAchCmd,self.HandleAchieveDataAchCmd);
|
|
self:AddListenEvt(ServiceEvent.AchieveCmdNewAchieveNtfAchCmd,self.HandleAchieveDataAchCmd);
|
|
self:AddListenEvt(ServiceEvent.QuestQuestUpdate,self.HandleQuestUpdate);
|
|
self:AddListenEvt(ServiceEvent.QuestQuestStepUpdate,self.HandleQuestUpdate);
|
|
self:AddListenEvt(ServiceEvent.UserEventChangeTitle,self.initTitleData);
|
|
EventManager.Me():AddEventListener(ServiceEvent.UserEventChangeTitle, self.HandleChangeTitle, self)
|
|
end
|
|
|
|
function AdventureAchievementPage:SubAchieveClickHandle(data)
|
|
self:ShowSubTitleAchieve(self.data.staticData.id,data.id)
|
|
end
|
|
|
|
function AdventureAchievementPage:HandleChangeTitle()
|
|
self:initTitleProp()
|
|
end
|
|
|
|
function AdventureAchievementPage:requestAchieveData()
|
|
ServiceAchieveCmdProxy.Instance:CallQueryUserResumeAchCmd()
|
|
end
|
|
|
|
function AdventureAchievementPage:HandleQuestUpdate( )
|
|
self:updateDescList(true)
|
|
end
|
|
|
|
function AdventureAchievementPage:RegistRedTip( )
|
|
-- -- body
|
|
-- if(not self.hasRegist)then
|
|
-- self.hasRegist = true
|
|
local cells = self.achivementCategoryGrid:GetCells()
|
|
if(cells and #cells>0)then
|
|
for i=1,#cells do
|
|
local singleCell = cells[i]
|
|
local redTipIds = AdventureAchieveProxy.Instance:getCategoryRedtip(singleCell.data.staticData.id)
|
|
if(redTipIds)then
|
|
for j=1,#redTipIds do
|
|
-- helplog("RegisterRedTipCheck1",redTipIds[j],singleCell.bg)
|
|
self:RegisterRedTipCheck(redTipIds[j],singleCell.bg,nil,{-5,-5})
|
|
end
|
|
end
|
|
|
|
local subCells = singleCell:getSubChildCells()
|
|
if(subCells and #subCells>0)then
|
|
for j=1,#subCells do
|
|
local RedTip = subCells[j].data.staticData.RedTip
|
|
if(RedTip)then
|
|
-- helplog("RegisterRedTipCheck2",RedTip,subCells[j].bg)
|
|
self:RegisterRedTipCheck(RedTip,subCells[j].bg,nil,{-5,-5})
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
-- end
|
|
end
|
|
|
|
function AdventureAchievementPage:ScrollViewRevert(callback)
|
|
self.revertCallBack = callback;
|
|
self.propScrollView:Revert();
|
|
end
|
|
|
|
function AdventureAchievementPage:HandleAchieveDataAchCmd( )
|
|
-- body
|
|
self:initCategoryData()
|
|
if(self.data)then
|
|
if(self.data.staticData.id == AdventureAchieveProxy.HomeCategoryId)then
|
|
self:UpdateRecentAchieves()
|
|
else
|
|
self:updateDescList(true)
|
|
end
|
|
end
|
|
end
|
|
|
|
function AdventureAchievementPage:initTitleProp( resetPos )
|
|
local allTitle = TitleProxy.Instance:GetTitle()
|
|
local newData = self:ReUniteCellData(allTitle, 1);
|
|
if(self.itemWrapHelper == nil)then
|
|
local wrapConfig = {
|
|
wrapObj = self.bag_itemContainer,
|
|
pfbNum = 12,
|
|
cellName = "TitleAdventureCombineItemCell",
|
|
control = TitleAdventureCombineItemCell,
|
|
dir = 1,
|
|
}
|
|
self.itemWrapHelper = WrapCellHelper.new(wrapConfig)
|
|
self.itemWrapHelper:AddEventListener(MouseEvent.MouseClick,self.TitleCellClick,self)
|
|
end
|
|
self.itemWrapHelper:UpdateInfo(newData)
|
|
if(resetPos and self.gameObject.activeSelf)then
|
|
self.itemWrapHelper:ResetPosition()
|
|
end
|
|
end
|
|
|
|
function AdventureAchievementPage:ReUniteCellData(datas, perRowNum)
|
|
local newData = {};
|
|
if(datas~=nil and #datas>0)then
|
|
for i = 1,#datas do
|
|
local i1 = math.floor((i-1)/perRowNum)+1;
|
|
local i2 = math.floor((i-1)%perRowNum)+1;
|
|
newData[i1] = newData[i1] or {};
|
|
if(datas[i] == nil)then
|
|
newData[i1][i2] = nil;
|
|
else
|
|
newData[i1][i2] = datas[i];
|
|
end
|
|
end
|
|
end
|
|
return newData;
|
|
end
|
|
|
|
function AdventureAchievementPage:TitleCellClick(cellCtl)
|
|
local data = cellCtl and cellCtl.data
|
|
|
|
-- local go = self.PropBordScrollBg
|
|
local go = cellCtl and cellCtl.titleName
|
|
local newChooseID= data and data.id or 0
|
|
|
|
if(self.chooseId~=newChooseID)then
|
|
self.chooseId=newChooseID
|
|
|
|
self:ShowTitleTip(data,go)
|
|
else
|
|
self.chooseId = 0
|
|
TipManager.Instance:HideTitleTip()
|
|
end
|
|
self:_refreshChoose()
|
|
end
|
|
|
|
function AdventureAchievementPage:ShowTitleTip(data,stick)
|
|
local callback = function ()
|
|
if(not self.destroyed)then
|
|
self.chooseId = 0;
|
|
self:_refreshChoose()
|
|
end
|
|
end;
|
|
|
|
local sdata = {
|
|
itemdata = data,
|
|
ignoreBounds = ignoreBounds,
|
|
callback = callback,
|
|
};
|
|
|
|
local tip = TipManager.Instance:ShowTitleTip(sdata,stick,NGUIUtil.AnchorSide.Left,{-255, 0})
|
|
-- tip:AddIgnoreBounds(self.PropBordScrollBg)
|
|
end
|
|
|
|
function AdventureAchievementPage:_refreshChoose( )
|
|
local cells = self.itemWrapHelper:GetCellCtls();
|
|
for i=1,#cells do
|
|
local cell = cells[i]
|
|
for j=1,#cell.childrenObjs do
|
|
local child = cell.childrenObjs[j]
|
|
child:SetChoose(self.chooseId)
|
|
end
|
|
end
|
|
end
|
|
|
|
function AdventureAchievementPage:QueryUserResumeAchCmd( )
|
|
-- body
|
|
self:RefreshHomeData()
|
|
end
|
|
|
|
function AdventureAchievementPage:initTabData()
|
|
self.itemTabs:Clear()
|
|
for i=1,#AdventureAchievementPage.tabItems do
|
|
local single = AdventureAchievementPage.tabItems[i]
|
|
self.itemTabs:AddItem(single.name,single)
|
|
end
|
|
|
|
self.itemTabs.value = AdventureAchievementPage.tabItems[1].name
|
|
end
|
|
|
|
function AdventureAchievementPage:initCategoryData()
|
|
local list = {}
|
|
for k,v in pairs(AdventureAchieveProxy.Instance.categoryDatas) do
|
|
table.insert(list,v)
|
|
end
|
|
table.sort(list,function ( l,r )
|
|
-- body
|
|
return l.staticData.id < r.staticData.id
|
|
end)
|
|
self.achivementCategoryGrid:ResetDatas(list)
|
|
self:RegistRedTip()
|
|
end
|
|
|
|
function AdventureAchievementPage:initTitleData()
|
|
local titleData = Table_Appellation[Game.Myself.data:GetAchievementtitle()]
|
|
if(titleData)then
|
|
self:Show(self.UserTitle.gameObject)
|
|
self.UserTitle.text = "["..titleData.Name.."]"
|
|
else
|
|
self:Hide(self.UserTitle.gameObject)
|
|
end
|
|
end
|
|
|
|
function AdventureAchievementPage:initData()
|
|
self:initCategoryData()
|
|
self:initTitleData()
|
|
end
|
|
|
|
function AdventureAchievementPage:RefreshListData( )
|
|
self:updateDescList(true)
|
|
end
|
|
|
|
function AdventureAchievementPage:RefreshHomeData( )
|
|
-- body
|
|
self:UpdateHead()
|
|
self:UpdateUserData()
|
|
self:awardTitleProp()
|
|
self:UpdateRecentAchieves()
|
|
self:updateAchieveTitle()
|
|
self:initTitleProp()
|
|
end
|
|
|
|
function AdventureAchievementPage:updateAchieveTitle()
|
|
|
|
local unlock,total = AdventureAchieveProxy.Instance:getTotalAchieveProgress()
|
|
local value = math.floor((unlock/total)*1000)/10
|
|
self.adventureAchievementTabTitle.text = string.format(ZhString.AdventureAchievePage_AchievementTabTitle,value)
|
|
end
|
|
|
|
function AdventureAchievementPage:initView()
|
|
self.gameObject = self:FindGO("AdventureAchievementPage")
|
|
|
|
self.adventureAchievementTabTitle = self:FindComponent("AdventureAchievementTabTitle",UILabel)
|
|
self.adventureProfileTitle = self:FindGO("AdventureProfileTitle")
|
|
|
|
self.categoryScrollView = self:FindComponent("AchievementCategoryScrollView", UIScrollView);
|
|
|
|
local categoryGrid = self:FindComponent("AchievementCategoryGrid",UITable)
|
|
self.achivementCategoryGrid = UIGridListCtrl.new(categoryGrid,AchievementCategoryCell,"AchievementCategoryCell")
|
|
self.achivementCategoryGrid:AddEventListener(AdventureAchievementPage.childGroupCellClick ,self.childGroupCellClick,self)
|
|
self.achivementCategoryGrid:AddEventListener(MouseEvent.MouseClick,self.categoryCellClick,self)
|
|
|
|
local recentAchieveList = self:FindComponent("recentAchieveList",UITable)
|
|
self.recentAchieveListGrid = UIGridListCtrl.new(recentAchieveList,AchievementDescriptionCell,"AchievementDescriptionCell")
|
|
self.recentAchieveListGrid:AddEventListener(MouseEvent.MouseClick ,self.recentAchieveDescCellClick,self)
|
|
self.thirdContent = self:FindGO("thirdContent")
|
|
self.fourthContent = self:FindGO("fourthContent")
|
|
|
|
local AchieveDescGrid = self:FindComponent("AchieveDescGrid",UITable)
|
|
self.achiveDescyGrid = UIGridListCtrl.new(AchieveDescGrid,AchievementDescriptionCell,"AchievementDescriptionCell")
|
|
self.achiveDescyGrid:AddEventListener(MouseEvent.MouseClick,self.achieveDescCellClick,self)
|
|
self.achiveDescyGrid:AddEventListener(AchievementDescriptionCell.SubAchieveClick,self.SubAchieveClickHandle,self)
|
|
|
|
self.changePfGrid = self:FindComponent("changeProfessionGrid",UIGrid)
|
|
self.changeProfessionGrid = UIGridListCtrl.new(self.changePfGrid,AchievementChangeProCell,"AchievementChangeProCell")
|
|
|
|
local SocialInfoGrid = self:FindComponent("SocialInfoGrid",UITable)
|
|
self.SocialInfoGrid = UIGridListCtrl.new(SocialInfoGrid,AchievementSocialCell,"AchievementSocialCell")
|
|
|
|
self.emptyContent = self:FindGO("EmptyContent")
|
|
local EmptyContentLabel = self:FindComponent("EmptyContentLabel",UILabel)
|
|
EmptyContentLabel.text = ZhString.AdventureAchievePage_EmptyContentLabel
|
|
|
|
self.BornAndToulInfo = self:FindComponent("BornAndToulInfo",UILabel)
|
|
|
|
local recentAchiveTitle = self:FindComponent("recentAchiveTitle",UILabel)
|
|
recentAchiveTitle.text = ZhString.AdventureAchievePage_RecentAchiveTitle
|
|
|
|
self.totalTourDis = self:FindComponent("totalTourDis",UILabel)
|
|
|
|
self.AchievementList = self:FindGO("AchievementList")
|
|
self.AchievementProfileView = self:FindGO("AchievementProfileView")
|
|
|
|
self.secondContent = self:FindGO("secondContent")
|
|
self.thirdContent = self:FindGO("thirdContent")
|
|
|
|
self.itemTabs = self:FindGO("ItemTabs"):GetComponent(UIPopupList)
|
|
self.ItemTabsBgSelect = self:FindGO("ItemTabsBgSelect"):GetComponent(UISprite)
|
|
EventDelegate.Add(self.itemTabs.onChange, function()
|
|
if self.selectTabData ~= self.itemTabs.data then
|
|
self.selectTabData = self.itemTabs.data
|
|
self:updateDescList()
|
|
end
|
|
end)
|
|
|
|
local PropShowBtn = self:FindGO("PropShowBtn")
|
|
self:AddClickEvent(PropShowBtn,function ( )
|
|
-- body
|
|
self.PropBord:SetActive(not self.PropBord.activeSelf)
|
|
end)
|
|
local PropShowBtnLabel = self:FindComponent("PropShowBtnLabel",UILabel)
|
|
PropShowBtnLabel.text = ZhString.AdventureAchievePage_PropShowBtnLabel
|
|
self.AchieveCategorySv = self:FindComponent("AchievementCategoryScrollView",UIScrollView)
|
|
self.AchieveCategoryPanel = self:FindComponent("AchievementCategoryScrollView",UIPanel)
|
|
|
|
self.AchieveListSv = self:FindComponent("AchieveListScrollView",UIScrollView)
|
|
self.AchieveListPanel = self:FindComponent("AchieveListScrollView",UIPanel)
|
|
|
|
self.AchieveProfileSv = self:FindComponent("AdventureProfileScrollView",UIScrollView)
|
|
self.AchieveProfilePanel = self:FindComponent("AdventureProfileScrollView",UIPanel)
|
|
|
|
local awardPropTitle =self:FindComponent("awardPropTitle",UILabel)
|
|
awardPropTitle.text = ZhString.AdventureAchievePage_AwardTitlePropTitle
|
|
self.awardPropAchieveList =self:FindComponent("awardPropAchieveList",UIGrid)
|
|
self.awardPropAchieveList = UIGridListCtrl.new(self.awardPropAchieveList,AdventureTitleBufferCell,"AdventureFoodRecipeCell")
|
|
|
|
self.PropBord = self:FindGO("PropBord")
|
|
self.PropBordScrollBg = self:FindComponent("PropBordScrollBg",UISprite)
|
|
self.bag_itemContainer = self:FindGO("bag_itemContainer")
|
|
self:Hide(self.PropBord)
|
|
self.propScrollView = self:FindComponent("propScrollView", ROUIScrollView);
|
|
self.propScrollView.OnStop = function ()
|
|
self:ScrollViewRevert();
|
|
end
|
|
end
|
|
|
|
function AdventureAchievementPage:childGroupCellClick( cellCtl )
|
|
if(cellCtl)then
|
|
-- helplog("childGroupCellClick",cellCtl.data.staticData.id)
|
|
self.itemTabs.value = AdventureAchievementPage.tabItems[1].name
|
|
self.subGroupData = cellCtl.data
|
|
self:updateDescList()
|
|
end
|
|
end
|
|
|
|
function AdventureAchievementPage:recentAchieveDescCellClick( cellCtl )
|
|
local cells = self.recentAchieveListGrid:GetCells()
|
|
if(cells and #cells>0)then
|
|
for i=1,#cells do
|
|
local cell = cells[i]
|
|
if(cell == cellCtl)then
|
|
cell:setSelected(not cell.isSelected)
|
|
else
|
|
cell:setSelected(false)
|
|
end
|
|
end
|
|
end
|
|
self.recentAchieveListGrid:Layout()
|
|
|
|
local bound = NGUIMath.CalculateRelativeWidgetBounds(self.AchieveProfilePanel.cachedTransform,cellCtl.gameObject.transform)
|
|
local offset = self.AchieveProfilePanel:CalculateConstrainOffset(bound.min,bound.max)
|
|
offset = Vector3(0,offset.y,0)
|
|
self.AchieveProfileSv:MoveRelative(offset)
|
|
-- self.AchieveProfileSv:RestrictWithinBounds(true)
|
|
end
|
|
|
|
function AdventureAchievementPage:achieveDescCellClick( cellCtl )
|
|
-- helplog("achieveDescCellClick",cellCtl.data.id)
|
|
local cells = self.achiveDescyGrid:GetCells()
|
|
if(cells and #cells>0)then
|
|
for i=1,#cells do
|
|
local cell = cells[i]
|
|
if(cell == cellCtl)then
|
|
cell:setSelected(not cell.isSelected)
|
|
else
|
|
cell:setSelected(false)
|
|
end
|
|
end
|
|
end
|
|
self.achiveDescyGrid:Layout()
|
|
|
|
local bound = NGUIMath.CalculateRelativeWidgetBounds(self.AchieveListPanel.cachedTransform,cellCtl.gameObject.transform)
|
|
local offset = self.AchieveListPanel:CalculateConstrainOffset(bound.min,bound.max)
|
|
offset = Vector3(0,offset.y,0)
|
|
self.AchieveListSv:MoveRelative(offset)
|
|
-- self.AchieveListSv:RestrictWithinBounds(true)
|
|
end
|
|
|
|
function AdventureAchievementPage:categoryCellClick( cellCtl )
|
|
-- helplog("categoryCellClick",cellCtl.data.staticData.id)
|
|
if(not cellCtl.isSelected)then
|
|
self.itemTabs.value = AdventureAchievementPage.tabItems[1].name
|
|
self:setCategoryData(cellCtl.data)
|
|
end
|
|
|
|
local cells = self.achivementCategoryGrid:GetCells()
|
|
if(cells and #cells>0)then
|
|
for i=1,#cells do
|
|
local cell = cells[i]
|
|
if(cell == cellCtl)then
|
|
cell:clickEvent()
|
|
cell:setSelected(true)
|
|
else
|
|
cell:setSelected(false)
|
|
end
|
|
end
|
|
end
|
|
self.achivementCategoryGrid:Layout()
|
|
end
|
|
|
|
function AdventureAchievementPage:changeToHomeCategory( result )
|
|
if(result)then
|
|
if(self.AchievementProfileView.activeSelf == false)then
|
|
self:Show(self.AchievementProfileView)
|
|
self:Hide(self.AchievementList)
|
|
return true
|
|
end
|
|
else
|
|
self:Hide(self.AchievementProfileView)
|
|
self:Show(self.AchievementList)
|
|
end
|
|
end
|
|
|
|
function AdventureAchievementPage:setCategoryData( data )
|
|
-- body
|
|
-- helplog("setCategoryData",data.staticData.id)
|
|
self.data = data
|
|
self.subGroupData = nil
|
|
if(data.staticData.id == AdventureAchieveProxy.HomeCategoryId)then
|
|
-- helplog("self:Show(self.AchievementProfileView)")
|
|
self:Show(self.AchievementProfileView)
|
|
self:Hide(self.AchievementList)
|
|
self:RefreshHomeData()
|
|
else
|
|
-- helplog("self:Show(self.AchievementList)")
|
|
self:Show(self.AchievementList)
|
|
self:Hide(self.AchievementProfileView)
|
|
self:RefreshListData()
|
|
end
|
|
end
|
|
|
|
function AdventureAchievementPage:updateDescList( noResetPos)
|
|
|
|
if(self.data and self.data.staticData.id ~= AdventureAchieveProxy.HomeCategoryId)then
|
|
local bagData = AdventureAchieveProxy.Instance.bagMap[self.data.staticData.id]
|
|
if(not bagData)then
|
|
return
|
|
end
|
|
local items
|
|
if(self.subGroupData)then
|
|
-- helplog("updateDescList1")
|
|
items = bagData:GetItems(self.subGroupData.staticData.id)
|
|
else
|
|
-- helplog("updateDescList2")
|
|
items = bagData:GetItems()
|
|
end
|
|
|
|
if(items and #items > 0)then
|
|
local list = {}
|
|
if(self.selectTabData)then
|
|
if(self.selectTabData.id == AdventureAchievementPage.filterId.all)then
|
|
list = items
|
|
elseif(self.selectTabData.id == AdventureAchievementPage.filterId.complete)then
|
|
for i=1,#items do
|
|
if(items[i]:getCompleteString())then
|
|
list[#list+1] = items[i]
|
|
end
|
|
end
|
|
elseif(self.selectTabData.id == AdventureAchievementPage.filterId.uncomplete)then
|
|
for i=1,#items do
|
|
if(not items[i]:getCompleteString())then
|
|
list[#list+1] = items[i]
|
|
end
|
|
end
|
|
end
|
|
end
|
|
self.achiveDescyGrid:ResetDatas(list)
|
|
self:Hide(self.emptyContent)
|
|
if(not noResetPos)then
|
|
self.AchieveListSv:ResetPosition()
|
|
end
|
|
else
|
|
self.achiveDescyGrid:ResetDatas()
|
|
self:Show(self.emptyContent)
|
|
end
|
|
end
|
|
end
|
|
|
|
function AdventureAchievementPage:checkSelect( )
|
|
-- body
|
|
if(self.itemTabs.isOpen)then
|
|
self:Show(self.ItemTabsBgSelect)
|
|
else
|
|
self:Hide(self.ItemTabsBgSelect)
|
|
end
|
|
end
|
|
|
|
function AdventureAchievementPage:OnExit()
|
|
TimeTickManager.Me():ClearTick(self)
|
|
EventManager.Me():RemoveEventListener(ServiceEvent.UserEventChangeTitle,self.HandleChangeTitle,self)
|
|
-- local cells = self.achivementCategoryGrid:GetCells()
|
|
-- if(cells and #cells>0)then
|
|
-- local cell = cells[1]
|
|
-- self:categoryCellClick(cell)
|
|
-- end
|
|
-- self.selectTabData = nil
|
|
-- self.subGroupData = nil
|
|
-- self.data = nil
|
|
-- self:Log("OnExit")
|
|
end
|
|
|
|
function AdventureAchievementPage:OnEnter()
|
|
-- body
|
|
TimeTickManager.Me():CreateTick(0,500,self.checkSelect,self)
|
|
self:requestAchieveData()
|
|
end
|
|
|
|
function AdventureAchievementPage:ShowSelf(viewdata)
|
|
self:Show()
|
|
-- helplog("AdventureAchievementPage:ShowSelf(viewdata)")
|
|
-- local changed = self:changeToHomeCategory(true)
|
|
self.categoryScrollView:ResetPosition()
|
|
self.AchieveProfileSv:ResetPosition()
|
|
self:initData()
|
|
self:RefreshHomeData()
|
|
-- if(changed)then
|
|
-- self:changeToHomeCategory(false)
|
|
-- end
|
|
local cells = self.achivementCategoryGrid:GetCells()
|
|
if(viewdata)then
|
|
local type = viewdata.type
|
|
local id = viewdata.id
|
|
-- self:Log("AdventureAchievementPage:ShowSelf(viewdata)",type,id)
|
|
if(cells and #cells>0)then
|
|
for i=1,#cells do
|
|
local cell = cells[i]
|
|
if(cell.data.staticData.id == type)then
|
|
-- self:Log("AdventureAchievementPage:ShowSelf(viewdata)",type,id)
|
|
if(not cell.isSelected)then
|
|
self:categoryCellClick(cell)
|
|
else
|
|
self:updateDescList()
|
|
end
|
|
local desCells = self.achiveDescyGrid:GetCells()
|
|
if(desCells and #desCells>0)then
|
|
for j=1,#desCells do
|
|
local single = desCells[j]
|
|
if(single.data.id == id)then
|
|
self:achieveDescCellClick(single)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
break
|
|
end
|
|
end
|
|
end
|
|
else
|
|
if(cells and #cells>0)then
|
|
local cell = cells[1]
|
|
self:categoryCellClick(cell)
|
|
end
|
|
end
|
|
end
|
|
|
|
function AdventureAchievementPage:ShowSubTitleAchieve(type,id)
|
|
|
|
local cells = self.achivementCategoryGrid:GetCells()
|
|
if(cells and #cells>0)then
|
|
for i=1,#cells do
|
|
local cell = cells[i]
|
|
if(cell.data.staticData.id == type)then
|
|
self:categoryCellClick(cell)
|
|
local desCells = self.achiveDescyGrid:GetCells()
|
|
if(desCells and #desCells>0)then
|
|
for j=1,#desCells do
|
|
local single = desCells[j]
|
|
if(single.data.id == id)then
|
|
self:achieveDescCellClick(single)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function AdventureAchievementPage:awardTitleProp()
|
|
local items = TitleProxy.Instance:GetAllTitleProp()
|
|
local tempArray = {};
|
|
for k, v in pairs(items) do
|
|
local cdata = {k, v};
|
|
table.insert(tempArray, cdata);
|
|
end
|
|
local x,y,z = LuaGameObject.GetLocalPosition(self.secondContent.transform)
|
|
local bd = NGUIMath.CalculateRelativeWidgetBounds(self.secondContent.transform,false)
|
|
local height = bd.size.y
|
|
|
|
if(height ~= 0)then
|
|
y = y - height - 20
|
|
end
|
|
if(#tempArray>0)then
|
|
self:Show(self.thirdContent)
|
|
self.awardPropAchieveList:ResetDatas(tempArray)
|
|
else
|
|
self.awardPropAchieveList:ResetDatas()
|
|
self:Hide(self.thirdContent)
|
|
end
|
|
local x1,y1,z1 = LuaGameObject.GetLocalPosition(self.thirdContent.transform)
|
|
tempVector3:Set(x1,y,z1)
|
|
self.thirdContent.transform.localPosition = tempVector3
|
|
end
|
|
|
|
function AdventureAchievementPage:sortItems(items)
|
|
table.sort(items,function ( l,r )
|
|
-- body
|
|
if(l:canGetReward() == r:canGetReward())then
|
|
if(l.finishtime == r.finishtime)then
|
|
return l.id < r.id
|
|
elseif(l.finishtime == nil)then
|
|
return false
|
|
elseif(r.finishtime == nil)then
|
|
return true
|
|
else
|
|
return l.finishtime > r.finishtime
|
|
end
|
|
else
|
|
-- helplog("left:canGetReward()",tostring(left:canGetReward()))
|
|
return l:canGetReward()
|
|
end
|
|
end)
|
|
end
|
|
|
|
function AdventureAchievementPage:UpdateRecentAchieves()
|
|
local items = AdventureAchieveProxy.Instance:GetLastTenAchieveDatas()
|
|
if(items and #items>0)then
|
|
self:Show(self.fourthContent)
|
|
if(#items <= 10)then
|
|
-- self:Log("UpdateRecentAchieves1")
|
|
self:sortItems(items)
|
|
self.recentAchieveListGrid:ResetDatas(items)
|
|
else
|
|
TableUtility.ArrayClear(tempArray)
|
|
for i=1,10 do
|
|
tempArray[#tempArray +1] = items[i]
|
|
end
|
|
-- self:Log("UpdateRecentAchieves2")
|
|
self:sortItems(tempArray)
|
|
self.recentAchieveListGrid:ResetDatas(tempArray)
|
|
end
|
|
|
|
local bd = NGUIMath.CalculateRelativeWidgetBounds(self.thirdContent.transform,false)
|
|
local height = bd.size.y
|
|
local x,y,z = LuaGameObject.GetLocalPosition(self.thirdContent.transform)
|
|
if(height ~= 0)then
|
|
y = y - height - 20
|
|
end
|
|
|
|
local x1,y1,z1 = LuaGameObject.GetLocalPosition(self.fourthContent.transform)
|
|
tempVector3:Set(x1,y,z1)
|
|
self.fourthContent.transform.localPosition = tempVector3
|
|
else
|
|
self:Hide(self.fourthContent)
|
|
end
|
|
end
|
|
|
|
function AdventureAchievementPage:UpdateUserData()
|
|
|
|
local createtime = AdventureAchieveProxy.Instance.createtime
|
|
local logintime = AdventureAchieveProxy.Instance.logintime
|
|
local dateStr = ""
|
|
local totalDays = "0"
|
|
if createtime and createtime >0 then
|
|
dateStr = os.date("%Y.%m.%d",createtime)
|
|
local pastTime = ServerTime.CurServerTime()/1000 - createtime
|
|
totalDays = pastTime/60/60/24
|
|
totalDays = math.floor(totalDays)
|
|
end
|
|
local text = string.format(ZhString.AdventureAchievePage_BornAndToulInfo,dateStr,totalDays,logintime)
|
|
self.BornAndToulInfo.text = text
|
|
self.totalTourDis.text = string.format(ZhString.AdventureAchievePage_TotalTourDis, AdventureAchieveProxy.Instance.walk_distance)
|
|
|
|
self:updateProfessionData()
|
|
self:updateSocialData()
|
|
end
|
|
|
|
function AdventureAchievementPage:updateProfessionData( )
|
|
-- body
|
|
local currentPf = Game.Myself.data:GetCurOcc()
|
|
local curCl = currentPf.professionData
|
|
|
|
local list = {}
|
|
local index = 0
|
|
while curCl and AdventureAchieveProxy.Instance.advanceClasses[curCl.id] do
|
|
index = index +1
|
|
list[index] = curCl.NameZh
|
|
curCl = AdventureAchieveProxy.Instance.advanceClasses[curCl.id]
|
|
end
|
|
|
|
TableUtility.ArrayClear(tempArray)
|
|
for i=1,AdventureAchieveProxy.Instance.currentCgPfNum do
|
|
local key = string.format("bepro_%s_time",i)
|
|
local value = AdventureAchieveProxy.Instance[key]
|
|
if(value and value > 0)then
|
|
if(i <= #list)then
|
|
local data = {
|
|
name = list[#list - i+1],
|
|
time = value,
|
|
}
|
|
tempArray[#tempArray+1] = data
|
|
end
|
|
end
|
|
end
|
|
self.changeProfessionGrid:ResetDatas(tempArray)
|
|
end
|
|
|
|
function AdventureAchievementPage:updateSocialData( )
|
|
-- body
|
|
local bd = NGUIMath.CalculateRelativeWidgetBounds(self.changePfGrid.transform,false)
|
|
local height = bd.size.y
|
|
TableUtility.ArrayClear(tempArray)
|
|
for i = 1,#AdventureAchievementPage.SocialID do
|
|
local key = AdventureAchievementPage.SocialID[i]
|
|
local value = AdventureAchieveProxy.Instance[key]
|
|
if(value and #value >0 )then
|
|
local data = {
|
|
id = AdventureAchievementPage.SocialIDPair[key],
|
|
value = value,
|
|
}
|
|
tempArray[#tempArray+1] = data
|
|
end
|
|
end
|
|
self.SocialInfoGrid:ResetDatas(tempArray)
|
|
local x,y,z = LuaGameObject.GetLocalPosition(self.changePfGrid.transform)
|
|
-- helplog("updateSocialData:height ",height,y,#tempArray)
|
|
if(height>0)then
|
|
y = y - height - 20
|
|
end
|
|
local x1,y1,z1 = LuaGameObject.GetLocalPosition(self.secondContent.transform)
|
|
tempVector3:Set(x1,y,z1)
|
|
self.secondContent.transform.localPosition = tempVector3
|
|
end
|
|
|
|
function AdventureAchievementPage: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:HideLevel()
|
|
self.targetCell:HideHpMp()
|
|
end
|
|
local headData = HeadImageData.new();
|
|
headData:TransByLPlayer(Game.Myself);
|
|
-- 臨時處理
|
|
headData.frame = nil;
|
|
headData.job = nil;
|
|
self.targetCell:SetData(headData);
|
|
end |