|
EscortMainView = EscortMainView or BaseClass(BaseView)
|
|
local EscortMainView = EscortMainView
|
|
|
|
function EscortMainView:__init()
|
|
self.base_file = "escort"
|
|
self.layout_file = "EscortMainView"
|
|
self.layer_name = "UI"
|
|
self.destroy_imm = true
|
|
self.use_background = true --全屏界面默认使用这个参数
|
|
self.hide_maincancas = true --全屏界面需要放开隐藏主UI
|
|
self.blur_activity_bg = true
|
|
self.close_fog = true
|
|
self.change_scene_close = true
|
|
self.append_to_ctl_queue = false --是否要添加进界面堆栈
|
|
self.need_show_money = true --是否要显示顶部的金钱栏
|
|
self.improve_target_id = 0
|
|
self.item_list = {}
|
|
self.awarditem_list = {}
|
|
self.position_data = {
|
|
[1] = {15, -202},
|
|
[2] = {207, -41},
|
|
[3] = {457, -64},
|
|
[4] = {617, -254},
|
|
}
|
|
self.model = EscortModel:getInstance()
|
|
self.is_auto_buy = self.model.is_auto_buy
|
|
self.model:Fire(EscortConst.REQUEST_SCMD_EVENT, 50000)
|
|
|
|
self.load_callback = function ()
|
|
self:LoadSuccess()
|
|
self:AddEvent()
|
|
end
|
|
self.open_callback = function ( )
|
|
self:OpenSuccess()
|
|
end
|
|
self.switch_callback = function(index)
|
|
self:SwitchTab(index)
|
|
end
|
|
self.destroy_callback = function ( )
|
|
self:DestroySuccess()
|
|
end
|
|
end
|
|
|
|
function EscortMainView:Open( )
|
|
--self.data = data
|
|
BaseView.Open(self)
|
|
end
|
|
|
|
function EscortMainView:LoadSuccess()
|
|
local nodes = {
|
|
"fresh_btn:obj", "buy_toggle:tog:obj", "bg:raw", "tip_btn:obj", "close_btn:obj",
|
|
"escort_btn:obj", "item_con", "cost_image:img:obj", "reward_con",
|
|
"time_text2:tmp", "cost_text:tmp", "time_text1:tmp", "num_text:tmp", "con_money",
|
|
"progress_text:tmp", "progress_image:img", "desc_text:tmp"
|
|
}
|
|
self:GetChildren(nodes)
|
|
local pos_x = GetAnchoredPosition(self.desc_text)
|
|
SetAnchoredPositionX(self.desc_text, pos_x - 12)
|
|
lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg("escort_bg"),false)
|
|
lua_resM:setOutsideImageSprite(self, self.cost_image_img, GameResPath.GetGoodsIcon(EscortConst.ESCORT_GOODS_ID),false)
|
|
self.buy_toggle_tog.isOn = self.is_auto_buy
|
|
self:CreateMoneyView()
|
|
self:UpdateEscortItem()
|
|
self:SetDoubleExpTime()
|
|
end
|
|
|
|
function EscortMainView:AddEvent()
|
|
local on_click = function ( click_obj )
|
|
if self.close_btn_obj == click_obj then
|
|
self:Close()
|
|
elseif self.tip_btn_obj == click_obj then
|
|
EventSystem.Fire(GlobalEventSystem,EventName.OPEN_INSTRUCTION_VIEW, 50000)
|
|
elseif self.fresh_btn_obj == click_obj then
|
|
self:StartFresh()
|
|
elseif self.escort_btn_obj == click_obj then
|
|
if self.model:CurTimeIsDouble() then
|
|
self.model:Fire(EscortConst.REQUEST_SCMD_EVENT, 50002, 1)
|
|
else
|
|
self:AskCall()
|
|
end
|
|
elseif self.buy_toggle_obj == click_obj then
|
|
self.is_auto_buy = not self.is_auto_buy
|
|
self.model.is_auto_buy = self.is_auto_buy
|
|
elseif self.cost_image_obj == click_obj then
|
|
UIToolTipMgr:getInstance():AppendGoodsTips(EscortConst.ESCORT_GOODS_ID, x, y, nil, nil, nil,nil,false)
|
|
end
|
|
end
|
|
AddClickEvent(self.close_btn_obj, on_click)
|
|
AddClickEvent(self.support_btn_obj, on_click)
|
|
AddClickEvent(self.tip_btn_obj, on_click)
|
|
AddClickEvent(self.fresh_btn_obj, on_click)
|
|
AddClickEvent(self.escort_btn_obj, on_click)
|
|
AddClickEvent(self.buy_toggle_obj, on_click)
|
|
AddClickEvent(self.cost_image_obj, on_click)
|
|
|
|
local function on_update( )
|
|
local base_info = self.model:GetEscortBaseInfo()
|
|
if base_info.is_convoy == 1 then--如果已经开始护送了 就别刷新界面了 会刷到下一次的信息
|
|
|
|
else
|
|
self:UpdateView()
|
|
end
|
|
end
|
|
self.update_id = self.model:BindOne("escort_base_info", on_update)
|
|
end
|
|
|
|
function EscortMainView:AskCall( )
|
|
|
|
local cost = self.model.double_escort_cost[1][3] -- config
|
|
local cost_type = self.model.double_escort_cost[1][1]
|
|
local jin = RoleManager.Instance.mainRoleInfo.jin
|
|
local jinLock = RoleManager.Instance.mainRoleInfo.jinLock
|
|
|
|
local function recharge_call_back( ... )--充值
|
|
local args = {...}
|
|
local use_lockjin = args[1]
|
|
-- 关闭道具tips
|
|
UIToolTipMgr:getInstance():CloseGoodsTips()
|
|
local qc_data = {
|
|
price = cost - (use_lockjin and jinLock or 0),
|
|
close_callback = nil,
|
|
qc_type = 0,
|
|
}
|
|
GlobalEventSystem:Fire(EventName.OPEN_RECHARGE_TIP_VIEW, true, qc_data)
|
|
end
|
|
|
|
local function invest_call_back( ... )--前往投资
|
|
-- 关闭道具tips
|
|
UIToolTipMgr:getInstance():CloseGoodsTips()
|
|
OpenFun.Open(420,1)
|
|
end
|
|
|
|
-- 双倍护送
|
|
local function ok_callback()
|
|
if cost_type == 1 then
|
|
if jin < cost then--彩钻不足
|
|
recharge_call_back()
|
|
else
|
|
self.model:Fire(EscortConst.REQUEST_SCMD_EVENT, 50002, 1)
|
|
end
|
|
elseif cost_type == 2 then
|
|
if jinLock < cost then
|
|
local ok = function ( )
|
|
if jinLock + jin < cost then
|
|
recharge_call_back(true)
|
|
else
|
|
self.model:Fire(EscortConst.REQUEST_SCMD_EVENT, 50002, 1)
|
|
end
|
|
end
|
|
local jin_type_img = WordManager:GetMoneyFaceStr( 1 )
|
|
local jinLock_type_name = GoodsModel:getInstance():getGoodsName(100001, false)
|
|
local str = string.format("您的<color=#ff203a>%s不足</color>,是否使用<color=#fdffc2> %s%s </color>补全?",jinLock_type_name,jin_type_img,cost - jinLock)
|
|
if VipModel:getInstance():HasBoughtAllInvestmentTypes() then -- 已经购买了全部的投资类型,则不提示前往投资
|
|
Alert.show(str, Alert.Type.Two, ok, nil, "彩钻补全", "取消")
|
|
else
|
|
Alert.show(str, Alert.Type.Two, ok, invest_call_back, "彩钻补全", "前往投资")
|
|
end
|
|
else
|
|
self.model:Fire(EscortConst.REQUEST_SCMD_EVENT, 50002, 1)
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
-- 单倍护送
|
|
local function cancel_callback()
|
|
self.model:Fire(EscortConst.REQUEST_SCMD_EVENT, 50002, 0)
|
|
end
|
|
|
|
local function toggle_function( flag )
|
|
self.model.not_show_go_ask = flag
|
|
end
|
|
|
|
-- 屏蔽接口里面的recharge_callback 跳转到自己的函数
|
|
local function rechanger_callback(...)
|
|
ok_callback()
|
|
end
|
|
|
|
local time_str = HtmlColorTxt("(17:00-17:30 21:30-22:00)", ColorUtil.GREEN_DARK)
|
|
local str = string.format("现在不是 %s\n%s", HtmlColorTxt("双倍护送时间", ColorUtil.GREEN_DARK), time_str)
|
|
local toggle_tip_data = {
|
|
insufficientText = str,
|
|
titleText = "提示",
|
|
nameText = "是否花费 ",
|
|
priceText = string.format("%s 进行护送获得双倍奖励", HtmlColorTxt(cost, "#fdffc2")),
|
|
okText = "确认双倍",
|
|
cancelText = "坚持单倍",
|
|
toggleText = " 记住本次选择",--8字符
|
|
ok_callback = ok_callback,
|
|
close_callback = cancel_callback,
|
|
rechanger_callback = rechanger_callback,
|
|
toggle_function = toggle_function,
|
|
is_complex_ok_callback = false,
|
|
gold_res = "ui_momey_icon_" .. cost_type,
|
|
price = cost, -- config
|
|
}
|
|
if not self.model.not_show_go_ask_indeed or self.model.last_double_escort == nil then
|
|
GlobalEventSystem:Fire(EventName.OPEN_COM_TOGGLE_TIP_VIEW, toggle_tip_data)
|
|
else
|
|
if self.model.last_double_escort == 1 then
|
|
ok_callback()
|
|
elseif self.model.last_double_escort == 0 then
|
|
cancel_callback()
|
|
end
|
|
end
|
|
end
|
|
|
|
function EscortMainView:StartFresh( )
|
|
-- local goods_num = GoodsModel:getInstance():GetTypeGoodsNum(EscortConst.ESCORT_GOODS_ID)
|
|
-- local buy_price = GoodsModel:getInstance():GetGoodsPrice(EscortConst.ESCORT_GOODS_ID)
|
|
-- local cost_price = (self.need_num - goods_num) * buy_price
|
|
-- local price_asset, price_icon = WordManager:GetCommonMoneyIcon(2)
|
|
-- local toggle_tip_data = {
|
|
-- gold_ab_res = price_asset,
|
|
-- gold_res = price_icon,
|
|
-- price = cost_price,
|
|
-- insufficientText = "",
|
|
-- priceText = string.format("<color=#fdffc2>%s</color> 补齐所需的护送令牌",cost_price),
|
|
-- titleText = "提示",
|
|
-- ok_callback = ok_callback,
|
|
-- toggle_function = toggle_function,
|
|
-- is_complex_ok_callback = true,
|
|
-- }
|
|
-- if not self.model.not_show_escort_ask and cost_price ~= 0 and self.is_auto_buy then
|
|
-- GlobalEventSystem:Fire(EventName.OPEN_COM_TOGGLE_TIP_VIEW, toggle_tip_data)
|
|
-- else
|
|
-- ok_callback()
|
|
-- end
|
|
local function ok_callback()
|
|
local auto_buy = self.is_auto_buy and 1 or 0
|
|
-- local auto_buy = 1--这里改了 永远都要自动购买
|
|
self.model:Fire(EscortConst.REQUEST_SCMD_EVENT, 50001, auto_buy)
|
|
end
|
|
|
|
local function toggle_function( flag )
|
|
self.model.not_show_escort_ask = flag
|
|
end
|
|
local function use_function( toggle_tip_data,call_fun_sum )
|
|
if not self.model.not_show_escort_ask then
|
|
GlobalEventSystem:Fire(EventName.OPEN_COM_TOGGLE_TIP_VIEW, toggle_tip_data)
|
|
else
|
|
call_fun_sum()
|
|
end
|
|
end
|
|
local goods_num = GoodsModel:getInstance():GetTypeGoodsNum(EscortConst.ESCORT_GOODS_ID)
|
|
local buy_price = GoodsModel:getInstance():GetGoodsPrice(EscortConst.ESCORT_GOODS_ID)
|
|
local cost_price = (self.need_num - goods_num) * buy_price
|
|
if not self.model.not_show_escort_ask and cost_price ~= 0 and not self.is_auto_buy then
|
|
local buy_tip_data = {
|
|
gold_type = 2,--货币类型
|
|
cost_price = cost_price,--消耗金额
|
|
ok_callback = ok_callback,--成功
|
|
toggle_function = toggle_function,--多选
|
|
togglePriceStr = string.format("<color=#fdffc2>%s</color> 补齐所需的%s", cost_price, HtmlColorTxt(" [外送凭证]", ColorUtil.BLUE_DARK)),--提示语
|
|
use_function = use_function,--最终调用
|
|
}
|
|
CustomActivityModel:getInstance():BuyTips(buy_tip_data)
|
|
else
|
|
ok_callback()
|
|
end
|
|
end
|
|
|
|
function EscortMainView:OpenSuccess()
|
|
self:UpdateView()
|
|
end
|
|
|
|
function EscortMainView:UpdateView()
|
|
self.base_info = self.model:GetEscortBaseInfo()
|
|
local index = self.model:GetEscortObjectIndexById(self.base_info.object_id or 1001)
|
|
local cfg = Config.Convoyobject
|
|
local cur_id = self.base_info.object_id or 1001
|
|
if cfg[cur_id] then
|
|
self.progress_text_tmp.text = string.format("%s/%s", self.base_info.pray_val or 0, cfg[cur_id].up_next_val)
|
|
self.progress_image_img.fillAmount = (self.base_info.pray_val or 0)/cfg[cur_id].up_next_val
|
|
end
|
|
-- lua_resM:setImageSprite(self, self.type_image_img, "escort_asset", "escort_text"..index)
|
|
-- self:UpdateDropDown()
|
|
self:SetSelect()
|
|
self:UpdateNeedCost()
|
|
self:UpdateRewardCon()
|
|
if self.model:IsOverMaxCount() then
|
|
self.num_text_tmp.text = string.format("剩余次数:%s/%s", HtmlColorTxt(0, ColorUtil.RED_DARK), self.model.max_escort_num)
|
|
else
|
|
local left_num = self.model.max_escort_num-self.model:GetEscortTimes()
|
|
self.num_text_tmp.text = string.format("剩余次数:%s/%s", HtmlColorTxt(left_num, ColorUtil.GREEN_DARK), self.model.max_escort_num)
|
|
end
|
|
end
|
|
|
|
function EscortMainView:CreateMoneyView( )
|
|
if not self.money_view then
|
|
self.money_view = UIMoneyView.New(self.con_money)
|
|
end
|
|
self.money_view:SetPosition(0,0)
|
|
self.money_view:SetData()
|
|
end
|
|
|
|
function EscortMainView:SetSelect( )
|
|
local index = self.model:GetEscortObjectIndexById(self.base_info.object_id or 0)
|
|
for i,v in ipairs(self.item_list) do
|
|
v:SetSelect(i==index)
|
|
end
|
|
end
|
|
|
|
--双倍时间
|
|
function EscortMainView:SetDoubleExpTime()
|
|
local cfg1 = DailyModel:getInstance():GetAcConfig(500, 1, 2)
|
|
if cfg1 then
|
|
local time = ErlangParser:GetInstance():Parse(cfg1.time_region)
|
|
for i=1,2 do
|
|
for j=1,2 do
|
|
if tonumber(time[1][i][j]) < 10 and #(tostring(time[1][i][j])) == 1 then
|
|
time[1][i][j] = "0"..time[1][i][j]
|
|
end
|
|
if tonumber(time[2][i][j]) < 10 and #(tostring(time[2][i][j])) == 1 then
|
|
time[2][i][j] = "0"..time[2][i][j]
|
|
end
|
|
end
|
|
end
|
|
local time1 = string.format("%s:%s-%s:%s", time[1][1][1], time[1][1][2],time[1][2][1], time[1][2][2])
|
|
local time2 = string.format("%s:%s-%s:%s", time[2][1][1], time[2][1][2],time[2][2][1], time[2][2][2])
|
|
self.time_text2_tmp.text = string.format("%s %s", HtmlColorTxt(time1, ColorUtil.GREEN_DARK), HtmlColorTxt(time2, ColorUtil.GREEN_DARK))
|
|
-- self.time_text2_tmp.text = string.format("%s:%s-%s:%s", time[2][1][1], time[2][1][2],
|
|
-- time[2][2][1], time[2][2][2])
|
|
end
|
|
-- local cfg2 = DailyModel:getInstance():GetAcConfig(500, 1, 2)
|
|
-- if cfg2 then
|
|
-- local time = ErlangParser:GetInstance():Parse(cfg2.time_region)
|
|
-- for j=1,2 do
|
|
-- for k=1,2 do
|
|
-- if tonumber(time[1][j][k]) < 10 then
|
|
-- time[1][j][k] = "0"..time[1][j][k]
|
|
-- end
|
|
-- end
|
|
-- end
|
|
-- self.time_text2_tmp.text = string.format("%s:%s-%s:%s", time[1][1][1], time[1][1][2],
|
|
-- time[1][2][1], time[1][2][2])
|
|
-- end
|
|
end
|
|
|
|
function EscortMainView:UpdateDropDown( )
|
|
local list = {}
|
|
local cfg_list = {}
|
|
local cfg = Config.Convoyobject
|
|
local first = true
|
|
local cur_index = self.base_info.object_id
|
|
local last_cfg = {}
|
|
local count = 1
|
|
for i,v in pairsByKeys(cfg) do
|
|
if first then
|
|
first = false
|
|
cur_index = cur_index or i
|
|
end
|
|
if i > cur_index then
|
|
local name = self:GetColorName(v.name, v.id)
|
|
table.insert(list, name)
|
|
table.insert(cfg_list, v)
|
|
end
|
|
if count == TableSize(cfg) then
|
|
last_cfg = v
|
|
end
|
|
count = count + 1
|
|
end
|
|
if TableSize(cfg_list) == 0 then
|
|
local name = self:GetColorName(last_cfg.name, last_cfg.id)
|
|
table.insert(list, name)
|
|
table.insert(cfg_list, last_cfg)
|
|
end
|
|
self.improve_index = 1
|
|
self.improve_target_id = cfg_list[self.improve_index].id
|
|
local function update_object_id_func(index)
|
|
self.improve_index = index
|
|
self.improve_target_id = cfg_list[index].id
|
|
self:UpdateNeedCost()
|
|
end
|
|
local prefab_data = {Combox = "Combox",ComboxView = "ComboxView", ComboxItem = "ComboxItem", offset_y = -#list*ComboxItem.Height -10}
|
|
if not self.object_drop_down then
|
|
self.object_drop_down = Combox.New(self.improve_con,list,update_object_id_func,138,30,nil,prefab_data)
|
|
else
|
|
self.object_drop_down:ResetData(list,self.improve_index,update_object_id_func,138,30)
|
|
end
|
|
end
|
|
|
|
function EscortMainView:UpdateNeedCost( )
|
|
local cur_id = self.base_info.object_id
|
|
if cur_id == 0 or not cur_id then
|
|
return
|
|
end
|
|
local cfg = Config.Convoyobject
|
|
local num = 0
|
|
local goods_num = GoodsModel:getInstance():GetTypeGoodsNum(EscortConst.ESCORT_GOODS_ID)
|
|
if self.is_improve_to then
|
|
for k,v in pairsByKeys(cfg) do
|
|
if k >= cur_id and k < self.improve_target_id then
|
|
num = num + stringtotable(v.upgrade_cost)[1][3]
|
|
end
|
|
end
|
|
else
|
|
local data = stringtotable(cfg[cur_id].upgrade_cost)
|
|
if TableSize(data) > 0 then
|
|
num = data[1][3]
|
|
end
|
|
end
|
|
local color_str = ColorUtil.GREEN_DARK
|
|
if goods_num < num then
|
|
color_str = ColorUtil.RED_DARK
|
|
end
|
|
self.need_num = num
|
|
self.cost_text_tmp.text = string.format("剩余:%s/%s", HtmlColorTxt(goods_num, color_str), num)
|
|
end
|
|
|
|
function EscortMainView:GetColorName(name,id)
|
|
local index = self.model:GetEscortObjectIndexById(id)
|
|
local color_str = {
|
|
[1] = "#ffffff",
|
|
[2] = "#10aaf1",--7bb1ff
|
|
[3] = "#d322ff",--f280f7
|
|
[4] = "#ffea9c",--ffe96c
|
|
}
|
|
return HtmlColorTxt(name, color_str[index])
|
|
end
|
|
|
|
function EscortMainView:UpdateEscortItem( )
|
|
local data = Config.Convoyobject
|
|
local count = 1
|
|
local x_offset = 290
|
|
for i,v in pairsByKeys(data) do
|
|
local item = self.item_list[count]
|
|
if not item then
|
|
item = EscortItem.New(self.item_con)
|
|
self.item_list[count] = item
|
|
end
|
|
item:SetData(v, count)
|
|
-- item:SetPosition(self.position_data[count][1], self.position_data[count][2])
|
|
item:SetPosition((count - 1) * x_offset-10, -168)
|
|
count = count + 1
|
|
end
|
|
end
|
|
|
|
function EscortMainView:UpdateRewardCon( )
|
|
local cur_id = self.base_info.object_id or 1001
|
|
cur_id = cur_id == 0 and 1001 or cur_id
|
|
local exp_num = self.model:GetEscortExpByLv(RoleManager.Instance.mainRoleInfo.level, cur_id, false)
|
|
local data = stringtotable(Config.Convoyobject[cur_id].award) or {}
|
|
local exp_data = {
|
|
[1] = 0,
|
|
[2] = EscortConst.EXP_TPYE_ID,
|
|
[3] = exp_num
|
|
}
|
|
table.insert(data, exp_data)
|
|
for i,v in ipairs(data) do
|
|
local item = self.awarditem_list[i]
|
|
if not item then
|
|
item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.reward_con)
|
|
item:SetItemSize(59,59)
|
|
item:SetPosition(64*(i-1), 0)
|
|
self.awarditem_list[i] = item
|
|
end
|
|
item:SetData(v[2],v[3])
|
|
end
|
|
end
|
|
|
|
function EscortMainView:DestroySuccess( )
|
|
for i,v in ipairs(self.item_list) do
|
|
v:DeleteMe()
|
|
v = nil
|
|
end
|
|
self.item_list = {}
|
|
if self.drop_down then
|
|
self.drop_down:DeleteMe()
|
|
self.drop_down = nil
|
|
end
|
|
if self.update_id then
|
|
self.model:UnBind(self.update_id)
|
|
self.update_id = nil
|
|
end
|
|
if self.money_view then
|
|
self.money_view:DeleteMe()
|
|
self.money_view = nil
|
|
end
|
|
if self.object_drop_down then
|
|
self.object_drop_down:DeleteMe()
|
|
self.object_drop_down = nil
|
|
end
|
|
|
|
for i,v in ipairs(self.awarditem_list) do
|
|
UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, v)
|
|
end
|
|
self.awarditem_list = {}
|
|
end
|