|
|
- -- <*
- -- @Author: Saber
- -- @Description: 社团职位分配界面
- -- *>
- GuildPositionAllotView = GuildPositionAllotView or BaseClass(BaseView)
- local GuildPositionAllotView = GuildPositionAllotView
-
- function GuildPositionAllotView:__init()
- self.base_file = "guild"
- self.layout_file = "GuildPositionAllotView"
- self.layer_name = "Activity"
- self.destroy_imm = true
- self.use_background = true --全屏界面默认使用这个参数,非全屏界面自行设置
- self.change_scene_close = true --是否切换场景时关闭(弹出界面使用)
- self.blur_activity_bg = true
- self.use_show_anim = true
- self.use_hide_anim = true
- self.sort_type = 1 -- 12战力排序规则:1降序 2升序 34活跃排序规则:3降序 4升序
- self.tab_index = 1
- self.model = GuildModel:getInstance()
- self.model:Fire(GuildModel.RequestMemberViewMemberInfoEvt)
- self.pos_tab = {
- [1] = {pos = GuildModel.GuildPosition.Leader},
- [2] = {pos = GuildModel.GuildPosition.ViceLeader},
- [3] = {pos = GuildModel.GuildPosition.Teasure},
- [4] = {pos = GuildModel.GuildPosition.Elite},
- }
- self.load_callback = function ()
- self:LoadSuccess()
- self:AddEvent()
- end
- self.open_callback = function ( )
- self:UpdateView()
- end
- self.destroy_callback = function ( )
- self:DestroySuccess()
- end
- end
-
- function GuildPositionAllotView:Open(index)
- local role_pos = RoleManager.Instance.mainRoleInfo.position
- index = index or 1
- self.tab_index = role_pos == GuildModel.GuildPosition.Leader and index or 3
- BaseView.Open(self)
- end
-
- function GuildPositionAllotView:LoadSuccess()
- local nodes = {
- "content",
- "content/tab_con",
- "content/item_scroll", "content/item_scroll/Viewport/item_con",
- "content/guildlist_title/t_power:obj", "content/guildlist_title/power_arrow:obj",
- "content/guildlist_title/t_active:obj", "content/guildlist_title/active_arrow:obj",
- }
- self:GetChildren(nodes)
-
- local function close_callback()
- self:Close()
- end
- self.tabWindowComponent = UITabWindow.New(self.transform, {}, nil, close_callback, self.background_wnd, self.content, UITabWindow.SizeSmallNoTab, nil, nil, false)
- self.tabWindowComponent:SetTitleText("职位分配")
- self.tabWindowComponent:SetBackgroundRes("WindowNew2_bg")
- end
-
- function GuildPositionAllotView:AddEvent()
- local function click_event(target)
- if target == self.t_power_obj then
- self:SwitchSortType(self.power_arrow.localScale.y < 0 and 1 or 2)
- elseif target == self.t_active_obj then
- self:SwitchSortType(self.active_arrow.localScale.y < 0 and 3 or 4)
- end
- end
- AddClickEvent(self.t_power_obj, click_event, LuaSoundManager.SOUND_UI.SWITCH)
- AddClickEvent(self.t_active_obj, click_event, LuaSoundManager.SOUND_UI.SWITCH)
-
- -- 成员任命更新 40013
- local function on_change_mem_pos()
- self:UpdateMemItem(self.pos_tab[self.tab_index])
- end
- self:BindEvent(self.model, GuildModel.RefreshMainViewMemberInfoEvt, on_change_mem_pos)
- end
-
- function GuildPositionAllotView:UpdateView()
- self:SwitchSortType(1, true)
- self:UpdatePosTab()
- end
-
- function GuildPositionAllotView:UpdatePosTab( )
- local function callback(index)
- self:SwitchTab(index)
- end
- self.tab_item_creator = self.tab_item_creator or self:AddUIComponent(UI.ItemListCreator)
- local info = {
- data_list = self.pos_tab,
- item_con = self.tab_con,
- scroll_view = self.tab_con,
- item_class = GuildPositionAllotTabItem,
- item_height = 118,
- space_y = 6,
- create_frequency = 0.01,
- alignment = UnityEngine.TextAnchor.UpperLeft,
- final_callback = function()
- callback(self.tab_index)
- end,
- on_update_item = function(item, i, v)
- item:SetData(i, v , callback)
- end,
- }
- self.tab_item_creator:UpdateItems(info)
- end
-
- function GuildPositionAllotView:SwitchTab( index )
- local role_pos = RoleManager.Instance.mainRoleInfo.position
- if (index == 1 or index == 2) and role_pos ~= GuildModel.GuildPosition.Leader then -- 团长副团任命只能给团长来
- Message.show("您不是团长,无法调整该职位")
- if self.tab_index == 3 or self.tab_index == 4 then -- 这里考虑了从团长退到副团长的情况
- return
- else
- index = 3
- end
- end
- self.tab_index = index
- if self.tab_item_creator then
- self.tab_item_creator:IterateItems(function( item, i )
- item:SetSelected(i == self.tab_index)
- end)
- end
- self:UpdateMemItem(self.pos_tab[index])
- end
-
- function GuildPositionAllotView:SwitchSortType(type, no_update)
- self.sort_type = type
- if type == 1 or type == 2 then
- self.power_arrow_obj:SetActive(true)
- self.active_arrow_obj:SetActive(false)
- SetLocalScale(self.power_arrow, 1, type == 1 and 1 or -1, 1)
- elseif type == 3 or type == 4 then
- self.power_arrow_obj:SetActive(false)
- self.active_arrow_obj:SetActive(true)
- SetLocalScale(self.active_arrow, 1, type == 3 and 1 or -1, 1)
- end
- if not no_update then
- self:UpdateMemItem(self.pos_tab[self.tab_index])
- end
- end
-
- function GuildPositionAllotView:UpdateMemItem(pos_data)
- local tab_data = self.model:GetMemDataByPosAndSortCondition(pos_data.pos, self.sort_type)
- self.mem_item_creator = self.mem_item_creator or self:AddUIComponent(UI.ItemListCreator)
- local info = {
- data_list = tab_data,
- item_con = self.item_con,
- scroll_view = self.item_scroll,
- item_class = GuildPositionAllotItem,
- item_height = 70,
- create_frequency = 0.01,
- alignment = UnityEngine.TextAnchor.UpperLeft,
- on_update_item = function(item, i, v)
- item:SetData(v, i, pos_data.pos)
- end,
- }
- self.mem_item_creator:UpdateItems(info)
- end
-
- function GuildPositionAllotView:DestroySuccess( )
- if self.tabWindowComponent then
- self.tabWindowComponent:DeleteMe()
- self.tabWindowComponent = nil
- end
- end
|