CurrencyWishView = CurrencyWishView or BaseClass(BaseView) local CurrencyWishView = CurrencyWishView function CurrencyWishView:__init() self.base_file = "currencyWish" self.layout_file = "CurrencyWishView" self.layer_name = "UI" self.destroy_imm = true self.use_background = G_USING_BG --全屏界面默认使用这个参数,非全屏界面自行设置 self.hide_maincancas = true --全屏界面需要隐藏主UI --self.change_scene_close = true --是否切换场景时关闭(弹出界面使用) self.append_to_ctl_queue = false --是否要添加进界面堆栈 self.need_show_money = true --是否要显示顶部的金钱栏 self.close_fog = true self.model = CurrencyWishModel:getInstance() self.load_callback = function() self:LoadSuccess() self:AddEvent() end self.open_callback = function( ) self:UpdateView() end self.switch_callback = function(index) -- self:SwitchTab(index) end self.destroy_callback = function ( ) self:DestroySuccess() end end function CurrencyWishView:Open( ) --self.data = data BaseView.Open(self) end function CurrencyWishView:LoadSuccess() local nodes = { "bg:img", "con_money", "normal_trade_currency_wish/normal_trade_btn:obj:img", "normal_trade_currency_wish/normal_trade_btn/normal_trade_btn_red:obj", "normal_trade_currency_wish/normal_trade_btn/normal_trade_btn_red_num:tmp", "normal_trade_currency_wish/normal_trade_desc:tmp", "normal_trade_currency_wish/normal_trade_bg:img", "normal_trade_currency_wish/normal_trade_icon:img", "normal_trade_currency_wish/normal_trade_reward_num:tmp", "normal_trade_currency_wish/normal_trade_count:tmp", "normal_trade_currency_wish/normal_trade_desc_2:tmp:obj", "special_trade_currency_wish/special_trade_bg:img", "special_trade_currency_wish/special_trade_icon:img", "special_trade_currency_wish/special_trade_reward_num:tmp", "special_trade_currency_wish/special_trade_count:tmp", "special_trade_currency_wish/special_trade_btn:img:obj", "special_trade_currency_wish/special_trade_btn/special_trade_btn_red:obj", "special_trade_currency_wish/special_trade_desc:tmp", "exp_currency_wish/exp_bg:img", "exp_currency_wish/exp_icon:img", "exp_currency_wish/exp_reward_num:tmp", "exp_currency_wish/exp_count:tmp", "exp_currency_wish/exp_btn:img:obj", "exp_currency_wish/exp_btn/exp_btn_red:obj", "exp_currency_wish/exp_btn/exp_num:tmp", "exp_currency_wish/exp_desc_1:tmp", "exp_currency_wish/exp_desc_2:tmp", "close_btn:obj", } self:GetChildren(nodes) lua_resM:setOutsideImageSprite(self, self.bg_img, GameResPath.GetViewBigBg("currency_wish_bg"), false) lua_resM:setImageSprite(self, self.normal_trade_bg_img, "currencyWish_asset", "currency_wish_normal_trade_bg", false) lua_resM:setImageSprite(self, self.normal_trade_icon_img, "currencyWish_asset", "currency_wish_normal_trade_icon", false) lua_resM:setImageSprite(self, self.normal_trade_btn_img, "currencyWish_asset", "currency_wish_all_btn_bg", false) lua_resM:setImageSprite(self, self.special_trade_bg_img, "currencyWish_asset", "currency_wish_special_trade_bg", false) lua_resM:setImageSprite(self, self.special_trade_icon_img, "currencyWish_asset", "currency_wish_special_trade_icon", false) lua_resM:setImageSprite(self, self.special_trade_btn_img, "currencyWish_asset", "currency_wish_free_btn_bg", false) lua_resM:setImageSprite(self, self.exp_bg_img, "currencyWish_asset", "currency_wish_exp_bg", false) lua_resM:setImageSprite(self, self.exp_icon_img, "currencyWish_asset", "currency_wish_exp_icon", false) lua_resM:setImageSprite(self, self.exp_btn_img, "currencyWish_asset", "currency_wish_special_btn_bg", false) self["icon_" .. 1] = self.normal_trade_icon self["icon_" .. 2] = self.special_trade_icon self["icon_" .. 3] = self.exp_icon if not self.money_view then self.money_view = UIMoneyView.New(self.con_money) self.money_view:SetPosition(-50,0) self.money_view:SetData() self.money_view:ChangeShowFlag("actWindow") end -- 补一个请求 if not self.model:GetBaseInfo() then self.model:Fire(CurrencyWishConst.REQ_CURRENCY_WISH_INFO) end if self.need_refresh_view then self.need_refresh_view = false self:UpdateView() end end function CurrencyWishView:AddEvent() local function click_event(target) if target == self.close_btn_obj then self:Close() elseif target == self.normal_trade_btn_obj then self:TryDoCurrencyWish(CurrencyWishConst.CURRENCY_WISH_TYPE.NORMAL) elseif target == self.special_trade_btn_obj then self:TryDoCurrencyWish(CurrencyWishConst.CURRENCY_WISH_TYPE.SPECIAL) elseif target == self.exp_btn_obj then self:TryDoCurrencyWish(CurrencyWishConst.CURRENCY_WISH_TYPE.EXP) elseif target == self.normal_trade_desc_2_obj then UIToolTipMgr:getInstance():AppendGoodsTips(BagModel.StampGoodsId,nil,nil,nil,nil,nil,nil,true) end end AddClickEvent(self.close_btn_obj, click_event) AddClickEvent(self.normal_trade_btn_obj, click_event) AddClickEvent(self.special_trade_btn_obj, click_event) AddClickEvent(self.exp_btn_obj, click_event) AddClickEvent(self.normal_trade_desc_2_obj, click_event) local function on_ans_base_info() self:UpdateView() end self:BindEvent(self.model, CurrencyWishConst.ANS_CURRENCY_WISH_INFO, on_ans_base_info) local function on_update_view() self:UpdateView() end self:BindEvent(self.model, CurrencyWishConst.UPDATE_CURRENCY_WISH_VIEW, on_update_view) local function on_update_currency_wish_cd_time(cd_time) if cd_time <= 0 then self.special_trade_desc_tmp.text = "" else local cd_time_str = string.format("%s 后免费", ColorUtil.GREEN_TIPS, TimeUtil:timeConvert4(cd_time)) self.special_trade_desc_tmp.text = cd_time_str end end self:BindEvent(self.model, CurrencyWishConst.UPDATE_CURRENCY_WISH_CD_TIME, on_update_currency_wish_cd_time) end function CurrencyWishView:TryDoCurrencyWish(type) local ok_callback = function () self.model:Fire(CurrencyWishConst.REQ_DO_CURRENCY_WISH, type) end local base_info = self.model:GetBaseInfo() --- 冷却时直接向服务端请求 让服务端返回错误码 if type == CurrencyWishConst.CURRENCY_WISH_TYPE.NORMAL then -- 交易券消耗背包道具 local stamp_goods_num = GoodsModel:getInstance():GetTypeGoodsNum(BagModel.StampGoodsId) --已有的交易券数量 if stamp_goods_num < 1 then Message.show("物品不足") else ok_callback() end return elseif type == CurrencyWishConst.CURRENCY_WISH_TYPE.SPECIAL then if (base_info.luxurycool and base_info.luxurycool <= 0) or base_info.luxury_rest_times <= 0 then ok_callback() return end elseif type == CurrencyWishConst.CURRENCY_WISH_TYPE.EXP then if base_info.expr_rest_times <= 0 then ok_callback() return end end local cancel_callback = function () end local toggle_function = function () self.model.currency_wish_without_confirm = true end -- local cost_info = self.model:GetInoriCostInfo(type) local wish_cfg = self.model:GetCurrencyWishConfigOne(type) local cost_info = stringtotable(wish_cfg.consume)[1] local cost_type = cost_info[1] local cost_num = cost_info[3] local jin = RoleManager.Instance.mainRoleInfo.jin local jinLock = RoleManager.Instance.mainRoleInfo.jinLock local toggle_tip_data = { insufficientText = "", titleText = "提示", nameText = "是否花费 ", priceText = string.format("%s 进行祈愿", HtmlColorTxt(cost_num, "#fdffc2")), okText = "确认", cancelText = "取消", toggleText = " 本次登录不再提示",--8字符 ok_callback = ok_callback, close_callback = cancel_callback, toggle_function = toggle_function, is_complex_ok_callback = false, gold_res = "ui_momey_icon_" .. cost_type, price = cost_num, -- config } if not self.model.currency_wish_without_confirm then GlobalEventSystem:Fire(EventName.OPEN_COM_TOGGLE_TIP_VIEW, toggle_tip_data) else if cost_type == 1 and jin < cost_num then GlobalEventSystem:Fire(EventName.OPEN_COM_TOGGLE_TIP_VIEW, toggle_tip_data) return end if cost_type == 2 and jin + jinLock < cost_num then GlobalEventSystem:Fire(EventName.OPEN_COM_TOGGLE_TIP_VIEW, toggle_tip_data) return end ok_callback() end end function CurrencyWishView:UpdateView() if not self.is_loaded then self.need_refresh_view = true return end self.base_info = self.model:GetBaseInfo() if not self.base_info then return end local special_currency_wish_times = string.format("今日剩余:%d次", self.base_info.luxury_rest_times > 0 and ColorUtil.GREEN_TIPS or ColorUtil.RED_DARK, self.base_info.luxury_rest_times) local exp_currency_wish_times = string.format("今日剩余:%d次", self.base_info.expr_rest_times > 0 and ColorUtil.GREEN_TIPS or ColorUtil.RED_DARK, self.base_info.expr_rest_times) self.special_trade_count_tmp.text = special_currency_wish_times self.exp_count_tmp.text = exp_currency_wish_times local normal_wish_cfg = self.model:GetCurrencyWishConfigOne(CurrencyWishConst.CURRENCY_WISH_TYPE.NORMAL) local special_wish_cfg = self.model:GetCurrencyWishConfigOne(CurrencyWishConst.CURRENCY_WISH_TYPE.SPECIAL) local exp_wish_cfg = self.model:GetCurrencyWishConfigOne(CurrencyWishConst.CURRENCY_WISH_TYPE.EXP) local normal_num = stringtotable(normal_wish_cfg.base_produce)[1][3] local special_num = stringtotable(special_wish_cfg.base_produce)[1][3] local exp_num = stringtotable(exp_wish_cfg.base_produce)[1][3] -- print("Lizhijian:CurrencyWishView [start:251] ") -- print(normal_num, special_num, exp_num) -- print("Lizhijian:CurrencyWishView [end:251] ") self.normal_trade_reward_num_tmp.text = normal_num self.special_trade_reward_num_tmp.text = special_num self.exp_reward_num_tmp.text = exp_num if self.base_info.luxurycool <= 0 then self.special_trade_desc_tmp.text = "" self.special_trade_btn_red_obj:SetActive(true) else self.special_trade_btn_red_obj:SetActive(false) local cd_time_str = string.format("%s 后免费", ColorUtil.GREEN_TIPS, TimeUtil:timeConvert4(self.base_info.luxurycool)) self.special_trade_desc_tmp.text = cd_time_str end lua_resM:setImageSprite(self, self.normal_trade_btn_img, "currencyWish_asset", "currency_wish_all_btn_bg", false) lua_resM:setImageSprite(self, self.special_trade_btn_img, "currencyWish_asset", self.base_info.luxurycool <= 0 and "currency_wish_free_btn_bg" or "currency_wish_special_btn_bg", false) lua_resM:setImageSprite(self, self.exp_btn_img, "currencyWish_asset", "currency_wish_special_btn_bg", false) local stamp_goods_num = GoodsModel:getInstance():GetTypeGoodsNum(BagModel.StampGoodsId) --已有的交易券数量 stamp_goods_num = Mathf.Clamp(stamp_goods_num, 0, 999) if stamp_goods_num > 99 then SetSizeDelta(self.normal_trade_btn_red, 36, 36) else SetSizeDelta(self.normal_trade_btn_red, 32, 32) end self.normal_trade_btn_red_obj:SetActive(stamp_goods_num ~= 0) self.normal_trade_btn_red_num_tmp.text = stamp_goods_num ~= 0 and stamp_goods_num or "" self.normal_trade_desc_2_tmp.text = string.format("祈愿消耗:10交易券卡", ColorUtil.PURPLE_DARK) local role_lv = RoleManager.Instance.mainRoleInfo.level self.exp_desc_1_tmp.text = string.format("等级提升%s级", role_lv) -- 递归计算能升多少级 local add_lv = 0 local total_lv = TableSize(Config.Exp) local cur_exp = RoleManager.Instance.mainRoleInfo.exp local add_exp = exp_num local res_lv = role_lv local function cul_addlv_and_percentage(exp) if Config.Exp[role_lv + add_lv] and exp > Config.Exp[role_lv + add_lv].exp then exp = exp - Config.Exp[role_lv + add_lv].exp add_lv = add_lv + 1 cul_addlv_and_percentage(exp) else -- 等级容错 res_lv = role_lv + add_lv < total_lv and role_lv + add_lv or total_lv end end cul_addlv_and_percentage(cur_exp + add_exp) self.exp_desc_2_tmp.text = string.format("%s级", ColorUtil.GREEN_TIPS, res_lv) self:DoAction() end function CurrencyWishView:DoAction() if self.is_action then return end self.is_action = true for i = 1, 3 do local icon = self["icon_" .. i] cc.ActionManager:getInstance():removeAllActionsFromTarget(icon) --action 1 local pos_x, pos_y = GetAnchoredPosition(icon) local offset = 10 local anim_time = 1 local function moveUp1(percent) SetAnchoredPositionY(icon, pos_y + offset * percent) end local flowUp1 = cc.CustomUpdate.New(anim_time, moveUp1) -- local flowUp1 = cc.CustomUpdate.New(anim_time, moveUp1) local function moveDown(percent) SetAnchoredPositionY(icon, pos_y + offset - 2 * offset * percent) end local flowDown = cc.CustomUpdate.New(anim_time * 2, moveDown) -- local flowDown = cc.CustomUpdate.New(anim_time * 2, moveDown) local function moveUp2(percent) SetAnchoredPositionY(icon, pos_y - offset + offset * percent) end local flowUp2 = cc.CustomUpdate.New(anim_time, moveUp2) -- local flowUp2 = cc.CustomUpdate.New(anim_time, moveUp2) local action = cc.RepeatForever.New(cc.Sequence.New(flowUp1, flowDown, flowUp2)) -- local final_action = cc.Sequence.New(cc.DelayTime.New(i * 0.1), action) local final_action = action local function delay_method() cc.ActionManager:getInstance():addAction(final_action, icon) end self.delay_method_id = setTimeout(delay_method, (i - 1) * 0.3) end end function CurrencyWishView:DestroySuccess() end function CurrencyWishView:__delete() for i = 1, 3 do local icon = self["icon_" .. i] cc.ActionManager:getInstance():removeAllActionsFromTarget(icon) icon = nil end if self.money_view then self.money_view:DeleteMe() self.money_view = nil end end