源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

357 lines
15 KiB

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("<color=%s>%s</color> 后免费", 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("今日剩余:<color=%s>%d次</color>",
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("今日剩余:<color=%s>%d次</color>",
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("<color=%s>%s</color> 后免费", 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("祈愿消耗:<color=%s>10交易券卡</color>", 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("<color=%s>%s</color>级", 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