|
|
- EncourageTips = EncourageTips or BaseClass(BaseView)
- local EncourageTips = EncourageTips
-
- EncourageTips.ShowType = {
- Open = 1,
- Update = 2,
- Close = 3,
- }
-
- EncourageTips.EncourageType = { -- 鼓舞界面类型
- Default = 1, --默认类型,以幻魔鼓舞为标准默认类型
- GuildBoss = 2, --社团boss鼓舞
- }
-
- -------------------------
- --[[
- 通用的鼓舞界面
- 使用方法参考 self.data 格式,填补对应数据就可以了
- --encourageType,社团boss鼓舞传这个参数
- --]]
- -------------------------
-
- function EncourageTips:__init(encourageType)
- self.base_file = "encourage"
-
- --不同模块的鼓舞界面功能大体一致,界面布局不同,可以自己单独搞个预制体
- self.encourageType = encourageType
- if self.encourageType == EncourageTips.EncourageType.GuildBoss then
- self.is_guild_boss = true
- self.layout_file = "EncourageGuildBossTips"
- else
- self.layout_file = "EncourageTips"
- end
-
- self.layer_name = "Activity"
- self.destroy_imm = true
- self.change_scene_close = true
- self.append_to_ctl_queue = false --是否要添加进界面堆栈
- self.need_show_money = true --是否要显示顶部的金钱栏
- self.is_set_zdepth = true
- self.click_bg_toClose = true
- self.blur_activity_bg = true
- ------------------------
- -- 一级全屏界面:
- self.hide_maincancas = false --隐藏主界面
- self.use_background = true --不一定显示遮罩
- -- 二级界面:
- -- self.hide_maincancas = false --是否需要隐藏主界面,看策划需求
- -- self.use_background = true --需要遮罩
- ------------------------
-
- --默认数据以及范例
- self.data = {
- [1] ={
- type_id = 2,-- 鼓舞类型(红钻)
- limit = 1,-- 鼓舞最大次数
- use_time = 0,-- 已鼓舞次数
- click_call = false,--点击回调
- first_free = false,--首次免费
- },
- [2] ={
- type_id = 1,-- 鼓舞类型(彩钻)
- limit = 1,-- 鼓舞最大次数
- use_time = 0,-- 已鼓舞次数
- click_call = false,--点击回调
- first_free = false,--首次免费
- }
- }
-
-
- self.load_callback = function ()
- self:LoadSuccess()
- self:AddEvent()
- end
- self.open_callback = function ( )
- self:UpdateView()
- end
- self.close_win_callback = function ( )
- self:Close()
- end
- self.destroy_callback = function ( )
- self:DestroySuccess()
- end
- end
-
- function EncourageTips:CheckData( data )
- if not data then return end
- self.data.title_name = data.title_name or self.data.title_name
- for i=1,2 do
- if data[i] then
- self.data[i].type_id = data[i].type_id or self.data[i].type_id
- self.data[i].limit = data[i].limit or self.data[i].limit
- self.data[i].use_time = data[i].use_time or self.data[i].use_time
- self.data[i].click_call = data[i].click_call or self.data[i].click_call
- self.data[i].first_free = data[i].first_free or self.data[i].first_free
- end
- end
- end
-
- function EncourageTips:Open( data )
- self:CheckData(data)
- BaseView.Open(self)
- end
-
- function EncourageTips:LoadSuccess()
- local nodes = {
- "Window:raw","lb_left_2:tmp","lb_left_1:tmp","btn_close:obj",
-
- "des_1:tmp","icon_money_1:img","lb_money_1:tmp","btn_1:obj:img",
- "des_2:tmp","icon_money_2:img","lb_money_2:tmp","btn_2:obj:img",
- "btn_1/lb_btn_1:tmp", "btn_2/lb_btn_2:tmp", "lb_buff_tip:tmp",
- "moneyCon",
- }
- self:GetChildren(nodes)
-
- -- 社团boss鼓舞界面新加节点
- if self.is_guild_boss then
- local nodes_guild_boss = {
- "encourage_award_money_1:img",
- "encourage_award_money_2:img",
- "encourage_award_1:tmp",
- "encourage_award_2:tmp",
- "des_1_num:tmp",
- "des_2_num:tmp",
- }
- self:GetChildren(nodes_guild_boss)
- end
-
- if self.is_guild_boss then
- lua_resM:setOutsideRawImage(self,self.Window_raw,GameResPath.GetViewBigBg("encourage_guild_boss_bg"),false)
- else
- lua_resM:setOutsideRawImage(self,self.Window_raw,GameResPath.GetViewBigBg("encourage_bg"),false)
- end
-
- if not self.money_view then
- self.money_view = UIMoneyView.New(self.moneyCon)
- end
- self.money_view:SetPosition(0,0)
- self.money_view:SetData()
- -- self.money_view:ChangeShowFlag("smallWindow2")
- end
-
- function EncourageTips:AddEvent()
- local function call_back( target )
- if target == self.btn_close_obj then
- self:Close()
- elseif target == self.btn_1_obj then
- local function ok_callback( ... )
- if self.data[1].click_call then
- self.data[1].click_call()
- else
- Message.show("鼓舞类型1")
- end
- end
-
- if self.cost_goods_can and self.cost_goods_can[1] then
- --道具足够啦,判断个毛线
- ok_callback()
- return
- end
-
- local function toggle_function( flag )
- BossModel:GetInstance().encourage_tip_toggle = flag
- end
- local function use_function( toggle_tip_data,call_fun_sum )
- if not BossModel:GetInstance().encourage_tip_toggle then
- GlobalEventSystem:Fire(EventName.OPEN_COM_TOGGLE_TIP_VIEW, toggle_tip_data)
- else
- call_fun_sum()
- end
- end
- local need_num = self.cost_num_list[1] or 0
- if self.data[1].first_free and self.data[1].use_time == 0 then
- need_num = 0
- end
- local jin = RoleManager.Instance.mainRoleInfo.jin
- local jinLock = RoleManager.Instance.mainRoleInfo.jinLock
- if jinLock >= need_num and self.cost_type_list[1] == 2 then
- ok_callback()
- return
- end
- local buy_tip_data = {
- gold_type = self.cost_type_list[1],--货币类型
- cost_price = need_num,--消耗金额
- ok_callback = ok_callback,--成功
- toggle_function = toggle_function,--多选
- togglePriceStr = string.format("<color=#fdffc2>%s</color> 鼓舞",need_num),--提示语
- use_function = use_function,--最终调用
- }
- CustomActivityModel:getInstance():BuyTips(buy_tip_data)
- elseif target == self.btn_2_obj then
- local function ok_callback( ... )
- if self.data[2].click_call then
- self.data[2].click_call()
- else
- Message.show("鼓舞类型2")
- end
- end
-
- if self.cost_goods_can and self.cost_goods_can[2] then
- --道具足够啦,判断个毛线
- ok_callback()
- return
- end
-
- local function toggle_function( flag )
- BossModel:GetInstance().encourage_tip_toggle = flag
- end
- local function use_function( toggle_tip_data,call_fun_sum )
- if not BossModel:GetInstance().encourage_tip_toggle then
- GlobalEventSystem:Fire(EventName.OPEN_COM_TOGGLE_TIP_VIEW, toggle_tip_data)
- else
- call_fun_sum()
- end
- end
- local need_num = self.cost_num_list[2] or 0
- if self.data[2].first_free and self.data[2].use_time == 0
- or (self.have_act_buff and self.data[2].use_time == 0) then
- need_num = 0
- end
-
- local jin = RoleManager.Instance.mainRoleInfo.jin
- local jinLock = RoleManager.Instance.mainRoleInfo.jinLock
- if jinLock >= need_num and self.cost_type_list[2] == 2 then
- ok_callback()
- return
- end
-
- local buy_tip_data = {
- gold_type = self.cost_type_list[2],--货币类型
- cost_price = need_num,--消耗金额
- ok_callback = ok_callback,--成功
- toggle_function = toggle_function,--多选
- togglePriceStr = string.format("<color=#fdffc2>%s</color> 鼓舞",need_num),--提示语
- use_function = use_function,--最终调用
- }
- CustomActivityModel:getInstance():BuyTips(buy_tip_data)
- end
- end
- AddClickEvent(self.btn_close_obj,call_back,false)
- AddClickEvent(self.btn_1_obj,call_back,false)
- AddClickEvent(self.btn_2_obj,call_back,false)
-
- local function updata_buff_state(id)
- if id == KfActivityModel.TabID.MaterialSubmit and self.is_loaded then
- self:UpdateViewDefault()
- end
- end
- self:BindEvent(KfActivityModel:getInstance(), KfActivityModel.ANS_UPDATE_VIEW, updata_buff_state)
-
- self:BindEvent(GlobalEventSystem, EventName.OPEN_VIP_VIEW, function ()
- self:Close()
- end)
- end
-
- function EncourageTips:UpdateTips(data,extra_param_list)
- self:CheckData(data)
-
- if extra_param_list then
- if extra_param_list.show_encourage_percentage then
- self:UpdateGuildBossEncouragePercentage(true)
- elseif extra_param_list.show_encourage_times then
- self:UpdateGuildBossEncourageTimes()
- else
- self:UpdateView()
- end
- else
- self:UpdateView()
- end
- end
-
- function EncourageTips:UpdateView()
- if self.is_guild_boss then
- self:UpdateViewGuildBoss()
- else
- self:UpdateViewDefault()
- end
- end
-
- -- 默认鼓舞类型的updateview
- function EncourageTips:UpdateViewDefault( )
- self.cost_goods_can = self.cost_goods_can or {}--道具足够
- self.cost_num_list = self.cost_num_list or {}
- self.cost_type_list = self.cost_type_list or {}
- for i=1,2 do
- local can_encourage = self.data[i].use_time < self.data[i].limit
- local show_time = can_encourage and self.data[i].use_time + 1 or self.data[i].limit
- local conf = Config.Encourageattr[self.data[i].type_id .. "@" .. show_time]
- local old_conf = Config.Encourageattr[self.data[i].type_id .. "@" .. (show_time-1)]
- if self.data[i].use_time == self.data[i].limit then
- --满级
- old_conf = Config.Encourageattr[self.data[i].type_id .. "@" .. self.data[i].limit]
- end
- if conf then
- --置灰按钮
- SetImageGray( self["btn_" .. i .. "_img"], not can_encourage )
- local tmp_btn_lb = self:GetChild("btn_" .. i .. "/lb_btn_"..i):GetComponent("TMPro.TextMeshProUGUI")
- if i==1 then
- SetTMPSharedMaterial(tmp_btn_lb,can_encourage and ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkBlueBtn or ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
- else
- SetTMPSharedMaterial(tmp_btn_lb,can_encourage and ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn or ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
- end
-
- --鼓舞描述
- if can_encourage and self.data[i].use_time == 0 then
- self["des_" .. i .. "_tmp"].text = "PVE伤害"
- self:GetChild("des_" .. i .. "_num"):GetComponent("TMPro.TextMeshProUGUI").text = "+0%"
- else
- local show_content = Trim(old_conf.desc)
- local content_list = Split(show_content,[[\n]]) or {}
- self["des_" .. i .. "_tmp"].text = content_list[1] or ""
- self:GetChild("des_" .. i .. "_num"):GetComponent("TMPro.TextMeshProUGUI").text = content_list[2] or ""
- end
-
- -------------------------
- local price_info = stringtotable(conf.price)
- local goods_info = stringtotable(conf.goods)
- --消耗道具显示
- local use_goods = false
- local str_price = ""
- if TableSize(goods_info) > 0 then
- local goods_num = GoodsModel:getInstance():GetTypeGoodsNum( goods_info[1][2] )
- if goods_num >= goods_info[1][3] then
- --拥有足够的替代物
- str_price = goods_info[1][3]
- local goods_icon = GoodsModel:getInstance():GetGoodsBasicByTypeId( goods_info[1][2] ).goods_icon
- lua_resM:setOutsideImageSprite(self,self["icon_money_" .. i .. "_img"],GameResPath.GetGoodsIcon(goods_icon),false)
- use_goods = true
- self.cost_goods_can[i] = true
- end
- end
- if not use_goods then
- str_price = price_info[1][3]
- local asset, source = WordManager:GetCommonMoneyIcon(tonumber(price_info[1][1]))
- lua_resM:setImageSprite(self, self["icon_money_" .. i .. "_img"], asset, source, true)
- self.cost_type_list[i] = tonumber(price_info[1][1])
- self.cost_num_list[i] = tonumber(str_price)
- end
-
- if i == 2 then
- local buff_kind = OperateActivityModel.MaterialSubmitBuffKind.BOSS_HUT_ADD --是否存在活动加成buff
- local buff_cfg,buff_info = OperateActivityModel:getInstance():GetMaterialBuffInfoByKind(buff_kind)
- if buff_cfg and buff_info and self.data[i].use_time == 0 and self.encourageType ~= EncourageTips.EncourageType.GuildBoss then
- local sec = buff_info.etime - TimeUtil:getServerTime( )
- if sec > 0 then
- self["lb_money_" .. i .. "_tmp"].text = "免费"
- local sec = buff_info.etime - TimeUtil:getServerTime( )
- self.have_act_buff = true
- self:ActBuffTimeLate(sec)
- local buff_name = Config.Unitebuffkind[buff_kind] and Config.Unitebuffkind[buff_kind].name or ""
- self.lb_buff_tip_tmp.text = string.format("<color=%s><size=105%%>[%s]</size> 生效期间首次免费</color>",ColorUtil.TOPYELLOW,Trim(buff_name))
- else
- self["lb_money_" .. i .. "_tmp"].text = str_price
- self.lb_buff_tip_tmp.text = ""
- end
- else
- self["lb_money_" .. i .. "_tmp"].text = str_price
- self.lb_buff_tip_tmp.text = ""
- end
- else
- if self.data[i].first_free and self.data[i].use_time == 0 then
- self["lb_money_" .. i .. "_tmp"].text = "免费"
- else
- if use_goods then
- -- 鼓舞卷
- local goods_id = 102004
- local has_num = GoodsModel:getInstance():GetTypeGoodsNum(goods_id)
- local color = has_num >= str_price and ColorUtil.GREEN_DARK or ColorUtil.RED_DARK
- self["lb_money_" .. i .. "_tmp"].text = string.format('%s/%s', HtmlColorTxt( has_num, color),str_price)
- else
- self["lb_money_" .. i .. "_tmp"].text = str_price
- end
- end
- end
-
- --显示剩余次数
- local left_time = self.data[i].limit - self.data[i].use_time
- self["lb_left_" .. i .. "_tmp"].text = string.format( "%s鼓舞:剩余%s次", WordManager:GetCommonMoneyStr(tonumber(price_info[1][1])),HtmlColorTxt( left_time , left_time > 0 and '#2cf89a' or '#ff203a'))
- end
- end
- end
-
- --活动BUFF时间倒计时
- function EncourageTips:ActBuffTimeLate( sec )
- if self.is_loaded then
- if self.act_sec == sec then
- return
- else
- self.act_sec = sec
- end
- if self.act_buff_timer_id then
- GlobalTimerQuest:CancelQuest(self.act_buff_timer_id)
- self.act_buff_timer_id = nil
- end
- local sec = sec or 0
- if sec > 0 then
- local function onTimer()
- sec = sec - 1
- if sec > 0 then
-
- else
- self.have_act_buff = false
- self:UpdateViewDefault()
- GlobalTimerQuest:CancelQuest(self.act_buff_timer_id)
- self.act_buff_timer_id = nil
- end
- end
- if not self.act_buff_timer_id then
- self.act_buff_timer_id = GlobalTimerQuest:AddPeriodQuest(onTimer, 1, -1)
- end
- onTimer()
- else
- self.have_act_buff = false
- self:UpdateViewDefault()
- end
- end
- end
-
- -- 社团boss类型的updateviw
- function EncourageTips:UpdateViewGuildBoss()
- self.cost_goods_can = self.cost_goods_can or {}--道具足够
- self.cost_num_list = self.cost_num_list or {}
- self.cost_type_list = self.cost_type_list or {}
-
- for i=1,2 do
- self.cost_goods_can[i] = false--不走物品判断逻辑
- if i == 1 then--免费鼓舞
- self.cost_num_list[i] = 0
- self.cost_type_list[i] = 0
- else
- self.cost_num_list[i] = stringtotable(GuildModel:getInstance():GetGuildBossKV("bgold_encourage_cost"))[1]
- self.cost_type_list[i] = 2
- end
- end
-
- self:UpdateGuildBossEncourageTimes()
- self:UpdateGuildBossEncouragePercentage()
- end
-
- --社团boss界面鼓舞次数刷新
- function EncourageTips:UpdateGuildBossEncourageTimes( )
- local damage_percentage = GuildModel:getInstance():GetGuildBossKV("encourage_hurt")/100 --万分比伤害,这里除去100拿百分比伤害
- self.encourage_award_1_tmp.text = "+20"
- self.encourage_award_2_tmp.text = "+20"
- -- 设置红点
- local limit_free = GuildModel:getInstance():GetGuildBossKV("free_encourage")
- local free_time = GuildModel:getInstance():GetLeftFreeEncourageTimes()
- --self.free_encourage_red_obj:SetActive(limit_free - free_time > 0)
- for i=1,2 do
- local can_encourage = self.data[i].use_time < self.data[i].limit
- -- local show_time = can_encourage and self.data[i].use_time + 1 or self.data[i].limit
- --置灰
- SetImageGray( self["btn_" .. i .. "_img"], not can_encourage )
- SetTMPSharedMaterial(self["lb_btn_" .. i .. "_tmp"], not can_encourage and ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn or (i == 1 and ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkBlueBtn or ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn))
- --价格
- self["lb_money_" .. i .. "_tmp"].text = i == 1 and "免费" or stringtotable(GuildModel:getInstance():GetGuildBossKV("bgold_encourage_cost"))[1]
-
- --鼓舞加成
- self["des_" .. i .. "_num_tmp"].text = "+" .. damage_percentage * self.data[i].use_time .. "%"
-
- --显示剩余次数
- local left_time = self.data[i].limit - self.data[i].use_time
- self["lb_left_" .. i .. "_tmp"].text = "剩余" .. WordManager:AddColorToString(left_time,left_time > 0 and '32ff62' or 'fa1022',false) .. "次"
- end
- end
-
- --社团boss鼓舞加成系数刷新
- function EncourageTips:UpdateGuildBossEncouragePercentage(guild_boss_need_show_anim)
- local damage_percentage = GuildModel:getInstance():GetGuildBossKV("encourage_hurt")/100 --万分比伤害,这里除去100拿百分比伤害
- local damage = GuildModel:getInstance():GetEncourageGuildTimes()*damage_percentage
-
- -- self.des_1_title_tmp.text = "社团成员伤害"
- -- self.des_1_tmp.text = "+"..damage.."%"
-
- -- if guild_boss_need_show_anim then
- -- self:PlayGuildBossEncourageActionStart()
- -- end
- end
-
- -- --社团boss鼓舞界面的鼓舞加成
- -- function EncourageTips:PlayGuildBossEncourageActionStart( )
- -- self:StopTweenAction()
- -- SetLocalScale(self.des_1, 1,1,1)
- -- local function onComplete( ... )
- -- self:PlayGuildBossEncourageActionEnd()
- -- end
- -- self.scale_start_id = TweenLite.to(self, self.des_1, TweenLite.UiAnimationType.SCALE, Vector3(1.5,1.5,1.5) ,0.1, onComplete)
- -- end
- -- function EncourageTips:PlayGuildBossEncourageActionEnd( )
- -- local function onComplete( ... )
- -- SetLocalScale(self.des_1, 1,1,1)
- -- self:StopTweenAction()
- -- end
- -- self.scale_end_id = TweenLite.to(self, self.des_1, TweenLite.UiAnimationType.SCALE, Vector3(1,1,1) ,0.1, onComplete)
- -- end
- -- function EncourageTips:StopTweenAction( )
- -- if self.scale_start_id then
- -- TweenLite.Stop(self.scale_start_id)
- -- self.scale_start_id = nil
- -- end
- -- if self.scale_end_id then
- -- TweenLite.Stop(self.scale_end_id)
- -- self.scale_end_id = nil
- -- end
- -- end
-
- function EncourageTips:DestroySuccess( )
- --self:StopTweenAction()
- if self.act_buff_timer_id then
- GlobalTimerQuest:CancelQuest(self.act_buff_timer_id)
- self.act_buff_timer_id = nil
- end
-
-
- if self.money_view then
- self.money_view:DeleteMe()
- self.money_view = nil
- end
- end
|