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

292 lines
8.9 KiB
Plaintext

local MainView = class("MainView",ContainerView)
MainView.ViewType = UIViewType.MainLayer
autoImport("HeadImageData");
autoImport("MainViewSkillPage");
autoImport("MainViewItemPage");
autoImport("MainViewInfoPage");
autoImport("MainViewMenuPage")
autoImport("MainUseEquipPopup")
autoImport("MainViewTeamPage");
autoImport("MainViewHeadPage");
autoImport("EndlessTowerConform")
autoImport("MainViewMiniMap")
autoImport("MainviewRaidTaskPage")
autoImport("MainViewAddTrace")
autoImport("MainViewChatMsgPage")
autoImport("MainViewAutoAimMonster")
autoImport("MainViewTraceInfoPage")
autoImport("MainViewAuctionPage")
autoImport("RaidCountMsg")
autoImport("MainviewActivityPage")
autoImport("MainViewRecallPage")
autoImport("QuestTraceCell")
autoImport("AdventureItemData")
MainViewShortCutBord = {
"ShortCutGrid",
"SkillBord",
}
function MainView:Init()
FunctionCDCommand.Me():StartCDProxy(ShotCutItemCDRefresher)
self:AddSubView("skillShortCutPage", MainViewSkillPage);
self.infoPage = self:AddSubView("infoPage", MainViewInfoPage);
self.menuPage = self:AddSubView("menu", MainViewMenuPage);
self:AddSubView("MainUseEquipPopup", MainUseEquipPopup);
self:AddSubView("TeamPage", MainViewTeamPage);
self:AddSubView("HeadPage", MainViewHeadPage);
self:AddSubView("MainViewItemPage", MainViewItemPage);
self:AddSubView("MainViewMiniMap", MainViewMiniMap);
self:AddSubView("MainviewRaidTaskPage", MainviewRaidTaskPage);
self:AddSubView("MainViewAddTrace",MainViewAddTrace)
self.chatMsgPage = self:AddSubView("MainViewChatMsgPage",MainViewChatMsgPage)
self:AddSubView("TraceInfoBord",MainViewTraceInfoPage)
self:AddSubView("MainviewActivityPage",MainviewActivityPage)
self.autoAimMonster = self:AddSubView("MainViewAutoAimMonster",MainViewAutoAimMonster)
self:AddSubView("MainViewRecallPage",MainViewRecallPage)
if not GameConfig.SystemForbid.Auction then
self:AddSubView("MainViewAuctionPage",MainViewAuctionPage)
end
self.mainBord = self:FindChild("MainBord");
--记录已经显示的界面
self.showViews = {};
self:FindObjs();
self:AddBtnListener();
self:MapViewListener();
self:TestFloat();
-- self:CheckMaskName()
end
function MainView:TestFloat()
local testButton = self:FindGO("TestFloat");
self.index = 0
-- testButton:SetActive(true)
self:AddClickEvent(testButton, function (g)
GameFacade.Instance:sendNotification(UIEvent.ShowUI, {viewname = "QuestManualView"})
end);
self:AddDoubleClickEvent(testButton, function (g)
print("Add Double Click!!");
self:sendNotification(PVPEvent.PVPDungeonShutDown)
self:sendNotification(ServiceEvent.FuBenCmdMonsterCountUserCmd, {num = 0});
end);
end
function MainView:CheckMaskName()
if FunctionMaskWord.Me():CheckMaskWord(Game.Myself.data.name,
FunctionMaskWord.MaskWordType.SpecialSymbol | FunctionMaskWord.MaskWordType.Chat | FunctionMaskWord.MaskWordType.SpecialName) then
self:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.ChangeNameView})
end
end
function MainView:FindObjs()
self.topFuncs = self:FindChild("TopRightFunc");
self.moreBord = self:FindChild("MoreBord");
self.mapBord = self:FindChild("MapBord");
self.Anchor_DownLeft=self:FindGO("Anchor_DownLeft");
self.raidMsgRoot = self:FindGO("RaidMsgPos")
self.questTraceBoard = self:FindGO("QuestTraceBoard")
-- self.questTraceBoardAlphaTween = self.questTraceBoard:GetComponent(TweenAlpha)
-- self.questTraceBoardScaleTween = self.questTraceBoard:GetComponent(TweenScale)
-- self.questTraceBoardAlphaTweenSec = self:FindGO("QuestTraceAlphaPanelSec"):GetComponent(TweenAlpha)
self.questTraceBoardCell = QuestTraceCell.new(self.questTraceBoard)
self:AddButtonEvent("QuestTraceClickDisappear",function ()
self.questTraceBoard:SetActive(false)
end)
end
function MainView:SetMainViewState(stateIndex)
if(stateIndex == 1)then
self.moreBord:SetActive(false);
self.mapBord:SetActive(false);
end
end
function MainView:OnEnter()
MainView.super.OnEnter(self)
end
function MainView:OnExit()
MainView.super.OnExit(self)
FunctionCDCommand.Me():GetCDProxy(ShotCutItemCDRefresher):RemoveAll()
end
function MainView:AddBtnListener()
self.showskill = false;
self:AddButtonEvent("changeBtn", function (go)
local key = self.showskill and "skill" or "func";
self.showskill = not self.showskill;
end);
end
function MainView:MapViewListener()
self:AddListenEvt(UIEvent.EnterView, self.HandleEnterView);
self:AddListenEvt(UIEvent.ExitView, self.HandleExitView);
self:AddListenEvt(MainViewEvent.ShowOrHide, self.HandleShowOrHide);
self:AddListenEvt(ServiceEvent.QuestQuestStepUpdate,self.UpdateQuestTraceBorad)
self:AddListenEvt(QuestEvent.ProcessChange,self.UpdateQuestTraceBorad)
-- self:AddListenEvt(ServiceEvent.QuestQuestUpdate,self.QuestUpdateTraceBorad)
self:AddListenEvt(QuestEvent.QuestDelete,self.questDelete)
self:AddListenEvt(MainViewEvent.ActiveShortCutBord, self.HandleActiveShortCutBord);
EventManager.Me():AddEventListener(SystemMsgEvent.RaidAdd,self.OnRaidMsg,self)
EventManager.Me():AddEventListener(SystemMsgEvent.RaidRemove,self.RemoveRaidMsg,self)
EventManager.Me():AddEventListener(ServiceEvent.PlayerMapChange, self.SceneLoadHandler, self)
EventManager.Me():AddEventListener(QuestManualEvent.BeforeGoClick, self.ShowQuestTraceBorad, self)
end
function MainView:SceneLoadHandler()
self:RemoveRaidMsg()
end
function MainView:OnRaidMsg(evt)
local data = evt.data
if(self.raidMsg == nil) then
self.raidMsg = RaidCountMsg.new(self.raidMsgRoot)
end
self.raidMsg:SetData(data)
end
function MainView:RemoveRaidMsg()
if(self.raidMsg) then
self.raidMsg:Exit()
self.raidMsg = nil
end
end
function MainView:HandleActiveShortCutBord(note)
local active = note.body == true;
self:ActiveShortCutBord(active);
end
function MainView:ActiveShortCutBord(b)
for i=1,#MainViewShortCutBord do
local go = self:FindGO(MainViewShortCutBord[i]);
if(go)then
go:SetActive(b);
end
end
end
-- 进入副本的时候topfuncs关闭
function MainView:HandleTopFuncActive(note)
local data = note.body;
if(data == nil)then
return;
end
if(note.type == LoadSceneEvent.FinishLoad)then
self.topFuncs:SetActive(data.dmapID == 0);
self:SetMainViewState(1);
end
end
function MainView:HandleShowOrHide(note)
self:ShowOrHideBord(note.body);
if note.body == true then
self.chatMsgPage:OnShow()
end
end
function MainView:HandleEnterView(note)
local enterView = note.body;
if(enterView.ViewType.hideMainView)then
self.showViews[enterView.ViewType.depth] = enterView;
for k,v in pairs(self.showViews) do
if(v~=nil)then
self:ShowOrHideBord(false);
return;
end
end
end
end
function MainView:HandleExitView(note)
local exitView = note.body;
if(exitView.ViewType.hideMainView)then
self.showViews[exitView.ViewType.depth] = nil;
local needShow = true;
for k,v in pairs(self.showViews) do
if(v~=nil)then
needShow = false;
end
end
self:ShowOrHideBord(needShow);
end
end
function MainView:ShowOrHideBord(isShow)
self.mainBord:SetActive(isShow);
local skillBord = self:FindGO("SkillBord");
skillBord:SetActive(isShow);
end
function MainView:OnShow()
if(self.viewMap)then
for _, viewCtl in pairs(self.viewMap)do
if(viewCtl and viewCtl.OnShow)then
viewCtl:OnShow();
end
end
end
end
function MainView:ShowQuestTraceBorad( cell )
self.questTraceBoard:SetActive(true)
-- self.questTraceBoardAlphaTween:ResetToBeginning()
-- self.questTraceBoardScaleTween:ResetToBeginning()
-- self.questTraceBoardAlphaTweenSec:ResetToBeginning()
-- self.questTraceBoardAlphaTween:PlayForward()
-- self.questTraceBoardScaleTween:PlayForward()
-- self.questTraceBoardAlphaTweenSec:PlayForward()
self.questTraceBoardCell:SetData( cell.data.data )
self.questTraceBoardCell:SetIsMainViewTrace()
EventManager.Me():DispatchEvent(QuestManualEvent.GoClick, self)
end
function MainView:QuestUpdateTraceBorad( note )
if self.questTraceBoard.activeSelf then
local newQuestData = QuestProxy.Instance:getSameQuestID(self.questTraceBoardCell.questId)
if newQuestData then
local cellData = {questData = newQuestData, type = newQuestData.questListType}
self.questTraceBoardCell:SetData( cellData )
end
end
end
function MainView:UpdateQuestTraceBorad( note )
if self.questTraceBoard.activeSelf then
local data = note.body
local questId = data.id
-- local newBigQuestId = math.floor(questId/10000)
-- local oldBigQuestId = math.floor(self.questTraceBoardCell.questId/10000)
if questId == self.questTraceBoardCell.questId then
local newQuestData = QuestProxy.Instance:getQuestDataByIdAndType(questId)
if newQuestData then
local cellData = {questData = newQuestData, type = newQuestData.questListType}
self.questTraceBoardCell:SetData( cellData )
end
end
end
end
function MainView:questDelete( note )
local data = note.body
for i=1,#data do
local single = data[i]
if single.id == self.questTraceBoardCell.questId then
-- local isShow = QuestProxy.Instance:HasSameQuestID(single.id) and true or false
self.questTraceBoard:SetActive(false)
break
end
end
end
return MainView