182 lines
4.5 KiB
Plaintext
182 lines
4.5 KiB
Plaintext
autoImport("TabView")
|
|
BaseView = class("BaseView", TabView)
|
|
|
|
BaseView.ViewType = UIViewType.NormalBg
|
|
|
|
function BaseView:ctor(viewObj, viewdata, uiMediator)
|
|
BaseView.super.ctor(self, viewObj);
|
|
|
|
self.viewdata = viewdata;
|
|
self.filtersWhenViewOpen = self.viewdata.view and GameConfig.FilterType.UIFilter[self.viewdata.view.id] or nil
|
|
-- 建立mediator
|
|
-- self.mediatorName = mediatorName or viewdata.viewname;
|
|
-- self.uiMediator = UIMediator.new(self.mediatorName, self);
|
|
self.uiMediator = uiMediator
|
|
|
|
self.viewName = viewdata.viewname;
|
|
self.disPatherEvt = {};
|
|
|
|
self:AddCloseButtonEvent();
|
|
self:Init();
|
|
end
|
|
|
|
function BaseView:GetShowHideMode()
|
|
return PanelShowHideMode.CreateAndDestroy
|
|
end
|
|
|
|
function BaseView:MediatorReActive()
|
|
return true
|
|
end
|
|
|
|
function BaseView:Init() end
|
|
|
|
function BaseView:OnShow() end
|
|
|
|
function BaseView:OnHide() end
|
|
|
|
function BaseView:OnEnter()
|
|
-- if self.uiMediator ~= nil then
|
|
-- GameFacade.Instance:registerMediator(self.uiMediator);
|
|
-- end
|
|
|
|
if(self.filtersWhenViewOpen~=nil) then
|
|
FunctionSceneFilter.Me():StartFilter(self.filtersWhenViewOpen);
|
|
end
|
|
if(self.disPatherEvt~=nil)then
|
|
for evt,func in pairs(self.disPatherEvt) do
|
|
EventManager.Me():AddEventListener(evt, func, self);
|
|
end
|
|
end
|
|
|
|
-- isNpcFunc
|
|
local viewdata = self.viewdata and self.viewdata.viewdata;
|
|
if(type(viewdata) == "table")then
|
|
local isNpcFuncView = viewdata.isNpcFuncView;
|
|
if(isNpcFuncView)then
|
|
FunctionVisitNpc.Me():AddVisitRef()
|
|
end
|
|
end
|
|
end
|
|
|
|
function BaseView:OnExit()
|
|
-- if self.uiMediator ~= nil then
|
|
-- GameFacade.Instance:removeMediator(self.mediatorName);
|
|
-- end
|
|
self:UnRegisterRedTipChecks()
|
|
if(self.filtersWhenViewOpen~=nil) then
|
|
FunctionSceneFilter.Me():EndFilter(self.filtersWhenViewOpen);
|
|
end
|
|
if(self.disPatherEvt~=nil)then
|
|
for evt,func in pairs(self.disPatherEvt) do
|
|
EventManager.Me():RemoveEventListener(evt, func,self);
|
|
end
|
|
self.disPatherEvt = nil;
|
|
end
|
|
|
|
--handle the guide quest
|
|
if(self.ViewType)then
|
|
local list = GuideProxy.Instance:getGuideListByViewName(self.__cname)
|
|
-- printRed("BaseView:OnExit viewName:"..self.__cname)
|
|
if(list)then
|
|
FunctionGuide.Me():checkGuideStateWhenExit(list)
|
|
end
|
|
end
|
|
|
|
-- isNpcFunc
|
|
local viewdata = self.viewdata and self.viewdata.viewdata;
|
|
if(type(viewdata) == "table")then
|
|
local isNpcFuncView = viewdata.isNpcFuncView;
|
|
if(isNpcFuncView)then
|
|
FunctionVisitNpc.Me():RemoveVisitRef()
|
|
end
|
|
end
|
|
end
|
|
|
|
function BaseView:RegisterRedTipCheck(id,uiwidget,depth,offset,side)
|
|
self.RedTipChecks = self.RedTipChecks or {}
|
|
local checks = self.RedTipChecks[id]
|
|
if(not checks) then
|
|
checks = {}
|
|
self.RedTipChecks[id] = checks
|
|
end
|
|
if(checks[uiwidget]==nil) then
|
|
checks[uiwidget] = uiwidget
|
|
RedTipProxy.Instance:RegisterUI(id,uiwidget,depth,offset,side)
|
|
end
|
|
end
|
|
|
|
function BaseView:RegisterRedTipCheckByIds( ids,uiwidget,depth,offset,side)
|
|
-- body
|
|
if(ids)then
|
|
for i=1,#ids do
|
|
self:RegisterRedTipCheck(ids[i],uiwidget,depth,offset,side)
|
|
end
|
|
end
|
|
end
|
|
|
|
function BaseView:UnRegisterRedTipChecks()
|
|
if(self.RedTipChecks) then
|
|
for k,v in pairs(self.RedTipChecks) do
|
|
for kui,vui in pairs(v) do
|
|
RedTipProxy.Instance:UnRegisterUI(k,vui)
|
|
end
|
|
end
|
|
self.RedTipChecks = nil
|
|
end
|
|
end
|
|
|
|
function BaseView:AddCloseButtonEvent()
|
|
self:AddButtonEvent("CloseButton", function (go)
|
|
self:CloseSelf();
|
|
end);
|
|
end
|
|
|
|
function BaseView:CloseSelf()
|
|
-- self:sendNotification(UIEvent.CloseUI,self.ViewType)
|
|
self:sendNotification(UIEvent.CloseUI,self)
|
|
end
|
|
|
|
-- 新增監聽事件
|
|
function BaseView:AddListenEvt(interest, func)
|
|
if(interest)then
|
|
self.interests = self.interests or {};
|
|
table.insert(self.interests, interest);
|
|
|
|
self.ListenerEvtMap = self.ListenerEvtMap or {};
|
|
self.ListenerEvtMap[interest] = func;
|
|
else
|
|
printRed("Event name is nil");
|
|
end
|
|
end
|
|
|
|
-- 新增EventManager的監聽事件
|
|
function BaseView:AddDispatcherEvt(evtname, func)
|
|
self.disPatherEvt = self.disPatherEvt or {};
|
|
self.disPatherEvt[evtname] = func;
|
|
end
|
|
|
|
-- 使用 uimediator 發送訊息
|
|
function BaseView:sendNotification(notificationName, body, type)
|
|
self.uiMediator:sendNotification(notificationName, body, type);
|
|
end
|
|
|
|
function BaseView:GotoView(data)
|
|
self:sendNotification(UIEvent.JumpPanel,data)
|
|
end
|
|
|
|
function BaseView:CheckViewCanOpen(id)
|
|
return FunctionUnLockFunc.Me():CheckCanOpenByPanelId(id)
|
|
end
|
|
|
|
function BaseView:listNotificationInterests()
|
|
return self.interests or {};
|
|
end
|
|
|
|
function BaseView:handleNotification(note)
|
|
if(self.ListenerEvtMap ~= nil) then
|
|
local evt = self.ListenerEvtMap[note.name]
|
|
if(evt~=nil) then
|
|
evt(self,note)
|
|
end
|
|
end
|
|
end |