源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 

170 行
6.1 KiB

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