SoulPowerView = SoulPowerView or BaseClass(BaseItem) local SoulPowerView = SoulPowerView function SoulPowerView:__init() self.base_file = "soulPower" self.layout_file = "SoulPowerView" self.model = SoulPowerModel:getInstance() self.layer_name = "UI" self.full_screen = true self.ani_right = 400 self.ani_left = -200 self.adjust_mid = {left = 160, right = 780} self.last_click_time = 0 self.last_charge_time = 0 self.last_up_grade_time = 0 self.model.has_create_once = false self.old_slider_effct_play_time = 0 self.first_show_slider = false self.need_wait_slider = false self.is_in_auto_charge = false --是否在自动充能状态中 self.auto_charge_speed = 2 --每次协议消耗的道具数量 self.sp_item_list = {} self:Load() end function SoulPowerView:Load_callback() self.nodes = { "skillCon/skillBg/skillIcon:img:obj", "skillCon", "skillCon/skillBg", "right/nextFightArrow:obj", "itemCon", "right/nextFight:tmp", "right/nowFight:txt", "bg:raw", "right/bg3:raw", "effect", ------------------------- "right/nextLvDi:obj", "right/nowLvDi:obj", "right/attrScrollView", "right/attrScrollView/Viewport/attrContent", --属性框 "right/attrScrollView/Viewport:img", "right/nextLvArrow:obj", --下一层箭头 "right/nextLvName:tmp", "right/nowLvName:tmp", --当前和下层的名字 "right/nextSkillDi:obj", "right/nowSkillDi:obj", "right/nextSkillImg:img:obj", "right/nowSkillImg:img:obj", "right/nowSkillName:tmp", "right/nextSkillName:tmp", --技能 ----------------------- "right/upLvCon:obj", --升层框 "right/upLvCon/chargeBtn:obj:img", "right/upLvCon/activateBtn:obj:img", "right/upLvCon/activateBtn/activateRed:obj", --充能、激活按钮、激活红点 "right/upLvCon/chargeBtn/chargeRed:obj", "right/upLvCon/chargeBtn/Text:tmp", "right/upLvCon/chargeSlider:img", --充能进度条 "right/upLvCon/chargeLeftTime:tmp", --剩余时间倒计时 "right/upLvCon/chargeName:tmp", "right/upLvCon/rewardCon", "right/upLvCon/materialName:tmp", "right/upLvCon/sliderText:tmp", "right/upLvCon/activateBtn/activateText:tmp", "right/upLvCon/sliderEffect", ----------------------- "right/upGradeCon:obj", --突破框 "right/upGradeCon/upGradeBtn/upGraderedDot:obj", "right/upGradeCon/upGradeBtn:obj", --突破按钮、红点 "right/upGradeCon/conditionScrollView:obj", "right/upGradeCon/conditionScrollView/Viewport/conditionContent", "right/upGradeCon/gradeEmpty:obj", ----------------------- "gradeName:tmp", "skillCon/skillName:tmp", "right/starLvCon/starLv1:img", "right/starLvCon/starLv2:img", "right/starLvCon/starLv3:img", "right/starLvCon/starLv4:img", "right/starLvCon/starLv5:img", "right/starLvCon/starLv6:img", "right/starLvCon/starLv7:img", "right/starLvCon/starLv8:img", "right/nextSkillArrow:obj", } self:GetChildren(self.nodes) self:RegisterMask(self.Viewport_img) self.chargeSlider_img.fillAmount = 0 self.chargeBtn_obj:SetActive(false) SetAnchoredPositionX(self.activateBtn,5) --创建消耗道具 self.cost_item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.rewardCon) self.cost_item:SetItemSize(78,78) self.cost_item:SetAnchoredPosition(0,0) lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg("soul_power_bg")) lua_resM:setOutsideRawImage(self,self.bg3_raw,GameResPath.GetViewBigBg("soul_power_bg_right")) self:ArrowAnimation(0) self.skillCon_canvas = self.skillCon:GetComponent(typeof(UnityEngine.Canvas)) self.skillCon_canvas.sortingOrder = self:GetCurrLayerDepth("UI") + 40 self:AddEvents() if self.need_refreshData then self:SetData() end end function SoulPowerView:AddEvents( ) local on_click = function ( click_obj ) if self.chargeBtn_obj == click_obj then--激活下一层 self:DoSPCharge(1) elseif self.activateBtn_obj == click_obj then--激活下一层 self:DoSPCharge(2) elseif self.upGradeBtn_obj == click_obj then--突破 if TimeUtil:getServerTimeMs()/1000-self.last_up_grade_time <= 0.25 then return end self.last_up_grade_time = TimeUtil:getServerTimeMs()/1000 self.model.old_sp_grade, _ = self.model:GetSoulPowerNowGradeLv() self.model:Fire(SoulPowerConst.REQUEST_CCMD_EVENT,14402) elseif self.skillIcon_obj == click_obj then--当前技能图标 if not self.sp_grade_condition_cfg then return end local skill_info = stringtotable(self.sp_grade_condition_cfg.skills)[1] local data = { skill_id = tonumber(skill_info[1]), skill_lv = tonumber(skill_info[2]), } GlobalEventSystem:Fire(EventName.OPEN_COMMON_SKILL_TIPS, data) elseif self.nextSkillImg_obj == click_obj then--突破的下一阶技能图标 if not self.sp_grade then return end local next_grade_condition_cfg = self.model:GetSoulPowerGradeCfgByGrade(self.sp_grade+1) if not next_grade_condition_cfg then return end local skill_info = stringtotable(next_grade_condition_cfg.skills)[1] local data = { skill_id = tonumber(skill_info[1]), skill_lv = tonumber(skill_info[2]), } GlobalEventSystem:Fire(EventName.OPEN_COMMON_SKILL_TIPS, data) elseif self.nowSkillImg_obj == click_obj then--当前技能图标 if not self.sp_grade_condition_cfg then return end local skill_info = stringtotable(self.sp_grade_condition_cfg.skills)[1] local data = { skill_id = tonumber(skill_info[1]), skill_lv = tonumber(skill_info[2]), } GlobalEventSystem:Fire(EventName.OPEN_COMMON_SKILL_TIPS, data) end end AddClickEvent(self.chargeBtn_obj, on_click) AddClickEvent(self.activateBtn_obj, on_click) AddClickEvent(self.upGradeBtn_obj, on_click) AddClickEvent(self.skillIcon_obj, on_click) AddClickEvent(self.nextSkillImg_obj, on_click) AddClickEvent(self.nowSkillImg_obj, on_click) local update_soul_power_view = function() if not self.is_loaded then return end self:UpdateView(self.model.need_show_attr_up_effect) self.model.need_show_attr_up_effect = false end self:BindEvent(self.model, SoulPowerConst.UPDATE_SOUL_POWER_VIEW, update_soul_power_view) local function on_update_goods_num() if not self.is_loaded then return end self:UpdateMaterial() self:UpdateUpLvBtnState() end self:BindEvent(self.model,SoulPowerConst.UPDATE_SP_GOODS_NUM,on_update_goods_num) end function SoulPowerView:DoSPCharge(type) if TimeUtil:getServerTimeMs()/1000-self.last_charge_time <= 0.25 then return end self.last_charge_time = TimeUtil:getServerTimeMs()/1000 local cost_goods_id = self.model:GetMaterialGoodsId() local goods_num = GoodsModel:getInstance():GetTypeGoodsNum(cost_goods_id) if type == 1 then--充能一个 if goods_num == 0 then Message.show("材料不足") UIToolTipMgr:getInstance():AppendGoodsTips(cost_goods_id,nil,nil,nil,nil,nil,nil,true) else self.old_lv = self.sp_lv self.model:Fire(SoulPowerConst.REQUEST_CCMD_EVENT,14401,1) end elseif type == 2 then--自动充能到下一级 if not self.sp_grade or not self.sp_lv then return end local charge_num = 1 local lv_cfg = self.model:GetSoulPowerLvCfgByGradeLv(self.sp_grade,self.sp_lv) local need_energy = lv_cfg and lv_cfg.energy or 0 local now_energy = self.model:GetSoulPowerNowEnergy() local left_energy = need_energy-now_energy charge_num = left_energy/self.model:GetMaterialCanGetEnergy() if goods_num == 0 then Message.show("材料不足") UIToolTipMgr:getInstance():AppendGoodsTips(cost_goods_id,nil,nil,nil,nil,nil,nil,true) elseif goods_num >= charge_num then self.old_lv = self.sp_lv self.model:Fire(SoulPowerConst.REQUEST_CCMD_EVENT,14401,charge_num) else self.old_lv = self.sp_lv self.model:Fire(SoulPowerConst.REQUEST_CCMD_EVENT,14401,goods_num) end end end -- --自动充能(14401协议不断请求) -- function SoulPowerView:DoAutoCharge( ) -- if self.is_in_auto_charge then--在自动充能中,点击按钮,取消充能 -- self:StopAutoCharge() -- else -- if self.timer_id then -- GlobalTimerQuest:CancelQuest(self.timer_id) -- self.timer_id = nil -- end -- local function onTimer() -- local sp_grade, sp_lv = self.model:GetSoulPowerNowGradeLv() -- if sp_lv == self.model:GetSoulPowerMaxLv(sp_grade) then return end -- self:AutoCharge() -- end -- if not self.timer_id then -- self.timer_id = GlobalTimerQuest:AddPeriodQuest(onTimer, 0.2, -1) -- self.is_in_auto_charge = true -- end -- end -- end -- function SoulPowerView:AutoCharge( ) -- local cost_goods_id = self.model:GetMaterialGoodsId() -- local goods_num = GoodsModel:getInstance():GetTypeGoodsNum(cost_goods_id) -- if goods_num == 0 then -- self:StopAutoCharge() -- elseif goods_num > 0 and goods_num < self.auto_charge_speed then -- self.old_lv = self.sp_lv -- self.model:Fire(SoulPowerConst.REQUEST_CCMD_EVENT,14401,goods_num) -- else -- self.old_lv = self.sp_lv -- self.model:Fire(SoulPowerConst.REQUEST_CCMD_EVENT,14401,self.auto_charge_speed) -- end -- end -- function SoulPowerView:StopAutoCharge( ) -- self.is_in_auto_charge = false -- if self.timer_id then -- GlobalTimerQuest:CancelQuest(self.timer_id) -- self.timer_id = nil -- end -- end function SoulPowerView:RequestData( ) self.model:Fire(SoulPowerConst.REQUEST_CCMD_EVENT,14400) end function SoulPowerView:SetData() if self.is_loaded then self.need_refreshData = false self.first_show_slider = false self.need_wait_slider = false self:RequestData() self:AddUIEffect("ui_hunlidizuo_1", self.effect, "UI", nil, 4.2, true) else self.need_refreshData = true end end function SoulPowerView:UpdateView(need_show_attr_up_effect) self.skillCon_canvas.sortingOrder = self:GetCurrLayerDepth("UI") + 40 self.sp_grade, self.sp_lv = self.model:GetSoulPowerNowGradeLv() self.sp_grade_cfg = self.model:GetSoulPowerLvCfgByGrade(self.sp_grade) --当前阶数配置 self.sp_lv_cfg = self.model:GetSoulPowerLvCfgByGradeLv(self.sp_grade, self.sp_lv) --当前阶数当前层数的配置 self.sp_grade_condition_cfg = self.model:GetSoulPowerGradeCfgByGrade(self.sp_grade) --当前阶数的额外配置 self.sp_max_lv = self.model:GetSoulPowerMaxLv(self.sp_grade) --当前阶数的最高层数 if not self.sp_lv_cfg or not self.sp_grade_cfg or not self.sp_grade_condition_cfg then return end local now_skill_data = stringtotable(self.sp_grade_condition_cfg.skills) lua_resM:setOutsideImageSprite(self, self.skillIcon_img, GameResPath.GetSkillIcon(now_skill_data[1][1])) local now_skill_cfg = ConfigItemMgr.Instance:GetSkillItem(now_skill_data[1][1]) self.skillName_tmp.text = Trim(now_skill_cfg.name).." <#fdffc2>[Lv."..now_skill_data[1][2].."]" self:UpdateItemCon() self:UpdateBaseInfoShow() self:UpdateRightInfoSHow(need_show_attr_up_effect) end function SoulPowerView:ArrowAnimation(time) self:StopAnim() local call_fun = function () local function onCompleted() self:ArrowAnimation(time) end self.tween_id3 =TweenLite.to(self, self.skillBg,TweenLite.UiAnimationType.ANCHORED_POSY,-2, 2.5, onCompleted) end local onDelay = function( ) self.tween_id2 =TweenLite.to(self, self.skillBg,TweenLite.UiAnimationType.ANCHORED_POSY,7, 2.5, call_fun) end self.arrow_timer_id = setTimeout(onDelay, time) end function SoulPowerView:StopAnim() if self.tween_id2 then TweenLite.Stop(self.tween_id2) self.tween_id2 = nil end if self.tween_id3 then TweenLite.Stop(self.tween_id3) self.tween_id3 = nil end if self.arrow_timer_id then GlobalTimerQuest:CancelQuest(self.arrow_timer_id) self.arrow_timer_id = nil end end --item栏 function SoulPowerView:UpdateItemCon( ) if self.model.has_create_once then return end--打开界面只创建一次,后面收到14500只对item进行更新 local sp_item_data = {} for i,v in ipairs(self.sp_grade_cfg) do if v.lv~=0 then table.insert(sp_item_data,v) end end for k,v in pairs(self.sp_item_list) do v:SetVisible(false) end for i,v in ipairs(sp_item_data) do local item = self.sp_item_list[i] if not item then item = SoulPowerItem.New(self.itemCon) self.sp_item_list[i] = item end item:SetVisible(true) item:SetData(v ,i) item:SetPosition(SoulPowerConst.SoulPowerItemPos[i].x, SoulPowerConst.SoulPowerItemPos[i].y) end self.model.has_create_once = true end --技能、名字、战力等基础显示 function SoulPowerView:UpdateBaseInfoShow( ) -- local fight = self.model:GetSoulPowerNowPower() -- self.nowFight_txt.text = fight self.gradeName_tmp.text = string.format("%s阶 %s", self.sp_grade, Trim(self.sp_grade_condition_cfg.name)) end --刷新右侧栏显示(突破 or 激活) function SoulPowerView:UpdateRightInfoSHow(need_show_attr_up_effect) if self.sp_lv == self.sp_max_lv then --已经升到最高层了,展示突破界面 self.upLvCon_obj:SetActive(false) self.upGradeCon_obj:SetActive(true) self:UpdateUpGradeCon() else self.upLvCon_obj:SetActive(true) self.upGradeCon_obj:SetActive(false) self:UpdateUpLvCon() end self:UpdateRightCommonInfo(self.sp_lv == self.sp_max_lv,need_show_attr_up_effect) end function SoulPowerView:UpdateRightCommonInfo(is_grade_up,need_show_attr_up_effect) --技能 local now_skill_data = stringtotable(self.sp_grade_condition_cfg.skills) lua_resM:setOutsideImageSprite(self, self.nowSkillImg_img, GameResPath.GetSkillIcon(now_skill_data[1][1])) local now_skill_cfg = ConfigItemMgr.Instance:GetSkillItem(now_skill_data[1][1]) self.nowSkillName_tmp.text = Trim(now_skill_cfg.name).." <#a9c1e1>[Lv."..now_skill_data[1][2].."]" -- local skill_des = now_skill_cfg.lvs[now_skill_data[1][2]] and Trim(now_skill_cfg.lvs[now_skill_data[1][2]].desc) or "技能配置缺失" -- self.skillDes_tmp.text = skill_des local have_next_skill = false local next_grade_condition_cfg = self.model:GetSoulPowerGradeCfgByGrade(self.sp_grade+1) local next_skill_data = {} if not next_grade_condition_cfg then self.nextSkillImg_obj:SetActive(false) self.nextSkillDi_obj:SetActive(false) SetAnchoredPositionX(self.nowSkillImg, 108) SetAnchoredPositionX(self.nowSkillName, 108) SetAnchoredPositionX(self.nowSkillDi, 108) self.nextSkillName_tmp.text = "" have_next_skill = false else self.nextSkillImg_obj:SetActive(true) self.nextSkillDi_obj:SetActive(true) SetAnchoredPositionX(self.nowSkillImg, 6) SetAnchoredPositionX(self.nowSkillName, 6) SetAnchoredPositionX(self.nowSkillDi, 6) --下阶技能 next_skill_data = stringtotable(next_grade_condition_cfg.skills) lua_resM:setOutsideImageSprite(self, self.nextSkillImg_img, GameResPath.GetSkillIcon(next_skill_data[1][1])) local next_skill_cfg = ConfigItemMgr.Instance:GetSkillItem(next_skill_data[1][1]) self.nextSkillName_tmp.text = Trim(next_skill_cfg.name).." <#fdffc2>[Lv."..next_skill_data[1][2].."]" have_next_skill = true end --属性 local attr_cfg = stringtotable(self.sp_lv_cfg.attrs) local next_attr_cfg = {} if is_grade_up then local next_sp_grade_lv_cfg = self.model:GetSoulPowerLvCfgByGradeLv(self.sp_grade+1, 0) if next_sp_grade_lv_cfg then next_attr_cfg = stringtotable(next_sp_grade_lv_cfg.attrs) end else local next_sp_lv_cfg = self.model:GetSoulPowerLvCfgByGradeLv(self.sp_grade, self.sp_lv+1) if next_sp_lv_cfg then next_attr_cfg = stringtotable(next_sp_lv_cfg.attrs) end end local now_skill_faker_attr_data = {} local next_skill_faker_attr_data = {} local now_skill_lv_hp_value = self.model:GetSoulPowerHpResumeCfg(now_skill_data[1][2]) or 0 now_skill_faker_attr_data = {9999,now_skill_lv_hp_value} local next_skill_lv_hp_value = 0 if have_next_skill then next_skill_lv_hp_value = self.model:GetSoulPowerHpResumeCfg(next_skill_data[1][2]) or 0 end next_skill_faker_attr_data = {9999,next_skill_lv_hp_value} table.insert(attr_cfg,1,now_skill_faker_attr_data) table.insert(next_attr_cfg,1,next_skill_faker_attr_data) if not self.item_list_com then self.item_list_com = self:AddUIComponent(UI.ItemListCreator) end local info = { data_list = attr_cfg, item_con = self.attrContent, item_class = SoulPowerAttrItem, -- item_width = 288, item_height = 34, -- space_x = -5, space_y = 2.5, start_x = 0, start_y = -6.5, scroll_view = self.attrScrollView, -- create_frequency = 0.01, on_update_item = function(item, i, v) item:SetData(v, i, next_attr_cfg,need_show_attr_up_effect,is_grade_up) end, } self.item_list_com:UpdateItems(info) for i=1,8 do if i <= self.sp_lv then lua_resM:setImageSprite(self, self["starLv"..i.."_img"], "soulPower_asset","soul_power_star_lv_1") else lua_resM:setImageSprite(self, self["starLv"..i.."_img"], "soulPower_asset","soul_power_star_lv_0") end end end function SoulPowerView:UpdateUpLvCon() SetAnchoredPositionX(self.nowLvName, 17) self.nowLvName_tmp.text = string.format("%s %s层", Trim(self.sp_grade_condition_cfg.name), self.sp_lv) self.nextLvName_tmp.text = string.format("%s %s层", Trim(self.sp_grade_condition_cfg.name), self.sp_lv+1) --正在充能 self.chargeName_tmp.text = string.format("充能目标 <#fdffc2>%s%s层", Trim(self.sp_grade_condition_cfg.name), self.sp_lv+1) --战力 local fight = self.model:GetSoulPowerNowFight(self.sp_grade, self.sp_lv) local add_fight = self.model:GetSoulPowerNextUpLvFight(self.sp_grade, self.sp_lv) self.nowFight_txt.text = "f"..fight self.nextFight_tmp.text = add_fight SetAnchoredPositionX(self.nextFightArrow, 36+self.nowFight_txt.preferredWidth/2+50) SetAnchoredPositionX(self.nextFight, 36+self.nowFight_txt.preferredWidth/2+50+25) self.nextFightArrow_obj:SetActive(true) SetAnchoredPositionX(self.nowLvDi,28) self.nextLvDi_obj:SetActive(true) --材料 self:UpdateMaterial() --进度条 self:UpdateFillAmount() --按钮状态 self:UpdateUpLvBtnState() end --充能材料展示 function SoulPowerView:UpdateMaterial( ) local cost_goods_id = self.model:GetMaterialGoodsId() local goods_name = GoodsModel:getInstance():getGoodsName(cost_goods_id,true) self.materialName_tmp.text = goods_name local goods_num = GoodsModel:getInstance():GetTypeGoodsNum(cost_goods_id) self.cost_item:SetData(cost_goods_id) local get_str = HtmlColorTxt(goods_num, goods_num < 1 and ColorUtil.RED_DARK or ColorUtil.GREEN_DARK).."/".. 1 self.cost_item:IsGetGoods(true,get_str,false) end function SoulPowerView:UpdateFillAmount() if not self.sp_grade or not self.sp_lv then return end local lv_cfg = self.model:GetSoulPowerLvCfgByGradeLv(self.sp_grade,self.sp_lv) local need_energy = lv_cfg and lv_cfg.energy or 0 local now_energy = self.model:GetSoulPowerNowEnergy() local ratio = now_energy/need_energy self.sliderText_tmp.text = now_energy.."/"..need_energy if not self.first_show_slider then self.chargeSlider_img.fillAmount = ratio self.first_show_slider = true return end ------------------------------------------------------ if self.need_wait_slider then return end if self.tween_slider_id then TweenLite.Stop(self.tween_slider_id) self.tween_slider_id = nil end if self.tween_slider_id_2 then TweenLite.Stop(self.tween_slider_id_2) self.tween_slider_id_2 = nil end if self.tween_slider_id_3 then TweenLite.Stop(self.tween_slider_id_3) self.tween_slider_id_3 = nil end local old_value = self.chargeSlider_img.fillAmount local end_value = ratio local need_time local need_time_2 if self.old_lv and self.sp_lv > self.old_lv then--说明升级了,要先跑满这一条再继续跑 need_time = 1*(1-old_value)/4 need_time = need_time >= 0.15 and need_time or 0.15 need_time_2 = 1*end_value need_time_2 = need_time_2 >= 0.15 and need_time_2 or 0.15 local function end_call() self.chargeSlider_img.fillAmount = 0 --最终纠正进度条 local function final_call() local lv_cfg = self.model:GetSoulPowerLvCfgByGradeLv(self.sp_grade,self.sp_lv) local need_energy = lv_cfg and lv_cfg.energy or 0 local now_energy = self.model:GetSoulPowerNowEnergy() local ratio = now_energy/need_energy local function final_call_2() self.chargeSlider_img.fillAmount = ratio end self.tween_slider_id_3 = TweenLite.to(self, self.chargeSlider, TweenLite.UiAnimationType.FILLAMOUNT, ratio, need_time_2,final_call_2) end self.tween_slider_id_2 = TweenLite.to(self, self.chargeSlider, TweenLite.UiAnimationType.FILLAMOUNT, end_value, need_time_2,final_call) self.need_wait_slider = false end self.tween_slider_id = TweenLite.to(self, self.chargeSlider, TweenLite.UiAnimationType.FILLAMOUNT,1, need_time,end_call) self.need_wait_slider = true -- self.model:Fire(PetConst.PLAY_PET_LV_UP_EFFECT) else need_time = 1*(end_value-old_value)/4 need_time = need_time >= 0.15 and need_time or 0.15 self.tween_slider_id = TweenLite.to(self, self.chargeSlider, TweenLite.UiAnimationType.FILLAMOUNT, end_value, need_time) end --播放属性特效有cd,必须等播完才能再播 local need_play_slider_effect = true if need_play_slider_effect then if TimeUtil:getServerTimeMs()/1000-self.old_slider_effct_play_time <= 0.6 then need_play_slider_effect = false end if need_play_slider_effect then self:AddUIEffect("ui_jinjiejindu", self.sliderEffect, "UI", nil, 1, false, nil, false) self.old_slider_effct_play_time = TimeUtil:getServerTimeMs()/1000 end end end function SoulPowerView:UpdateUpLvBtnState( ) --有材料 显示红点 没材料 置灰按钮 local cost_goods_id = self.model:GetMaterialGoodsId() local goods_num = GoodsModel:getInstance():GetTypeGoodsNum(cost_goods_id) if goods_num > 0 then self.activateRed_obj:SetActive(true) self.chargeRed_obj:SetActive(true) -- SetImageGray(self.activateBtn_img,false) -- SetTMPSharedMaterial(self.activateText_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn) -- SetImageGray(self.chargeBtn_img,false) -- SetTMPSharedMaterial(self.Text_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkBlueBtn) else self.activateRed_obj:SetActive(false) self.chargeRed_obj:SetActive(false) -- SetImageGray(self.activateBtn_img,true) -- SetTMPSharedMaterial(self.activateText_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn) -- SetImageGray(self.chargeBtn_img,true) -- SetTMPSharedMaterial(self.Text_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn) end end -- function SoulPowerView:UpdateLeftTime( ) -- if not self.sp_grade or not self.sp_lv then return end -- local time_head, time_tail = self.model:GetSoulPowerTimeHeadTail() -- local next_lv_total_time = self.model:GetSoulPowerNextLvNeedTotalTime(self.sp_grade, self.sp_lv) -- self.left_time = time_tail - next_lv_total_time - TimeUtil:getServerTime() -- if self.left_time < 0 then self.left_time = 0 end -- self.chargeLeftTime_tmp.text = string.format("剩余时间:%s",TimeUtil:timeConvert(self.left_time, "hh:mm:ss")) -- if self.left_time <= 0 then -- self.activateRed_obj:SetActive(true) -- if self.tween_slider_id then -- TweenLite.Stop(self.tween_slider_id) -- self.tween_slider_id = nil -- end -- SetSizeDeltaX(self.chargeSlider, 300) -- end -- end -- function SoulPowerView:UpdateFillAmount( ) -- if self.tween_slider_id then -- TweenLite.Stop(self.tween_slider_id) -- self.tween_slider_id = nil -- end -- if not self.sp_grade or not self.sp_lv then return end -- local next_lv_need_time = self.sp_lv_cfg.need -- local ratio = (next_lv_need_time - self.left_time) / next_lv_need_time -- SetSizeDeltaX(self.chargeSlider, ratio*300) -- if self.left_time <= 0 then -- if self.tween_slider_id then -- TweenLite.Stop(self.tween_slider_id) -- self.tween_slider_id = nil -- end -- SetSizeDeltaX(self.chargeSlider, 300) -- else -- self.tween_slider_id = TweenLite.to(self, self.chargeSlider, TweenLite.UiAnimationType.WIDTH, 300, self.left_time) -- end -- end function SoulPowerView:UpdateUpGradeCon( ) --更新到突破后,停止进度条 并重置 self.first_show_slider = false self.need_wait_slider = false if self.tween_slider_id then TweenLite.Stop(self.tween_slider_id) self.tween_slider_id = nil end if self.tween_slider_id_2 then TweenLite.Stop(self.tween_slider_id_2) self.tween_slider_id_2 = nil end if self.tween_slider_id_3 then TweenLite.Stop(self.tween_slider_id_3) self.tween_slider_id_3 = nil end local fight = self.model:GetSoulPowerNowFight(self.sp_grade, self.sp_lv) self.nowFight_txt.text = "f"..fight self.nowLvName_tmp.text = string.format("%s阶 %s", self.sp_grade, Trim(self.sp_grade_condition_cfg.name)) SetAnchoredPositionX(self.nextFightArrow, 36+self.nowFight_txt.preferredWidth/2+50) SetAnchoredPositionX(self.nextFight, 36+self.nowFight_txt.preferredWidth/2+50+25) SetAnchoredPositionX(self.nowFight,63) local next_grade_condition_cfg = self.model:GetSoulPowerGradeCfgByGrade(self.sp_grade+1) if not next_grade_condition_cfg then SetAnchoredPositionX(self.nowFight,98) self.nextFightArrow_obj:SetActive(false) self.nextFight_tmp.text = "" self.upGraderedDot_obj:SetActive(false) self.nextLvName_tmp.text = "" self.upGradeBtn_obj:SetActive(false) self.gradeEmpty_obj:SetActive(true) self.conditionScrollView_obj:SetActive(false) SetAnchoredPositionX(self.nowLvName, 108) SetAnchoredPositionX(self.nowLvDi,110) self.nextLvDi_obj:SetActive(false) self.nextLvArrow_obj:SetActive(false) self.nextSkillArrow_obj:SetActive(false) return end self.nextFightArrow_obj:SetActive(true) self.upGradeBtn_obj:SetActive(true) self.gradeEmpty_obj:SetActive(false) self.conditionScrollView_obj:SetActive(true) SetAnchoredPositionX(self.nowLvName, 17) SetAnchoredPositionX(self.nowLvDi,28) self.nextLvDi_obj:SetActive(true) self.nextLvArrow_obj:SetActive(true) self.nextSkillArrow_obj:SetActive(true) --下阶名字 self.nextLvName_tmp.text = string.format("%s阶 %s", self.sp_grade+1, Trim(next_grade_condition_cfg.name)) --条件 local condition_data = stringtotable(self.sp_grade_condition_cfg.condition) if not self.condition_list_com then self.condition_list_com = self:AddUIComponent(UI.ItemListCreator) end local info = { data_list = condition_data, item_con = self.conditionContent, item_class = SoulPowerConditionItem, -- item_width = 111, item_height = 30, -- space_x = 0, space_y = 16, start_x = 6, start_y = -8, scroll_view = self.conditionScrollView, create_frequency = 0.01, on_update_item = function(item, i, v) item:SetData(v) end, } self.condition_list_com:UpdateItems(info) --突破按钮 local can_up_grade = true for i,v in ipairs(condition_data) do local is_arrive = false if v[1] == SoulPowerConst.UpGradeConditionType.Lv then is_arrive = RoleManager.Instance.mainRoleInfo.level >= v[2] elseif v[1] == SoulPowerConst.UpGradeConditionType.DunTower then local easy_pass_num,diffcult_pass_num = BaseDungeonModel:getInstance():GetOneTowerPassRecord() is_arrive = easy_pass_num >= v[2] end if not is_arrive then can_up_grade = false break end end self.upGraderedDot_obj:SetActive(can_up_grade) --突破战力 local next_grade_fight = self.model:GetSoulPowerNowFight(self.sp_grade+1, 0) self.nextFight_tmp.text = next_grade_fight-fight end function SoulPowerView:__delete( ) self.model.has_create_once = false self:ClearUIEffect(self.effect) self:ClearUIEffect(self.sliderEffect) for i, v in ipairs(self.sp_item_list) do v:DeleteMe() end self.sp_item_list = {} if self.tween_slider_id then TweenLite.Stop(self.tween_slider_id) self.tween_slider_id = nil end if self.tween_slider_id_2 then TweenLite.Stop(self.tween_slider_id_2) self.tween_slider_id_2 = nil end self:StopAnim() if self.timer_id then GlobalTimerQuest:CancelQuest(self.timer_id) self.timer_id = nil end self.first_show_slider = false end