|
|
- EquipExamBossView = EquipExamBossView or BaseClass(BaseItem)
- local EquipExamBossView = EquipExamBossView
-
- local MODEL_PARAM = {
- OFFSET_X = 0,
- OFFSET_Y = 130,
- SCALE = 100,
- }
- local SHOW_LEFT_ITEM_COUNT = 4
-
- function EquipExamBossView:__init()
- self.base_file = "equipCollect"
- self.layout_file = "EquipExamBossView"
- self.model = EquipCollectModel:GetInstance()
- self.boss_model = BossModel:GetInstance()
- self.item_list = {}
- self.selfkill_award_item_list = {}
- self.firstblood_award_item_list = {}
- self.model:Fire(EquipCollectConst.REQUEST_SCMD_EVENT,14501)
- self.content_y = 0
- self.ReOpen_callback = function ( )
- self:UpdateModelInfo(true)
- end
-
- self:Load()
- end
-
- function EquipExamBossView:Load_callback()
- self.nodes = {
- "bg:raw",
- "lb_first_kill_tip:tmp", "btn_go:obj:img",
- "lb_kill_tip:tmp", "lb_first_kill_title:tmp", "con_model",
- "btn_up_arrow:obj:img", "con_kill_award:obj",
- "pic_title:obj:img", "lb_first_kill_info:tmp",
- "lb_boss_name:tmp", "con_first_kill_award:obj",
- "lb_kill_title:tmp", "btn_down_arrow:obj:img",
- "btn_red_packet:obj:img", "scroll_boss/Viewport/con_content:obj",
- "scroll_boss:scroll", "pic_model_bg:img", "btn_go/lb_btn_go:tmp",
- "lb_first_kill_time:tmp",
- "btn_up_arrow/btn_up_arrow_red:obj", "btn_down_arrow/btn_down_arrow_red:obj",
- }
- self:GetChildren(self.nodes)
-
- lua_resM:setOutsideRawImage(self,self.bg_raw, GameResPath.GetViewBigBg("equip_collect_bos_bg"),false)
- self.lb_kill_title_tmp.text = "击杀奖励"
- self.lb_first_kill_title_tmp.text = "首杀奖励"
- self.lb_first_kill_tip_tmp.text = "注:首杀奖励将通过邮件发放"
- self.lb_kill_tip_tmp.text = "BOSS为祸四方,快去击杀它!"
- self.lb_btn_go_tmp.text = "前往击杀"
- SetAnchoredPositionY(self.con_model, -72)
-
- self.SCROLL_BOSS_SHOW_HEIGHT = GetSizeDeltaY(self.scroll_boss)
-
- self:MoveUIToBack(self.pic_model_bg_img)
-
- self:AddEvents()
- if self.need_refreshData then
- self:UpdateView()
- end
- end
-
- function EquipExamBossView:AddEvents( )
- local on_click = function ( click_obj )
- if self.btn_go_obj == click_obj then
- local boss_cfg = self.boss_model:GetMoneyBossConf( self.select_boss_id ) -- 赏金配置
- if boss_cfg.enter_lv > RoleManager.Instance.mainRoleInfo.level then
- Message.show(string.format('%s级解锁', boss_cfg.enter_lv))
- return
- end
- if self.select_boss_id then
- self.model:Fire(EquipCollectConst.OPEN_EC_MAIN_VIEW, false)
- GlobalEventSystem:Fire(EventName.OPEN_BOSS_VIEW, Config.ConfigBoss.ModuleId.Money, self.select_boss_id)
- end
- elseif self.btn_red_packet_obj == click_obj then
- local boss_first_blood_data = self.model:GetBossData( self.select_boss_id ) -- 首杀后端数据
- local can_get = boss_first_blood_data.server_award_status and boss_first_blood_data.server_award_status == 0 and boss_first_blood_data.time > 0 -- 可领未领
- self.model:Fire(EquipCollectConst.OPEN_RED_PACKET_VIEW, true, self.select_boss_id, not can_get)
- elseif self.btn_up_arrow_obj == click_obj then
- self:ScrollDownOrUp()
- elseif self.btn_down_arrow_obj == click_obj then
- self:ScrollDownOrUp(true)
- end
- end
- AddClickEvent(self.btn_go_obj, on_click)
- AddClickEvent(self.btn_red_packet_obj, on_click)
- AddClickEvent(self.btn_up_arrow_obj, on_click)
- AddClickEvent(self.btn_down_arrow_obj, on_click)
-
-
- local update_view = function(boss_id)
- if self.select_boss_id and boss_id and boss_id ~= self.select_boss_id then
- return
- end
- self:UpdateView()
- end
- self:BindEvent(self.model, EquipCollectConst.UPDATE_BOSS_VIEW, update_view)
-
- local function clockFun()
- self:UpdateTimeInfo()
- end
- self.close_time_id = self.close_time_id or GlobalTimerQuest:AddPeriodQuest(clockFun, 1, -1)
- end
-
- function EquipExamBossView:UpdateView( )
- self.boss_list_data = self.model:GetBossLeftTabData()
-
- local select_callback = function(boss_id)
- if boss_id and boss_id > 0 then
- self.select_boss_id = boss_id
- self.tab_item_list:IterateItems(function( item, i )
- item:SetSelect(self.select_boss_id)
- end)
- self:UpdateBossInfo(boss_id)
- end
- end
-
- -- for i,v in ipairs(self.boss_list_data) do
- -- self.item_list[i] = self.item_list[i] or EquipExamBossItem.New(self.con_content)
- -- local item = self.item_list[i]
- -- item:SetData(v.boss_id, i, select_callback)
- -- item:SetSelect(self.select_boss_id)
- -- end
- -- 更新页签红点缓存
- self.model:UpdateBossLeftBtnRed( )
-
- local update_arrow = function()
- self:UpdateArrowObj()
- end
- self.tab_item_list = self.tab_item_list or self:AddUIComponent(UI.ItemListCreator)
- local data = {
- data_list = self.boss_list_data or {},
- item_con = self.con_content,
- item_class = EquipExamBossItem,
- item_width = 100,
- item_height = EquipExamBossItem.ITEM_HEIGHT,
- space_y = EquipExamBossItem.SPACE_Y,
- start_x = 5,
- start_y = 0,
- scroll_view = self.scroll_boss,
- on_scroll = update_arrow,
- -- create_frequency = 0.10,
- on_update_item = function(item, i, v)
- item:SetData(i, v, select_callback)
- item:SetSelect(self.select_boss_id)
- end,
- }
- self.tab_item_list:UpdateItems(data)
-
- self.PER_ITEM_HEIGHT = EquipExamBossItem.ITEM_HEIGHT + EquipExamBossItem.SPACE_Y
- self.CONTENT_SIZE_Y = #self.boss_list_data * self.PER_ITEM_HEIGHT - EquipExamBossItem.SPACE_Y
-
- self:UpdateArrowObj()
-
- local boss_id, index
- if not self.select_boss_id then
- boss_id, index = self.model:GetFirstCanKillBossIdAndIndex()
- self.select_boss_id = boss_id
- end
- self:CheckSelectId( )
- select_callback(self.select_boss_id)
- if index then
- self.tab_item_list:ScrollToItem(index)
- end
- end
-
- function EquipExamBossView:ScrollDownOrUp( is_down )
- if not self.tab_item_list then return end
- if is_down then
- self.tab_item_list:ScrollToItem(#self.model:GetBossLeftTabData())
- else
- self.tab_item_list:ScrollToItem(1)
- end
- end
-
- function EquipExamBossView:UpdateBossInfo()
- if not self.select_boss_id then return end
- local boss_cfg = self.boss_model:GetMoneyBossConf( self.select_boss_id ) -- 赏金配置
- local boss_first_blood_cfg = self.model:GetBossFirstBloodCfg( self.select_boss_id ) --首杀配置
- local boss_first_blood_data = self.model:GetBossData( self.select_boss_id ) -- 首杀后端数据
- self:UpdateModelInfo()
- -- print('=======Msh:EquipExamBossView.lua[125] ===TABLE====')
- -- PrintTable(boss_first_blood_data)
- self.lb_boss_name_tmp.text = string.format('Lv.%s %s', boss_cfg.enter_lv, boss_cfg.boss_name)
- if boss_first_blood_data.killer and boss_first_blood_data.killer ~= "" then
- self.lb_first_kill_info_tmp.text = boss_first_blood_data.killer
- self.lb_first_kill_time_tmp.text = "首杀时间:" .. TimeUtil:timeConversion(boss_first_blood_data.time, 'mm-dd hh:MM:ss')
- SetAnchoredPositionY(self.lb_first_kill_info, 15)
- else
- self.lb_first_kill_info_tmp.text = HtmlColorTxt( "暂无首杀玩家", "#A1C1E1")
- self.lb_first_kill_time_tmp.text = ""
- SetAnchoredPositionY(self.lb_first_kill_info, 5)
- end
-
- local firstkill_reward_list = stringtotable(boss_first_blood_cfg.server_first_award)
- local kill_reward_list = stringtotable(boss_first_blood_cfg.self_first_award)
- -- 首杀奖励
- -- local get_callback = function ( )
- -- if boss_first_blood_data.server_award_status and boss_first_blood_data.server_award_status == 0 and boss_first_blood_data.time > 0 then
- -- self.model:Fire(EquipCollectConst.REQUEST_SCMD_EVENT, 14502,self.select_boss_id, 1)
- -- end
- -- end
- local has_get_firstkill_reward = boss_first_blood_data.killer and boss_first_blood_data.time > 0
- for i,v in ipairs(firstkill_reward_list) do
- self.firstblood_award_item_list[i] = self.firstblood_award_item_list[i] or EquipExamBossAwardItem.New(self.con_first_kill_award)
- local get_status = has_get_firstkill_reward and 2 or 0
- self.firstblood_award_item_list[i]:SetData(v, nil, get_status)
- end
- -- 自己的击杀奖励
- local get_callback = function ( )
- if boss_first_blood_data.self_kill_status == 1 then
- self.model:Fire(EquipCollectConst.REQUEST_SCMD_EVENT, 14502,self.select_boss_id, 2)
- end
- end
- for i,v in ipairs(kill_reward_list) do
- self.selfkill_award_item_list[i] = self.selfkill_award_item_list[i] or EquipExamBossAwardItem.New(self.con_kill_award)
- self.selfkill_award_item_list[i]:SetData(v, get_callback, boss_first_blood_data.self_kill_status)
- end
-
- -- 红包按钮
- local can_get = boss_first_blood_data.server_award_status and boss_first_blood_data.server_award_status == 0 and boss_first_blood_data.time > 0 -- 可领未领
- local red_btn_show = boss_first_blood_data.time and boss_first_blood_data.time > 0
- self.btn_red_packet_obj:SetActive(red_btn_show)
- if can_get then
- self:SetRedPacketShakeAnim( )
- else
- self:RemoveAllCCAction()
- end
-
- -- 按钮状态
- if boss_cfg.enter_lv > RoleManager.Instance.mainRoleInfo.level then
- SetImageGray(self.btn_go_img, true)
- SetTMPSharedMaterial(self.lb_btn_go_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
- self.lb_btn_go_tmp.text = string.format('%s级解锁', boss_cfg.enter_lv)
- else
- SetImageGray(self.btn_go_img, false)
- SetTMPSharedMaterial(self.lb_btn_go_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn)
- self.lb_btn_go_tmp.text = "前往击杀"
- end
-
- -- boss存活状态
- self:UpdateTimeInfo()
- end
-
- function EquipExamBossView:SetRedPacketShakeAnim( )
- self:RemoveAllCCAction()
- if not self.action9 then
- local action1 = cc.RotateTo.New(0.1, 15, 1)
- local action2 = cc.RotateTo.New(0.1, -15, 1)
- local action3 = cc.RotateTo.New(0.1, 0, 1)
- local action7 = cc.DelayTime.New( 1 )
- local action8 = cc.Sequence.New( action1,action2,action1,action2,action1,action2,action3,action7)--顺序
- self.action9 = cc.RepeatForever.New( action8 )
-
- self:AddAction(self.action9, self.btn_red_packet)
- end
- end
-
- function EquipExamBossView:RemoveAllCCAction( )
- cc.ActionManager:getInstance():removeAction(self.action9)
- SetLocalRotation(self.btn_red_packet)
- self.action9 = nil
- end
-
- function EquipExamBossView:UpdateTimeInfo( )
- if not self.is_loaded then return end
- local boss_data = self.boss_model:GetMoneyBossInfo()[self.select_boss_id]
- if not boss_data then return end
- local curTime = TimeUtil:getServerTime()
-
- local is_die = boss_data.reborn_time ~= 0 and boss_data.reborn_time > curTime
- if is_die then
- local temp = boss_data.reborn_time - curTime
- self.lb_kill_tip_tmp.text = string.format( "距离BOSS复活:%s",
- HtmlColorTxt( TimeUtil:convertTimeWithoutHour(temp), ColorUtil.GREEN_DARK) )
- else
- self.lb_kill_tip_tmp.text = "BOSS为祸四方,快去击杀它!"
- end
- end
-
- function EquipExamBossView:UpdateModelInfo( force )
- self:CheckSelectId()
- -- if self.first_open then return end--开界面不加载两次动画
- if not self.is_loaded then return end
- -------------------------
- --Boss形象
- local monster = ConfigItemMgr.Instance:GetMonsterDataItem(self.select_boss_id)
- if not monster then
- print('----LZR BossMoneySubView.lua -- 没有找到怪物配置=')
- return
- end
- -------------------------
- --BOSS展示的时候的第一次播放的动作
- local aciton_list = {"show2","show", idle_name="show",loopList=false}
- local pos = EquipCollectConst.ModelPos[self.select_boss_id] or {0,0}
- if not self.last_boss_id or self.last_boss_id~=self.select_boss_id or force then
- local function delay( )
- if self._use_delete_method then return end
- local res_data = {
- clothe_res_id = monster.icon,
- --weapon_res_id = monster.weapon_id,
- type = SceneBaseType.Monster,
- action_name_list = aciton_list,
- layer_name = "UI",
- father_node = self,
- transform = self.con_model,
- rotate = Vector3(0,180,0),
- fashion_type = FuncOpenModel.TypeId.Monster,
- position = Vector3(pos[1] + MODEL_PARAM.OFFSET_X, pos[2] + MODEL_PARAM.OFFSET_Y, 0),
- shadow2_plane_pos = Vector4(0, 10, 0, 1),
- scale = MODEL_PARAM.SCALE,
- ui_model_type = UIModelCommon.ModelType.BackModel,
- show_shadow = false,
- use_green_screen = true,
- green_screen_camera_type = 3, -- camera_type:1 主摄像机 2 UI摄像机 3 UIModel摄像机
- }
- FuncOpenModel:getInstance():SetModelRes(res_data)
- end
- setTimeout(delay,0.05)
- end
- self.last_boss_id = self.select_boss_id
- end
-
- function EquipExamBossView:CheckSelectId( )
- --检查选中Id是否符合规范
- if (not self.select_boss_id) or (self.select_boss_id == 0) then
- --默认选择
- self.select_boss_id = self.model:GetBossLeftTabData()[1].boss_id
- elseif not self.boss_model:GetMoneyBossConf(self.select_boss_id) then
- self.select_boss_id = self.model:GetBossLeftTabData()[1].boss_id
- end
- end
-
- -- 更新箭头红点
- function EquipExamBossView:UpdateArrowObj( )
- if self.boss_list_data and #self.boss_list_data > SHOW_LEFT_ITEM_COUNT then
- local _, y = GetAnchoredPosition(self.con_content)
- local per_height = self.PER_ITEM_HEIGHT
- self.btn_down_arrow_obj:SetActive(y < (#self.boss_list_data - SHOW_LEFT_ITEM_COUNT - 0.5) * per_height)
- self.btn_up_arrow_obj:SetActive(y > per_height * 0.5)
- self:UpdateArrowBtnRedDot(y)
- else
- self.btn_up_arrow_obj:SetActive(false)
- self.btn_down_arrow_obj:SetActive(false)
- end
- end
-
- -- 更新箭头红点显示
- function EquipExamBossView:UpdateArrowBtnRedDot( content_y )
- if not self.boss_list_data then return end
- local content_y = content_y or self.content_y
- self.content_y = content_y
-
- local hide_size_y_down = self.CONTENT_SIZE_Y - content_y - self.SCROLL_BOSS_SHOW_HEIGHT -- 处于下方的隐藏中content的高度
- local hide_size_y_up = content_y -- 上方的高度
-
- local hide_count_down = math.floor( hide_size_y_down / self.PER_ITEM_HEIGHT )
- local hide_count_up = math.ceil( hide_size_y_up / self.PER_ITEM_HEIGHT )
-
- -- 检查红点 隐藏中的Item的红点
- local bool_down, bool_up = false, false
- for i = #self.boss_list_data - hide_count_down + 1, #self.boss_list_data do
- if self.model:GetBossLeftBtnRed(i) then
- bool_down = true
- break
- end
- end
-
- for i = 1, hide_count_up do
- if self.model:GetBossLeftBtnRed(i) then
- bool_up = true
- break
- end
- end
-
- self.btn_down_arrow_red_obj:SetActive(bool_down)
- self.btn_up_arrow_red_obj:SetActive(bool_up)
- end
-
- function EquipExamBossView:SetData( data )
- self.data = data
- if self.is_loaded then
- self.need_refreshData = false
- self:UpdateView()
- else
- self.need_refreshData = true
- end
- end
-
- function EquipExamBossView:__delete( )
- for k,v in pairs(self.item_list) do
- v:DeleteMe()
- end
- self.item_list = {}
-
- for k,v in pairs(self.firstblood_award_item_list) do
- v:DeleteMe()
- end
- self.firstblood_award_item_list = {}
-
- for k,v in pairs(self.selfkill_award_item_list) do
- v:DeleteMe()
- end
- self.selfkill_award_item_list = {}
-
- self:RemoveAllCCAction()
-
- if self.close_time_id then
- GlobalTimerQuest:CancelQuest(self.close_time_id)
- self.close_time_id = nil
- end
- end
|