-- <*
|
|
-- @Author: Saber
|
|
-- @Description: 主界面舞姿选择界面
|
|
-- *>
|
|
DanceMainUISelectPoseView = DanceMainUISelectPoseView or BaseClass(BaseView)
|
|
local DanceMainUISelectPoseView = DanceMainUISelectPoseView
|
|
local table_insert = table.insert
|
|
function DanceMainUISelectPoseView:__init()
|
|
self.base_file = "dance"
|
|
self.layout_file = "DanceMainUISelectPoseView"
|
|
self.layer_name = "Activity"
|
|
self.destroy_imm = true
|
|
self.use_background = true --全屏界面默认使用这个参数,非全屏界面自行设置
|
|
self.background_alpha = 0 -- 特殊处理,全透明的背景蒙版
|
|
self.click_bg_toClose = true
|
|
self.model = DanceModel:getInstance()
|
|
self.random_dance_flag = self.model:GetIsRandomPose()
|
|
self.main_role = RoleManager.Instance.mainRoleInfo
|
|
|
|
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 DanceMainUISelectPoseView:Open(pos)
|
|
self.pos = pos or Vector3(0, 0, 0)
|
|
BaseView.Open(self)
|
|
end
|
|
|
|
function DanceMainUISelectPoseView:LoadSuccess()
|
|
local nodes = {
|
|
"bg",
|
|
"pose_scroll",
|
|
"pose_scroll/Viewport/pose_con",
|
|
"random_tog:obj:tog",
|
|
}
|
|
self:GetChildren(nodes)
|
|
SetAnchoredPosition(self.transform, self.pos.x + 137, self.pos.y + 125)
|
|
self.random_tog_tog.isOn = self.random_dance_flag
|
|
end
|
|
|
|
function DanceMainUISelectPoseView:AddEvent()
|
|
local function click_event(target)
|
|
if target == self.random_tog_obj then
|
|
self.random_dance_flag = self.random_tog_tog.isOn
|
|
end
|
|
end
|
|
AddClickEvent(self.random_tog_obj, click_event)
|
|
|
|
local function on_dance_pose_change()
|
|
self:UpdateDanceSelected()
|
|
end
|
|
self.on_dance_pose_change_id = self.main_role:BindOne("dance_status", on_dance_pose_change)
|
|
|
|
local function update_dance_data()
|
|
self:UpdateView()
|
|
end
|
|
self:BindEvent(self.model, DanceModel.UPDATE_DANCE_POSES_DATA, update_dance_data)
|
|
end
|
|
|
|
-- 根据规则初始化节点高度
|
|
function DanceMainUISelectPoseView:InitScrollRectHeight(item_num)
|
|
-- 舞姿节点少于4个时,只显示一行内容,其他情况显示两行内容
|
|
if item_num <= 4 then
|
|
SetSizeDeltaY(self.bg, 120)
|
|
SetSizeDeltaY(self.pose_scroll, 84)
|
|
else
|
|
SetSizeDeltaY(self.bg, 206)
|
|
SetSizeDeltaY(self.pose_scroll, 170)
|
|
end
|
|
end
|
|
|
|
function DanceMainUISelectPoseView:UpdateView()
|
|
-- 由于需要插入第一个特殊节点,还需要剔除未激活的舞姿,所以这边需要重新提取出数据
|
|
local data = self.model:GetDancePoseDataList()
|
|
local activated_dance_data = {}
|
|
-- 插入特殊节点
|
|
local special_first_data = {
|
|
is_special_data = true
|
|
}
|
|
table_insert(activated_dance_data, special_first_data)
|
|
-- 提取出已激活的舞姿
|
|
for k, v in pairs(data) do
|
|
if v.activated then
|
|
table_insert(activated_dance_data, v)
|
|
end
|
|
end
|
|
self:InitScrollRectHeight(#activated_dance_data)
|
|
|
|
self.pose_item_creator = self.pose_item_creator or self:AddUIComponent(UI.ItemListCreator)
|
|
local cur_dance_id = self.main_role.dance_status
|
|
local info = {
|
|
data_list = activated_dance_data,
|
|
scroll_view = self.pose_scroll,
|
|
item_con = self.pose_con,
|
|
item_class = DanceMainUISelectPoseItem,
|
|
item_height = 78,
|
|
item_width = 78,
|
|
start_x = 2,
|
|
start_y = -3.5,
|
|
space_x = 8,
|
|
space_y = 8,
|
|
create_frequency = 0.01,
|
|
is_scroll_back_on_update = true,
|
|
alignment = UnityEngine.TextAnchor.UpperLeft,
|
|
on_update_item = function(item, i, v)
|
|
item:SetData(v)
|
|
item:SetSelected(cur_dance_id)
|
|
end,
|
|
}
|
|
self.pose_item_creator:UpdateItems(info)
|
|
end
|
|
|
|
function DanceMainUISelectPoseView:UpdateDanceSelected()
|
|
local dance_id = self.main_role.dance_status
|
|
-- print("Saber:DanceMainUISelectPoseView [114] dance_id: ",dance_id)
|
|
if self.pose_item_creator then
|
|
self.pose_item_creator:IterateItems(function(item, i)
|
|
item:SetSelected(dance_id)
|
|
end)
|
|
end
|
|
-- 切换舞姿后,在更新完选中框之后关闭舞姿界面
|
|
if self.model._need_pose_select_view_close then
|
|
self:Close()
|
|
end
|
|
end
|
|
|
|
function DanceMainUISelectPoseView:DestroySuccess( )
|
|
-- 关闭界面时,切换随机舞姿状态
|
|
self.model:Fire(DanceModel.REQUEST_CCMD_EVENT, 42503, self.random_dance_flag and 1 or 0)
|
|
|
|
if self.on_dance_pose_change_id then
|
|
self.main_role:UnBind(self.on_dance_pose_change_id)
|
|
self.on_dance_pose_change_id = nil
|
|
end
|
|
-- 重置自动关闭舞姿界面的标志量
|
|
self.model._need_pose_select_view_close = false
|
|
end
|