源战役客户端
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.
 
 
 
 
 

391 lines
13 KiB

EscortSceneView = EscortSceneView or BaseClass(BaseView)
local EscortSceneView = EscortSceneView
--[[
EscortSceneView.TabData = {
[1] = {name = "人物", level = MainRoleModel.TabOpenLevel[1]},
}
--]]
local table_sort = table.sort
function EscortSceneView:__init()
self.base_file = "escort"
self.layout_file = "EscortSceneView"
self.layer_name = "Main"
self.destroy_imm = true
self.use_background = false --全屏界面默认使用这个参数
--self.hide_maincancas = true --全屏界面需要放开隐藏主UI
self.change_scene_close = true
self.append_to_ctl_queue = false --是否要添加进界面堆栈
self.need_show_money = false --是否要显示顶部的金钱栏
self.model = EscortModel:getInstance()
self.cur_index = 1
self.is_hide = false
self.escort_reward_item = {}
self.kill_info_list = {}
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 EscortSceneView:Open( )
--self.data = data
BaseView.Open(self)
end
function EscortSceneView:LoadSuccess()
local nodes = {
"base_con", "base_con/escort_btn:obj:img", "arrow_image",
"hide_btn:obj","base_con/escort_btn/escort_btn_image:img",
"downCon:obj", "downCon/go_btn:obj:img",
"tip_con:obj",
--运送con
"base_con/escort_con/name_text:tmp", "base_con/escort_con/time_text:tmp", "base_con/escort_con/iconImg:img",
"base_con/escort_con/escort_reward_con1", "base_con/escort_con/have_times_text:tmp",
"base_con/escort_con:obj", "base_con/escort_con/lb1:tmp", "base_con/escort_con/desc_text:tmp",
}
self:GetChildren(nodes)
-- self.time_limit = Config.Convoykv["convoy_overtime"].value_content
self.lb1_tmp.text = "外送奖励"
self.desc_text_tmp.text = "勤奋的外送员从不偷懒!\n外送至目的地可获得奖励"
self.transform.sizeDelta = Vector3(ScreenWidth, ScreenHeight)
SetAnchoredPosition(self.transform, 0, 0)
self:ChangeUiPosition()
self.model:SetEscortSceneViewOpen(true)
ExpDunModel:getInstance():Fire(ExpDunModel.UPDATE_EXP_DUN_BTN)
if not self.init_exit_btn then
self.init_exit_btn = true
local function call_back( ... )
local is_escort = self.model:IsEscortState()
local is_in_dun = SceneManager.Instance:IsEscortPVEDunScene()
local function ok( ... )
if is_escort then
self.model:Fire(EscortConst.REQUEST_SCMD_EVENT, 50008)
elseif is_in_dun then
BaseDungeonModel:getInstance():Fire(BaseDungeonModel.REQUEST_CCMD_EVENT, 61002)
else
self.model:FlyToNpc()
end
end
local ask_str = (is_escort or is_in_dun) and "\n放弃运送将会损失大量经验,确定吗?" or "即将返回主城,确定吗?"
Alert.show(ask_str,Alert.Type.Two,ok,nil,"确定","取消")
end
local data = {call_back = call_back, pos = {x = 240,y = 310}} -- pos 为左侧侧边栏的长度
GlobalEventSystem:Fire(EventName.SHOW_EXIT_BTN_STATE, data)
end
if self.model:GetEscortSceneLeftHideState() then--代表是展示了左边的东西 所以这里要隐藏
self:SetHideState(true)
end
end
function EscortSceneView:AddEvent()
--适配刘海屏
local function onOrientationChange()
self:ChangeUiPosition()
end
self:BindEvent(GlobalEventSystem, EventName.ORIENTATION_DID_CHANGE, onOrientationChange)
local function on_update_stage_info( )
self:UpdateView()
end
self.on_update_stage_info_id = self.model:BindOne("escort_stage_info", on_update_stage_info)
local function on_ans_basic_info()
-- print("Lizhijian:EscortSceneView [start:105]")
if self.model:IsEscortState() and SceneManager.Instance:IsEscortAllScene() then
self:UpdateReward()
end
end
self:BindEvent(self.model, EscortConst.ANS_BASIC_INFO, on_ans_basic_info)
self:BindEvent(self.model, EscortConst.CHANGE_LAST_DOUBLE, on_ans_basic_info)
local function on_update_escort_state( ... )
self:SetBtnState()
end
self.on_update_escort_state_id = self.model:BindOne("escort_base_info", on_update_escort_state)
-- local function on_update_escort_btn( )
-- self:UpdateEscortBtnState()
-- end
-- self:BindEvent(self.model, EscortConst.UPDATE_BUTTON_STATE, on_update_escort_btn)
local function on_hide_left()
self:SetHideState(self.model:GetEscortSceneLeftHideState())
end
self:BindEvent(self.model, EscortConst.UPDATE_ESCORT_LEFT_SHOW, on_hide_left)
local function on_close_tip( ... )
self:ShowEscortCarTip(false)
end
self:BindEvent(self.model, EscortConst.RUN_NEAR_CAR, on_close_tip)
local function on_change_btn_state( )
print("HWR:EscortSceneView [125]2323232: ",2323232)
self:UpdateEscortBtnState()
end
self:BindEvent(GlobalEventSystem, AutoFightManager.CHANGE_AUTO_FIND_WAY_STATE, on_change_btn_state)
local function on_click( target )
if target == self.escort_btn_obj then
if self.model:IsEscortState() or SceneManager.Instance:IsEscortPVEDunScene() then
self:SwitchView(1)
else
Message.show("您目前没有在运送中哦~")
self:SwitchView(2)
end
elseif target == self.hide_btn_obj then
self:SetHideState(not self.is_hide)
elseif target == self.go_btn_obj then
if not self.model:IsFollowEscortCar() then
self.model:GoEscortNpc()
else
self.model:SetEscortCarFollow(false)
end
end
end
AddClickEvent(self.escort_btn_obj, on_click)
AddClickEvent(self.hide_btn_obj, on_click)
AddClickEvent(self.go_btn_obj, on_click)
-- self:BindLittleMove(self.go_btn, BaseView.LittleMoveDir.Bottom, -206.5)
self:BindLittleMove(self.tip_con, BaseView.LittleMoveDir.Bottom, -98)
self:BindLittleMove(self.downCon, BaseView.LittleMoveDir.Bottom, 310)
self:BindLittleMove(self.base_con, BaseView.LittleMoveDir.Left, 0)
self:BindLittleMove(self.hide_btn, BaseView.LittleMoveDir.Left, 0)
self:BindLittleMove(self.arrow_image, BaseView.LittleMoveDir.Left, 20)
-- 主界面聊天展开事件
self:BindMainUIExpandEvent(self.downCon)
end
function EscortSceneView:SetHideState(bool)
if self.is_do_action then
return
end
if bool == self.is_hide then return end
self.is_hide = bool
self:DoMoveAnimation()
end
function EscortSceneView:DoMoveAnimation()
if self.is_hide then
self.is_do_action = true
local function moveComplete()
self:MoveOutOfScreen(self.base_con.transform)
self.is_do_action = false
end
TweenLite.to(self, self.base_con, TweenLite.UiAnimationType.ANCHORED_POSX, -200, 0.2, moveComplete)
self.arrow_image.transform.localRotation = Quaternion.Euler(0,0,180)
else
self.is_do_action = true
local function moveComplete()
self.is_do_action = false
end
TweenLite.to(self, self.base_con, TweenLite.UiAnimationType.ANCHORED_POSX, ClientConfig.iphone_x_offset_left, 0.2, moveComplete)
self.arrow_image.transform.localRotation = Quaternion.Euler(0,0,0)
self:MoveInToScreen(self.base_con.transform)
end
end
function EscortSceneView:OpenSuccess()
self:UpdateView()
end
function EscortSceneView:UpdateView()
self:UpdateEscortTime()
self:UpdateReward()
self:SwitchView(self.cur_index)
self:SetBtnState()
self:UpdateEscortBtnState()
end
function EscortSceneView:UpdateDunInfo( )
local dun_id = SceneManager:getInstance():GetCurrDunId()
local wave_cfg = BaseDungeonModel:getInstance():GetDunWaveCfg(dun_id)
local temp_mon_list = {}
for i,v in ipairs(wave_cfg) do
local mon_list = stringtotable(v.mon_list)
local sort_func = function ( a, b )
return a[1] < b[1]
end
table_sort(mon_list, sort_func)
for kk, vv in ipairs(mon_list) do -- 一条数据就是一个怪
temp_mon_list[vv[1]] = temp_mon_list[vv[1]] or 0
temp_mon_list[vv[1]] = temp_mon_list[vv[1]] + 1
end
end
local temp_one_mon_id = nil
for i,v in pairs(temp_mon_list) do
temp_one_mon_id = i
break
end
end
function EscortSceneView:SwitchView( index )
self.cur_index = index
if index == 1 then
self.escort_con_obj:SetActive(true)
lua_resM:setImageSprite(self, self.escort_btn_image_img, "escort_asset", "escort_icon6", true)
self:UpdateReward()
else
self.escort_con_obj:SetActive(false)
lua_resM:setImageSprite(self, self.escort_btn_image_img, "escort_asset", "escort_item7", true)
end
end
function EscortSceneView:SetBtnState( )
local is_escort = self.model:IsEscortState()
self.go_btn_obj:SetActive(is_escort)
local base_info = self.model:GetEscortBaseInfo()
if TableSize(base_info) > 0 then
self.have_times_text_tmp.text = string.format("剩余可接外送次数:<color=%s>%s次</color>",ColorUtil.YELLOW_DARK,self.model:GetMaxEscortTimes() - base_info.convoy_counts)
lua_resM:setImageSprite(self, self.iconImg_img, "escort_asset", "escort_"..base_info.object_id)
local cfg = Config.Convoyobject
if cfg[base_info.object_id] then
self.name_text_tmp.text = Trim(cfg[base_info.object_id].name)
end
end
end
function EscortSceneView:UpdateEscortTime( )
if self.escort_timer_id then
GlobalTimerQuest:CancelQuest(self.escort_timer_id)
self.escort_timer_id = nil
end
local data = self.model:GetEscortBaseInfo()
if TableSize(data) == 0 then return end
self.end_time = data.end_time
local left_time = math.max(0,self.end_time - TimeUtil:getServerTime())
if left_time <= 0 then
else
local function onExitTimer()
left_time = self.end_time - TimeUtil:getServerTime()
if left_time > 0 then
self.time_text_tmp.text = string.format("外送限时 <size=115%%>%s</size>",HtmlColorTxt(TimeUtil:timeConvert8(left_time), ColorUtil.GREEN_DARK))
else
GlobalTimerQuest:CancelQuest(self.escort_timer_id)
self.escort_timer_id = nil
end
end
self.escort_timer_id = GlobalTimerQuest:AddPeriodQuest(onExitTimer, 1, -1)
end
end
function EscortSceneView:UpdateReward( )
local data = self.model:GetStageRewardByType("escort")
-- print("Lizhijian:EscortSceneView [start:280] ")
-- PrintTable(data)
-- PrintTable(self.model:GetEscortBaseInfo())
-- print("Lizhijian:EscortSceneView [end:280] ")
if TableSize(data) == 0 then
return
end
local count = 1
for i=1,1 do
if data[i] then
for ii,vv in ipairs(data[i]) do
local item = self.escort_reward_item[count]
if not item then
item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self["escort_reward_con1"])
item:SetItemSize(62,62)
item:SetNumForceShow(true)
item:SetPosition((count-1)*80, 0)
self.escort_reward_item[count] = item
end
item:SetData(vv[2],vv[3])
count = count + 1
end
end
end
end
function EscortSceneView:UpdateEscortBtnState( )
if AutoFightManager:getInstance():GetAutoFindWayState() then
lua_resM:setImageSprite(self, self.go_btn_img, "escort_asset", "escort_icon9")
else
lua_resM:setImageSprite(self, self.go_btn_img, "escort_asset", "escort_icon4")
end
end
function EscortSceneView:ChangeUiPosition( )
SetAnchoredPositionX(self.base_con.transform, ClientConfig.iphone_x_offset_left)
SetAnchoredPositionX(self.arrow_image.transform, 19 + ClientConfig.iphone_x_offset_left)
SetAnchoredPositionX(self.hide_btn.transform, -1 + ClientConfig.iphone_x_offset_left)
end
function EscortSceneView:ShowEscortCarTip( bool )
if bool then
self.tip_con_obj:SetActive(true)
if self.delay_tip_id then
TimerQuest.CancelQuest(GlobalTimerQuest,self.delay_tip_id)
self.delay_tip_id = nil
end
local function delay_method( )
self:ShowEscortCarTip(false)
end
self.delay_tip_id = setTimeout(delay_method, 15)--倒数15秒消失
else
self.tip_con_obj:SetActive(false)
if self.delay_tip_id then
TimerQuest.CancelQuest(GlobalTimerQuest,self.delay_tip_id)
self.delay_tip_id = nil
end
end
end
function EscortSceneView:DestroySuccess( )
GlobalEventSystem:Fire(EventName.HIDE_EXIT_BTN_STATE)
if self.kill_update_id then
BaseDungeonModel:getInstance():UnBind(self.kill_update_id)
self.kill_update_id = nil
end
if self.escort_timer_id then
GlobalTimerQuest:CancelQuest(self.escort_timer_id)
self.escort_timer_id = nil
end
if self.on_update_stage_info_id then
self.model:UnBind(self.on_update_stage_info_id)
self.on_update_stage_info_id = nil
end
if self.on_update_blood_id then
self.model:UnBind(self.on_update_blood_id)
self.on_update_blood_id = nil
end
if self.on_update_escort_state_id then
self.model:UnBind(self.on_update_escort_state_id)
self.on_update_escort_state_id = nil
end
if self.on_update_skill_btn_id then
self.model:UnBind(self.on_update_skill_btn_id)
self.on_update_skill_btn_id = nil
end
if self.change_icon_event_id then
GlobalEventSystem:UnBind(self.change_icon_event_id)
self.change_icon_event_id = nil
end
for i,v in ipairs(self.escort_reward_item) do
UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, v)
end
self.escort_reward_item = {}
self.model:SetEscortSceneViewOpen(false)
ExpDunModel:getInstance():Fire(ExpDunModel.UPDATE_EXP_DUN_BTN)
end