GuildSupportInfoItem = GuildSupportInfoItem or BaseClass(BaseItem) GuildSupportInfoItem.CFG_TYPE = { MONEY_BOSS = 1, --赏金幻魔 COLLECT = 2, --封印裂缝 PIN_DUODUO = 3, --社团拼单 DESERTED_BOSS = 4, --星域幻魔 ANSWER = 5, --社团协助答题 GUILD_BOSS = 6, --社团协助击杀BOSS } local GuildSupportInfoItem = GuildSupportInfoItem GuildSupportInfoItem.Width = 900 GuildSupportInfoItem.Height = 134 function GuildSupportInfoItem:__init() self.base_file = "guild" self.layout_file = "GuildSupportInfoItem" self.is_delay_callback = true self.model = GuildModel:getInstance() self.timer_countdown = false self:Load() end function GuildSupportInfoItem:Load_callback() self.nodes = { "go_help/go_help_text:tmp","kill_text:tmp","vip:img","headCon","power:txt" ,"play_title:tmp","nameCon/name:tmp","go_help:img:obj","nameCon/sexCon/sex:img" ,"lock_text:tmp","nameCon","guild_collect_go_help:obj:img", "guild_collect_go_help/guild_collect_go_text:tmp", "time_text:tmp", } self:GetChildren(self.nodes) self.roleItem = HeadRoleItem.New(self.headCon) self.roleItem:SetItemSize(85,85) if self.need_refreshData then self:SetData(self.data,self.index) end self:InitEvent() end function GuildSupportInfoItem:InitEvent() local function clickHandler(target) if target == self.go_help_obj then--前往协助 if not self.is_open then local str = string.format("该功能%s级开启",self.open_level) Message.show(str,"fault") return end if self.data.support_cfg_id == 2 then--封印裂隙协助单独逻辑 if self.cfg and self.cfg.is_conflict == 0 then--被协助者可以接着协助其他人 self.model.need_go_support_guild_collect_after_40046 = true--需要在更新40046之后请求40808寻路杀怪 local guild_collect_support_id = self.model:GetSelfGuildCollectSupportId() local guild_collect_support_status = guild_collect_support_id == self.data.support_sid if guild_collect_support_status then--已经在协助这条,寻路过去杀怪 self.model:Fire(GuildModel.REQUEST_CCMD_EVENT,40808,self.data.support_sid) self.model:Fire(GuildModel.CLOSE_GUILD_SUPPORT_IFNO_VIEW) else if guild_collect_support_id ~= 0 then--有其他协助,请求结束协助,并记录需要进行协助的id延后请求协助 self.model.need_change_collect_support = self.data.support_sid self.model:Fire(GuildModel.REQUEST_CCMD_EVENT,40053) else--没其他封印裂隙的协助,直接发起协助 --其他类型协助中时不允许做封印裂隙的协助 local now_support_id = self.model:GetSelfGuildSupportId() if now_support_id ~= 0 and self.model:GetGuildSupportStatus() == 1 then--请求他人协助 Message.show("您已经请求协助,不可协助其他玩家") return elseif self.model:GetGuildSupportStatus() == 2 then--正在协助他人 Message.show("您正在协助中") return end self.model:Fire(GuildModel.REQUEST_CCMD_EVENT,40052,self.data.support_sid) end self.model:Fire(GuildModel.CLOSE_GUILD_SUPPORT_IFNO_VIEW) end else -- if self.model:GetGuildSupportStatus() == 0 then -- self.model.need_go_support_guild_collect_after_40046 = true--需要在更新40046之后请求40808寻路杀怪 -- local guild_collect_support_id = self.model:GetSelfGuildCollectSupportId() -- local guild_collect_support_status = guild_collect_support_id == self.data.support_sid -- if guild_collect_support_status then--已经在协助这条,寻路过去杀怪 -- self.model:Fire(GuildModel.REQUEST_CCMD_EVENT,40808,self.data.support_sid) -- self.model:Fire(GuildModel.CLOSE_GUILD_SUPPORT_IFNO_VIEW) -- else -- if guild_collect_support_id ~= 0 then--有其他协助,请求结束协助,并记录需要进行协助的id延后请求协助 -- self.model.need_change_collect_support = self.data.support_sid -- self.model:Fire(GuildModel.REQUEST_CCMD_EVENT,40810) -- else--没其他协助,直接发起协助 -- self.model:Fire(GuildModel.REQUEST_CCMD_EVENT,40052,self.data.support_sid) -- end -- self.model:Fire(GuildModel.CLOSE_GUILD_SUPPORT_IFNO_VIEW) -- end -- else -- if self.model:GetGuildSupportStatus() == 1 then--请求他人协助 -- Message.show("您已经请求协助,不可协助其他玩家") -- return -- elseif self.model:GetGuildSupportStatus() == 2 then--正在协助他人 -- Message.show("您正在协助中") -- return -- end -- end end elseif self.data.support_cfg_id == GuildSupportInfoItem.CFG_TYPE.ANSWER then if self.data.role_id ~= RoleManager.Instance.mainRoleInfo.role_id then self.model:Fire(GuildModel.OPEN_GUILD_SUPPORT_GO_VIEW,self.data) else Message.show("无法协助自己哦") end elseif self.data.support_cfg_id == GuildSupportInfoItem.CFG_TYPE.GUILD_BOSS then if self.data.role_id ~= RoleManager.Instance.mainRoleInfo.role_id then local bosspower, end_time, boss_id, dun_id, status = self.model:ParseGuildSupportData(self.data.kv_data) local data = {support_sid = self.data.support_sid, boss_id = boss_id, boss_power = bosspower, dun_id = dun_id, role_data = self.data} self.model:Fire(GuildModel.OPEN_GUILD_SUPPORT_GUILD_BOSS_GO_VIEW, data) else Message.show("无法协助自己哦") end else if self.data.role_id ~= RoleManager.Instance.mainRoleInfo.role_id then self.model:Fire(GuildModel.OPEN_GUILD_SUPPORT_GO_VIEW,self.data) else Message.show("无法协助自己哦") end end elseif target == self.guild_collect_go_help_obj then--封印裂隙前往击杀自己的宝箱怪 if self.data.support_cfg_id == GuildSupportInfoItem.CFG_TYPE.ANSWER then Message.show("任务已被接取") elseif self.data.support_cfg_id == GuildSupportInfoItem.CFG_TYPE.GUILD_BOSS then Message.show("任务已被接取") else --如果是自己请求的封印裂隙协助,直接寻路过去打 if self.cfg and self.cfg.is_conflict == 0 then--被协助者可以接着协助其他人 local now_support_id = self.model:GetSelfGuildSupportId() local guild_collect_support_id = self.model:GetSelfGuildCollectSupportId() if now_support_id ~= 0 and self.model:GetGuildSupportStatus() == 1 then--请求他人协助 Message.show("您已经请求协助,不可前往") return end if now_support_id ~= 0 and now_support_id ~= guild_collect_support_id then--说明当前有在做其他类型的协助 Message.show("您正在协助中") return end self.model:Fire(GuildModel.REQUEST_CCMD_EVENT,40808,self.data.support_sid) self.model:Fire(GuildModel.CLOSE_GUILD_SUPPORT_IFNO_VIEW) else -- if self.model:GetGuildSupportStatus() == 0 then -- self.model:Fire(GuildModel.REQUEST_CCMD_EVENT,40808,self.data.support_sid) -- self.model:Fire(GuildModel.CLOSE_GUILD_SUPPORT_IFNO_VIEW) -- else -- if self.model:GetGuildSupportStatus() == 1 then--请求他人协助 -- Message.show("您已经请求协助,不可前往") -- return -- elseif self.model:GetGuildSupportStatus() == 2 then--正在协助他人 -- Message.show("您正在协助中") -- return -- end -- end end end end end AddClickEvent(self.go_help_obj, clickHandler) AddClickEvent(self.guild_collect_go_help_obj, clickHandler) end function GuildSupportInfoItem:__delete() if self.roleItem then self.roleItem:DeleteMe() self.roleItem = nil end if self.vipItem then self.vipItem:DeleteMe() self.vipItem = nil end self:StopLeftTime() end function GuildSupportInfoItem:StopLeftTime() if self.timer_countdown then TimerQuest.CancelQuest(GlobalTimerQuest, self.timer_countdown) self.timer_countdown = nil end end function GuildSupportInfoItem:CheckLeftTime(time) if time <= 0 then return end self.leftTime = time local function timer_func() self.leftTime = self.leftTime - 1 if self.leftTime <= 0 then self.time_text_tmp.text = "" self.time_text_tmp.text = HtmlColorTxt("已结束" , "#ff203a") self:StopLeftTime() else self.time_text_tmp.text = string.format("协助剩余时间\n%s", HtmlColorTxt(TimeUtil:timeConvert3(self.leftTime) , "#ff203a")) end end self.time_text_tmp.text = string.format("%s", HtmlColorTxt(TimeUtil:timeConvert3(self.leftTime) , "#ff203a")) self.timer_countdown = TimerQuest.AddPeriodQuest(GlobalTimerQuest, timer_func, 1) timer_func() end function GuildSupportInfoItem:SetData(data,index) self.data = data or self.data self.index = index or index if self.is_loaded then self.need_refreshData = false else self.need_refreshData = true return end if not self.data then return end print("huangcong:GuildSupportInfoItem [start:78] self.dataxx:", self.index) PrintTable(self.data) print("huangcong:GuildSupportInfoItem [end]") if not self.data or not self.data.support_sid then return end self.cfg = self.model:GetGuildSupportCfg(self.data.support_cfg_id) if not self.cfg then return end --以下就是玩家的个人数据 self.power_txt.text = self.data.power self.name_tmp.text = self.data.name if not self.vipItem then self.vipItem = RoleVipItem.New(self.vip) end self.vipItem:SetData(self.data.vip_flag,self.data.sup_vip_type) if self.data.vip_flag > 0 then SetAnchoredPositionX(self.nameCon,-185) else SetAnchoredPositionX(self.nameCon,-226) end local role_lv = WordManager:GetRoleLevel(self.data.level,self.data.turn) local head_data = { vo = { id = self.data.role_id, server_id = self.data.server_num, career = self.data.career, sex = self.data.sex, turn = self.data.turn, picture_ver = self.data.picture_ver, picture = self.data.picture, profile_photo_id = self.data.profile_photo_id, dress_board_id = self.data.dress_board or self.data.dress_id, level = self.data.level, empty_head = false, -- 是否是空数据头像 } } self.roleItem:SetData(head_data) local function callback( ... ) SetSizeDeltaX(self.name,self.name_tmp.preferredWidth+2) end if self.data.sex then lua_resM:setImageSprite(self, self.sex_img, "common_asset", self.data.sex == 1 and "com_boy" or "com_girl", true,callback) end self.guild_collect_go_help_obj:SetActive(false) self.go_help_obj:SetActive(false) self.guild_collect_go_text_tmp.text = "前往" SetImageGray(self.guild_collect_go_help_img,false) SetTMPSharedMaterial(self.guild_collect_go_text_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkBlueBtn) self:StopLeftTime() local cfg_id = self.data.support_cfg_id if cfg_id == GuildSupportInfoItem.CFG_TYPE.MONEY_BOSS or cfg_id == GuildSupportInfoItem.CFG_TYPE.PIN_DUODUO or cfg_id == GuildSupportInfoItem.CFG_TYPE.DESERTED_BOSS then self:SetBossUI() elseif cfg_id == GuildSupportInfoItem.CFG_TYPE.COLLECT then self:SetCollectUI() elseif cfg_id == GuildSupportInfoItem.CFG_TYPE.ANSWER then self:SetAnswerUI() elseif cfg_id == GuildSupportInfoItem.CFG_TYPE.GUILD_BOSS then self:SetGuildBossUI() end -- if self.data.vip_flag then -- lua_resM:setImageSprite(self, self.vip_img, "common_asset", "vip_"..self.data.vip_flag, true) -- else -- lua_resM:setImageSprite(self, self.vip_img, "uiComponent_asset", "com_empty",false,callback) -- end end function GuildSupportInfoItem:SetBossUI() local is_open = GetModuleIsOpen(self.cfg.module_id,self.cfg.sub_mod_id) local open_level = GetModuleOpenLevel(self.cfg.module_id,self.cfg.sub_mod_id) local boss_open_lv = 0 local monster_lv = 0 local level = RoleManager.Instance.mainRoleInfo.level if self.data.boss_id and self.data.boss_id ~= 0 then if BossModel:GetInstance():GetBossTypeByBossId(self.data.boss_id) == Config.ConfigBoss.ModuleId.Deserted then--假如是星域幻魔,就只限制层的等级 local boss_cfg = BossModel:GetInstance():GetBossCfgByBossId(self.data.boss_id) if boss_cfg then if Config.Desertedlevel[boss_cfg.level] then boss_open_lv = Config.Desertedlevel[boss_cfg.level].open_lv end end local monster_cfg = ConfigItemMgr.Instance:GetMonsterDataItem(self.data.boss_id) if monster_cfg then monster_lv = monster_cfg.lv or 0 if boss_open_lv == 0 then--还找不到就去找bOSS配置表的 boss_open_lv = monster_cfg.lv or 0 end end else local boss_cfg = BossModel:GetInstance():GetBossCfgByBossId(self.data.boss_id) if boss_cfg then boss_open_lv = boss_cfg.boss_lv or boss_cfg.enter_lv or 0 monster_lv = boss_open_lv if boss_open_lv == 0 then--还找不到就去找bOSS配置表的 local monster_cfg = ConfigItemMgr.Instance:GetMonsterDataItem(self.data.boss_id) if monster_cfg then boss_open_lv = monster_cfg.lv or 0 monster_lv = monster_cfg.lv or 0 end end end end end open_level = open_level>boss_open_lv and open_level or boss_open_lv is_open = level >= open_level if self.data.role_id == RoleManager.Instance.mainRoleInfo.role_id then self.go_help_text_tmp.text = "请求协助中" SetImageGray(self.go_help_img,true) SetTMPSharedMaterial(self.go_help_text_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn) else if self.data.support_cfg_id == 2 then--封印裂隙协助单独逻辑 local guild_collect_support_id = self.model:GetSelfGuildCollectSupportId() local guild_collect_support_status = guild_collect_support_id == self.data.support_sid self.go_help_text_tmp.text = not guild_collect_support_status and "前往协助" or "正在协助中" SetImageGray(self.go_help_img,guild_collect_support_status) SetTMPSharedMaterial(self.go_help_text_tmp, not guild_collect_support_status and ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn or ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn) else local self_support_sid = self.model:GetSelfGuildSupportId() local status = self_support_sid == self.data.support_sid self.go_help_text_tmp.text = not status and "前往协助" or "正在协助中" SetImageGray(self.go_help_img,status) SetTMPSharedMaterial(self.go_help_text_tmp, not status and ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn or ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn) end end self.go_help_obj:SetActive(is_open == true) self.guild_collect_go_help_obj:SetActive(false) self.lock_text_tmp.text = is_open and "" or "Lv."..open_level.."解锁" self.is_open = is_open self.open_level = open_level --Boss形象 local monster = ConfigItemMgr.Instance:GetMonsterDataItem(self.data.boss_id) if not monster then print('----HC GuildSupportThankView.lua -- 没有找到怪物配置=',self.data.boss_id) return end local boss_type = BossModel:GetInstance():GetBossTypeByBossId( self.data.boss_id ) local boss_type_name = self.model:GetSupportTypeName(boss_type) or "" self.play_title_tmp.text = boss_type_name if monster_lv ~= 0 then--有这个等级说明是boss self.kill_text_tmp.text = "击杀"..HtmlColorTxt(Trim(monster.name).."Lv."..monster_lv, ColorUtil.PURPLE_DARK) else self.kill_text_tmp.text = "击杀"..HtmlColorTxt(Trim(monster.name).."Lv."..open_level, ColorUtil.PURPLE_DARK) end if self.data.boss_id == self.model:GetGuildCollectKvByKey("invade_mon").value then -- 采集boos单独描述 self.kill_text_tmp.text = "击杀"..HtmlColorTxt(Trim(monster.name), ColorUtil.PURPLE_DARK) end end function GuildSupportInfoItem:SetCollectUI() local is_open = GetModuleIsOpen(self.cfg.module_id,self.cfg.sub_mod_id) local open_level = GetModuleOpenLevel(self.cfg.module_id,self.cfg.sub_mod_id) local level = RoleManager.Instance.mainRoleInfo.level local boss_open_lv = 0 open_level = open_level>boss_open_lv and open_level or boss_open_lv is_open = level >= open_level self.is_open = is_open if self.data.role_id == RoleManager.Instance.mainRoleInfo.role_id then--自己请求的封印裂隙协助 self.guild_collect_go_help_obj:SetActive(true) self.go_help_obj:SetActive(false) else self.guild_collect_go_help_obj:SetActive(false) self.go_help_obj:SetActive(is_open == true) end if self.data.role_id == RoleManager.Instance.mainRoleInfo.role_id then self.go_help_text_tmp.text = "请求协助中" SetImageGray(self.go_help_img,true) SetTMPSharedMaterial(self.go_help_text_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn) else local guild_collect_support_id = self.model:GetSelfGuildCollectSupportId() local guild_collect_support_status = guild_collect_support_id == self.data.support_sid self.go_help_text_tmp.text = not guild_collect_support_status and "前往协助" or "正在协助中" SetImageGray(self.go_help_img,guild_collect_support_status) SetTMPSharedMaterial(self.go_help_text_tmp, not guild_collect_support_status and ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn or ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn) end --宝箱怪信息 local monster = ConfigItemMgr.Instance:GetMonsterDataItem(self.data.boss_id) if not monster then print('----HC GuildSupportThankView.lua -- 没有找到怪物配置=',self.data.boss_id) return end local boss_type = BossModel:GetInstance():GetBossTypeByBossId( self.data.boss_id ) local boss_type_name = self.model:GetSupportTypeName(boss_type) or "" self.play_title_tmp.text = boss_type_name if self.data.boss_id == self.model:GetGuildCollectKvByKey("invade_mon").value then -- 采集boos单独描述 self.kill_text_tmp.text = "击杀"..HtmlColorTxt(Trim(monster.name), ColorUtil.PURPLE_DARK) end end function GuildSupportInfoItem:SetAnswerUI() local is_open = GetModuleIsOpen(self.cfg.module_id,self.cfg.sub_mod_id) local open_level = GetModuleOpenLevel(self.cfg.module_id,self.cfg.sub_mod_id) local level = RoleManager.Instance.mainRoleInfo.level local bosspower, end_time, boss_id, dun_id, status = self:ParseData(self.data.kv_data) is_open = level >= open_level self.is_open = status == 0 --目前先不判断等级 --self.is_open = is_open and status == 0 self.play_title_tmp.text = Trim(self.cfg.mod_name) self.go_help_obj:SetActive(self.is_open) self.guild_collect_go_help_obj:SetActive(not self.is_open) self.guild_collect_go_text_tmp.text = "已被接取" self.go_help_text_tmp.text = "前往协助" SetImageGray(self.guild_collect_go_help_img,true) SetTMPSharedMaterial(self.guild_collect_go_text_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn) if self.data.role_id == RoleManager.Instance.mainRoleInfo.role_id then self.go_help_text_tmp.text = "请求协助中" SetImageGray(self.go_help_img,true) SetTMPSharedMaterial(self.go_help_text_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn) else self.go_help_text_tmp.text = "前往协助" SetImageGray(self.go_help_img,false) SetTMPSharedMaterial(self.go_help_text_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn) end local max_time, right_time = self.model:GetQuizTimesKv() self.kill_text_tmp.text = string.format("答对%s道题目", HtmlColorTxt(right_time , "#2cf86f" )) local leftTime = end_time - TimeUtil:getServerTime() self:CheckLeftTime(leftTime) end function GuildSupportInfoItem:SetGuildBossUI() local is_open = GetModuleIsOpen(self.cfg.module_id,self.cfg.sub_mod_id) local open_level = GetModuleOpenLevel(self.cfg.module_id,self.cfg.sub_mod_id) local level = RoleManager.Instance.mainRoleInfo.level local bosspower, end_time, boss_id, dun_id, status = self:ParseData(self.data.kv_data) is_open = level >= open_level self.is_open = status == 0 --目前先不判断等级 --self.is_open = is_open and status == 0 self.go_help_obj:SetActive(self.is_open) self.guild_collect_go_help_obj:SetActive(not self.is_open) self.guild_collect_go_text_tmp.text = "已被接取" self.go_help_text_tmp.text = "前往协助" SetImageGray(self.guild_collect_go_help_img,true) SetTMPSharedMaterial(self.guild_collect_go_text_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn) if self.data.role_id == RoleManager.Instance.mainRoleInfo.role_id then self.go_help_text_tmp.text = "请求协助中" SetImageGray(self.go_help_img,true) SetTMPSharedMaterial(self.go_help_text_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn) else self.go_help_text_tmp.text = "前往协助" SetImageGray(self.go_help_img,false) SetTMPSharedMaterial(self.go_help_text_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn) end local max_time, right_time = self.model:GetQuizTimesKv() self.boss_id = boss_id self.dun_id = dun_id self.boss_power = bosspower local monster = ConfigItemMgr.Instance:GetMonsterDataItem(boss_id) if monster then self.play_title_tmp.text = Trim(monster.name) else self.play_title_tmp.text = Trim(self.cfg.mod_name) end self.kill_text_tmp.text = string.format("BOSS战力:%s", HtmlColorTxt(bosspower , RoleManager.Instance.mainRoleInfo.fighting >= bosspower and ColorUtil.GREEN_DARK or ColorUtil.RED_DARK)) local leftTime = end_time - TimeUtil:getServerTime() self:CheckLeftTime(leftTime) end function GuildSupportInfoItem:ParseData(str) local bosspower = 0 local end_time = 0 local boss_id = 0 local dun_id = 0 local status = 0 if str and str ~= "" then local info = stringtotable(str) if info and #info > 0 then for i,v in ipairs(info) do local key = tonumber(v[1]) if key == 1 then bosspower = tonumber(v[2]) elseif key == 2 then end_time = tonumber(v[2]) elseif key == 3 then boss_id = tonumber(v[2]) elseif key == 4 then dun_id = tonumber(v[2]) elseif key == 5 then status = tonumber(v[2]) end end end end return bosspower, end_time, boss_id, dun_id, status end