|
-- <*
|
|
-- @Author: Saber
|
|
-- @Description: 社团主界面
|
|
-- *>
|
|
|
|
GuildMainView = GuildMainView or BaseClass(BaseView)
|
|
local GuildMainView = GuildMainView
|
|
|
|
GuildMainView.Tab_List = {
|
|
{id = Config.ConfigGuild.TabId.Apply, name = "申请", module_id = 400, open_lv = 0, open_task = 0},
|
|
{id = Config.ConfigGuild.TabId.MainInfo, name = "主页", module_id = 400, open_lv = 0, open_task = 0},
|
|
{id = Config.ConfigGuild.TabId.List, name = "列表", module_id = 400, open_lv = 0, open_task = 0},
|
|
{id = Config.ConfigGuild.TabId.Active, name = "活跃", module_id = 400, sub_id = 2},
|
|
{id = Config.ConfigGuild.TabId.Order, name = "拼单", module_id = 400, sub_id = 3},
|
|
{id = Config.ConfigGuild.TabId.Shop, name = "商城", module_id = 400, sub_id = 4},
|
|
{id = Config.ConfigGuild.TabId.Event, name = "活动", module_id = 400, sub_id = 5},
|
|
}
|
|
function GuildMainView:__init()
|
|
self.base_file = "guild"
|
|
self.layout_file = "GuildMainView"
|
|
self.layer_name = "UI"
|
|
self.destroy_imm = true
|
|
self.view_list = {} -- 子界面列表
|
|
self.change_scene_close = true --是否切换场景时关闭(弹出界面使用)
|
|
self.append_to_ctl_queue = true --是否要添加进界面堆栈
|
|
--self.need_show_money = false --是否要显示顶部的金钱栏
|
|
self.tab_index = 1 -- 当前页签id
|
|
self.hide_maincancas = true
|
|
self.is_set_zdepth = true
|
|
self.use_background = G_USING_BG
|
|
self.blur_activity_bg = true
|
|
self.use_show_anim = true
|
|
self.use_hide_anim = true
|
|
self.is_trigger_guide = false
|
|
|
|
self.model = GuildModel:getInstance()
|
|
|
|
self.load_callback = function ()
|
|
self:LoadSuccess()
|
|
self:AddEvent()
|
|
self.model:Fire(GuildModel.REQUEST_CCMD_EVENT,40005)
|
|
self:UpdateTabRed()
|
|
end
|
|
self.open_callback = function ( )
|
|
self:OpenSuccess()
|
|
end
|
|
self.switch_callback = function(index)
|
|
self:SwitchTab(index, true)
|
|
end
|
|
self.destroy_callback = function ( )
|
|
self:DestroySuccess()
|
|
end
|
|
end
|
|
|
|
function GuildMainView:Open(tab_index)
|
|
--self.data = data
|
|
self.tab_index = tab_index or 1
|
|
BaseView.Open(self)
|
|
end
|
|
|
|
function GuildMainView:LoadSuccess()
|
|
local nodes = {
|
|
"container",
|
|
}
|
|
self:GetChildren(nodes)
|
|
local function select_callback(index)
|
|
self:SwitchTab(index)
|
|
end
|
|
local function close_callback()
|
|
self:Close()
|
|
end
|
|
local tab_list = self:GetGuildTabData()
|
|
self.tabWindowComponent = UITabWindow.New(self.transform, tab_list, select_callback, close_callback, self.background_wnd, nil, UITabWindow.SizeSmallHall, nil, nil, true)
|
|
self.tabWindowComponent:SetTitleText("社团")
|
|
self.tabWindowComponent:ChangeShowFlag("Guild")
|
|
self:AddToStageHandler()
|
|
end
|
|
|
|
function GuildMainView:AddEvent()
|
|
local function update_red(view_type)
|
|
self:UpdateTabRed(view_type)
|
|
end
|
|
self:BindEvent(self.model, GuildModel.UPDATE_RED_DOT_BY_TYPE, update_red)
|
|
|
|
local function update_tab_list()
|
|
self:RefreshGuildTabData(true) -- true代表协议刷新,不要出现手动跳转页签时会出现的飘字
|
|
end
|
|
self:BindEvent(self.model, GuildModel.RefreshGuildInfoEvt, update_tab_list)
|
|
|
|
local function onGuideTrigger()
|
|
self:AddToStageHandler()
|
|
end
|
|
self:BindEvent(GlobalEventSystem, EventName.TRIGGER_GUIDE_TYPE, onGuideTrigger)
|
|
end
|
|
|
|
function GuildMainView:OpenSuccess()
|
|
self:SwitchTab(self.tab_index)
|
|
end
|
|
|
|
function GuildMainView:GetGuildTabData( )
|
|
local guild_info = self.model:GetGuildBaseInfo()
|
|
self.last_cache_guild_id = self.last_cache_guild_id or guild_info.guild_id or nil
|
|
self.is_joined_guild = guild_info.guild_id and guild_info.guild_id ~= 0 or false
|
|
self.tab_index = self.is_joined_guild and self.tab_index or Config.ConfigGuild.TabId.Apply -- 未加入社团的只能看第一个页签
|
|
local tab_list = {}
|
|
for k, v in ipairs(GuildMainView.Tab_List) do
|
|
if v.id == Config.ConfigGuild.TabId.Apply then
|
|
if not self.is_joined_guild then
|
|
tab_list[#tab_list+1] = v
|
|
end
|
|
elseif v.id == Config.ConfigGuild.TabId.MainInfo then
|
|
if self.is_joined_guild then
|
|
tab_list[#tab_list+1] = v
|
|
end
|
|
else
|
|
tab_list[#tab_list+1] = v
|
|
end
|
|
end
|
|
return tab_list
|
|
end
|
|
|
|
function GuildMainView:RefreshGuildTabData(hide_msg)
|
|
local guild_info = self.model:GetGuildBaseInfo()
|
|
local cur_guild_id = guild_info.guild_id or 0
|
|
if self.tabWindowComponent and (not self.last_cache_guild_id or self.last_cache_guild_id ~= cur_guild_id) then
|
|
self.hide_tips_msg = hide_msg
|
|
local new_tab_list = self:GetGuildTabData()
|
|
self.tab_index = self.is_joined_guild and Config.ConfigGuild.TabId.MainInfo or Config.ConfigGuild.TabId.Apply -- 强制刷新页签
|
|
self.tabWindowComponent:RefeshTabbar(new_tab_list, nil, nil, true)
|
|
self.last_cache_guild_id = guild_info.guild_id
|
|
self:UpdateTabRed()
|
|
end
|
|
end
|
|
|
|
function GuildMainView:UpdateView()
|
|
if self.tab_index == Config.ConfigGuild.TabId.Apply then -- 申请界面
|
|
if not self.view_list[self.tab_index] then
|
|
self.view_list[self.tab_index] = GuildApplyView.New(self.container, nil, self.layer_name)
|
|
end
|
|
self.tabWindowComponent:SetBackgroundRes("guild_apply_bg")
|
|
elseif self.tab_index == Config.ConfigGuild.TabId.MainInfo then -- 主信息界面
|
|
if not self.view_list[self.tab_index] then
|
|
self.view_list[self.tab_index] = GuildInfoView.New(self.container, nil, self.layer_name)
|
|
end
|
|
self.tabWindowComponent:SetBackgroundRes("guild_info_bg")
|
|
elseif self.tab_index == Config.ConfigGuild.TabId.List then -- 列表界面
|
|
if not self.view_list[self.tab_index] then
|
|
self.view_list[self.tab_index] = GuildListView.New(self.container, nil, self.layer_name)
|
|
end
|
|
self.tabWindowComponent:SetBackgroundRes("guild_list_bg")
|
|
elseif self.tab_index == Config.ConfigGuild.TabId.Active then -- 社团活跃界面
|
|
if not self.view_list[self.tab_index] then
|
|
self.view_list[self.tab_index] = GuildActiveView.New(self.container, nil, self.layer_name)
|
|
end
|
|
self.tabWindowComponent:SetBackgroundRes("guild_active_bg")
|
|
elseif self.tab_index == Config.ConfigGuild.TabId.Order then -- 社团派单界面
|
|
if not self.view_list[self.tab_index] then
|
|
self.view_list[self.tab_index] = GuildSpellListView.New(self.container, nil, self.layer_name)
|
|
end
|
|
self.tabWindowComponent:SetBackgroundRes("default_bg_6")
|
|
elseif self.tab_index == Config.ConfigGuild.TabId.Shop then -- 社团商城界面
|
|
if not self.view_list[self.tab_index] then
|
|
self.view_list[self.tab_index] = GuildShopView.New(self.container, nil, self.layer_name)
|
|
end
|
|
-- 如果存在商城红点,进入页签后销毁红点
|
|
if self.model:GetGuildRedDotCache(Config.ConfigGuild.TabId.Shop) then
|
|
self.model.show_guild_shop_red = false
|
|
self.model:CheckGuildRedDot(Config.ConfigGuild.TabId.Shop, true)
|
|
end
|
|
self.tabWindowComponent:SetBackgroundRes("default_bg_6")
|
|
elseif self.tab_index == Config.ConfigGuild.TabId.Event then -- 社团活动界面
|
|
if not self.view_list[self.tab_index] then
|
|
self.view_list[self.tab_index] = GuildEventView.New(self.container, nil, self.layer_name)
|
|
end
|
|
self.tabWindowComponent:SetBackgroundRes("default_bg_6")
|
|
end
|
|
-- 判断是否在社团拼单界面
|
|
self.model._is_in_guild_spelllist_view = self.tab_index == Config.ConfigGuild.TabId.Order
|
|
self:PopUpChild(self.view_list[self.tab_index])
|
|
end
|
|
|
|
-- show_msg:提醒加入社团飘字
|
|
function GuildMainView:SwitchTab( index )
|
|
if self.is_joined_guild then
|
|
if index == Config.ConfigGuild.TabId.Apply then
|
|
self.tab_index = Config.ConfigGuild.TabId.MainInfo
|
|
else
|
|
self.tab_index = index
|
|
end
|
|
else
|
|
if index ~= Config.ConfigGuild.TabId.Apply then
|
|
self.tab_index = Config.ConfigGuild.TabId.Apply
|
|
if not self.hide_tips_msg then
|
|
Message.show("请先加入社团")
|
|
else
|
|
self.hide_tips_msg = false
|
|
end
|
|
end
|
|
end
|
|
|
|
--设置页签索引值切换主页面
|
|
if self.tabWindowComponent then
|
|
self.tabWindowComponent:SetTabBarIndex(self.tab_index)
|
|
end
|
|
self:UpdateView()
|
|
end
|
|
|
|
function GuildMainView:UpdateTabRed( view_type )
|
|
local red_cache = self.model:GetGuildRedDotCache(view_type)
|
|
if view_type then
|
|
self.tabWindowComponent:ShowRedPoint(view_type, red_cache)
|
|
else
|
|
for k, v in pairs(Config.ConfigGuild.TabId) do
|
|
self.tabWindowComponent:ShowRedPoint(v, red_cache[v] or false)
|
|
end
|
|
end
|
|
end
|
|
|
|
function GuildMainView:DestroySuccess( )
|
|
for k, v in pairs(self.view_list) do
|
|
v:DeleteMe()
|
|
v = nil
|
|
end
|
|
self.view_list = {}
|
|
|
|
if self.tabWindowComponent then
|
|
self.tabWindowComponent:DeleteMe()
|
|
self.tabWindowComponent = nil
|
|
end
|
|
end
|
|
|
|
function GuildMainView:AddToStageHandler()
|
|
local helpVo = GuideModel:getInstance():GetHelpVo(HelpType.TYPE_GUILD,3)
|
|
if not helpVo then return end
|
|
local help_type = helpVo.help_type
|
|
if (help_type == HelpType.TYPE_GUILD) then
|
|
local step = helpVo.step
|
|
local button = false
|
|
if (help_type == HelpType.TYPE_GUILD) and step == 3 then
|
|
self.is_trigger_guide = true
|
|
end
|
|
end
|
|
end
|
|
|
|
function GuildMainView:Close( )
|
|
if self.is_trigger_guide then
|
|
GlobalEventSystem:Fire(EventName.FORCE_TO_DO_TASK)
|
|
end
|
|
BaseView.Close(self)
|
|
-- 重置变量
|
|
self.model._is_in_guild_spelllist_view = false
|
|
end
|