|
|
- NewMainRoleModel = NewMainRoleModel or BaseClass(BaseModel)
- NewMainRoleModel.SET_DESIGNATION = "NewMainRoleModel.SET_DESIGNATION"
- NewMainRoleModel.SHOW_RED_DOT = "NewMainRoleModel.SHOW_RED_DOT"
- NewMainRoleModel.OPEN_ALL_ADDITION_VIEW = "NewMainRoleModel.OPEN_ALL_ADDITION_VIEW"
- NewMainRoleModel.REQUEST_OTHER_PLAYER_INFO = "NewMainRoleModel.REQUEST_OTHER_PLAYER_INFO"
- NewMainRoleModel.SEND_TURN_CAREER_PROTOCAL = "NewMainRoleModel.SEND_TURN_CAREER_PROTOCAL"
- NewMainRoleModel.RequestWorldLevel = "NewMainRoleModel.RequestWorldLevel"
- NewMainRoleModel.OPEN_HATRED_VIEW = "NewMainRoleModel.OPEN_HATRED_VIEW" -- 打开善恶值界面
- NewMainRoleModel.REFRESH_ROLE_HEAD_RED = "NewMainRoleModel.REFRESH_ROLE_HEAD_RED" -- 更新头像红点
- NewMainRoleModel.REFRESH_ROLE_HEAD_ACTIVATE = "NewMainRoleModel.REFRESH_ROLE_HEAD_ACTIVATE" -- 更新头像激活信息
- NewMainRoleModel.ANS_UPDATE_RED_DOT = "NewMainRoleModel.ANS_UPDATE_RED_DOT" -- 回应更新红点
- NewMainRoleModel.UPDATE_RED_DOT = "NewMainRoleModel.UPDATE_RED_DOT" -- 更新红点方法(数据刷新就发这个监听)
- NewMainRoleModel.CLOSE_NEW_MAIN_ROLE_VIEW = "NewMainRoleModel.CLOSE_NEW_MAIN_ROLE_VIEW" --关闭界面
-
- NewMainRoleModel.OTHER_PLAYER_INFO_MODULE_ID = {--其他玩家对应的模块id
- CSP = 650, --跨服3v3
- CS1VN = 621, --1vN
- KFRANK = 226, -- 跨服榜单
- }
- NewMainRoleModel.TabId = {
- ROLE = 1, -- 成就
- DESIGNATION = 2,
- FASHION = 3,
- Light = 5,
- -- NATURE = 6,
- SOULPOWER = 7,
- KFWORLD = 8,
- REIN = 100, -- 转职界面要放在最后面
- }
-
- -- 职业描述面板页签文本
- NewMainRoleModel.ProfressTabStr = {
- [0] = "敬请期待",
- [1] = "剑士",
- [2] = "灵师",
- }
- -- 职业描述界面展示的技能
- NewMainRoleModel.ProfressShowSkill = {
- [1] = {
- [0] = {101011,101021,101031,101041}, -- 0转
- [1] = {101051,101061,101071,101081}, -- 1转
- [2] = {101051,101061,101071,101081}, -- 2转
- },
- [2] = {
- [0] = {103011,103021,103031,103041}, -- 0转
- [1] = {103051,103061,103071,103081}, -- 1转
- [2] = {103051,103061,103071,103081}, -- 2转
- },
- }
-
- NewMainRoleModel.HeadType = 14
- NewMainRoleModel.HeadSubType = 2 -- 转职头像是1,运营道具头像是2
-
- function NewMainRoleModel:__init()
- NewMainRoleModel.Instance = self
- self.is_quick_use = false
- self.quick_use_num = 0
- self.redDotBit = 0
- self.head_basic_list = nil -- 头像道具配置
- self.activated_role_head_list = {} -- 已激活头像协议,内容为已激活的称号id列表
- self.role_head_status = {} -- 头像激活状态列表,格式为 称号物品id = status(1可激活 2已激活, 无状态则是未激活)
- self.role_head_info = nil -- 获取当前的头像信息
- self.role_rein_head_info = nil -- 获取当前角色职业及性别的配置默认头像
- self.mainrole_red_dot = {}--角色界面红点
- self.login_time_data = nil -- 登录时间查询返回数据
- self.is_today_first_login = false
- end
-
- function NewMainRoleModel:getInstance()
- if NewMainRoleModel.Instance == nil then
- NewMainRoleModel.New()
- end
- return NewMainRoleModel.Instance
- end
-
- function NewMainRoleModel:GetInstance()
- if NewMainRoleModel.Instance == nil then
- NewMainRoleModel.New()
- end
- return NewMainRoleModel.Instance
- end
-
- function NewMainRoleModel:SetRoleFigure( vo )
- self.other_player_vo = vo
- end
-
- -- function NewMainRoleModel:UpdateTabDot(type)
- -- local value
- -- if type == 1 then
-
- -- elseif type == 2 then
- -- value = false --DesignationModel:getInstance():CheckRedDot()
- -- end
- -- self:SetRedDot(type, value)
- -- end
-
- -- function NewMainRoleModel:SetRedDot(type, value)
- -- local newValue = self.redDotBit
- -- if value then
- -- newValue = bit.bor(self.redDotBit, bit.lshift(1, type))
- -- else
- -- newValue = bit.band(self.redDotBit, bit.bnot(bit.lshift(1, type)))
- -- end
- -- self:ChangeVar("redDotBit", newValue)
- -- GlobalEventSystem:Fire(EventName.SHOW_FUNCTION_RED_POINT, 130, self.redDotBit > 0)
- -- end
-
- function NewMainRoleModel:IsNeedRedAll( )
- for k,v in pairs(NewMainRoleModel.TabId) do
- self:IsNeedRed(v)
- end
- end
-
- function NewMainRoleModel:IsNeedRed( tab_id )
- local bool = false
- if tab_id == NewMainRoleModel.TabId.ROLE then
- -- bool = AchieveModel:getInstance():CheckMainRoleInfoViewAchieveRed() -- 成就不在角色进了
- -- elseif tab_id == NewMainRoleModel.TabId.DESIGNATION then
- -- bool = DesignationModel:GetInstance():CheckDesignationRedDot()
- -- elseif tab_id == NewMainRoleModel.TabId.FASHION then
- -- bool = FashionModel:getInstance():CheckFashionRedDot(true) or FashionModel:GetInstance():IsFashionSuitNeedRed()
- elseif tab_id == NewMainRoleModel.TabId.Light then
- bool = LightModel:GetInstance():GetLightAllRed(true)
- elseif tab_id == NewMainRoleModel.TabId.NATURE then
- bool = NatureModel:getInstance():GetNatureAllRed(true)
- elseif tab_id == NewMainRoleModel.TabId.SOULPOWER then
- bool = SoulPowerModel:getInstance():IsSoulPowerRed()
- elseif tab_id == NewMainRoleModel.TabId.REIN then
- bool = ReincarnationModel:getInstance():GetReinRed()
- elseif tab_id == NewMainRoleModel.TabId.KFWORLD then
- bool = KfWorldModel:getInstance():GetRewardGetRed()
- end
- self.mainrole_red_dot[tab_id] = bool
- self:Fire(NewMainRoleModel.ANS_UPDATE_RED_DOT,tab_id,bool)
- end
-
- function NewMainRoleModel:GetAllRedDot( )
- return self.mainrole_red_dot
- end
-
- -- 获取物品配置中称号的部分内容 获取运营头像
- function NewMainRoleModel:GetHeadGoodsCfgData( )
- if not self.head_basic_list then
- self.head_basic_list = {}
- local career = RoleManager:getInstance().mainRoleInfo.career
- local turn = RoleManager:getInstance().mainRoleInfo.turn
- local career_list
- for k, v in pairs(Config.Profilephoto) do
- career_list = stringtotable(v.career)
- for k2, v2 in ipairs(career_list) do
- -- 目标转职是0且【目标职业是0】或【存在玩家本身的职业】,代表通用(即运营活动)头像
- if v.turn <= turn and ((#career_list == 1 and v2 == 0) or (#career_list > 1 and v2 == career)) then
- self.head_basic_list[#self.head_basic_list+1] = v
- break
- end
- end
- end
- end
- return DeepCopy(self.head_basic_list)
- end
-
- -- 获取背包中全部的头像道具
- function NewMainRoleModel:GetBagHeadItem()
- local head_goods_list = GoodsModel:getInstance():GetGoodsByType(NewMainRoleModel.HeadType, NewMainRoleModel.HeadSubType)
- local tb = {}
- for k, v in pairs(head_goods_list) do
- tb[v.type_id] = true
- end
- return tb
- end
-
- -- 通过13088协议来获取当前已经激活和背包中可以激活的称号
- function NewMainRoleModel:SetActivatedRoleHeadInfo( vo )
- if not vo then return end
- self.activated_role_head_list = {}
- for k, v in ipairs(vo) do
- self.activated_role_head_list[#self.activated_role_head_list+1] = v.id
- end
- -- print("Saber:NewMainRoleModel [start:167] self.activated_role_head_list ------------------------------------------")
- -- PrintTable(self.activated_role_head_list)
- self:UpdateRoleHeadStatus()
- end
- function NewMainRoleModel:UpdateActivatedRoleHeadData(photo_id)
- if not photo_id then return end
- self.activated_role_head_list = self.activated_role_head_list or {}
- self.activated_role_head_list[#self.activated_role_head_list+1] = photo_id
- self:UpdateRoleHeadStatus()
- end
- -- 更新道具激活状态
- function NewMainRoleModel:UpdateRoleHeadStatus()
- self.role_head_status = {}
- for k, v in pairs(self.activated_role_head_list) do
- self.role_head_status[v] = 2 -- 2为已激活
- end
-
- local head_item_list = self:GetBagHeadItem()
- for p_id, v in pairs(head_item_list) do
- -- 如果已激活的称号中不存在该背包中的称号,则表示有称号可以激活
- if not self.role_head_status[p_id] then
- self.role_head_status[p_id] = 1 -- 1为可激活
- end
- end
- -- 更新了道具就要顺便更一下红点
- self:RefreshRoleHeadRed()
- end
- -- 获取道具头像信息及激活状态
- function NewMainRoleModel:GetRoleHeadInfo( )
- -- 获取头像的基本配置
- local role_goods_head_info = self:GetHeadGoodsCfgData()
- local role_rein_head_info = self:GetRoleReinHeadInfo()
- for k, v in pairs(role_goods_head_info) do
- if self.role_head_status[v.photo_id] then -- 已激活&可激活
- v.status = self.role_head_status[v.photo_id]
- else -- 未激活
- v.status = 0
- end
- v.is_rein_head = false
- end
- local turn = RoleManager.Instance.mainRoleInfo.turn
- for k, v in pairs(role_rein_head_info) do
- v.status = v.turn <= turn and 2 or 0
- v.is_rein_head = true
- end
- self.role_head_info = TableConcat(role_rein_head_info, role_goods_head_info)
- -- 根据状态和道具id进行排序
- local arg = {"status", "photo_id"}
- local condition = {Array.UPPER, Array.LOWER}
- SortTools.MoreKeysSorter(self.role_head_info, arg, condition)
- -- print("Saber:NewMainRoleModel [start:183] self.role_head_info ------------------------------------------")
- -- PrintTable(self.role_head_info)
- return self.role_head_info
- end
-
- function NewMainRoleModel:GetRoleHeadInfoByPhotoId(photo_id)
- if not photo_id then return end
- local tb = self:GetRoleHeadInfo()
- for k, data in pairs(tb) do
- if data.photo_id == photo_id then
- return data
- end
- end
- return nil
- end
-
- -- 获取玩家的职业和性别的转生默认头像
- function NewMainRoleModel:GetRoleReinHeadInfo( )
- if not self.role_rein_head_info then
- self.role_rein_head_info = {}
- local mainRoleVo = RoleManager:getInstance().mainRoleInfo
- local career = mainRoleVo.career
- local sex = mainRoleVo.sex
- -- local turn = mainRoleVo.turn
- local career_list
- for k, v in pairs(Config.Profilephoto) do
- career_list = stringtotable(v.career)
- for k2, v2 in ipairs(career_list) do
- if #career_list == 1 and v2 == career then -- 职业列表只有一个值,而且还是自己的职业
- self.role_rein_head_info[#self.role_rein_head_info+1] = v
- break
- end
- end
- end
- end
- return DeepCopy(self.role_rein_head_info)
- end
-
- --获得玩家最大转生数(本来装备直接和转生相关 现在改额外逻辑了)
- function NewMainRoleModel:GetRoleReinMaxTurn( level)
- -- local role_rein_info = self:GetRoleReinHeadInfo()
- -- if role_rein_info then
- -- return TableSize(role_rein_info)
- -- end
- -- return 0
- local level = level or RoleManager.Instance.mainRoleInfo.level
- local turn = 1--展示最高代
- local really_turn = 0--当前真实代数
- local list = {}
- for k,v in ipairs(Config.Equipmentseriesopen) do
- if v.visible_lv <= level and TaskModel:getInstance():IsTaskFinished(v.task_id) then
- turn = v.series > turn and v.series or turn
- list[k] = v
- end
- if v.open_lv <= level then
- really_turn = really_turn + 1
- end
- end
- turn = EquipModel.getInstance():GetMaxSuitSeries()
- return turn,list,really_turn
- end
-
- -- 获取可激活头像的红点
- function NewMainRoleModel:GetRoleHeadRed( )
- local bool = false
- for k, v in pairs(self.role_head_status) do
- -- 如果已激活的称号中不存在该背包中的称号,则表示有称号可以激活
- if v == 1 then
- bool = true
- break
- end
- end
- return bool
- end
-
- function NewMainRoleModel:RefreshRoleHeadRed( )
- -- local red = self:GetRoleHeadRed()
- -- GlobalEventSystem:Fire(EventName.SHOW_FUNCTION_RED_POINT, 130, red)
- -- self:Fire(NewMainRoleModel.REFRESH_ROLE_HEAD_RED, red)
- end
-
- --活动经验基准
- function NewMainRoleModel:GetRoleActivityBaseExp( )
- if Config.Expbase[RoleManager.Instance.mainRoleInfo.level] then
- return Config.Expbase[RoleManager.Instance.mainRoleInfo.level].exp
- else
- return 0
- end
- end
-
- -- 检查错误的玩家头像
- function NewMainRoleModel:CheckErrorRoleHead( )
- local photo_id = RoleManager.Instance.mainRoleInfo.profile_photo_id
- print("Saber:NewMainRoleModel [310] photo_id: ",photo_id)
- if photo_id == 0 then -- 头像为0不合法
- local head_info = self:GetRoleReinHeadInfo()
- for k, v in pairs(head_info) do
- if v.turn == 0 then -- 当前职业的0转头像
- print("Saber:NewMainRoleModel [316] v.photo_id: ",v.photo_id)
- GlobalEventSystem:Fire(EventName.REQ_CHANGE_ROLEHEAD, v.photo_id) -- 13090
- break
- end
- end
- end
- end
-
- -- 登录时间查询协议 13087
- function NewMainRoleModel:SetRoleLoginTimeData(req_time, last_login_time, cur_login_time, last_quit_time)
- self.login_time_data = {}
- self.login_time_data.req_time = req_time
- self.login_time_data.last_login_time = last_login_time
- self.login_time_data.cur_login_time = cur_login_time
- self.login_time_data.last_quit_time = last_quit_time
- self:UpdateTodayFirstLoginState()
- end
-
- function NewMainRoleModel:GetRoleLoginTimeData( )
- return self.login_time_data
- end
-
- function NewMainRoleModel:UpdateTodayFirstLoginState( )
- local last_zero_time = TimeUtil:GetFutureZeroStamp(0)
- if last_zero_time > self.login_time_data.last_login_time and self.login_time_data.cur_login_time > last_zero_time then
- self.is_today_first_login = true
- else
- self.is_today_first_login = false
- end
- end
-
- function NewMainRoleModel:IsTodayFirstLogin( )
- return self.is_today_first_login
- end
|