源战役客户端
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 
 

360 rader
14 KiB

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