|
|
- BossHomeSceneRankItem = BossHomeSceneRankItem or BaseClass(BaseItem)
- local BossHomeSceneRankItem = BossHomeSceneRankItem
-
- function BossHomeSceneRankItem:__init(parent_wnd,prefab_asset,layer_name,tag)
- self.base_file = "boss"
- self.layout_file = "BossHomeSceneRankItem"
- self.tag = tag
- self.model = BossHomeModel:getInstance()
- self.enemy_list = {}
- self.show_data = false
- self.show_time = 0--显示的时间
-
- self:Load()
- end
-
- function BossHomeSceneRankItem:Load_callback()
- self.nodes = {
- "img_rank:img:obj","lb_rank:tmp","lb_name:tmp","lb_att:tmp",
-
- "con:obj","btn_team:img:obj","btn_att:img:obj","con/con_tip:obj",
- }
- self:GetChildren(self.nodes)
-
- self:AddEvents()
- if self.need_refreshData then
- self:UpdateView()
- end
-
- if self.tag == "boss_home" then
- lua_resM:setImageSprite(self, self.btn_att_img,'boss_asset',"boss_btn_29",true)
- lua_resM:setImageSprite(self, self.btn_team_img,'boss_asset',"boss_btn_30",true)
- end
- end
-
- function BossHomeSceneRankItem:AddEvents( )
- local function call_back( target )
- if target == self.btn_team_obj then
- if not self.data then return end
- local my_team_id = RoleManager.Instance.mainRoleInfo.team_id
- local other_team_id = 0
- if self.data.type == 0 then
- --无组队玩家
- else
- other_team_id = self.data.role_id
- end
- -------------------------
- if my_team_id == 0 and other_team_id ~= 0 then
- GlobalEventSystem:Fire(TeamModel.APPLY_JOIN_TEAM,other_team_id)
- elseif my_team_id == 0 and other_team_id == 0 then
- GlobalEventSystem:Fire(TeamModel.INVITE_PLAYER,{self.data.role_id})
- elseif my_team_id ~= 0 and other_team_id == 0 then
- GlobalEventSystem:Fire(TeamModel.INVITE_PLAYER,{self.data.role_id})
- elseif my_team_id ~= 0 and other_team_id ~= 0 then
- Message.show("双方均有队伍! 请退出队伍再操作!")
- end
- elseif target == self.btn_att_obj then
- if not self.data then return end
- local support_data = GuildModel:getInstance():GetCurSupportPlayerInfo()
- if self.data.type == 1 then
- --队伍的时候,先找到活着的队长,然后找到活着的队员,最后找死的队长
- local lead_info = false--队长
- local team_info = {}--队员信息
- local all_other_vo = SceneManager.Instance:GetAllRoleVos( )
- for a,vo in pairs(all_other_vo) do
- local temp = Scene:getInstance():GetRole(vo.role_id)
- if vo.team_id == self.data.role_id then
- if vo.team_job == 1 then
- lead_info = vo
- else
- table.insert( team_info, vo )
- end
- end
- end
- -------------------------
- local role_target = false
- if lead_info and lead_info.hp > 0 then
- --先找到活着的队长
- role_target = Scene.Instance:GetRole(lead_info.role_id)
- elseif team_info[1] then
- for k,v in pairs(team_info) do
- if v.hp > 0 then
- --然后找到活着的队员
- role_target = Scene.Instance:GetRole(v.role_id)
- break
- end
- end
- end
- if not role_target then
- --如果没有活的就找死的
- if lead_info then
- role_target = Scene.Instance:GetRole(lead_info.role_id)
- elseif team_info[1] then
- role_target = Scene.Instance:GetRole(team_info[1].role_id)
- end
- end
- -------------------------
- --对协助目标的判断
- local is_support = false
- if support_data then
- if lead_info and lead_info.role_id == support_data.role_id then
- is_support = true
- end
- if not is_support then
- for k,v in pairs(team_info) do
- if v.role_id == support_data.role_id then
- is_support = true
- break
- end
- end
- end
- end
- if is_support then
- --点到了协助目标
- Message.show("对方正在接收您的协助")
- return
- end
- -------------------------
- if role_target then
- Scene.Instance:SetClickTarget(role_target)
- GlobalEventSystem:Fire(EventName.STARTAUTOFIGHT)
- end
- else
- if support_data and support_data.role_id == self.data.role_id then
- --点到了协助目标
- Message.show("对方正在接收您的协助")
- return
- end
- local role = Scene.Instance:GetRole(self.data.role_id)
- if role then
- Scene.Instance:SetClickTarget(role)
- GlobalEventSystem:Fire(EventName.STARTAUTOFIGHT)
- end
- end
- end
- end
- AddClickEvent(self.btn_team_obj,call_back,false)
- AddClickEvent(self.btn_att_obj,call_back,false)
-
- local function REFRESH_ENEMY_LIST( data )
- if not data then return end
- if not self.data then return end
- -------------------------
- local curTime = TimeUtil:getServerTime()
- if self.show_data and (curTime - self.show_data.time <= 5) then
- --强制闪烁5s,中间跳过过滤
- return
- end
- self.enemy_list = data
- self.show_data = false
- for k,v in pairs(self.enemy_list) do
- if self.data.type == 1 then
- --队伍的时候
- local all_other_vo = SceneManager.Instance:GetAllRoleVos( )
- for a,vo in pairs(all_other_vo) do
- local temp = Scene:getInstance():GetRole(vo.role_id)
- if vo.role_id == v.role_id and vo.team_id == self.data.role_id then
- self.show_data = v
- break
- end
- end
- elseif v.role_id == self.data.role_id then
- self.show_data = v
- break
- end
- end
- if not self.show_data then
- self:CleanAction()
- else
- self:ShowAction()
- end
- end
- self:BindEvent(self.model, BossHomeConst.REFRESH_ENEMY_LIST, REFRESH_ENEMY_LIST)
- end
-
- function BossHomeSceneRankItem:UpdateView( )
- if not self.data then return end
- self.data.server_num = 0
- if self.data.server_num ~= 0 then
- self.data.name = GetCSLongName(self.data.name, self.data.server_num)
- end
- if self.data.type == 1 then
- self.lb_name_tmp.text = self.model:GetShortNameStr(string.format( "%s队", self.data.name ))
- else
- self.lb_name_tmp.text = self.model:GetShortNameStr(self.data.name)
- end
- -------------------------
- local boss_id = self.model:GetCurFightBossId()
- if not boss_id then return end
- local boss_type = self.model:GetBossTypeByBossId( boss_id )
- -------------------------
- local boss_max_hp = boss_type and self.model:GetSceneBossHp(boss_type) or 0
- if boss_max_hp == 0 and boss_type ~= Config.ConfigBoss.ModuleId.BossHome and boss_type ~= Config.ConfigBoss.ModuleId.GuildBossHome then
- self.lb_att_tmp.text = "获取中"
- else
- self.lb_att_tmp.text = self.model:GetHurtNumStr(self.data.hurt)--string.format("%0.2f%%",self.data.hurt / boss_max_hp * 100)
- end
-
- self.img_rank_obj:SetActive(self.index <= 3)
- if self.index <= 3 then
- self.lb_rank_tmp.text = ""
- lua_resM:setImageSprite(self, self.img_rank_img, "common_asset", "com_rank_3_" .. self.index,true)
- else
- self.lb_rank_tmp.text = self.index
- end
-
- local is_me = false
- if self.data.type == 1 then
- is_me = RoleManager.Instance.mainRoleInfo.team_id == self.data.role_id
- else
- is_me = self.data.role_id == RoleManager.Instance.mainRoleInfo.role_id
- end
- self.btn_team_obj:SetActive((self.tag_str == "boss_home") and (not is_me))
- self.btn_att_obj:SetActive((self.tag_str == "boss_home") and (not is_me))
- end
-
- function BossHomeSceneRankItem:ShowAction( )
- --5s的闪现
- if (not self.is_loaded) or (not self.show_data) then return end
- self.show_time = 5
- local function clockFun()
- if self.show_time <= 0 then
- self:CleanAction()
- elseif self.show_time <= 2 then
- self.con_obj:SetActive(false)
- else
- self.con_obj:SetActive(true)
- self.con_tip.transform:GetComponent("CanvasGroup").alpha = 0
- local function right_action_move( percent )
- if percent <= 0.5 then
- self.con_tip.transform:GetComponent("CanvasGroup").alpha = percent * 2
- else
- self.con_tip.transform:GetComponent("CanvasGroup").alpha = 1 - ((percent-0.5) * 2)
- end
- end
- local action = cc.CustomUpdate.New(1,right_action_move)
- self:AddAction(action, self.con_tip.transform)
- self.show_time = self.show_time - 1
- end
- end
- if not self.close_time_id then
- clockFun()
- end
- self.close_time_id = self.close_time_id or GlobalTimerQuest:AddPeriodQuest(clockFun, 1, -1)
- end
-
- function BossHomeSceneRankItem:CleanAction( )
- self.show_time = 0
- self.con_obj:SetActive(false)
- self.show_data = false
- if self.close_time_id then
- GlobalTimerQuest:CancelQuest(self.close_time_id)
- self.close_time_id = nil
- end
- if self.con.transform then
- cc.ActionManager:getInstance():removeAllActionsFromTarget( self.con.transform )
- end
- end
-
- function BossHomeSceneRankItem:SetData( index, data, tag_str )
- self.index = index
- self.data = data
- self.tag_str = tag_str
- if self.is_loaded then
- self.need_refreshData = false
- self:UpdateView()
- else
- self.need_refreshData = true
- end
- end
-
- function BossHomeSceneRankItem:__delete( )
- self:CleanAction()
- end
|