|
|
- -- <*
- -- @Author: Saber
- -- @Description: 人员管理界面
- -- *>
- GuildListView = GuildListView or BaseClass(BaseItem)
- local GuildListView = GuildListView
-
- function GuildListView:__init(parent_wnd,prefab_asset,layer_name)
- self.base_file = "guild"
- self.layout_file = "GuildListView"
- self.parent_wnd = parent_wnd
- self.layer_name = layer_name
- self.tab_index = 1 -- 页签索引(1成员列表,2社团列表)
- self.model = GuildModel:getInstance()
- self.model:Fire(GuildModel.RequestMemberViewMemberInfoEvt) -- 请求成员信息
- self.model:Fire(GuildModel.REQUEST_CCMD_EVENT, 40008) -- 请求申请列表
- self.mem_sort_type = 1 -- 社团成员战力排序规则
- -- 申请社团排行相关
- self.guild_rank_list = {} -- 社团列表
- self.sroll_end_req_evt = false -- 滑动到底时请求协议
- self.cur_page = 1 -- 当前加载了多少页的社团数据(搜索用)
- self.rank_req_flag = 1 -- 当前加载的排行榜开始标识(默认从1开始请求)
- self.rank_max_num = 100 -- 当前榜单最大数据量
- self.total_page = 0 -- 总页数
- self.page_size = 15 --向服务器发送一页的个数
- self.first_switch_tab2 = true -- 首次切换到社团列表标志量
- self:Load()
- end
-
- function GuildListView:Load_callback()
- local nodes = {
- -- 顶部页签
- "tab_btn1:obj:img", "tab_btn1/tab1_str:tmp",
- "tab_btn2:obj:img", "tab_btn2/tab2_str:tmp",
- -- 成员管理页签相关
- "mem_btn_con:obj",
- "mem_btn_con/posmgr_btn:obj:imgex", "mem_btn_con/apply_btn:obj:imgex", "mem_btn_con/recruit_btn:obj:imgex",
- "member_scroll:obj", "member_scroll/Viewport/member_con", "member_scroll/Viewport/member_con/pos_scroll_con:obj",
- "memlist_title:obj", "memlist_title/t_r_power:obj", "memlist_title/t_r_onlineFlag:obj",
- "memlist_title/r_power_arrow:obj", "memlist_title/r_online_arrow:obj",
- "mem_btn_con/apply_btn/apply_red:obj",
- -- 社团列表页签相关
- "guildlist_title:obj",
- "guild_scroll:obj", "guild_scroll/Viewport/guild_con",
- }
- self:GetChildren(nodes)
- -- 初始化箭头方向
- SetLocalScale(self.r_online_arrow, 1, 1, 1)
- self:AddEvents()
- self:SwitchTab(1)
- self:UpdateApplyBtnRed()
- end
-
- function GuildListView:AddEvents( )
- local function click_event(target)
- if target == self.tab_btn1_obj then -- 点击页签1
- self:SwitchTab(1)
- elseif target == self.tab_btn2_obj then -- 点击页签2
- self:SwitchTab(2)
- elseif target == self.posmgr_btn_obj then -- 社团职位任命
- self.model:Fire(GuildModel.OPEN_GUILD_POS_ALLOT_VIEW, true)
- elseif target == self.apply_btn_obj then -- 社团申请列表
- self.model:Fire(GuildModel.OPEN_GUILD_APPLY_MGR_VIEW, true)
- elseif target == self.recruit_btn_obj then -- 社团招募
- self.model:SendRecruitMsg()
- self:OnCloseGuide()
- elseif target == self.t_r_power_obj then -- 社团成员战力排序
- self:SwitchSortType(self.r_power_arrow.localScale.y < 0 and 1 or 2)
- elseif target == self.t_r_onlineFlag_obj then -- 社团成员战力排序
- self:SwitchSortType(self.r_online_arrow.localScale.y < 0 and 4 or 3)
- end
- end
- AddClickEvent(self.tab_btn1_obj, click_event, LuaSoundManager.SOUND_UI.SWITCH)
- AddClickEvent(self.tab_btn2_obj, click_event, LuaSoundManager.SOUND_UI.SWITCH)
- AddClickEvent(self.posmgr_btn_obj, click_event, LuaSoundManager.SOUND_UI.NONE)
- AddClickEvent(self.apply_btn_obj, click_event, LuaSoundManager.SOUND_UI.NONE)
- AddClickEvent(self.recruit_btn_obj, click_event)
- AddClickEvent(self.t_r_power_obj, click_event, LuaSoundManager.SOUND_UI.SWITCH)
- AddClickEvent(self.t_r_onlineFlag_obj, click_event, LuaSoundManager.SOUND_UI.SWITCH)
-
- -- 更新社团列表数据
- local function update_guild_rank_list(vo, rank_type)
- if rank_type == GuildModel.GuildPowerRankType then
- self:UpdateGuildRankData(vo)
- end
- end
- self:BindEvent(self.model, GuildModel.UPDATE_GUILDACTIVE_RANK_DATA, update_guild_rank_list)
-
- -- 更新社团申请按钮红点
- local function update_apply_red(view_type)
- if not view_type or view_type == Config.ConfigGuild.TabId.List then
- self:UpdateApplyBtnRed()
- end
- end
- self:BindEvent(self.model, GuildModel.UPDATE_RED_DOT_BY_TYPE, update_apply_red)
-
- local function onGuideTrigger()
- self:AddToStageHandler()
- end
- self:BindEvent(GlobalEventSystem, EventName.TRIGGER_GUIDE_TYPE, onGuideTrigger)
- end
-
- function GuildListView:SwitchTab( index )
- self.tab_index = index or 1
- -- 玩家为社团管理时
- lua_resM:setImageSprite(self, self.tab_btn1_img, "guild_asset", self.tab_index == 1 and "guild_tab1_selected" or "guild_tab1_dark", true)
- lua_resM:setImageSprite(self, self.tab_btn2_img, "guild_asset", self.tab_index == 2 and "guild_tab1_selected" or "guild_tab1_dark", true)
-
- local select_color = ColorUtil:ConvertHexToRGBColor("ffffff")
- local unselect_color = ColorUtil:ConvertHexToRGBColor("9eb3cf")
- self.tab1_str_tmp.color = self.tab_index == 1 and select_color or unselect_color
- self.tab2_str_tmp.color = self.tab_index == 2 and select_color or unselect_color
-
- if index == 1 and GuildSpeedModel:getInstance().is_act_jump and not self.is_start_help_step then
- GuildSpeedModel:getInstance().is_act_jump = false
- self.is_start_help_step = true
- GlobalEventSystem:Fire(EventName.TEST_HELP_STEP,HelpType.GUILD_SPEED_ACT_CLICK_ID)
- end
- if index ~= 1 then
- self:OnCloseGuide()
- end
-
- self.mem_btn_con_obj:SetActive(self.tab_index == 1)
- self.member_scroll_obj:SetActive(self.tab_index == 1)
- self.memlist_title_obj:SetActive(self.tab_index == 1)
- self.guildlist_title_obj:SetActive(self.tab_index == 2)
- self.guild_scroll_obj:SetActive(self.tab_index == 2)
-
- if self.tab_index == 2 and self.first_switch_tab2 then
- self:RequestGuildRankData()
- self.first_switch_tab2 = false
- end
-
- self:UpdateGuildMember()
- end
-
- function GuildListView:SwitchSortType(type)
- self.mem_sort_type = type
- if type == 1 or type == 2 then
- self.r_power_arrow_obj:SetActive(true)
- self.r_online_arrow_obj:SetActive(false)
- SetLocalScale(self.r_power_arrow, 1, type == 1 and 1 or -1, 1)
- elseif type == 3 or type == 4 then
- self.r_power_arrow_obj:SetActive(false)
- self.r_online_arrow_obj:SetActive(true)
- SetLocalScale(self.r_online_arrow, 1, type == 4 and 1 or -1, 1)
- end
- self:UpdateGuildMember()
- end
-
- -- 更新成员列表
- function GuildListView:UpdateGuildMember( )
- if self.tab_index ~= 1 then return end
- local data = self.model:GetMemDataByOnlineAndPower(self.mem_sort_type)
- self.mem_item_creator = self.mem_item_creator or self:AddUIComponent(UI.ItemListCreator)
- local info = {
- data_list = data,
- item_con = self.member_con,
- scroll_view = self.member_scroll,
- item_class = GuildListMemItem,
- item_height = 100,
- create_frequency = 0.01,
- alignment = UnityEngine.TextAnchor.UpperLeft,
- on_update_item = function(item, i, v)
- item:SetData(v, i)
- end,
- }
- self.mem_item_creator:UpdateItems(info)
- end
-
- -- 更新社团列表(仅通过协议返回进行更新)
- function GuildListView:UpdateGuildRankData(vo)
- self.rank_max_num = vo.sum
- self:UpdateGuildRankList(vo.rank_list)
- end
- function GuildListView:UpdateGuildRankList(new_list)
- local need_auto_select = TableSize(self.guild_rank_list) == 0
- -- 有协议返回的列表则更新,没有的话只做刷新处理
- if new_list and #new_list > 0 then
- for k, data in pairs(new_list) do
- self.guild_rank_list[#self.guild_rank_list+1] = data
- end
- self.sroll_end_req_evt = false
- end
- -- 为了避免出现的节点超出的问题,这里要干掉创建好的节点
- -- if self.guild_rank_item_creator then
- -- self.guild_rank_item_creator:Reset()
- -- end
- self.guild_rank_item_creator = self.guild_rank_item_creator or self:AddUIComponent(UI.ItemListCreator)
- local info = {
- data_list = self.guild_rank_list,
- item_con = self.guild_con,
- scroll_view = self.guild_scroll,
- item_class = GuildListGuildItem,
- item_height = 100,
- create_frequency = 0.01,
- alignment = UnityEngine.TextAnchor.UpperLeft,
- on_update_item = function(item, i, v)
- if i == #self.guild_rank_list - 1 and not self.sroll_end_req_evt then
- if self.rank_req_flag + self.page_size <= self.rank_max_num then
- -- 调整标志量,请求协议
- self.rank_req_flag = self.rank_req_flag + self.page_size
- self.sroll_end_req_evt = true
- self:RequestGuildRankData()
- end
- end
- item:SetData(v, i)
- end,
- }
- self.guild_rank_item_creator:UpdateItems(info)
- end
-
- function GuildListView:RequestGuildRankData()
- RankModel:getInstance():Fire(RankModel.REQUEST_CCMD_EVENT, 22102, GuildModel.GuildPowerRankType, self.rank_req_flag, self.page_size)
- end
-
- function GuildListView:UpdateApplyBtnRed( )
- self.apply_red_obj:SetActive(self.model:GetGuildRedDotCache(Config.ConfigGuild.TabId.List))
- end
-
- function GuildListView:__delete( )
- self:OnCloseGuide()
- end
-
- function GuildListView:AddToStageHandler( )
- if IsNull(self.gameObject) then
- return
- end
- local help_vo = GuideModel:getInstance():GetHelpVo(HelpType.GUILD_SPEED_ACT_CLICK,1)
- if help_vo then
- if help_vo.help_type == HelpType.GUILD_SPEED_ACT_CLICK and help_vo.step == 1 then
- local button = self.recruit_btn_obj
- if button then
- local function call_back()
- -- self.model:SendRecruitMsg()
- end
- GlobalEventSystem:Fire(EventName.OPEN_GUIDE_PROMPT_VIEW,button.transform,self.transform,call_back,help_vo)
- end
- end
- end
- end
-
- function GuildListView:OnCloseGuide( )
- local help_vo = GuideModel:getInstance():GetHelpVo(HelpType.GUILD_SPEED_ACT_CLICK,1)
- if help_vo then
- GlobalEventSystem:Fire(EventName.FINISH_CURRENT_HELP_STEP,help_vo)
- end
- GlobalEventSystem:Fire(EventName.CLOSE_GUIDE_PROMPT_VIEW)
- end
|