|
|
- ReincarnationModel = ReincarnationModel or BaseClass(BaseModel)
-
- ReincarnationModel.OPEN_REIN_SUCCEED_VIEW = "ReincarnationModel.OPEN_REIN_SUCCEED_VIEW" -- 打开转职成功界面
- ReincarnationModel.REFRESH_REIN_TASK = "ReincarnationModel.REFRESH_REIN_TASK" -- 刷新转职任务
- ReincarnationModel.OPEN_REIN_MAIN_TASK_VIEW = "ReincarnationModel.OPEN_REIN_MAIN_TASK_VIEW" -- 打开转职弹出界面
- -- ReincarnationModel.OPEN_REIN_TASK_VIEW = "ReincarnationModel.OPEN_REIN_TASK_VIEW" -- 打开转职任务界面
- -----------------------------------------------------------------------------
- -- ReincarnationModel.Init_Cur_Rein = "ReincarnationModel.Init_Cur_Rein" -- 初始化转职信息
- -- ReincarnationModel.Update_Cur_Rein = "ReincarnationModel.Update_Cur_Rein" -- 更新当前转职信息
- -- ReincarnationModel.Update_Finish_Rein = "ReincarnationModel.Update_Finish_Rein" -- 更新已完成转职信息
- -- ReincarnationModel.Update_Cur_Stage = "ReincarnationModel.Update_Cur_Stage" -- 更新当前转职阶段数
- -- ReincarnationModel.Update_Awaken_Cell = "ReincarnationModel.Update_Awaken_Cell" -- 更新命格点亮信息
- -- ReincarnationModel.Request_Awaken_Cell = "ReincarnationModel.Request_Awaken_Cell" -- 请求所有命格点亮信息
- -- ReincarnationModel.Send_Awaken_Cell = "ReincarnationModel.Send_Awaken_Cell" -- 发送命格点亮请求
- -- ReincarnationModel.Close_Awaken_Cell_Info = "ReincarnationModel.Close_Awaken_Cell_Info"-- 关闭命格信息
-
- -- ReincarnationModel.SHOW_REIN_SUCCESS_VIEW = "ReincarnationModel.SHOW_REIN_SUCCESS_VIEW" --转职成功的界面
- -- ReincarnationModel.SHOW_REIN_CASHEXP_VIEW = "ReincarnationModel.SHOW_REIN_CASHEXP_VIEW" --打开兑换星魂碎片的界面
- -- ReincarnationModel.SHOW_REIN_ITEM_INFO_VIEW = "ReincarnationModel.SHOW_REIN_ITEM_INFO_VIEW" --打开四转、五转等界面的星魂格子的详细信息界面
- -- ReincarnationModel.CLOSE_REIN_ITEM_INFO_VIEW = "ReincarnationModel.CLOSE_REIN_ITEM_INFO_VIEW" --关闭上面的格子信息界面
- -- ReincarnationModel.UPDATE_REIN_FIVE_VIEW = "ReincarnationModel.UPDATE_REIN_FIVE_VIEW" --更新五转的界面
-
- -- 转职界面立绘初始大小
- ReincarnationModel.SP_SIZE = {
-
- }
-
- function ReincarnationModel:__init()
- ReincarnationModel.Instance = self
- -----------------------------
- self.rein_lv_stage_cfg = {} -- 转职等级相关配置
- self.rein_career_total_cfg = {} -- 转职名称头像配置
- -----------------------------
- -- self.turn_state_list = {[1] = false, [2] = false, [3] = false, [4] = false, [5] = false} -- 当前n转的完成状态
- self.turn_state_list = {} -- 当前n转的完成状态
- self.tab_content_list = {} -- 当前需要呈现的标签内容
- self.cur_rein_task_id = nil -- 当前转职任务id
- self.cur_rein_task_vo = nil -- 当前转职信息
- self.cur_turn = 0 -- 当前处于的转职序号
- self.cur_stage = 0 -- 当前处于的转职阶段
-
- self.rein_red = false -- 转职系统红点
- end
-
- function ReincarnationModel:getInstance()
- if ReincarnationModel.Instance == nil then
- ReincarnationModel.New()
- end
- return ReincarnationModel.Instance
- end
- --------------------------------------------------------
- -- 明日项目使用例
- -- 根据参数获取对应转职数的任务和属性配置
- function ReincarnationModel:GetReinLvStageData(lv)
- if not lv then return nil end
- if not self.rein_lv_stage_cfg[lv] then
- local _tb = {}
- for k, v in pairs(Config.Transfer) do
- if v.id == lv then
- _tb[#_tb+1] = v
- end
- end
- -- 根据阶段排序
- local sort_func = function ( a, b )
- return a.stage < b.stage
- end
- table.sort(_tb, sort_func)
- self.rein_lv_stage_cfg[lv] = _tb
- end
- return self.rein_lv_stage_cfg[lv]
- end
- -- 根据键值获取对应职业转职数的头像配置
- function ReincarnationModel:GetReinCareerHeadData(career, turn)
- career = career or RoleManager.Instance.mainRoleInfo.career
- turn = turn or RoleManager.Instance.mainRoleInfo.turn
- local key = career .. "@" .. turn
- return Config.Transfercareer[key]
- end
- -- 获取当前职业的转职全部名称头像配置
- function ReincarnationModel:GetTotalReinTransferCfg(career)
- career = career or RoleManager.Instance.mainRoleInfo.career
- if not self.rein_career_total_cfg[career] then
- local tb = {}
- for k, v in pairs(Config.Transfercareer) do
- if v.career == career then
- tb[#tb+1] = v
- end
- end
- local sort_func = function ( a, b )
- return a.transfer_id < b.transfer_id
- end
- table.sort(tb, sort_func)
- self.rein_career_total_cfg[career] = tb
- end
- return self.rein_career_total_cfg[career]
- end
- function ReincarnationModel:GetMaxReinTransferByCareer(career)
- local career_data = self:GetTotalReinTransferCfg(career)
- if career_data then
- return career_data[#career_data].transfer_id
- end
- return 1
- end
- --------------------------------------------------------
-
- function ReincarnationModel:GetTurnState(index)
- if self.turn_state_list[index] ~= nil then
- return self.turn_state_list[index]
- end
- end
-
- function ReincarnationModel:SetTurnState(index,value)
- self.turn_state_list[index] = value
- end
-
- function ReincarnationModel:InitCurRein()
- local mainVo = RoleManager.Instance:GetMainRoleVo()
- -- 2021年2月27日修改 增加容错,防止超过配置的最高转职数
- local max_transfer_id = self:GetMaxReinTransferByCareer(mainVo.career)
- self.cur_turn = mainVo.turn < max_transfer_id and mainVo.turn + 1 or mainVo.turn
- self.cur_stage = mainVo.turn_stage
- self.turn_state_list = {}
- if mainVo.turn > 0 then
- for i = 1,mainVo.turn do
- self:SetTurnState(i,true)
- end
- end
- print("---------------转职信息------------------------")
- print("转职数turn = ",self.cur_turn," 阶段数stage = ",self.cur_stage)
- end
-
- -- 更新当前转职任务信息
- function ReincarnationModel:UpdateCurReinTask()
- local task_model = TaskModel:getInstance()
- self.cur_rein_task_id = nil
- self.cur_rein_task_vo = nil
- local taskVo = task_model:GetTaskByType(TaskType.TRUN_LINE) or nil
- if taskVo then
- self.cur_rein_task_id = taskVo.id
- task_model:MakeTaskTip(taskVo) -- 拼接任务提示,此时获得的taskVo不一定已经刷新提示文字
- self.cur_rein_task_vo = taskVo
- end
- -- 更新任务的时候检测一次红点
- self:CheckReinRed()
- end
-
- function ReincarnationModel:GetCurTurn()
- return self.cur_turn
- end
- function ReincarnationModel:SetCurStage(num)
- if self.cur_stage then
- self.cur_stage = num
- end
- end
- function ReincarnationModel:GetCurStage()
- return self.cur_stage
- end
- function ReincarnationModel:GetCurTaskId( )
- return self.cur_rein_task_id
- end
- function ReincarnationModel:GetCurTaskVo()
- return self.cur_rein_task_vo
- end
-
- -- 检查转职任务是否满足开服天数
- function ReincarnationModel:CheckReinOpenDayLimit(turn, turn_stage)
- turn = turn or RoleManager.Instance.mainRoleInfo.turn
- turn_stage = turn_stage or RoleManager.Instance.mainRoleInfo.turn_stage
- local rein_task_cfg = self:GetReinLvStageData(turn+1)
- local open_day = ServerTimeModel:getInstance():GetOpenServerDay()
- -- 区分两种情况进行任务开启的检测
- for k, v in pairs(rein_task_cfg) do
- if turn_stage == 0 or v.stage == turn_stage then
- return v.open_day <= open_day
- end
- end
- -- return true
- end
-
- -- 判断角色当前是否在转职过程中,主要用于转职图标的显隐判断
- function ReincarnationModel:FindIsInTurn()
- local is_in_turn = TaskModel:getInstance():FindHaveTaskByType(TaskType.TRUN_LINE)
- return is_in_turn
- end
-
- -- 获取转职成功时解锁的内容,包括技能和装备系数和展示装备
- function ReincarnationModel:GetReinSucceedUnlockData(rein_lv)
- local main_vo = RoleManager.Instance.mainRoleInfo
- rein_lv = rein_lv or main_vo.turn
- local data = {skill_list = {}, equip_list = {}, equip_series = 0}
- if rein_lv == 0 then -- 0转特殊处理,加载4个初始技能
- local basic_skill_list = Config.ConfigSkillUI.CareerSkill[main_vo.career][1]
- for k = 1, 4 do -- 选前面四个主动技
- data.skill_list[#data.skill_list+1] = {skill_data = basic_skill_list[k]}
- end
- else
- local rein_lv_cfg = self:GetReinLvStageData(rein_lv)
- local cfg = rein_lv_cfg[#rein_lv_cfg]
- if cfg then
- -- 插入对应职业技能
- local skill_cfg = stringtotable(cfg.skill_list)
- for k, v in pairs(skill_cfg) do
- if v[1] == main_vo.career then
- for k2, v2 in ipairs(v[2]) do
- data.skill_list[#data.skill_list+1] = {skill_data = v2}
- end
- break
- end
- end
- -- 插入解锁装备代数
- data.equip_series = cfg.equipment_series
- -- data[#data+1] = {type = 2, content = cfg.equipment_series}
- -- 插入解锁装备奖励预览道具
- local reward_list = stringtotable(cfg.show_reward)
- for k, v in ipairs(reward_list) do
- if v[1] == main_vo.career then
- for k2, v2 in ipairs(v[2]) do
- data.equip_list[#data.equip_list+1] = {equip_data = v2}
- end
- break
- end
- end
- end
- end
- return data
- end
-
- -- 检测转职系统红点
- function ReincarnationModel:CheckReinRed( )
- local mainVo = RoleManager.Instance.mainRoleInfo
- -- 当前有转职任务且任务已经完成的情况下会有红点,其他情况没有
- self.rein_red = self.cur_rein_task_vo and self.cur_rein_task_vo.taskTips[1] and self.cur_rein_task_vo.taskTips[1].isFinish == 1 or false
- -- 保险起见,检查一波转职的开服天数限制
- self.rein_red = self.rein_red and self:CheckReinOpenDayLimit(mainVo.trun, mainVo.trun_stage)
- local cur_turn = self:GetCurTurn()
- -- 刷新主界面按钮的红点
- GlobalEventSystem:Fire(ActivityIconManager.UPDATE_ICON_TIPS, 16400 + cur_turn, self.rein_red)
- -- 刷新角色界面的红点
- NewMainRoleModel:getInstance():Fire(NewMainRoleModel.UPDATE_RED_DOT, NewMainRoleModel.TabId.REIN)
- end
-
- function ReincarnationModel:GetReinRed( )
- return self.rein_red
- end
|