|
|
-
- SelectSysRoleHeadView = SelectSysRoleHeadView or BaseClass(BaseView)
- local table_insert = table.insert
- local table_sort = table.sort
- function SelectSysRoleHeadView:__init()
- self.base_file = "newMainRole"
- self.layout_file = "SelectSysRoleHeadView"
- self.layer_name = "Activity"
- -- self.use_local_view = true
-
- self.use_background = true
- self.is_set_zdepth = true
- self.is_delay_callback = false
- self.change_scene_close = true
- self.blur_activity_bg = true
- self.select_photo_id = false -- 当前选中的头像图片id
- self.select_can_activate = false -- 当前选中的头像是否满足激活条件(针对运营头像)
- self.item_list = {}
- self.cur_select_head = nil
- self.mainVo = RoleManager.Instance.mainRoleInfo
- self.model = NewMainRoleModel:getInstance()
- self.load_callback = function()
- self:LoadSuccess()
- self:InitEvent()
- end
-
- self.open_callback = function()
- self:UpdateView()
- end
-
- self.destroy_callback = function()
- self:Remove()
- end
- end
-
- function SelectSysRoleHeadView:Remove()
- if self.tween_id1 then
- TweenLite.Stop(self.tween_id1)
- self.tween_id1 = nil
- end
- if self.tween_id2 then
- TweenLite.Stop(self.tween_id2)
- self.tween_id2 = nil
- end
-
- if self.update_view_id then
- self.model:UnBind(self.update_view_id)
- self.update_view_id = nil
- end
- if self.change_head_success_id then
- RoleManager.Instance.mainRoleInfo:UnBind(self.change_head_success_id)
- self.change_head_success_id = nil
- end
- self.select_photo_id = false
- for _, v in pairs(self.item_list) do
- v:DeleteMe()
- end
- self.item_list = {}
- if self.cur_select_head then
- self.cur_select_head:DeleteMe()
- self.cur_select_head = nil
- end
- if self.cost_icon then
- UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.cost_icon)
- end
- self.cost_icon = nil
- if self.tabWindowComponent then
- self.tabWindowComponent:DeleteMe()
- end
- self.tabWindowComponent = nil
- end
-
- function SelectSysRoleHeadView:LoadSuccess()
- local node ={
- "content",
- -- 头像相关
- "content/headScroll","content/headScroll/Viewport/headCon", "content/container_head/cur_head:raw",
- "content/confirmBtn:obj:img", "content/confirmBtn/comfirmBtn_str:tmp","content/container_head",
- -- 属性相关
- "content/attr_1:obj","content/attr_1/attr1_val:tmp","content/attr_1/attr1_name:tmp",
- "content/attr_2:obj","content/attr_2/attr2_val:tmp","content/attr_2/attr2_name:tmp",
- "content/attr_3:obj","content/attr_3/attr3_val:tmp","content/attr_3/attr3_name:tmp",
- -- 消耗道具相关
- "content/icon_name:tmp", "content/icon_num:tmp", "content/icon_con:obj", "content/activateBtn:obj",
- -- 其他
- "content/unlock_bg:obj", "content/con_fight/fight_num:txt", "content/unlock_bg2:obj",
- "content/unlock_bg/unlock_condition:tmp", "content/unlock_bg/unlock_condition/goto_btn:obj",
- "content/head_name:tmp", "content/head_name2:tmp", "content/head_des:tmp",
- }
- self:GetChildren(node)
-
- self.cost_icon = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.icon_con)
- self.cost_icon:SetItemSize(78, 78)
- self.cost_icon:SetPosition(0, 0)
- self.icon_con_obj:SetActive(false)
- SetLocalScale(self.cur_head.transform, 0.97,0.97,0.97)
-
- local function close_callback()
- self:Close()
- end
- self.tabWindowComponent = UITabWindow.New(self.transform, {}, nil, close_callback, self.background_wnd, self.content, UITabWindow.SizeSmallNoTab, "select_head_bg", nil, true)
- self.tabWindowComponent:SetTitleText("头像选择")
- self.tabWindowComponent:SetBackgroundRes("select_role_head_bg")
-
- self:StartAction()
- end
-
- function SelectSysRoleHeadView:StartAction( )
- -------------------------
- SetAnchoredPositionY( self.container_head.transform, 45 )
- local do_up,do_down
- function do_up()
- self.tween_id1 = TweenLite.to(self, self.container_head.transform,TweenLite.UiAnimationType.ANCHORED_POSY,45,2,do_down)
- end
- function do_down()
- self.tween_id2 = TweenLite.to(self, self.container_head.transform,TweenLite.UiAnimationType.ANCHORED_POSY,32,2,do_up)
- end
- do_down()
- end
-
- function SelectSysRoleHeadView:Open()
- BaseView.Open(self)
- end
-
- function SelectSysRoleHeadView:InitEvent()
- local function btnClickFunc(target, x, y)
- if target == self.confirmBtn_obj then -- 更换头像
- if self.select_photo_id then
- if self.select_photo_id == self.mainVo.profile_photo_id then
- return
- else
- GlobalEventSystem:Fire(EventName.REQ_CHANGE_ROLEHEAD, self.select_photo_id)
- end
- end
- elseif target == self.activateBtn_obj then -- 激活头像
- if self.select_photo_id then
- if self.select_can_activate then
- GlobalEventSystem:Fire(EventName.REQ_ACTIVATE_ROLEHEAD, self.select_photo_id)
- else
- UIToolTipMgr:getInstance():AppendGoodsTips(self.select_photo_id, x, y, nil,nil,nil,nil,true)
- end
- end
- elseif target == self.goto_btn_obj then
- self:OnTurnGotoBtnClick()
- end
- end
- AddClickEvent(self.confirmBtn_obj, btnClickFunc)
- AddClickEvent(self.activateBtn_obj, btnClickFunc)
- AddClickEvent(self.goto_btn_obj, btnClickFunc)
-
- local function update_view()
- self:UpdateView(self.mainVo.profile_photo_id)
- end
- self.change_head_success_id = self.mainVo:BindOne("profile_photo_id", update_view)
- end
-
- function SelectSysRoleHeadView:UpdateView(photo_id)
- local list = self.model:GetRoleHeadInfo()
- local function call_func(index)
- self.select_photo_id = list[index].photo_id
- self.head_item_creator:IterateItems(function(item, i)
- item:SetSelect(item.index == index)
- end)
- self:UpdateCurSelectHead(list[index])
- end
- -- 更新当前的头像选中索引
- photo_id = photo_id or self.select_photo_id or self.mainVo.profile_photo_id
- local selected_index
- for k, v in pairs(list) do
- if v.photo_id == photo_id then
- selected_index = k
- break
- end
- end
- self.head_item_creator = self.head_item_creator or self:AddUIComponent(UI.ItemListCreator)
- local info = {
- data_list = list,
- item_con = self.headCon,
- scroll_view = self.headScroll,
- item_class = RoleHeadShowItem,
- item_height = 119,
- item_width = 119,
- start_x = 15,
- start_y = -10,
- space_x = 5,
- space_y = 7.25,
- create_frequency = 0.01,
- alignment = UnityEngine.TextAnchor.UpperLeft,
- on_update_item = function(item, i, v)
- item:SetData(i, v, call_func)
- item:SetSelect(item.index == selected_index)
- end,
- }
- self.head_item_creator:UpdateItems(info)
- -- 更新选中的头像数据
- if photo_id ~= 0 then
- for k, v in pairs(list) do
- if v.photo_id == photo_id then
- call_func(k)
- break
- end
- end
- else
- call_func(1)
- end
- end
-
- -- 更新当前选中的头像
- function SelectSysRoleHeadView:UpdateCurSelectHead(data)
- self.cur_selected_data = data
- -- 更换头像资源
- lua_resM:setOutsideRawImage(self, self.cur_head_raw, GameResPath.GetHeadIcon(self.select_photo_id), true)
- local unlock_str = ""
- local career_list = stringtotable(data.career)
- if data.status ~= 2 then -- 如果头像未激活
- if #career_list == 1 and career_list[1] ~= 0 then -- 职业列表为1且不为0代表转职获得的头像
- unlock_str = "完成第"..data.turn.."次觉醒后激活"
- else
- unlock_str = "运营活动获得"
- end
- end
- self.unlock_condition_tmp.text = unlock_str
- -- 激活了的头像展示替换按钮
- self.confirmBtn_obj:SetActive(data.status == 2)
- self.unlock_bg2_obj:SetActive(data.status == 2)
- -- 拥有可激活的通用头像则显示激活
- self.activateBtn_obj:SetActive(data.status ~= 2 and not data.is_rein_head)
- self.unlock_bg_obj:SetActive(data.status == 0 and data.is_rein_head)
- self.head_name_tmp.text = Trim(data.name)
- self.head_name2_tmp.text = GoodsModel:getInstance():getGoodsName(data.photo_id, true, true)
- self.head_des_tmp.text = data.desc
- if data.attr_list then
- local attr_list = stringtotable(data.attr_list)
- for k, v in ipairs(attr_list) do
- local attr_name = WordManager:GetProperties(v[1])
- self["attr"..k.."_name_tmp"].text = attr_name
- self["attr"..k.."_val_tmp"].text = "+" .. v[2]
- end
- self.attr_1_obj:SetActive(#attr_list>0)
- self.attr_2_obj:SetActive(#attr_list>1)
- self.attr_3_obj:SetActive(#attr_list>2)
- self.fight_num_txt.text = GetFighting(attr_list,data.status == 2)
- else
- self.attr_1_obj:SetActive(false)
- self.attr_2_obj:SetActive(false)
- self.attr_3_obj:SetActive(false)
- self.fight_num_txt.text = 0
- end
- -- 更新确认按钮
- self:UpdateComfirmBtn()
- -- 更新激活道具
- self:UpdateActivateGoods(data)
- end
-
- -- 更新确认按钮文本内容
- function SelectSysRoleHeadView:UpdateComfirmBtn( )
- self.comfirmBtn_str_tmp.text = self.select_photo_id and self.select_photo_id == self.mainVo.profile_photo_id and "当前头像" or "更换"
- local is_gray = self.select_photo_id and self.select_photo_id == self.mainVo.profile_photo_id
- SetImageGray( self.confirmBtn_img, is_gray )
- SetTMPSharedMaterial(self.comfirmBtn_str_tmp, is_gray and ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn or ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn)
- end
-
- -- 前往转生任务
- function SelectSysRoleHeadView:OnTurnGotoBtnClick( )
- -- 当前的转职任务可以进行
- local turn, lv = self.mainVo.turn, self.mainVo.level
- local target_turn = self.cur_selected_data and self.cur_selected_data.turn
- -- 转职数跨度超过1
- if target_turn - turn > 1 then
- Message.show("请完成前置觉醒任务")
- return
- end
- -- 转职数跨度为1
- local rein_model = ReincarnationModel:getInstance()
- local stage_cfg = rein_model:GetReinLvStageData(target_turn)
- local stage = self.mainVo.turn_stage
- -- 保险起见,更新一下当前转职任务
- rein_model:UpdateCurReinTask()
- -- 先判断是否有进行中的转职任务否则获取可接任务
- local task_vo = rein_model:GetCurTaskVo() or TaskModel:getInstance():GetTaskByType(TaskType.TRUN_LINE)
- if task_vo then
- TaskModel:getInstance():TaskClickFun(task_vo)
- GlobalEventSystem:Fire(EventName.CLOSE_NEW_MAIN_ROLE_VIEW)
- self:Close()
- return
- end
- stage = stage == 0 and stage + 1 or stage
- -- 如果当前没有任务,则进行等级提升提示
- for k, v in pairs(stage_cfg) do
- if v.stage == stage then
- if lv < v.need_lev then -- 转职数跨度为1,但是到下一阶段任务的等级不足
- local str = string.format("请提升至%s", v.need_lev .. "级")
- Message.show(str)
- return
- end
- end
- end
- end
-
- function SelectSysRoleHeadView:UpdateActivateGoods(data)
- if data.status ~= 2 and not data.is_rein_head then
- local cost_list = stringtotable(data.cost_list)[1]
- self.cost_icon:SetData(cost_list[1], cost_list[2])
- self.icon_con_obj:SetActive(true)
- -- self.cost_icon:SetVisible(true)
- self.icon_name_tmp.text = GoodsModel:getInstance():getGoodsName(data.photo_id, true, true)
- local goods_num_inbag = GoodsModel:getInstance():GetTypeGoodsNum(cost_list[1])
- self.select_can_activate = goods_num_inbag >= cost_list[2]
- self.icon_num_tmp.text = string.format("<color=%s>%s</color>/%s",
- self.select_can_activate and ColorUtil.GREEN_DARK or ColorUtil.RED_DARK,
- goods_num_inbag, cost_list[2])
- else
- self.icon_name_tmp.text = ""
- self.icon_num_tmp.text = ""
- self.icon_con_obj:SetActive(false)
- -- self.cost_icon:SetVisible(false)
- end
- end
|