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

221 lines
6.6 KiB
Plaintext

AdventurePanel = class("AdventurePanel", ContainerView)
AdventurePanel.ViewType = UIViewType.NormalLayer
autoImport("AdventureCategoryCell")
autoImport("AdventureHomePage")
autoImport("AdventureResearchPage")
autoImport("AdventureItemNormalListPage")
autoImport("BeautifulAreaPhotoNetIngManager")
autoImport("AdventureAchievementPage")
autoImport("AdventureFoodPage")
AdventurePanel.Category = GameConfig.AdventureCategoryConfig
function AdventurePanel:GetShowHideMode()
return PanelShowHideMode.MoveOutAndMoveIn
end
function AdventurePanel:Init()
self:initView()
end
function AdventurePanel:OnEnter( )
-- body
-- printRed("AdventurePanel:OnEnter( )")
self.super.OnEnter(self)
self:initData()
-- printRed("function AdventurePanel:OnEnter( )")
BeautifulAreaPhotoNetIngManager.Ins():OnSwitchOn()
self:RegistRedTip()
self:resetCategory()
local manager_Camera = Game.GameObjectManagers[Game.GameObjectType.Camera]
manager_Camera:ActiveMainCamera(false);
end
function AdventurePanel:RegistRedTip( )
-- body
if(self.redData)then
for i=1,#self.redData do
local single = self.redData[i]
self:RegisterRedTipCheck(single.id,single.obj,nil,single.offset)
end
end
end
function AdventurePanel:OnExit()
self.super.OnExit(self)
local manager_Camera = Game.GameObjectManagers[Game.GameObjectType.Camera]
manager_Camera:ActiveMainCamera(true);
-- printRed("AdventurePanel:OnExit( )")
BeautifulAreaPhotoNetIngManager.Ins():OnSwitchOff()
self.currentKey = nil
-- printRed("function AdventurePanel:OnExit()")
end
function AdventurePanel:handleRegistRedTip( data )
-- body
if(data)then
-- printRed(data.id)
-- printRed(data.obj)
-- self:Log("regist",data.offset)
end
end
function AdventurePanel:initView( )
-- body
self.adventureHomePage = self:AddSubView("AdventureHomePage",AdventureHomePage)
self.itemListPage = self:AddSubView("SceneryNormalListPage",AdventureItemNormalListPage)
self.researchPage = self:AddSubView("AdventureResearchPage",AdventureResearchPage)
self.achievePage = self:AddSubView("AdventureAchievementPage",AdventureAchievementPage)
self.adventureFoodPage = self:AddSubView("AdventureFoodPage",AdventureFoodPage)
local CategoryListTable = self:FindGO("categoryList"):GetComponent(UIGrid)
self.categoryList = UIGridListCtrl.new(CategoryListTable,AdventureCategoryCell,"AdventureCategoryCell")
self.categorSv = self:FindComponent("ScrollView",UIScrollView,self:FindGO("toggles"))
--解決關閉相機背景
-- local maskBg = self:FindGO("maskBg")
-- if ApplicationInfo.IsIphoneX() and maskBg then
-- self:Hide(maskBg)
-- end
end
function AdventurePanel:initData( )
-- body
local list = {}
for k,v in pairs(AdventureDataProxy.Instance.categoryDatas) do
local menuId = v.staticData.MenuID
if(v.staticData.Position and v.staticData.Position > 1 and ((menuId and FunctionUnLockFunc.Me():CheckCanOpen(menuId)) or not menuId))then
table.insert(list,v)
end
end
table.sort(list,function ( l,r )
-- body
return l.staticData.Order < r.staticData.Order
end)
self.categoryList:ResetDatas(list)
local cells = self.categoryList:GetCells()
self.redData = {}
for i=1,#cells do
local singleCell = cells[i]
self:AddTabChangeEvent(singleCell.gameObject,nil,singleCell)
local redTipIds = AdventureDataProxy.Instance:getRidTipsByCategoryId(singleCell.data.staticData.id)
for j=1,#redTipIds do
local single = redTipIds[j]
local data = {}
data.id = single
data.obj = singleCell.icon
data.offset = {-5,-5}
table.insert(self.redData,data)
end
end
end
function AdventurePanel:resetCategory( )
-- body
local cells = self.categoryList:GetCells()
if(cells and #cells >0)then
if(self.viewdata.viewdata.achieveData)then
for i=1,#cells do
if(cells[i].data.staticData.id == SceneManual_pb.EMANUALTYPE_ACHIEVE)then
self:TabChangeHandler(cells[i])
break
end
end
else
self:TabChangeHandler(cells[1])
end
end
self:adjustItemPos()
end
function AdventurePanel:TabChangeHandler(cell)
-- body
if(self.currentKey ~=cell)then
AdventurePanel.super.TabChangeHandler(self,cell)
self:handleCategoryClick(cell)
self.currentKey = cell
end
end
function AdventurePanel:addListEventListener( )
-- body
-- self:AddListenEvt(QuestEvent.QuestDelete,self.questDelete)
-- self:AddListenEvt(ServiceEvent.QuestQuestDetailUpdate,self.QuestQuestDetailUpdate)
-- self:AddListenEvt(ServiceEvent.QuestQuestDetailList,self.QuestQuestDetailUpdate)
end
function AdventurePanel:handleCategorySelect( data )
-- body
if(data.staticData.id == SceneManual_pb.EMANUALTYPE_HOMEPAGE)then
self.adventureHomePage:Show()
self.adventureFoodPage:Hide()
self.itemListPage:Hide()
self.researchPage:Hide()
self.achievePage:Hide()
elseif(data.staticData.id == SceneManual_pb.EMANUALTYPE_ACHIEVE)then
self.researchPage:Hide()
self.adventureFoodPage:Hide()
self.adventureHomePage:Hide()
self.itemListPage:Hide()
self.achievePage:ShowSelf(self.viewdata.viewdata.achieveData)
self.viewdata.viewdata.achieveData = nil
elseif(data.staticData.id == SceneManual_pb.EMANUALTYPE_RESEARCH)then
self.adventureFoodPage:Hide()
self.researchPage:ShowSelf()
self.adventureHomePage:Hide()
self.itemListPage:Hide()
self.achievePage:Hide()
elseif(data.staticData.id == 18)then
self.adventureFoodPage:ShowSelf()
self.adventureHomePage:Hide()
self.itemListPage:Hide()
self.achievePage:Hide()
self.researchPage:Hide()
else
self.adventureFoodPage:Hide()
self.itemListPage:Show()
self.researchPage:Hide()
self.itemListPage:setCategoryData(data)
self.adventureHomePage:Hide()
self.achievePage:Hide()
end
end
function AdventurePanel:handleCategoryClick( child )
-- body
self:handleCategorySelect(child.data)
local cells = self.categoryList:GetCells()
for i=1,#cells do
local single = cells[i]
if single == child then
single:setIsSelected(true)
else
single:setIsSelected(false)
end
end
end
function AdventurePanel:adjustItemPos( )
-- body
self.categorSv:ResetPosition()
end
function AdventurePanel.OpenAchievePageById( achieveId )
-- body
local type = AdventureAchieveProxy.Instance:getTopCategoryIdByAchiveId(achieveId)
if(type)then
GameFacade.Instance:sendNotification(UIEvent.JumpPanel,{view = PanelConfig.AdventurePanel, viewdata = {achieveData = {type = type,id = achieveId}}});
else
helplog("can't find type:",achieveId);
end
end
function AdventurePanel.OpenAchievePage( type,achieveId )
-- body
if(Table_Achievement[type] and Table_Achievement[achieveId])then
GameFacade.Instance:sendNotification(UIEvent.JumpPanel,{view = PanelConfig.AdventurePanel, viewdata = {achieveData = {type = type,id = achieveId}}});
end
end