TaskBountyRewardView = TaskBountyRewardView or BaseClass(BaseView) local TaskBountyRewardView = TaskBountyRewardView function TaskBountyRewardView:__init() self.base_file = "task" self.layout_file = "TaskBountyRewardView" self.layer_name = "Activity" self.destroy_imm = true self.use_background = true self.hide_maincancas = false self.model = TaskModel:getInstance() self.time_diff = 10 self.is_set_zdepth = true -- self.use_local_view = true self.item_list = {} self.load_callback = function () self:LoadSuccess() self:InitEvent() end self.open_callback = function () self:InitView() end self.close_callback = function () end self.destroy_callback = function () self:Clear() end end function TaskBountyRewardView:Open(circle_num) self.circle_num = circle_num BaseView.Open(self) end function TaskBountyRewardView:Clear() if self.update_reward_id then GlobalEventSystem:UnBind(self.update_reward_id) self.update_reward_id = nil end for i, v in ipairs(self.item_list) do v:DeleteMe() v = nil end self.item_list = {} self:CancelTimer() end function TaskBountyRewardView:Close() BaseView.Close(self) end function TaskBountyRewardView:InitView() self:StartTimer() local info = self.model.circle_cache_reward if not info then return end local reward_list = {} for index, vo in ipairs(info.reward) do table.insert(reward_list, vo) end for index, vo in ipairs(info.extra_reward) do table.insert(reward_list, vo) end for i, v in ipairs(reward_list) do local item = self.item_list[i] if item == nil then item = AwardItem.New(self.item_parent) self.item_list[i] = item end item:SetVisible(true) item:SetItemSize(78, 78) local goods_id, lock = GoodsModel:getInstance():GetMappingTypeId(v[1], v[2]) item:SetData(goods_id, v[3], nil, nil, lock) if v.is_vip then item:SetVipAdditionTip(true) end end for i=#reward_list + 1,#self.item_list do self.item_list[i]:SetVisible(false) end if self.circle_num == 10 then self.ok_btn_txt.text = "继续任务" elseif self.circle_num == 20 then self.ok_btn_txt.text = "确定" end end function TaskBountyRewardView:LoadSuccess() self.left_img, self.right_img = GetChildImages(self.transform, { "left", "right", }) lua_resM:setOutsideImageSprite(self, self.left_img, GameResPath.GetCommonImage("jsui_bg")) lua_resM:setOutsideImageSprite(self, self.right_img,GameResPath.GetCommonImage("jsui_bg")) self.cancel_btn, self.ok_btn = self:GetChildGameObjects({ "CancelBtn", "OkBtn", }) self.item_parent = self:GetChildTransforms({ "ItemParent" }) self.tip_txt, self.ok_btn_txt = self:GetChildTexts({ "Tip", "OkBtn/Text", }) end function TaskBountyRewardView:InitEvent() local function onBtnClickHandler(target) if target == self.cancel_btn then self:Close() GlobalEventSystem:Fire(EventName.START_AUTO_DO_TASK,true) elseif target == self.ok_btn then if self.circle_num == 10 then self:Close() GlobalEventSystem:Fire(EventName.START_AUTO_DO_TASK,true) elseif self.circle_num == 20 then self:Close() self:GoToHook() end end end AddClickEvent(self.cancel_btn,onBtnClickHandler) AddClickEvent(self.ok_btn,onBtnClickHandler) end function TaskBountyRewardView:GoToHook() local onHookData = DailyModel:getInstance():GetOnhookConfig() if onHookData then local pointList = ErlangParser:GetInstance():Parse(onHookData.xy) local index = math.random(1, #pointList) local randomPoint = pointList[index] local x = tonumber(randomPoint[1]) local y = tonumber(randomPoint[2]) local call_back = function () GlobalEventSystem:Fire(EventName.STARTAUTOFIGHT) end local findVo = FindVo.New() findVo.type = FindVo.POINT findVo.sceneId = tonumber(onHookData.scene_id) findVo.x = x / SceneObj.LogicRealRatio.x findVo.y = y / SceneObj.LogicRealRatio.y findVo.call_back = call_back findVo.force_change_scene = true GlobalEventSystem:Fire(EventName.STOPAUTOFIGHT) GlobalEventSystem:Fire(EventName.FORCE_STOP_DO_TASK) Scene.Instance:FindElement(findVo) end end function TaskBountyRewardView:CancelTimer() if self.timer_id then TimerQuest.CancelQuest(GlobalTimerQuest, self.timer_id) self.timer_id = nil end end function TaskBountyRewardView:StartTimer() self:CancelTimer() local end_time = TimeUtil:getServerTime( ) + self.time_diff local function onTimer() local time = end_time - TimeUtil:getServerTime( ) if time > 0 then if self.circle_num == 10 then self.tip_txt.text = string.format("%d秒后自动任务",time) elseif self.circle_num == 20 then self.tip_txt.text = string.format("%d秒后自动野外挂机",time) end else self:CancelTimer() if self.circle_num == 10 then self:Close() GlobalEventSystem:Fire(EventName.START_AUTO_DO_TASK,true) elseif self.circle_num == 20 then self:Close() self:GoToHook() end end end onTimer() self.timer_id = TimerQuest.AddPeriodQuest(GlobalTimerQuest, onTimer,1,-1) end