|
|
- TaskAnnounceModel = TaskAnnounceModel or BaseClass(BaseModel)
-
- TaskAnnounceModel.OPEN_ANNOUNCE_VIEW = "TaskAnnounceModel.OPEN_ANNOUNCE_VIEW"
- TaskAnnounceModel.UPDATE_ANNOUNCE_VIEW = "TaskAnnounceModel.UPDATE_ANNOUNCE_VIEW"
- TaskAnnounceModel.REQUEST_CCMD_EVENT = "TaskAnnounceModel.REQUEST_CCMD_EVENT"
- TaskAnnounceModel.UPDATE_ANNOUNCE_VISIBLE = "TaskAnnounceModel.UPDATE_ANNOUNCE_VISIBLE" --更新右边功能提示界面是否显示
- TaskAnnounceModel.UPDATE_ANNOUNCE_RED_DOT = "TaskAnnounceModel.UPDATE_ANNOUNCE_RED_DOT" --功能预告红点
-
- function TaskAnnounceModel:__init()
- TaskAnnounceModel.Instance = self
- self.reward_list = {}
- self.show_menu = true--是否显示功能预告
- self.red_dot = nil
- self.reward_red_idx_list = false
- end
-
- --主界面模型类展示的 缩放和位置
- TaskAnnounceModel.MainUIStyle =
- {
- [1001] = {140, 14, 125, 0}, --坐骑
- [1003] = {400, 0, 110,0},--宝具
- [1004] = {200, 0, 80,0}, -- 武器
- [1005] = {180, 0, 68, 0},--AI娘
- [1301] = {2, 0, 100, 0},--幻光
-
- [1002] = {250, 15, 150, -280},--炫翼
- [1201] = {300, 0, 90, -280},--宠物, 宝宝 暂时也用这个
- [1006] = {300, 0, 90, -280},--磁炮
- [1008] = {400, -40, 45, -280},--幻甲
- [1007] = {300, 12, 120, -280}, --星翼
- }
-
- --功能预告界面模型类展示的 缩放和位置
- TaskAnnounceModel.TAViewUIStyle =
- {
-
- [1301] = {3, 0, -820, 0},--幻光
- [1001] = {180, -144, 250, 0}, --坐骑
- [1004] = {250, -50, 155,0}, -- 武器(无效)
- [1003] = {600, -60, 110,0},--宝具
- [1005] = {250, -60, 150, 0},--AI娘 /
- [1002] = {300,-65, 200, 0},--炫翼
- [1201] = {300, -60, 220, 0},--宠物,
- [1601] = {300, -50, 220, 0},-- 孩子
- [1006] = {400, -68, 162, 0},--磁炮
- [1008] = {450, -77, 150, 0},--幻甲
- [1007] = {400, -71, 167, 0},--星翼
- [1009] = {800, -60, 300, 0},--星辰
- [1401] = {400, -60, 240, 0},--装备
- [1101] = {110, -60, 160, 0},--怪物
- [1010] = {3, 45, -840, 0},--圣物
- [1011] = {100, -70, 120, 0},-- 神座
- [1701] = {400, -60, 200, 0},-- 战魂
- [9999] = {100, -80, 220, 0}, --龙神宝库
- }
- --功能预告界面模型类展示的 缩放和位置
- TaskAnnounceModel.WeaponUIStyle =
- {
- [1] = {300, -50, 225,0}, -- 武器 男剑
- [2] = {300, -50, 225,0}, -- 武器 女剑
- [3] = {600, -50, 0,0}, -- 武器 男枪
- [4] = {600, -50, 0,0}, -- 武器 女枪
- }
-
- function TaskAnnounceModel:ResetData()
- self.red_dot = nil
- end
-
- function TaskAnnounceModel:getInstance()
- if TaskAnnounceModel.Instance == nil then
- TaskAnnounceModel.New()
- end
- return TaskAnnounceModel.Instance
- end
-
- function TaskAnnounceModel:SetRewardInfo(list)
- self.reward_list = list or {}
- self:Fire(TaskAnnounceModel.UPDATE_ANNOUNCE_VIEW)
- self:CheckTaskAnnounceRedDot()
- end
-
- function TaskAnnounceModel:SetRewardData(data)
- if self.reward_list then
- local is_find = false
- for k,v in pairs(self.reward_list) do
- if v.func_id == data.func_id then
- is_find = true
- v.reward_state = data.reward_state
- break
- end
- end
- if not is_find then
- table.insert(self.reward_list, data)
- end
- self:Fire(TaskAnnounceModel.UPDATE_ANNOUNCE_VIEW)
- self:CheckTaskAnnounceRedDot()
- end
- end
-
- --state
- --0 不可领取
- --1, 可领取,但未领取
- --2 已经领取
- function TaskAnnounceModel:GetRewardData(id)
- local state = 0
- if self.reward_list then
- for k,v in pairs(self.reward_list) do
- if v.func_id ==id then
- state = v.reward_state
- break
- end
- end
- end
- return state
- end
-
- --获取预告的vo
- function TaskAnnounceModel:GetTaskAnnounceVo()
- local cfg_list = self:GetTaskAnnounceList()
- local find = false
- local find_vo = nil
- local open_day = ServerTimeModel:getInstance():GetOpenServerDay()
- local level = RoleManager:getInstance():GetMainRoleVo().level
- for i,v in ipairs(cfg_list) do
- if not v.has_open then
- --如果此项没有开服天数,则说明是等级或者主线没有完成
- if v.open_day == 0 then
- find = true
- find_vo = v
- break
- else
- --如果已经达到了开服天数,则和正常项目已于
- if open_day >= v.open_day then
- find = true
- find_vo = v
- break
- else
- --如果此项依赖开服天数,并且没达到开服天数,如果超过了这个等级,就显示下一个
- if level < v.open_lv then
- find = true
- find_vo = v
- break
- end
- end
-
- end
- end
- end
- return find,find_vo
- end
-
-
- --获取功能预告红点
- function TaskAnnounceModel:GetTaskAnnounceRedDot()
- return self.red_dot
- end
-
- --刷新红点
- function TaskAnnounceModel:CheckTaskAnnounceRedDot()
- local dot = self.red_dot
- self.red_dot = false
- self.reward_list = self.reward_list or {}
-
- for k,v in pairs(self.reward_list) do
- if v.reward_state == 1 then
- self.red_dot = true
- break
- end
- end
-
- if dot ~= self.red_dot then
- self:Fire(TaskAnnounceModel.UPDATE_ANNOUNCE_RED_DOT)
- end
- end
-
- function TaskAnnounceModel:GetTaskAnnounceList()
- local list = {}
- local cfg_list = {}
- local ori_cfg = Config.Moduleadvance
- local level = RoleManager:getInstance():GetMainRoleVo().level
- local open_day = ServerTimeModel:getInstance():GetOpenServerDay()
- for k,v in pairs(ori_cfg) do
- local open_data = stringtotable(v.condition)
- local has_open = MainUIModel:getInstance():GetFunOpenState(open_data[1] or 1, open_data[2] or 0) and v.open_day <= open_day
- local data = {
- id = v.id,
- name = v.name,
- open_lv = open_data[1] or 1,
- reward = v.reward,
- icon = v.icon,
- has_open = has_open,
- open_day = v.open_day,
- is_next = false,
- con_desc = v.con_desc,
- func_desc = v.func_desc,
- condition = v.condition,
- model_res = v.model_res,
- title_pic = v.title_pic,
- mod_desc1 = v.mod_desc1,
- mod_desc2 = v.mod_desc2,
- jump = v.jump,
- }
- table.insert(cfg_list, data)
- end
-
- table.sort(cfg_list, function(a,b)
- return a.open_lv < b.open_lv
- end)
- return cfg_list
- end
-
- --功能预告界面内排序规则
- --已领取——已达成可领取——未达成不可领取(同梯度按照等级排序)
- function TaskAnnounceModel:GetTaskAnnounceListInView()
- local list = {}
- local cfg_list = {}
- local ori_cfg = Config.Moduleadvance
- local level = RoleManager:getInstance():GetMainRoleVo().level
- local open_day = ServerTimeModel:getInstance():GetOpenServerDay()
- for k,v in pairs(ori_cfg) do
- local open_data = stringtotable(v.condition)
- local has_open = MainUIModel:getInstance():GetFunOpenState(open_data[1] or 1, open_data[2] or 0) and v.open_day <= open_day
- --0 不可领取
- --1, 可领取,但未领取
- --2 已经领取
- local sort_id = 0
- local reward_state = self:GetRewardData(v.id)
- if reward_state == 2 then
- sort_id = 3
- elseif reward_state == 1 then
- sort_id = 2
- end
-
- local data = {
- id = v.id,
- name = v.name,
- open_lv = open_data[1] or 1,
- reward = v.reward,
- icon = v.icon,
- has_open = has_open,
- open_day = v.open_day,
- is_next = false,
- con_desc = v.con_desc,
- func_desc = v.func_desc,
- condition = v.condition,
- model_res = v.model_res,
- title_pic = v.title_pic,
- mod_desc1 = v.mod_desc1,
- mod_desc2 = v.mod_desc2,
- jump = v.jump,
- sort_id = sort_id,
- }
- table.insert(cfg_list, data)
- end
-
- table.sort(cfg_list, function(a,b)
- if a.sort_id ~= b.sort_id then
- return a.sort_id > b.sort_id
- else
- return a.open_lv < b.open_lv
- end
- end)
-
- return cfg_list
- end
-
-
- --获取某个位置 一侧是否有红点
- function TaskAnnounceModel:GetRewardByIndexSide(idx, is_left, force_update)
- if not self.reward_red_idx_list or force_update then
- self.reward_red_idx_list = {}
- local list = self:GetTaskAnnounceListInView()
- local left_red_idx = 0
- local right_red_idx = 0
- for i,v in ipairs(list) do
- if v.has_open then
- local state = self:GetRewardData(v.id)
- if state == 1 then
- left_red_idx = left_red_idx == 0 and i or left_red_idx
- right_red_idx = i
- end
- end
- --初始化,左侧红点
- self.reward_red_idx_list[i] = self.reward_red_idx_list[i] or {}
- self.reward_red_idx_list[i].left_have_red = left_red_idx ~= 0 and (left_red_idx < i) or false
- self.reward_red_idx_list[i].id = v.id
- self.reward_red_idx_list[i].name = v.name
- end
- --初始化右侧红点
- for i,v in ipairs(list) do
- self.reward_red_idx_list[i] = self.reward_red_idx_list[i] or {}
- self.reward_red_idx_list[i].right_have_red = right_red_idx ~= 0 and (right_red_idx > i) or false
- end
- end
- if idx and self.reward_red_idx_list and #self.reward_red_idx_list >= idx then
- if is_left then
- return self.reward_red_idx_list[idx].left_have_red
- else
- return self.reward_red_idx_list[idx].right_have_red
- end
- end
- return false
- end
-
|