源战役客户端
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 
 

517 rader
22 KiB

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