|
|
- 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].."]</color>"
-
-
- 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层</color>", 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("剩余时间:<color=#2CF86F>%s</color>",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
|