RankModel = RankModel or BaseClass(BaseVo, true)
|
|
local RankModel = RankModel
|
|
|
|
RankModel.REQUEST_CCMD_EVENT = "RankModel.REQUEST_CCMD_EVENT"
|
|
RankModel.CLICK_SUB_TYPE_ITEM = "RankModel.CLICK_SUB_TYPE_ITEM" -- 点击子类型按钮
|
|
RankModel.UPDATE_RANK_CONTENT = "RankModel.UPDATE_RANK_CONTENT" -- 刷新榜单列表界面
|
|
RankModel.RANK_LIST_UPDATE_NEXT = "RankModel.RANK_LIST_UPDATE_NEXT" -- 滚动框继续滚动时动态请求榜单数据
|
|
RankModel.UPDATE_LIKE_CON = "RankModel.UPDATE_LIKE_CON" -- 刷新点赞栏的状态
|
|
RankModel.UPDATE_LIKE_NUM = "RankModel.UPDATE_LIKE_NUM" -- 刷新当前选中角色的点赞数
|
|
RankModel.REQUEST_EQUIP_CCMD_EVENT = "RankModel.REQUEST_EQUIP_CCMD_EVENT" -- 查看玩家装备信息
|
|
RankModel.UPDATE_EQUIP_INFO = "RankModel.UPDATE_EQUIP_INFO" -- 刷新玩家装备信息
|
|
RankModel.UPDATE_WARSOUL_INFO = "RankModel.UPDATE_WARSOUL_INFO" -- 刷新玩家战魂信息
|
|
|
|
RankModel.CHANGE_RANK_MIAN_TYPE = "RankModel.CHANGE_RANK_MIAN_TYPE" -- 切换跨服排行和本服排行
|
|
RankModel.OPEN_RANK_TARGET_VIEW = "RankModel.OPEN_RANK_TARGET_VIEW" -- 打开排行目标奖励界面
|
|
RankModel.OPEN_RANK_PROGRESS_VIEW = "RankModel.OPEN_RANK_PROGRESS_VIEW" -- 打开排行前五进度界面
|
|
RankModel.UPDATE_CS_ROLE_SHOW = "RankModel.UPDATE_CS_ROLE_SHOW" -- 跨服排行榜请求figure后刷新展示
|
|
RankModel.UPDATE_RANK_TARGET_VIEW = "RankModel.UPDATE_RANK_TARGET_VIEW"
|
|
RankModel.ANS_UPDATE_RED_DOT = "RankModel.ANS_UPDATE_RED_DOT"
|
|
RankModel.UPDATE_RED_DOT = "RankModel.UPDATE_RED_DOT"
|
|
RankModel.UPDATE_RANK_PROGRESS_VIEW = "RankModel.UPDATE_RANK_PROGRESS_VIEW"
|
|
RankModel.SHOW_CS_OPERATION_VIEW = "RankModel.SHOW_CS_OPERATION_VIEW"
|
|
RankModel.UPDATE_MAIN_UI_BTN_RED = "RankModel.UPDATE_MAIN_UI_BTN_RED" -- 主界面入口按钮红点
|
|
|
|
RankModel.TabId = {
|
|
KfRush_1 = 1, --开服冲榜
|
|
KfRush_2 = 2, --开服冲榜
|
|
KfRush_3 = 3, --开服冲榜
|
|
Power = 4, -- 战力
|
|
Level = 5, -- 等级
|
|
Equip = 6, -- 装备
|
|
WarSoul = 7, -- 战魂
|
|
Advance = 8, -- 进阶
|
|
AIGirl = 9, -- AI娘
|
|
Fashion = 10, -- 收集
|
|
Charm = 11, -- 魅力
|
|
}
|
|
|
|
RankModel.CSTabId = {
|
|
Power = 1, -- 战力
|
|
Level = 2, -- 等级
|
|
}
|
|
|
|
|
|
RankModel.PageSize = 40
|
|
RankModel.PageReqOffSize = 15 --请求数据的相对名次。例如 15 - 5 = 10,显示第10条,就请求 16 到 30条的数据
|
|
RankModel.PageSizeMax = 200 --排行榜中最多100条数据
|
|
|
|
function RankModel:__init()
|
|
RankModel.Instance = self
|
|
self.rank_chat_list = {}--保存聊天item栏需用到的排行列表
|
|
self.rank_equip_list = {}
|
|
|
|
self.rank_like_list = {} --点赞状态
|
|
|
|
self.rank_target_data = {}
|
|
|
|
self.rank_target_cfg = {} --排行目标奖励配置
|
|
|
|
self.rank_target_red_info = {} --排行目标奖励红点
|
|
|
|
self.rank_progress_data = {} --榜单进度数据
|
|
|
|
self.rank_warSoul_list = {}
|
|
|
|
|
|
self:InitRankTargetCfg()
|
|
|
|
self:Reset()
|
|
end
|
|
|
|
function RankModel:getInstance()
|
|
if RankModel.Instance == nil then
|
|
RankModel.Instance = RankModel.New()
|
|
end
|
|
return RankModel.Instance
|
|
end
|
|
|
|
--这里是关掉排行榜就要清空的数据
|
|
function RankModel:Reset()
|
|
self.is_cs_rank = false --当前是否为跨服排行榜
|
|
self.start = 1 --列表的开始排名
|
|
self.selectId = 0 --排行榜类型id(对应Config.ConfigRank.RankTab的id字段)
|
|
self.rank_info = nil --排行榜信息
|
|
self.curPage = 1 --当前页
|
|
self.maxPage = 0 --最大页数
|
|
self.rank_req_idx = 0 --当前请求的序号,当刷新这个数据的时候,就开始请求之后的数据
|
|
self.rank_list_sum = 0 --当前排行榜的成员总数
|
|
self.now_equip_suit_id = 6 --当前装备榜选中的套数 ,点击其他玩家查看时需要继承该套数
|
|
|
|
end
|
|
|
|
function RankModel:GetAllRedDot( )
|
|
return self.rank_target_red_info
|
|
end
|
|
|
|
function RankModel:IsNeedRedAll( )
|
|
for k,v in pairs(Config.ConfigRank.RankTab) do
|
|
self:IsNeedRed(v.id)
|
|
end
|
|
end
|
|
|
|
|
|
function RankModel:IsNeedRed(tab_id)
|
|
local bool = false
|
|
local rank_type_list = self:GetRankTargetTabListByTabId(tab_id)
|
|
for k,v in pairs(rank_type_list) do
|
|
if self:IsRankTypeNeedRed(v.rank_type) then
|
|
bool = true
|
|
break
|
|
end
|
|
end
|
|
self.rank_target_red_info[tab_id] = bool
|
|
self:Fire(RankModel.ANS_UPDATE_RED_DOT,tab_id)
|
|
end
|
|
|
|
function RankModel:IsRankTypeNeedRed(rank_type)
|
|
local bool = false
|
|
local rank_cfg = self:GetRankTabDataByType(rank_type)
|
|
if not rank_cfg then return false end
|
|
if not GetModuleIsOpen(rank_cfg.module_id, rank_cfg.sub_id) then return false end
|
|
if self.rank_target_data[rank_type] then
|
|
for i,v in ipairs(self.rank_target_data[rank_type].top_list) do
|
|
if v.award_state == 1 then
|
|
bool = true
|
|
break
|
|
end
|
|
end
|
|
end
|
|
return bool
|
|
end
|
|
|
|
--根据榜单类型获取榜单配置
|
|
function RankModel:GetRankTabDataByType(type)
|
|
for k,v in pairs(Config.ConfigRank.RankTab) do
|
|
for kk,vv in pairs(v.sub_tab) do
|
|
if vv.id == type and v.id > 3 then
|
|
return vv
|
|
end
|
|
end
|
|
end
|
|
return nil
|
|
end
|
|
|
|
--初始化排行目标奖励配置
|
|
function RankModel:InitRankTargetCfg( )
|
|
for k,v in pairs(Config.Commonranktargetreward) do
|
|
self.rank_target_cfg[v.type] = self.rank_target_cfg[v.type] or {}
|
|
v.sort_rank = 2
|
|
table.insert(self.rank_target_cfg[v.type],v)
|
|
end
|
|
for k,v in pairs(self.rank_target_cfg) do
|
|
local function onSortFunction(v1, v2)
|
|
return v1.index < v2.index
|
|
end
|
|
table.sort(v, onSortFunction)
|
|
end
|
|
end
|
|
|
|
--根据榜单类型获取目标配置
|
|
function RankModel:GetRankTargetCfgByType(type)
|
|
if self.rank_target_cfg[type] then
|
|
return self.rank_target_cfg[type]
|
|
else
|
|
return nil
|
|
end
|
|
end
|
|
|
|
--判断该榜单类型是否开放展示
|
|
function RankModel:IsRankTypeOpen(type)
|
|
local tab_id = self:GetTabIdByRankType(type)
|
|
if tab_id ~= 0 then
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
|
|
--判断该榜单类型属于哪个榜单大类
|
|
function RankModel:GetTabIdByRankType(type)
|
|
local tab_id = 0
|
|
for k,v in pairs(Config.ConfigRank.RankTab) do
|
|
for kk,vv in pairs(v.sub_tab) do
|
|
if type == vv.id and v.id > 3 then
|
|
tab_id = v.id
|
|
return tab_id
|
|
end
|
|
end
|
|
end
|
|
return tab_id
|
|
end
|
|
|
|
--根据榜单大类tab_id获取其拥有首度目标的榜单子类型列表
|
|
function RankModel:GetRankTargetTabListByTabId(tab_id)
|
|
local list = {}
|
|
local rank_tab_data = nil
|
|
for k,v in pairs(Config.ConfigRank.RankTab) do
|
|
if v.id == tab_id and tab_id > 3 then --前3个页签是冲榜用的,不要检测红点
|
|
rank_tab_data = v
|
|
break
|
|
end
|
|
end
|
|
if rank_tab_data then
|
|
for k,v in pairs(rank_tab_data.sub_tab) do
|
|
if self:GetRankTargetCfgByType(v.id) then
|
|
local temp = {rank_type = v.id, is_history = false}
|
|
table.insert(list,temp)
|
|
--插入一个历史记录栏
|
|
local need_history = false
|
|
for m,n in pairs(Config.ConfigRank.RankTargetNeedHistory) do
|
|
if v.id == n then
|
|
need_history = true
|
|
break
|
|
end
|
|
end
|
|
if need_history then
|
|
local history_temp = {rank_type = v.id*1000, is_history = true}
|
|
table.insert(list,history_temp)--将ranktype乘一千作为历史记录的标签
|
|
end
|
|
end
|
|
end
|
|
end
|
|
return list
|
|
end
|
|
|
|
--根据页签id判断是否有目标奖励配置
|
|
function RankModel:IsTabRankTargetCfg(tab_id)
|
|
--前三个tab是给开服冲榜位置预留的,不要显示目标奖励
|
|
if tab_id >= 1 and tab_id <= 3 then return false end
|
|
local rank_tab_data = nil
|
|
for k,v in pairs(Config.ConfigRank.RankTab) do
|
|
if v.id == tab_id then
|
|
rank_tab_data = v
|
|
break
|
|
end
|
|
end
|
|
if not rank_tab_data then return false end
|
|
for k,v in pairs(rank_tab_data.sub_tab) do
|
|
if self:GetRankTargetCfgByType(v.id) then
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
--保存首度目标达成信息 22106
|
|
-- rank_type :int32
|
|
-- top_list:array{
|
|
-- target :int64
|
|
-- award_state :int8 // 领奖状态 1|可领取 2|已领完
|
|
-- score :int64 // 对应target(等级榜发等级战力榜发战力进阶榜发阶数……)
|
|
-- figure :rec_picture // 形象信息
|
|
-- }
|
|
function RankModel:SetRankTargetData(vo)
|
|
local function onSortFunction(v1, v2)
|
|
return v1.target < v2.target
|
|
end
|
|
table.sort(vo.top_list, onSortFunction)
|
|
self.rank_target_data[vo.rank_type] = vo
|
|
end
|
|
|
|
--根据榜单类型获取首度目标达成信息
|
|
function RankModel:GetRankTargetData(rank_type)
|
|
return self.rank_target_data[rank_type] and self.rank_target_data[rank_type] or nil
|
|
end
|
|
|
|
--保存榜单进度数据
|
|
function RankModel:SetRankProgressData(vo)
|
|
local function onSortFunction(v1, v2)
|
|
return v1.rank < v2.rank
|
|
end
|
|
table.sort(vo.rank_list, onSortFunction)
|
|
self.rank_progress_data[vo.rank_type] = vo.rank_list
|
|
end
|
|
|
|
--获取榜单进度数据
|
|
function RankModel:GetRankProgressData(rank_type)
|
|
return self.rank_progress_data[rank_type] and self.rank_progress_data[rank_type] or {}
|
|
end
|
|
|
|
|
|
--根据排行榜类型获取基础的排行榜配置
|
|
function RankModel:GetRankingCfg(type_id)
|
|
local cfg = Config.Ranking
|
|
return cfg[type_id] or nil
|
|
end
|
|
|
|
function RankModel:GetRankInfo( )
|
|
return self.rank_info or {}
|
|
end
|
|
|
|
function RankModel:SetRankInfo(vo)
|
|
local bool = false
|
|
if self.rank_info == nil or self.rank_info.rank_type ~= vo.rank_type then
|
|
self.rank_list_sum = vo.sum
|
|
local list_size = TableSize(vo.rank_list)
|
|
self.start = list_size + 1
|
|
for i= list_size + 1 , self.rank_list_sum do
|
|
local list =
|
|
{
|
|
player_id = 0,
|
|
name = "",
|
|
guild_name = "",
|
|
grade_id = 0,
|
|
praise_num = 0,
|
|
sel_combat = 0,
|
|
first_value = 0,
|
|
second_value = 0,
|
|
third_value = 0,
|
|
rank = i,
|
|
turn = 0,
|
|
extra_values = "",
|
|
have_data = true,
|
|
}
|
|
table.insert(vo.rank_list, list)
|
|
end
|
|
self.rank_info = vo
|
|
bool = true
|
|
else
|
|
local list_size = TableSize(vo.rank_list)
|
|
if list_size > 0 then
|
|
self.rank_info.rank_list = self.rank_info.rank_list or {}
|
|
for i=1, list_size do
|
|
self.rank_info.rank_list[self.start + i - 1] = vo.rank_list[i]
|
|
end
|
|
self.start = self.start + list_size
|
|
self.start = self.start < self.rank_list_sum and self.start or self.rank_list_sum
|
|
end
|
|
end
|
|
return bool
|
|
end
|
|
|
|
function RankModel:SetCSRankInfo(vo)
|
|
for i,v in ipairs(vo.rank_list) do
|
|
v.vip_flag = v.vip
|
|
v.sup_vip_type = v.sup_vip
|
|
end
|
|
|
|
local function onSortFunction(v1, v2)
|
|
return v1.rank < v2.rank
|
|
end
|
|
table.sort(vo.rank_list, onSortFunction)
|
|
table.sort(vo.top_three, onSortFunction)
|
|
|
|
local bool = false
|
|
if self.rank_info == nil or self.rank_info.rank_type ~= vo.rank_type then
|
|
self.rank_list_sum = vo.sum
|
|
local list_size = TableSize(vo.rank_list)
|
|
self.start = list_size + 1
|
|
for i= list_size + 1 , self.rank_list_sum do
|
|
local list =
|
|
{
|
|
player_id = 0,
|
|
name = "",
|
|
guild_name = "",
|
|
grade_id = 0,
|
|
praise_num = 0,
|
|
sel_combat = 0,
|
|
first_value = 0,
|
|
second_value = 0,
|
|
third_value = 0,
|
|
rank = i,
|
|
turn = 0,
|
|
extra_values = "",
|
|
have_data = true,
|
|
}
|
|
table.insert(vo.rank_list, list)
|
|
end
|
|
self.rank_info = vo
|
|
bool = true
|
|
else
|
|
local list_size = TableSize(vo.rank_list)
|
|
if list_size > 0 then
|
|
self.rank_info.rank_list = self.rank_info.rank_list or {}
|
|
for i=1, list_size do
|
|
self.rank_info.rank_list[self.start + i - 1] = vo.rank_list[i]
|
|
end
|
|
self.start = self.start + list_size
|
|
self.start = self.start < self.rank_list_sum and self.start or self.rank_list_sum
|
|
end
|
|
end
|
|
return bool
|
|
end
|
|
|
|
function RankModel:GetRankItemInfo(rank_type, index)
|
|
local t = nil
|
|
if self.rank_info and self.rank_info.rank_list and rank_type == self.rank_info.rank_type then
|
|
t = self.rank_info.rank_list[index]
|
|
end
|
|
return t
|
|
end
|
|
|
|
--获取榜单子类型列表
|
|
function RankModel:GetRankSubTypeData(is_cs_rank)
|
|
local final_rank_tab_data = {}
|
|
if not is_cs_rank then
|
|
final_rank_tab_data = self:GetFinalRankTabData()
|
|
end
|
|
local RankTab = {}
|
|
if is_cs_rank then
|
|
RankTab = DeepCopy(Config.ConfigRank.CSRankTab)
|
|
else
|
|
RankTab = DeepCopy(Config.ConfigRank.RankTab)
|
|
end
|
|
local temp_tab = {}
|
|
for i,v in ipairs(RankTab) do
|
|
if not GetModuleIsOpen(v.module_id, v.sub_id) then
|
|
RankTab[i] = nil
|
|
elseif not is_cs_rank and final_rank_tab_data[v.id] and final_rank_tab_data[v.id].open_lv > RoleManager.Instance.mainRoleInfo.level then
|
|
RankTab[i] = nil
|
|
else
|
|
if v.sub_tab then
|
|
for i=#v.sub_tab,1,-1 do
|
|
if not GetModuleIsOpen(v.sub_tab[i].module_id, v.sub_tab[i].sub_id) then
|
|
table.remove(v.sub_tab,i)
|
|
end
|
|
end
|
|
if #v.sub_tab>0 then
|
|
temp_tab[v.id] = v
|
|
end
|
|
end
|
|
end
|
|
end
|
|
return temp_tab
|
|
end
|
|
|
|
function RankModel:GetFinalRankTabData( )
|
|
--开服前七天需要加首位加上冲榜的榜
|
|
local final_rank_tab_data = DeepCopy(RankView.TabData)
|
|
local rush_rank_data = self:GetTodayKfRushTabList()
|
|
|
|
final_rank_tab_data[RankModel.TabId.KfRush_1].open_lv = 9999
|
|
final_rank_tab_data[RankModel.TabId.KfRush_2].open_lv = 9999
|
|
final_rank_tab_data[RankModel.TabId.KfRush_3].open_lv = 9999
|
|
|
|
if #rush_rank_data == 0 then
|
|
|
|
else
|
|
for i=1,#rush_rank_data do
|
|
local key = RankModel.TabId.KfRush_1
|
|
if i == 1 then
|
|
key = RankModel.TabId.KfRush_1
|
|
elseif i == 2 then
|
|
key = RankModel.TabId.KfRush_2
|
|
elseif i == 3 then
|
|
key = RankModel.TabId.KfRush_3
|
|
end
|
|
final_rank_tab_data[key].open_lv = 0
|
|
if rush_rank_data[i].id == 1 then
|
|
final_rank_tab_data[key].name = "座驾"
|
|
Config.ConfigRank.RankTab[key].name = "座驾"
|
|
for k,v in pairs(Config.ConfigRank.RankTab) do
|
|
if v.id == key then
|
|
for m,n in pairs(v.sub_tab) do
|
|
n.id = 1461
|
|
n.name = "座驾"
|
|
n.sub_type_tab = "horse"
|
|
end
|
|
end
|
|
end
|
|
elseif rush_rank_data[i].id == 2 then
|
|
final_rank_tab_data[key].name = "炫翼"
|
|
Config.ConfigRank.RankTab[key].name = "炫翼"
|
|
for k,v in pairs(Config.ConfigRank.RankTab) do
|
|
if v.id == key then
|
|
for m,n in pairs(v.sub_tab) do
|
|
n.id = 1462
|
|
n.name = "炫翼"
|
|
n.sub_type_tab = "wing"
|
|
end
|
|
end
|
|
end
|
|
elseif rush_rank_data[i].id == 3 then
|
|
final_rank_tab_data[key].name = "宝具"
|
|
Config.ConfigRank.RankTab[key].name = "宝具"
|
|
for k,v in pairs(Config.ConfigRank.RankTab) do
|
|
if v.id == key then
|
|
for m,n in pairs(v.sub_tab) do
|
|
n.id = 1463
|
|
n.name = "宝具"
|
|
n.sub_type_tab = "pearl"
|
|
end
|
|
end
|
|
end
|
|
elseif rush_rank_data[i].id == 4 then
|
|
final_rank_tab_data[key].name = "武器"
|
|
Config.ConfigRank.RankTab[key].name = "武器"
|
|
for k,v in pairs(Config.ConfigRank.RankTab) do
|
|
if v.id == key then
|
|
for m,n in pairs(v.sub_tab) do
|
|
n.id = 1464
|
|
n.name = "武器"
|
|
n.sub_type_tab = "weapon"
|
|
end
|
|
end
|
|
end
|
|
elseif rush_rank_data[i].id == 5 then
|
|
final_rank_tab_data[key].name = "AI娘"
|
|
Config.ConfigRank.RankTab[key].name = "AI娘"
|
|
for k,v in pairs(Config.ConfigRank.RankTab) do
|
|
if v.id == key then
|
|
for m,n in pairs(v.sub_tab) do
|
|
n.id = 1465
|
|
n.name = "AI娘"
|
|
n.sub_type_tab = "jarvis"
|
|
end
|
|
end
|
|
end
|
|
elseif rush_rank_data[i].id == 6 then
|
|
final_rank_tab_data[key].name = "磁炮"
|
|
Config.ConfigRank.RankTab[key].name = "磁炮"
|
|
for k,v in pairs(Config.ConfigRank.RankTab) do
|
|
if v.id == key then
|
|
for m,n in pairs(v.sub_tab) do
|
|
n.id = 1466
|
|
n.name = "磁炮"
|
|
n.sub_type_tab = "gun"
|
|
end
|
|
end
|
|
end
|
|
elseif rush_rank_data[i].id == 7 then
|
|
final_rank_tab_data[key].name = "星翼"
|
|
Config.ConfigRank.RankTab[key].name = "星翼"
|
|
for k,v in pairs(Config.ConfigRank.RankTab) do
|
|
if v.id == key then
|
|
for m,n in pairs(v.sub_tab) do
|
|
n.id = 1467
|
|
n.name = "星翼"
|
|
n.sub_type_tab = "cloud"
|
|
end
|
|
end
|
|
end
|
|
elseif rush_rank_data[i].id == 8 then
|
|
final_rank_tab_data[key].name = "幻甲"
|
|
Config.ConfigRank.RankTab[key].name = "幻甲"
|
|
for k,v in pairs(Config.ConfigRank.RankTab) do
|
|
if v.id == key then
|
|
for m,n in pairs(v.sub_tab) do
|
|
n.id = 1468
|
|
n.name = "幻甲"
|
|
n.sub_type_tab = "armour"
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
return final_rank_tab_data
|
|
end
|
|
|
|
|
|
--保存该类型排行榜的点赞状态 22103
|
|
function RankModel:SetRankLikeState(vo)
|
|
-- self.rank_like_list[vo.rank_type] = vo.state == 0 and true or false
|
|
self.rank_like_list[vo.rank_type] = vo
|
|
end
|
|
|
|
--根据排行榜类型获取点赞状态
|
|
function RankModel:GetRankLikeStateByTypeId(type_id, role_id)
|
|
-- return false
|
|
if self.rank_like_list[type_id] then
|
|
if self.rank_like_list[type_id].role_id == role_id and self.rank_like_list[type_id].state == 1 then
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
--刷新某个类型榜单下玩家的点赞数 22104
|
|
function RankModel:RefreshRankRoleLikeNum(vo)
|
|
if self.rank_info and self.rank_info.rank_list and vo.rank_type == self.rank_info.rank_type then
|
|
for k,v in pairs(self.rank_info.rank_list) do
|
|
if v.role_id == vo.role_id then
|
|
v.praise_num = vo.praise_num
|
|
return
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
-----聊天模块需用到以下部分
|
|
function RankModel:GetRankChatList( )
|
|
return self.rank_chat_list
|
|
end
|
|
|
|
function RankModel:SetRankChatList(vo)
|
|
|
|
local RankTab = DeepCopy(Config.ConfigRank.RankTab)
|
|
local rank_type_power = RankTab[RankModel.TabId.Power].sub_tab[1].id
|
|
local rank_type_level = RankTab[RankModel.TabId.Level].sub_tab[1].id
|
|
|
|
if vo.rank_type and vo.rank_type == rank_type_power then
|
|
self.rank_chat_list.fight_list = vo.rank_list or {}
|
|
elseif vo.rank_type and vo.rank_type == rank_type_level then
|
|
self.rank_chat_list.level_list = vo.rank_list or {}
|
|
end
|
|
|
|
--print("=============>>> YiRan:RankModel [start:186] self.rank_chat_list ------------------------------------------")
|
|
--PrintTable(self.rank_chat_list)
|
|
--print("=============>>> YiRan:RankModel [end] ------------------------------------------")
|
|
end
|
|
|
|
function RankModel:SendForRankChat( )
|
|
|
|
local RankTab = DeepCopy(Config.ConfigRank.RankTab)
|
|
local rank_type_power = RankTab[RankModel.TabId.Power].sub_tab[1].id
|
|
local rank_type_level = RankTab[RankModel.TabId.Level].sub_tab[1].id
|
|
|
|
RankModel:getInstance():Fire(RankModel.REQUEST_CCMD_EVENT,22105,rank_type_power,1,10)
|
|
RankModel:getInstance():Fire(RankModel.REQUEST_CCMD_EVENT,22105,rank_type_level,1,10)
|
|
end
|
|
|
|
|
|
------------------------------------------------------------------------------------------------------------------>>>>
|
|
--更新当前穿着的装备列表
|
|
function RankModel:UpdateEquipList(role_id, list, power)
|
|
if not list or not role_id then
|
|
print("是不是数据出现了问题?15017:", list)
|
|
return
|
|
end
|
|
|
|
if self.rank_equip_list and self.rank_equip_list[role_id] then
|
|
RankModel:getInstance():Fire(RankModel.UPDATE_EQUIP_INFO,role_id)
|
|
return
|
|
end
|
|
|
|
self.rank_equip_list[role_id] = {}
|
|
local goods_model = GoodsModel:getInstance()
|
|
local equip_model = EquipModel:getInstance()
|
|
local count = #list
|
|
local vo = nil
|
|
for i = 1, count do
|
|
vo = list[i]
|
|
local equip_cfg = equip_model:GetEquipmentCfg(vo.type_id)
|
|
if equip_cfg then
|
|
local pos = equip_cfg.equip_type
|
|
local series = equip_cfg.series
|
|
vo.equip_suit_type = pos
|
|
goods_model:SetBaseInfo(vo)
|
|
vo.power = power
|
|
if not self.rank_equip_list[role_id][series] then
|
|
self.rank_equip_list[role_id][series] = {}
|
|
end
|
|
self.rank_equip_list[role_id][series][equip_cfg.equip_type] = vo
|
|
end
|
|
end
|
|
RankModel:getInstance():Fire(RankModel.UPDATE_EQUIP_INFO,role_id)
|
|
end
|
|
|
|
function RankModel:ClearRoleEquipList()
|
|
self.rank_equip_list = {}
|
|
end
|
|
|
|
function RankModel:GetEquipList(role_id, suit_id)
|
|
if not role_id or not suit_id then return {} end
|
|
return (self.rank_equip_list and self.rank_equip_list[role_id] and self.rank_equip_list[role_id][suit_id]) and self.rank_equip_list[role_id][suit_id] or {}
|
|
end
|
|
|
|
function RankModel:GetAllEquipList(role_id)
|
|
if not role_id then return {} end
|
|
return (self.rank_equip_list and self.rank_equip_list[role_id]) and self.rank_equip_list[role_id] or {}
|
|
end
|
|
|
|
function RankModel:GetMateShipData( role_id )
|
|
self.mate_ship_data = self.mate_ship_data or {}
|
|
return self.mate_ship_data[role_id]
|
|
end
|
|
|
|
function RankModel:SetMateShipData( role_id,mate_stage,mate_star )
|
|
self.mate_ship_data = self.mate_ship_data or {}
|
|
self.mate_ship_data[role_id] = {mate_stage = mate_stage,mate_star = mate_star}
|
|
end
|
|
------------------------------------------------------------------------------------------------------------------<<<<
|
|
|
|
|
|
|
|
------------------------------------------------------------------------------------------------------------------>>>>
|
|
--更新当前的战魂装备列表
|
|
function RankModel:UpdateWarSoulList(vo)
|
|
if not vo then return end
|
|
if not vo.equip_list then return end
|
|
|
|
local role_id = vo.player_id
|
|
|
|
if self.rank_warSoul_list and self.rank_warSoul_list[role_id] then
|
|
RankModel:getInstance():Fire(RankModel.UPDATE_WARSOUL_INFO,role_id)
|
|
return
|
|
end
|
|
|
|
self.rank_warSoul_list[role_id] = vo
|
|
|
|
local count = #vo.equip_list
|
|
local data = nil
|
|
for i = 1, count do
|
|
data = vo.equip_list[i]
|
|
local warSoul_cfg = WarSoulModel:getInstance():GetWarSoulCfg(data.type_id)
|
|
data.warSoul_cfg = warSoul_cfg
|
|
data.pos = 20
|
|
data.bind = 1
|
|
data.expire_time = 0
|
|
data.goods_num = 1
|
|
data.convert_time = 0
|
|
end
|
|
RankModel:getInstance():Fire(RankModel.UPDATE_WARSOUL_INFO,role_id)
|
|
end
|
|
|
|
function RankModel:ClearRoleWarSoulList()
|
|
self.rank_warSoul_list = {}
|
|
end
|
|
|
|
function RankModel:GetWarSoulList(role_id)
|
|
if not role_id then return {} end
|
|
return (self.rank_warSoul_list and self.rank_warSoul_list[role_id]) and self.rank_warSoul_list[role_id] or {}
|
|
end
|
|
|
|
function RankModel:GetWarSoulDataByCell(role_id,cell)
|
|
if not role_id or not cell then return nil end
|
|
if self.rank_warSoul_list and self.rank_warSoul_list[role_id] then
|
|
for k,v in pairs(self.rank_warSoul_list[role_id].equip_list) do
|
|
if v.cell == cell then
|
|
return v
|
|
end
|
|
end
|
|
end
|
|
return nil
|
|
end
|
|
------------------------------------------------------------------------------------------------------------------<<<<\
|
|
|
|
--获取今天的开服冲榜项
|
|
function RankModel:GetTodayKfRushTabList( )
|
|
local tab_list = {}
|
|
local openDay = ServerTimeModel:getInstance():GetOpenServerDay()
|
|
for k,v in pairs(Config.Rushrank) do
|
|
if v.start_day == openDay and v.id <= 8 then
|
|
table.insert(tab_list,v)
|
|
end
|
|
end
|
|
return tab_list
|
|
end
|
|
--判断今天开服冲榜有几项
|
|
function RankModel:GetKfRushTabNum( )
|
|
local tab_list = {}
|
|
local openDay = ServerTimeModel:getInstance():GetOpenServerDay()
|
|
for k,v in pairs(Config.Rushrank) do
|
|
if v.start_day == openDay and v.id <= 8 then
|
|
table.insert(tab_list,v)
|
|
end
|
|
end
|
|
return #tab_list
|
|
end
|