|
|
- FuliLimitPackageView = FuliLimitPackageView or BaseClass(BaseView)
- local FuliLimitPackageView= FuliLimitPackageView
- function FuliLimitPackageView:__init()
- self.base_file = "fuli"
- self.layout_file = "FuliLimitPackageView"
- self.layer_name = "Top"
- self.use_background = true
-
- self.click_bg_toClose = false
- self.change_scene_close = true
- self.destroy_imm = true
- self.is_set_zdepth = true
- self.limit_num = false
- self.model = FuliModel:getInstance()
- self.mainVo = RoleManager.Instance.mainRoleInfo
- self.reward_item_list = {}
- self.num_item_list = {}
- self.item_list = {}
- self.list_item_animation = false
-
- self.open_callback = function()
- self:InitData()
- end
-
- self.load_callback = function()
- self:LoadSuccess()
- self:InitEvent()
- self.model:Fire(FuliConst.REQ_FULI_SCMD, 16011)
- end
-
- self.close_callback = function ()
- end
-
- self.destroy_callback = function()
- self:Remove()
- end
- self.ReOpen_callback = function ()
- end
- end
-
- function FuliLimitPackageView:Open()
- BaseView.Open(self)
- GlobalEventSystem:Fire(SceneEventType.CLOSE_DIALOGUE_VIEW)
- GlobalEventSystem:Fire(EventName.STOP_AUTO_DO_TASK)
- GlobalEventSystem:Fire(EventName.STOPAUTOFIGHT)
-
- end
-
- function FuliLimitPackageView:Remove()
-
- for i,item in pairs(self.reward_item_list) do
- item:ReleaseObj()
- end
- self.reward_item_list = {}
-
- for i,item in pairs(self.item_list) do
- item:DeleteMe()
- end
- self.item_list = {}
-
- for i,item in pairs(self.num_item_list) do
- item:DeleteMe()
- end
- self.num_item_list = {}
-
- if self.is_do_action then
- MainUIController.Instance.MainRoleHeadInfoView:SetLimitPackageBtnVisible(true)
- end
-
- if self.tween_id then
- TweenLite.Stop(self.tween_id)
- self.tween_id = nil
- end
-
- --完成引导
- local helpVo = GuideModel:getInstance():GetHelpVo(HelpType.TYPE_LIMIT_PACKAGE,2)
- if helpVo then
- GlobalEventSystem:Fire(EventName.FINISH_CURRENT_HELP_STEP,helpVo)
- GlobalEventSystem:Fire(EventName.FORCE_TO_DO_TASK)
- GlobalEventSystem:Fire(EventName.START_AUTO_DO_TASK)
- end
-
- if self.timer_countdown then
- TimerQuest.CancelQuest(GlobalTimerQuest, self.timer_countdown)
- self.timer_countdown = nil
- end
-
- self:StopAnimationList()
- end
-
- function FuliLimitPackageView:LoadSuccess()
-
- local nodes = {
- "center/title_text:txt",
- "center/close:obj",
- "center/bg1:raw",
- "center/count_text:txt",
- "center/bg:raw",
- "center/bg2:raw",
- "center/continue:obj:img",
- "center/reward_scroll",
- "center/reward_scroll/Viewport/reward_con",
- "center/icon:img:obj",
- "center/item_scroll/Viewport/item_con",
- "center/item_scroll",
- "icon_cont:obj",
- "center/time_text:txt",
- "center:obj",
- "center/num_ani_con",
- }
-
- self:GetChildren(nodes)
-
- lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("fuli_limit_package_bg1_1102_605"),false)
- lua_resM:setOutsideRawImage(self, self.bg1_raw, GameResPath.GetFuliImage("fuli_limit_package_text_1"),false)
- lua_resM:setOutsideRawImage(self, self.bg2_raw, GameResPath.GetFuliImage("fuli_limit_package_text_2"),false)
-
- self:InitEvent()
- end
-
- function FuliLimitPackageView:InitEvent()
- local function onBtnClickHandler(target)
- if target == self.close_obj then
- self:Continue()
- elseif target == self.continue_obj then
- self:Continue()
- end
- end
- AddClickEvent(self.close_obj,onBtnClickHandler)
- AddClickEvent(self.continue_obj,onBtnClickHandler)
-
- local function on_fuli_limit_update()
- self:UpdateInfo()
- end
- self:BindEvent(FuliModel:getInstance(), FuliConst.FULI_LIMIT_INFO_UPDATE, on_fuli_limit_update)
- end
-
-
- function FuliLimitPackageView:InitData()
- self.cfg = DeepCopy(self.model:GetFuliLevelCFG(self.mainVo.career))
- if not self.cfg or not self.cfg[1] then
- return
- end
-
- local b = TaskModel:getInstance():IsTaskFinished(FuliConst.LIMIT_PACKAGE_TASK.CLOSE_TASK_ID)
- lua_resM:setImageSprite(self, self.continue_img,"fuli_asset",b and "fuli_item34" or "fuli_item29")
- self.limit_num = self.cfg[1].limit_num
- self.title_text_txt.text = string.format("%s ", HtmlColorTxt( self.cfg[1].worth, "#ffd633"))
- local reward_list = self.cfg[1].award_limit_list
-
- if #reward_list > 0 then
- for i,v in ipairs(reward_list) do
- local item = self.reward_item_list[i]
- if item == nil then
- item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.reward_con)
- self.reward_item_list[i] = item
- end
- if v.is_limit then
- item:SetNumLimitVisible( true, 4 )
- item:SetData(v[2], 1, nil, nil)
- else
- item:SetNumLimitVisible( false )
- item:SetData(v[2], v[3], nil, nil)
- end
- item:SetItemSize(50, 50)
- item:SetAnchoredPosition((i - 1) * 65 + 7.5,-8)
- end
- for i=#reward_list + 1,#self.reward_item_list do
- self.reward_item_list[i]:SetVisible(false)
- end
- end
- SetSizeDeltaX(self.reward_con, 65 * #reward_list)
-
- local helpVo = GuideModel:getInstance():GetHelpVo(HelpType.TYPE_LIMIT_PACKAGE,2)
- if helpVo then
- self:CheckLeftTime()
- end
- end
-
- function FuliLimitPackageView:UpdateInfo()
- self.data = self.model.fuli_limit_package_info
- if self.data then
- if not self.limit_num then
- self.cfg = DeepCopy(self.model:GetFuliLevelCFG(self.mainVo.career))
- if not self.cfg or not self.cfg[1] then
- return
- end
- self.limit_num = self.cfg[1].limit_num
- end
- local num = self.limit_num - self.data.number
- if num < FuliConst.LIMIT_PACKAGE_CONST.LIMIT_NUM then
- num = FuliConst.LIMIT_PACKAGE_CONST.LIMIT_NUM
- end
- self.count_text_txt.text = string.format("/%d", self.limit_num)
- local t_num = 10000
- local t_num_list = {}
- local num_list = {}
- for i=1,5 do
- local m = num / t_num
- local n = num % t_num
- t_num_list[i] = math.floor(m)
- num = n
- t_num = t_num / 10
- end
-
- for i,v in ipairs(t_num_list) do
- if v ~= 0 then
- for ii=i,#t_num_list do
- table.insert(num_list, t_num_list[ii])
- end
- break
- end
- end
- for i,v in ipairs(num_list) do
- local item = self.num_item_list[i]
- if item == nil then
- item = FuliLimitPackageNumItem.New(self.num_ani_con,nil)
- self.num_item_list[i] = item
- end
- item:SetData(v, 0.5 * i, i)
- item:SetAnchoredPosition(85-(#num_list - i)*12, -8)
- end
-
- local packag_name = self.cfg[1].name or "至尊级限量礼包"
-
- local function LoadSuccessCallBack( )
- self.load_item_idx = self.load_item_idx - 1
- if self.load_item_idx == 0 then
- self:ResetPlayerInfo(packag_name)
- end
- end
-
- local list = self.data.list
- self.load_item_idx = #list
- if #list > 0 then
- for i,v in ipairs(list) do
- local item = self.item_list[i]
- if item == nil then
- item = FuliLimitPackageItem.New(self.item_con,nil)
- self.item_list[i] = item
- end
- item:SetLoadCallBack(LoadSuccessCallBack)
- end
- end
- end
- end
-
- function FuliLimitPackageView:ResetPlayerInfo(packag_name)
- self.list_item_animation = {}
- local total_w = 0
- local scroll_width = GetSizeDeltaX(self.item_scroll)
- for i= 1,#self.item_list do
- local item = self.item_list[i]
- if item then
- local d = self.data.list[i]
- self.list_item_animation[i] = self.list_item_animation[i] or {}
- d.packag_name = packag_name
- item:SetData(d)
- item:SetAnchoredPosition(scroll_width + total_w,0)
- local w = item:GetWidth()
- self.list_item_animation[i].item = item
- self.list_item_animation[i].width = w
- total_w = total_w + w
- end
- end
- self.anim_end_pos = scroll_width
- SetSizeDeltaX(self.item_con, total_w)
- self:StartAnimationList()
- end
-
- function FuliLimitPackageView:InitActoin()
- self.image_obj = UiFactory.createChild(self.icon_cont, UIType.ImageExtend)
- self.image_obj.transform.sizeDelta = Vector2(72, 72)
- self.image_icon = self.image_obj:GetComponent("ImageExtend")
- SetLocalPosition(self.image_obj.transform, 0, 0, 0)
- lua_resM:setImageSprite(self, self.image_icon, "mainUI_asset", "limit_package_btn_bg", true)
-
- end
-
- --动画开始
- function FuliLimitPackageView:PlayAction( )
- local callback = function()
- MainUIController.Instance.MainRoleHeadInfoView:SetLimitPackageBtnVisible(true)
- self:Close()
- end
- self.is_do_action = true
- local pos = MainUIController.Instance.MainRoleHeadInfoView:GetLimitPackageBtnPos()
- if pos and self.image_obj then
- MainUIController.Instance.MainRoleHeadInfoView:SetLimitPackageBtnVisible(false)
- self.center_obj:SetActive(false)
- self.icon_cont_obj:SetActive(true)
- self.tween_id = TweenLite.to(self, self.image_obj.transform, TweenLite.UiAnimationType.POS, pos, 0.8, callback)
- else
- callback()
- end
- end
-
- function FuliLimitPackageView:Continue()
- if TaskModel:getInstance():IsTaskFinished(FuliConst.LIMIT_PACKAGE_TASK.CLOSE_TASK_ID) then
- self.model:Fire(FuliConst.REQ_FULI_SCMD, 16006, self.cfg[1].id)
- self:Close()
- else
- local helpVo = GuideModel:getInstance():GetHelpVo(HelpType.TYPE_LIMIT_PACKAGE,2)
- if helpVo then
- self:InitActoin()
- self:PlayAction()
- else
- self:Close()
- GlobalEventSystem:Fire(EventName.START_AUTO_DO_TASK)
- GlobalEventSystem:Fire(EventName.FORCE_TO_DO_TASK)
- end
- end
- end
-
- function FuliLimitPackageView:CheckLeftTime()
- if self.timer_countdown then
- TimerQuest.CancelQuest(GlobalTimerQuest, self.timer_countdown)
- self.timer_countdown = nil
- end
- local leftTime = 15
- local function timer_func()
- leftTime = leftTime - 1
- if leftTime <= 0 then
- self:Continue()
- else
- self.time_text_txt.text = string.format("%s 秒后自动关闭界面", HtmlColorTxt( leftTime, "#0CE148") )
- end
- end
- self.timer_countdown = TimerQuest.AddPeriodQuest(GlobalTimerQuest, timer_func, 1)
- timer_func()
- end
-
-
- function FuliLimitPackageView:StopAnimationList()
- if self.timer_anim_list then
- TimerQuest.CancelQuest(GlobalTimerQuest, self.timer_anim_list)
- self.timer_anim_list = nil
- end
- end
-
- function FuliLimitPackageView:StartAnimationList()
- if self.list_item_animation then
- local function timer_func()
- local end_pos_x = self.anim_end_pos
- for i,v in ipairs(self.list_item_animation) do
- local cur_pos_x = v.cur_pos_x
- if not cur_pos_x then
- local pos = v.item:GetAnchoredPosition()
- cur_pos_x = pos.x
- end
- cur_pos_x = cur_pos_x- 3
- v.cur_pos_x = cur_pos_x
- v.item:SetAnchoredPosition(cur_pos_x, 0)
- end_pos_x = end_pos_x < cur_pos_x + v.width and cur_pos_x + v.width or end_pos_x
- end
- for i,v in ipairs(self.list_item_animation) do
- if v.cur_pos_x < - v.width then
- v.item:SetAnchoredPosition(end_pos_x, 0)
- v.cur_pos_x = end_pos_x
- end
- end
- end
- self.timer_anim_list = TimerQuest.AddPeriodQuest(GlobalTimerQuest, timer_func, 0.02)
- timer_func()
- end
- end
|