源战役客户端
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

252 lines
8.8 KiB

-- <*
-- @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