-- <*
|
|
-- @Author: Saber
|
|
-- @Description: 舞姿激活界面
|
|
-- *>
|
|
DancePoseView = DancePoseView or BaseClass(BaseView)
|
|
local DancePoseView = DancePoseView
|
|
local stringtotable = stringtotable
|
|
|
|
function DancePoseView:__init()
|
|
self.base_file = "dance"
|
|
self.layout_file = "DancePoseView"
|
|
self.layer_name = "Activity"
|
|
self.destroy_imm = true
|
|
self.use_background = true --全屏界面默认使用这个参数,非全屏界面自行设置
|
|
self.change_scene_close = true
|
|
self.is_set_zdepth = true
|
|
self.model = DanceModel:getInstance()
|
|
self.goods_model = GoodsModel:getInstance()
|
|
self.loaded_role_model = nil
|
|
self.open_dance_id = nil
|
|
self.open_type_id = nil
|
|
self.load_callback = function ()
|
|
self:LoadSuccess()
|
|
self:AddEvent()
|
|
end
|
|
self.open_callback = function ( )
|
|
self:UpdateView()
|
|
end
|
|
self.destroy_callback = function ( )
|
|
self:DestroySuccess()
|
|
end
|
|
end
|
|
|
|
-- 可选参数(二选一)
|
|
-- open_dance_id 定位的舞姿
|
|
-- open_type_id 定位的舞姿的物品id
|
|
function DancePoseView:Open(open_dance_id, open_type_id)
|
|
self.open_dance_id = open_dance_id
|
|
self.open_type_id = open_type_id
|
|
BaseView.Open(self)
|
|
end
|
|
|
|
function DancePoseView:LoadSuccess()
|
|
local nodes = {
|
|
"bg:raw",
|
|
"role_con",
|
|
"close_btn:obj",
|
|
"ques_btn:obj",
|
|
"pose_scroll", "pose_scroll/Viewport/pose_con",
|
|
"activated:obj",
|
|
"activate_con:obj",
|
|
"activate_con/activate_btn:obj",
|
|
"activate_con/activate_btn/activate_btn_red:obj",
|
|
"activate_con/item_con",
|
|
"activate_con/item_name:tmp", "activate_con/item_neednum:tmp",
|
|
"pose_desc:tmp",
|
|
}
|
|
self:GetChildren(nodes)
|
|
lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("dance_bg"))
|
|
self.award_item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.item_con)
|
|
self.award_item:SetItemSize(62, 62)
|
|
self.award_item:SetAnchoredPosition(0, 0)
|
|
self.award_item:SetVisible(true)
|
|
end
|
|
|
|
function DancePoseView:AddEvent()
|
|
local function click_event(target)
|
|
if target == self.close_btn_obj then
|
|
self:Close()
|
|
elseif target == self.ques_btn_obj then -- 介绍按钮
|
|
GlobalEventSystem:Fire(EventName.OPEN_INSTRUCTION_VIEW, 42500)
|
|
elseif target == self.activate_btn_obj then -- 激活按钮
|
|
if self.item_data then
|
|
local bool = self.model:GetDanceRedByDanceId(self.item_data.id)
|
|
if bool then
|
|
self.model:Fire(DanceModel.REQUEST_CCMD_EVENT, 42501, self.item_data.id)
|
|
else
|
|
if self.award_item then
|
|
self.award_item:ClickCallFun()
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
AddClickEvent(self.close_btn_obj, click_event)
|
|
AddClickEvent(self.ques_btn_obj, click_event)
|
|
AddClickEvent(self.activate_btn_obj, click_event)
|
|
|
|
local function updateDacneData()
|
|
self:UpdatePosesItem()
|
|
end
|
|
self:BindEvent(self.model, DanceModel.UPDATE_DANCE_POSES_DATA, updateDacneData)
|
|
self:BindEvent(self.model, DanceModel.ACTIVATED_DANCE_POSE, updateDacneData)
|
|
end
|
|
|
|
function DancePoseView:UpdateView()
|
|
self:UpdatePosesItem()
|
|
end
|
|
|
|
-- 更新姿势节点
|
|
function DancePoseView:UpdatePosesItem( )
|
|
-- 这个不需要深拷贝
|
|
local data = self.model:GetDancePoseDataList()
|
|
local function dance_callback(item_data)
|
|
self.pose_item_creator:IterateItems(function(item, i)
|
|
item:SetSelected(item_data.id)
|
|
end)
|
|
self:UpdateRoleDance(item_data.id)
|
|
self:UpdatePoseCostInfoAndDesc(item_data)
|
|
end
|
|
self.pose_item_creator = self.pose_item_creator or self:AddUIComponent(UI.ItemListCreator)
|
|
local info = {
|
|
data_list = data,
|
|
scroll_view = self.pose_scroll,
|
|
item_con = self.pose_con,
|
|
item_class = DancePoseItem,
|
|
item_height = 112,
|
|
item_width = 112,
|
|
start_x = 10,
|
|
start_y = -1,
|
|
space_x = 13,
|
|
space_y = 13,
|
|
create_frequency = 0.01,
|
|
is_scroll_back_on_update = true,
|
|
alignment = UnityEngine.TextAnchor.UpperLeft,
|
|
on_update_item = function(item, i, v)
|
|
item:SetData(v, dance_callback)
|
|
end,
|
|
final_callback = function()
|
|
-- 初次加载完,定位到默认舞姿或打开界面时要看的舞姿
|
|
local default_dance_id = self.open_dance_id or self.model:GetDefaultDancesPoseId()
|
|
for k, v in ipairs(data) do
|
|
if self.open_type_id then
|
|
if v.goods_data and tonumber(v.goods_data[2]) == self.open_type_id then
|
|
dance_callback(v)
|
|
break
|
|
end
|
|
else
|
|
if v.id == default_dance_id then
|
|
dance_callback(v)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
self.open_dance_id = nil
|
|
self.open_type_id = nil
|
|
end,
|
|
}
|
|
self.pose_item_creator:UpdateItems(info)
|
|
end
|
|
|
|
-- 更新玩家舞姿
|
|
function DancePoseView:UpdateRoleDance(dance_id)
|
|
local dance_pose = "dance"
|
|
if dance_id > 1 then -- 舞姿1的名称为dance,特殊处理
|
|
dance_pose = dance_pose .. dance_id
|
|
end
|
|
if not self.loaded_role_model then
|
|
-- 先清除引用模型
|
|
lua_resM:clearRoleMode(self)
|
|
-- 加载模型
|
|
local res_data = {
|
|
father_node = self,
|
|
layer_name = self.layer_name,
|
|
transform = self.role_con,
|
|
fashion_type = FuncOpenModel.TypeId.Clothes,
|
|
size = Vector2(720,720),
|
|
can_rotate = true,
|
|
-- raycast_size = Vector2(390, 508),
|
|
load_dance_pose = true,
|
|
scale = 220,
|
|
action_name_list = {dance_pose},
|
|
position = Vector3(0,0,-500),
|
|
ui_model_type = UIModelCommon.ModelType.Model,
|
|
}
|
|
FuncOpenModel:getInstance():SetModelRes(res_data)
|
|
self.loaded_role_model = lua_resM:GetPartModel(self, self.role_con)
|
|
else
|
|
self.loaded_role_model:PlayActions({dance_pose})
|
|
end
|
|
end
|
|
|
|
-- 更新节点花费信息和描述信息
|
|
function DancePoseView:UpdatePoseCostInfoAndDesc(item_data)
|
|
self.item_data = item_data
|
|
if item_data then
|
|
if item_data.activated then -- 已经激活了
|
|
self.activated_obj:SetActive(true)
|
|
self.activate_con_obj:SetActive(false)
|
|
else
|
|
self.activated_obj:SetActive(false)
|
|
self.activate_con_obj:SetActive(true)
|
|
local cost_cfg = item_data.goods_data
|
|
local typeId, lock = self.goods_model:GetMappingTypeId(cost_cfg[1], cost_cfg[2])
|
|
self.award_item:SetData(typeId, cost_cfg[3], nil, nil, lock)
|
|
self.item_name_tmp.text = self.goods_model:getGoodsName(typeId, true)
|
|
local goods_num = self.goods_model:GetTypeGoodsNum(typeId)
|
|
self.item_neednum_tmp.text = string.format("<color=%s>%s</color>/%s",
|
|
goods_num >= cost_cfg[3] and ColorUtil.GREEN_DARK or ColorUtil.RED_DARK,
|
|
goods_num, cost_cfg[3])
|
|
-- 获取红点
|
|
local bool = self.model:GetDanceRedByDanceId(item_data.id)
|
|
self.activate_btn_red_obj:SetActive(bool)
|
|
end
|
|
-- 姿势描述
|
|
self.pose_desc_tmp.text = Trim(item_data.desc)
|
|
end
|
|
end
|
|
|
|
function DancePoseView:DestroySuccess( )
|
|
if self.award_item then
|
|
UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.award_item)
|
|
end
|
|
self.award_item = nil
|
|
end
|