MateModel = MateModel or BaseClass(BaseVo, true)
|
|
local MateModel = MateModel
|
|
|
|
function MateModel:__init()
|
|
MateModel.Instance = self
|
|
self:Reset()
|
|
end
|
|
|
|
function MateModel:Reset()
|
|
self.game_info = nil
|
|
self.basic_info = nil
|
|
self.connect_message = nil
|
|
self.cut_connect_message = nil
|
|
self.ship_basic = nil
|
|
self.select_game_info = nil
|
|
self.invite_info = nil
|
|
self:ResetMusicGameInfo()
|
|
self.music_play_role = 0
|
|
self:ResetSelectGameInfo()
|
|
self:ResetBallStatus()
|
|
self:ResetBallFlyInfo()
|
|
self.red_game = {}
|
|
self.red_mark = {}
|
|
self.red_ship = false
|
|
self.red_gift = false
|
|
self.find_friend_data = {}
|
|
|
|
|
|
self.mate_daily_list_info = {}--羁绊日常列表
|
|
self.mate_daily_other_list_info = {}--羁绊日常路人列表
|
|
|
|
self.mate_daily_task_need_chat_role = {}--记录当天需要进行私聊任务的玩家id列表
|
|
self.mate_daily_task_need_share_mate_role = {}--记录当天需要进行分享羁绊任务的玩家id列表
|
|
|
|
self.mate_daily_red = false--羁绊日常红点
|
|
self.force_turn_mate_first_red_false = false
|
|
|
|
self.mate_shop_red = false--商店红点
|
|
self.mate_shop_red_list = {}
|
|
|
|
self.mate_first_get_friend_red = false--首次结成羁绊的一次性红点
|
|
|
|
self.last_click_up_btn_time = 0 --上次点击信物升级按钮的时间戳
|
|
end
|
|
|
|
function MateModel:GetInstance()
|
|
if MateModel.Instance == nil then
|
|
MateModel.Instance = MateModel.New()
|
|
end
|
|
return MateModel.Instance
|
|
end
|
|
|
|
function MateModel:GetOpenNeed( )
|
|
local open_lv = Config.Moduleid[149].open_lv
|
|
local task_id = Config.Moduleid[149].task_id
|
|
local open_day = Config.Moduleid[149].open_day
|
|
return open_lv, task_id, open_day
|
|
end
|
|
|
|
function MateModel:GetKeyValueConf( key )
|
|
if not key then return end
|
|
if Config.Matekeyvalue[key] then
|
|
return Config.Matekeyvalue[key].value_content
|
|
end
|
|
end
|
|
|
|
function MateModel:GetMyUseTitle( )
|
|
local mate_name,mate_title = "",""
|
|
local data = self:GetBasicByRoleId(RoleManager.Instance.mainRoleInfo.mate_title_role_id)
|
|
if data then
|
|
mate_name = data.name
|
|
mate_title = data.title
|
|
end
|
|
return mate_name,mate_title
|
|
end
|
|
|
|
--判断是否已经羁绊
|
|
function MateModel:GetIsMateByRoleId( role_id )
|
|
if not role_id then return false end
|
|
local basic = self:GetBasicInfo()
|
|
if basic then
|
|
for k,v in pairs(basic) do
|
|
if v.role_id == role_id then
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
function MateModel:ChangeFriendInfo( tag, role_id, value )
|
|
if role_id and value and tag then
|
|
for k,v in pairs(self:GetBasicInfo()) do
|
|
if v.role_id == role_id then
|
|
v[tag] = value
|
|
return
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function MateModel:AddDailyReward( role_id,day )
|
|
if role_id and day then
|
|
for k,v in pairs(self:GetBasicInfo()) do
|
|
if v.role_id == role_id then
|
|
for k,v in pairs(v.anniversary) do
|
|
table.insert( v, {day = day} )
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function MateModel:GetBasicByRoleId( role_id )
|
|
if role_id then
|
|
local basic = self:GetBasicInfo()
|
|
if basic then
|
|
for k,v in pairs(basic) do
|
|
if v.role_id == role_id then
|
|
return v
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
--是否没有羁绊好友
|
|
function MateModel:IsNoMateFriend( )
|
|
local basic_data = self:GetBasicInfo()
|
|
if not basic_data or TableSize(basic_data) == 0 then
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
|
|
function MateModel:GetBasicInfo( )
|
|
return self.basic_info or {}
|
|
end
|
|
function MateModel:SetBasicInfo( value )
|
|
self.basic_info = value
|
|
end
|
|
|
|
function MateModel:GetConnectMessage( )
|
|
return self.connect_message or {}
|
|
end
|
|
function MateModel:SetConnectMessage( value )
|
|
self.connect_message = value
|
|
end
|
|
|
|
function MateModel:GetCutConnectMessage( )
|
|
return self.cut_connect_message or {}
|
|
end
|
|
function MateModel:SetCutConnectMessage( value )
|
|
self.cut_connect_message = value
|
|
end
|
|
|
|
|
|
-------------------------
|
|
--友谊的小船
|
|
function MateModel:GetShipBasic( )
|
|
return self.ship_basic or {}
|
|
end
|
|
function MateModel:SetShipBasic( value )
|
|
self.ship_basic = value
|
|
end
|
|
|
|
function MateModel:GetShipIsMax( )
|
|
local basic = self:GetShipBasic()
|
|
if basic and basic.stage then
|
|
if self:GetShipConfNext( basic.stage,basic.star ) then
|
|
return false
|
|
else
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
function MateModel:GetShipConf( stage,star )
|
|
if stage and star then
|
|
return Config.Mateboat[ stage .. "@" .. star ]
|
|
end
|
|
end
|
|
function MateModel:GetShipConfNext( stage,star )
|
|
if stage and star then
|
|
if Config.Mateboat[ stage .. "@" .. star+1 ] then
|
|
return Config.Mateboat[ stage .. "@" .. star+1 ]
|
|
elseif Config.Mateboat[ stage+1 .. "@" .. star ] then
|
|
return Config.Mateboat[ stage+1 .. "@" .. 1 ]
|
|
end
|
|
end
|
|
end
|
|
--获得当前的对应配置
|
|
function MateModel:GetCurShipConf( )
|
|
local data = self:GetShipBasic()
|
|
if not data or not data.stage then return end
|
|
return self:GetShipConf(data.stage, data.star)
|
|
end
|
|
function MateModel:GetShipPower( stage,star )
|
|
local power = 0
|
|
local conf = self:GetShipConf( stage,star )
|
|
if conf then
|
|
power = power + GetFighting(stringtotable(conf.attr),true)
|
|
end
|
|
local list_info = self:GetSkillList( )
|
|
local skill_temp = false
|
|
for i,v in ipairs(list_info) do
|
|
if not self:GetSkillIsLock(v.skill_id,stage) then
|
|
skill_temp = SkillManager:getInstance():getSkillFromConfig(v.skill_id)
|
|
if skill_temp and skill_temp.lvs and skill_temp.lvs[1] and tonumber(skill_temp.lvs[1].power) then
|
|
power = power + tonumber(skill_temp.lvs[1].power)
|
|
end
|
|
end
|
|
end
|
|
return power
|
|
end
|
|
function MateModel:GetLastNextPicture( picture_id )
|
|
local last_id,next_id = 0,0
|
|
local cur_conf = nil
|
|
for k,v in pairs(Config.Mateboat) do
|
|
if v.picture == picture_id then
|
|
cur_conf = v
|
|
break
|
|
end
|
|
end
|
|
if cur_conf then
|
|
if Config.Mateboat[ cur_conf.stage-1 .. "@" .. 1 ] then
|
|
last_id = Config.Mateboat[ cur_conf.stage-1 .. "@" .. 1 ].picture
|
|
end
|
|
if Config.Mateboat[ cur_conf.stage+1 .. "@" .. 1 ] then
|
|
next_id = Config.Mateboat[ cur_conf.stage+1 .. "@" .. 1 ].picture
|
|
end
|
|
end
|
|
return last_id,next_id
|
|
end
|
|
function MateModel:GetSkillList( )
|
|
local tab = {}
|
|
for k,v in pairs(Config.Mateboatskill) do
|
|
table.insert( tab, v )
|
|
end
|
|
local function sort_call( a,b )
|
|
return a.stage < b.stage
|
|
end
|
|
table.sort( tab, sort_call )
|
|
return tab
|
|
end
|
|
function MateModel:GetSkillIsLock( skill_id,stage )
|
|
if not skill_id then return "未解锁" end
|
|
if not stage then
|
|
local basic = self:GetShipBasic()
|
|
if not basic then return "未解锁" end
|
|
stage = basic.stage
|
|
end
|
|
for k,v in pairs(Config.Mateboatskill) do
|
|
if v.skill_id == skill_id then
|
|
if v.stage <= stage then
|
|
return false,v.stage
|
|
else
|
|
return ChineseNumber(v.stage) .. "阶解锁",v.stage
|
|
end
|
|
end
|
|
end
|
|
return "未解锁",99
|
|
end
|
|
-------------------------
|
|
--纪念日相关
|
|
function MateModel:GetMarkListConf( )
|
|
return Config.Mateanniversary
|
|
end
|
|
function MateModel:GetMarkConfByDay( day )
|
|
day = day or 1
|
|
for k,v in pairs(Config.Mateanniversary) do
|
|
if v.day == day then
|
|
return v
|
|
end
|
|
end
|
|
end
|
|
function MateModel:GetMarkIsHave(role_id, day)
|
|
if not role_id or not day then return false end
|
|
local basic = self:GetBasicByRoleId( role_id )
|
|
if not basic then return false end
|
|
for k,v in pairs(basic.anniversary) do
|
|
if v.day == day then
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
function MateModel:GetMateDay( role_id )
|
|
if not role_id then return 0 end
|
|
local basic = self:GetBasicByRoleId( role_id )
|
|
if not basic then return 0 end
|
|
return math.ceil((TimeUtil:getServerTime() - basic.time)/86400)
|
|
end
|
|
function MateModel:GetMarkCan( role_id,day )
|
|
if not role_id or not day then return false end
|
|
local is_have = self:GetMarkIsHave(role_id, day)
|
|
if is_have then return false end
|
|
return self:GetMateDay(role_id) >= day
|
|
end
|
|
function MateModel:GetMarkIsMax( day )
|
|
day = day or 0
|
|
for k,v in pairs(Config.Mateanniversary) do
|
|
if v.day > day then
|
|
return false
|
|
end
|
|
end
|
|
return true
|
|
end
|
|
--纪念日相关
|
|
-------------------------
|
|
|
|
--获取称号的属性加成
|
|
function MateModel:GetTitleAttrByLv( lv )
|
|
lv = lv or 1
|
|
local data = {}
|
|
for k,v in pairs(Config.Matelv) do
|
|
if v.lv == lv then
|
|
data = stringtotable(v.attr)
|
|
break
|
|
end
|
|
end
|
|
return data
|
|
end
|
|
|
|
--小游戏信息
|
|
function MateModel:GetGameInfo( act_id )
|
|
if not self.game_info then return false end
|
|
if not act_id then
|
|
return self.game_info
|
|
else
|
|
for k,v in pairs(self.game_info) do
|
|
if v.act_id == act_id then
|
|
return v
|
|
end
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
function MateModel:SetGameInfo( value )
|
|
if value and TableSize(value) > 1 then
|
|
local function sort_call( a,b )
|
|
return a.act_id < b.act_id
|
|
end
|
|
table.sort( value, sort_call )
|
|
end
|
|
self.game_info = value
|
|
end
|
|
|
|
--小游戏选中信息
|
|
function MateModel:ResetSelectGameInfo( )
|
|
self.select_game_info = nil
|
|
end
|
|
function MateModel:GetSelectGameInfo( )
|
|
return self.select_game_info
|
|
end
|
|
function MateModel:SetSelectGameInfo( value,op_type )
|
|
if value then
|
|
value.status = op_type
|
|
end
|
|
self.select_game_info = value
|
|
end
|
|
|
|
--小游戏邀请信息
|
|
function MateModel:GetInviteInfo( )
|
|
return self.invite_info or {}
|
|
end
|
|
function MateModel:SetInviteInfo( value )
|
|
self.invite_info = value or {}
|
|
self:CheckInviteDot()
|
|
end
|
|
function MateModel:CheckInviteDot( )
|
|
local friend_list = self:GetInviteInfo()
|
|
local need_list = {}
|
|
for k,v in pairs(friend_list) do
|
|
if v.type == 2 then
|
|
table.insert( need_list, v )
|
|
end
|
|
end
|
|
if TableSize(need_list) > 0 then
|
|
MsgManager:getInstance():Add({type=Config.ConfigMainIcon.TipType.mate_game_invite})
|
|
else
|
|
MsgManager:getInstance():Remove(Config.ConfigMainIcon.TipType.mate_game_invite)
|
|
end
|
|
end
|
|
-- function MateModel:RemoveInviteInfo( role_id )
|
|
-- local basic = self:GetInviteInfo()
|
|
-- for k,v in pairs(basic) do
|
|
-- if v.role_id == role_id then
|
|
-- v = nil
|
|
-- end
|
|
-- end
|
|
-- self:CheckInviteDot()
|
|
-- end
|
|
|
|
-------------------------
|
|
function MateModel:GetMusicGameInfo( )
|
|
return self.music_game_info
|
|
end
|
|
function MateModel:SetMusicGameInfo( value )
|
|
self.music_game_info = value
|
|
end
|
|
function MateModel:ResetMusicGameInfo( )
|
|
self.music_game_info = nil
|
|
self.music_score = nil
|
|
end
|
|
|
|
function MateModel:GetMusicScore( )
|
|
return self.music_score
|
|
end
|
|
function MateModel:SetMusicScore( value )
|
|
self.music_score = value
|
|
end
|
|
|
|
function MateModel:GetMusicPlayRole( )
|
|
return self.music_play_role or 0
|
|
end
|
|
function MateModel:SetMusicPlayRole( value )
|
|
self.music_play_role = value
|
|
end
|
|
|
|
function MateModel:GetMusicDotConf( group,id )
|
|
-- if group and id then
|
|
-- return Config.Materhythmmasterbit[group .. "@" ..id]
|
|
-- else
|
|
-- return Config.Materhythmmasterbit["1@1"]
|
|
-- end
|
|
return nil
|
|
end
|
|
|
|
function MateModel:GetMusicConf( music_id )
|
|
-- music_id = music_id or 0
|
|
-- for k,v in pairs(Config.Materhythmmastermusic) do
|
|
-- if v.music_id == music_id then
|
|
-- return v
|
|
-- end
|
|
-- end
|
|
return nil
|
|
end
|
|
|
|
--抛接球基础信息
|
|
function MateModel:GetBallInfo( )
|
|
return self.ball_info
|
|
end
|
|
function MateModel:SetBallInfo( value )
|
|
self.ball_info = value
|
|
end
|
|
|
|
--抛接球飞行信息
|
|
function MateModel:GetBallFlyInfo( )
|
|
return self.ball_fly_info
|
|
end
|
|
function MateModel:SetBallFlyInfo( value )
|
|
self.ball_fly_info = value
|
|
end
|
|
function MateModel:ResetBallFlyInfo( )
|
|
self.ball_fly_info = nil
|
|
end
|
|
|
|
function MateModel:GetMusicLowScoreByLv( lv )
|
|
-- lv = lv or 1
|
|
-- for k,v in pairs(Config.Materhythmmasteraward) do
|
|
-- if v.lv == lv then
|
|
-- return v.score_low
|
|
-- end
|
|
-- end
|
|
-- return 99
|
|
return 99
|
|
end
|
|
|
|
function MateModel:GetMusicLvByScore( score )
|
|
-- score = score or 0
|
|
-- if score == 0 then return 0 end
|
|
-- local max = 0
|
|
-- for k,v in pairs(Config.Materhythmmasteraward) do
|
|
-- if score >= v.score_low and score <= v.score_high then
|
|
-- return v.lv
|
|
-- end
|
|
-- max = max > v.lv and max or v.lv
|
|
-- end
|
|
-- return max
|
|
return 0
|
|
end
|
|
|
|
|
|
function MateModel:GetBallLowScoreByLv( lv )
|
|
-- lv = lv or 1
|
|
-- for k,v in pairs(Config.Matecatchballaward) do
|
|
-- if v.lv == lv then
|
|
-- return v.hit_low
|
|
-- end
|
|
-- end
|
|
return 99
|
|
end
|
|
|
|
function MateModel:GetBallLvByScore( score )
|
|
-- score = score or 0
|
|
-- if score == 0 then return 0 end
|
|
-- local max = 0
|
|
-- for k,v in pairs(Config.Matecatchballaward) do
|
|
-- if score >= v.hit_low and score <= v.hit_high then
|
|
-- return v.lv
|
|
-- end
|
|
-- max = max > v.lv and max or v.lv
|
|
-- end
|
|
-- return max
|
|
return 0
|
|
end
|
|
|
|
function MateModel:GetBallStatus( )
|
|
return self.ball_status
|
|
end
|
|
function MateModel:SetBallStatus( value )
|
|
self.ball_status = value
|
|
end
|
|
function MateModel:ResetBallStatus( )
|
|
self.ball_status = nil
|
|
end
|
|
|
|
function MateModel:GetGameRedDot( check_new,game_id )
|
|
do return false end
|
|
-------------------------
|
|
local mask_data = CookieWrapper.Instance:GetCookie(CookieLevelType.Common,CookieKey.MATE_GAME_RED_SHOW) or {}
|
|
local today_id = TimeUtil:GetToDayThreeHourStr()
|
|
mask_data[today_id] = mask_data[today_id] or {}
|
|
-------------------------
|
|
if game_id and mask_data[today_id][game_id] then
|
|
return false
|
|
end
|
|
if not self:GetGameInfo() then return false end
|
|
if check_new then
|
|
self.red_game = {}
|
|
local data = self:GetGameInfo(MateConst.GameActId.Music)
|
|
self.red_game[MateConst.GameActId.Music] = data.is_open == 1 and data.daily_score < self:GetMusicLowScoreByLv(6)
|
|
local data = self:GetGameInfo(MateConst.GameActId.Ball)
|
|
self.red_game[MateConst.GameActId.Ball] = data.is_open == 1 and data.daily_score < self:GetBallLowScoreByLv(6)
|
|
-------------------------
|
|
if mask_data[today_id][MateConst.GameActId.Music] then
|
|
self.red_game[MateConst.GameActId.Music] = false
|
|
end
|
|
if mask_data[today_id][MateConst.GameActId.Ball] then
|
|
self.red_game[MateConst.GameActId.Ball] = false
|
|
end
|
|
end
|
|
if game_id then
|
|
-------------------------
|
|
--判断是否有伙伴
|
|
local basic_data = self:GetBasicInfo( )
|
|
if not (basic_data and TableSize(basic_data) > 0) then
|
|
return false
|
|
end
|
|
-------------------------
|
|
return self.red_game[game_id] and (not mask_data[today_id][game_id])
|
|
else
|
|
for k,v in pairs(self.red_game) do
|
|
if v then
|
|
-------------------------
|
|
--判断是否有伙伴
|
|
local basic_data = self:GetBasicInfo( )
|
|
if not (basic_data and TableSize(basic_data) > 0) then
|
|
return false
|
|
end
|
|
-------------------------
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
end
|
|
|
|
function MateModel:GetShipRedDot( check_new )
|
|
if check_new then
|
|
self.red_ship = false
|
|
if self:GetShipIsMax() then
|
|
self.red_ship = false
|
|
else
|
|
local cost_id = self:GetKeyValueConf("ship_item")
|
|
self.red_ship = GoodsModel:getInstance():GetTypeGoodsNum( cost_id ) > 0
|
|
end
|
|
end
|
|
return self.red_ship
|
|
end
|
|
|
|
function MateModel:GetTaskRedDot( )
|
|
if self:IsFinishAllMarriageTask( 3 ) then
|
|
else
|
|
local has_can_get = false--可领取
|
|
local status = false
|
|
for i=1,3 do
|
|
--0未接任务1接任务未完成2已完成任务未领取3任务完成并已领取奖励
|
|
status = self:GetTaskStatusById( MateConst.SingleDogTask[i] )
|
|
if status == 2 then
|
|
return true
|
|
end
|
|
if status ~= 3 then
|
|
return false
|
|
end
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
function MateModel:GetMarkRedDot( check_new,role_id )
|
|
if check_new then
|
|
self.red_mark = {}
|
|
local basic = self:GetBasicInfo()
|
|
if basic then
|
|
for k,v in pairs(basic) do
|
|
self.red_mark[v.role_id] = false
|
|
for c,d in pairs(Config.Mateanniversary) do
|
|
if self:GetMarkCan( v.role_id,d.day ) then
|
|
self.red_mark[v.role_id] = true
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if role_id then
|
|
return self.red_mark[role_id] or false
|
|
else
|
|
for k,v in pairs(self.red_mark) do
|
|
if v then
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
--羁绊日常红点
|
|
function MateModel:GetMateDailyRed(check_new)
|
|
if check_new then
|
|
self.mate_daily_red = false
|
|
for k,v in pairs(self.mate_daily_list_info) do
|
|
if v.state == 1 or v.state == 0 then--可以做任务和可以领奖时都要给红点
|
|
self.mate_daily_red = true
|
|
end
|
|
end
|
|
end
|
|
return self.mate_daily_red
|
|
end
|
|
|
|
--商店红点 有抽奖券买的时候要红点
|
|
function MateModel:GetMateShopRed(check_new)
|
|
if check_new then
|
|
self.mate_shop_red = false
|
|
self.mate_shop_red_list = {}
|
|
local goods_list = ShopModel:getInstance():GetGoodsListInfo(ShopType.MATE)
|
|
if goods_list then
|
|
for i,v in pairs(goods_list) do
|
|
for m,n in pairs(v) do
|
|
if n.goods_id == 102305 then--龙神单抽券限购必买,需要给红点
|
|
local left_num = n.quota_num - n.sold_out
|
|
local have_num = GoodsModel:getInstance():GetSpecialScore(MateConst.MateMoneyId)
|
|
if have_num >= n.price*n.discount/100 then
|
|
if left_num > 0 then
|
|
self.mate_shop_red = true
|
|
self.mate_shop_red_list[n.goods_id] = true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
return self.mate_shop_red
|
|
end
|
|
|
|
function MateModel:GetMateShopRedById(goods_id)
|
|
return self.mate_shop_red_list[goods_id] and self.mate_shop_red_list[goods_id] or false
|
|
end
|
|
|
|
--首次结成羁绊一次性红点
|
|
function MateModel:GetFirstGetFriendRed(force_turn_false)
|
|
if force_turn_false then
|
|
self.force_turn_mate_first_red_false = true
|
|
self.mate_first_get_friend_red = false
|
|
return self.mate_first_get_friend_red
|
|
end
|
|
|
|
if self.force_turn_mate_first_red_false then
|
|
self.mate_first_get_friend_red = false
|
|
return self.mate_first_get_friend_red
|
|
end
|
|
|
|
local have_no_mate = self:IsNoMateFriend()
|
|
|
|
if not have_no_mate then--有羁绊了就读缓存,判断是否引导过
|
|
local cookie_mate_first_state = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.MATE_FIRST_GET_FRIEND)
|
|
if cookie_mate_first_state and cookie_mate_first_state == 1 then--表示已经记录过了,不再执行首次红点的引导更名操作
|
|
self.mate_first_get_friend_red = false
|
|
else--没存状态说明需要引导红点
|
|
self.mate_first_get_friend_red = true
|
|
end
|
|
else--没有羁绊,则不管缓存,不给引导红点
|
|
self.mate_first_get_friend_red = false
|
|
end
|
|
|
|
return self.mate_first_get_friend_red
|
|
end
|
|
|
|
function MateModel:GetGameRewardList( )
|
|
-- local data = {}
|
|
-- for k,v in pairs(Config.Materhythmmasteraward) do
|
|
-- data[v.lv] = v
|
|
-- end
|
|
-- return data
|
|
return {}
|
|
end
|
|
|
|
function MateModel:GetGameTodayGetLv( )
|
|
local score_music = 0
|
|
local score_ball = 0
|
|
local lv_music = false
|
|
local lv_ball = false
|
|
local basic_music = self:GetGameInfo( MateConst.GameActId.Music )
|
|
local basic_ball = self:GetGameInfo( MateConst.GameActId.Ball )
|
|
if basic_music then
|
|
score_music = basic_music.daily_score
|
|
lv_music = self:GetMusicLvByScore( score_music )
|
|
end
|
|
if basic_ball then
|
|
score_ball = basic_ball.daily_score
|
|
lv_ball = self:GetBallLvByScore( score_ball )
|
|
end
|
|
return {[MateConst.GameActId.Music] = lv_music, [MateConst.GameActId.Ball] = lv_ball}
|
|
end
|
|
|
|
|
|
function MateModel:GetBallAwardListAndLv( data )
|
|
-- if not data then return {},1 end
|
|
-- local lv = 1
|
|
-- local game_info = self:GetGameInfo(MateConst.GameActId.Ball)
|
|
-- local cur_score = data.hits
|
|
-- local last_score = game_info and game_info.daily_score or 0
|
|
-- if last_score >= cur_score then return {},1 end
|
|
-- local result = {}
|
|
-- for k,v in pairs(Config.Matecatchballaward) do
|
|
-- if cur_score >= v.hit_low then
|
|
-- lv = lv >= v.lv and lv or v.lv
|
|
-- end
|
|
-- if cur_score >= v.hit_low then
|
|
-- if last_score < v.hit_low or last_score == 0 then
|
|
-- local temp = stringtotable(v.award)
|
|
-- for a,b in pairs(temp) do
|
|
-- local have = false
|
|
-- for c,d in pairs(result) do
|
|
-- if d[2] == b[2] and d[1] == b[1] then
|
|
-- d[3] = d[3] + b[3]
|
|
-- have = true
|
|
-- end
|
|
-- end
|
|
-- if not have then
|
|
-- table.insert( result, b )
|
|
-- end
|
|
-- end
|
|
-- end
|
|
-- end
|
|
-- end
|
|
-- return result,lv
|
|
return {},1
|
|
end
|
|
|
|
function MateModel:GetMusicAwardListAndLv( data )
|
|
-- if not data then return {},1 end
|
|
-- local lv = 1
|
|
-- local game_info = self:GetGameInfo(MateConst.GameActId.Music)
|
|
-- local cur_score = data.score
|
|
-- local last_score = game_info and game_info.daily_score or 0
|
|
-- if last_score >= cur_score then return {},1 end
|
|
-- local result = {}
|
|
-- for k,v in pairs(Config.Materhythmmasteraward) do
|
|
-- if cur_score >= v.score_low then
|
|
-- lv = lv >= v.lv and lv or v.lv
|
|
-- end
|
|
-- if cur_score >= v.score_low then
|
|
-- if last_score < v.score_low or last_score == 0 then
|
|
-- local temp = stringtotable(v.award)
|
|
-- for a,b in pairs(temp) do
|
|
-- local have = false
|
|
-- for c,d in pairs(result) do
|
|
-- if d[2] == b[2] and d[1] == b[1] then
|
|
-- d[3] = d[3] + b[3]
|
|
-- have = true
|
|
-- end
|
|
-- end
|
|
-- if not have then
|
|
-- table.insert( result, b )
|
|
-- end
|
|
-- end
|
|
-- end
|
|
-- end
|
|
-- end
|
|
-- return result,lv
|
|
return {},1
|
|
end
|
|
|
|
function MateModel:GetGameWaitStatus( )
|
|
return self.game_wait_status or {}
|
|
end
|
|
|
|
function MateModel:SetGameWaitStatus( value )
|
|
self.game_wait_status = value
|
|
end
|
|
|
|
--获取羁绊任务状态
|
|
function MateModel:GetSingleDogTaskStatus( )
|
|
local cur_id = 0
|
|
local over_id = 0
|
|
for k,v in ipairs(MateConst.SingleDogTask) do
|
|
cur_id = k
|
|
local task = TaskModel:GetTaskById( v )
|
|
if task then
|
|
if TaskModel:getInstance():IsTaskProgressFinish(task) then
|
|
--任务完成可领取奖励
|
|
cur_id = k
|
|
break
|
|
elseif TaskModel:getInstance():IsTaskFinished(task) then
|
|
--上一个已完成的任务
|
|
over_id = k
|
|
end
|
|
end
|
|
end
|
|
if cur_id == 0 and over_id ~= 0 then
|
|
--全部任务都完成了
|
|
cur_id = over_id
|
|
end
|
|
return cur_id,over_id
|
|
end
|
|
|
|
--获取羁绊任务状态
|
|
function MateModel:GetTaskStatusById( task_id )
|
|
local status = 0--0未接任务1接任务未完成2已完成任务未领取3任务完成并已领取奖励
|
|
local task = TaskModel:getInstance():GetTaskById(task_id)
|
|
if task then
|
|
status = TaskModel:getInstance():IsTaskProgressFinish(task) and 2 or 1
|
|
elseif TaskModel:getInstance():IsTaskFinished(task_id) then
|
|
status = 3
|
|
end
|
|
return status
|
|
end
|
|
|
|
--判定是否完成所有任务(或者是否有任务都在status状态)
|
|
function MateModel:IsFinishAllMarriageTask( status )
|
|
--0未接任务1接任务未完成2已完成任务未领取3任务完成并已领取奖励
|
|
local conf = MateConst.SingleDogTask
|
|
local result = true
|
|
if status then
|
|
for i=1,3 do
|
|
if self:GetTaskStatusById( conf[i] ) ~= status then
|
|
result = false
|
|
break
|
|
end
|
|
end
|
|
else
|
|
for i=1,3 do
|
|
if self:GetTaskStatusById( conf[i] ) ~= 3 then
|
|
result = false
|
|
break
|
|
end
|
|
end
|
|
end
|
|
return result
|
|
end
|
|
|
|
--交友大厅 查看信息
|
|
function MateModel:GetFindFriendData( my_info_is_new )
|
|
if my_info_is_new then
|
|
local my_data = false
|
|
for k,v in pairs(self.find_friend_data) do
|
|
if v.role_id == RoleManager.Instance.mainRoleInfo.role_id then
|
|
my_data = table.remove(self.find_friend_data,k)
|
|
break
|
|
end
|
|
end
|
|
if my_data then
|
|
table.insert( self.find_friend_data, 1, my_data )
|
|
end
|
|
end
|
|
return self.find_friend_data or {}
|
|
end
|
|
|
|
--交友大厅 查看信息
|
|
function MateModel:SetFindFriendData( value )
|
|
local level = RoleManager.Instance.mainRoleInfo.level
|
|
local vip_flag = RoleManager.Instance.mainRoleInfo.vip_flag
|
|
local sex = RoleManager.Instance.mainRoleInfo.sex
|
|
local power = RoleManager.Instance.mainRoleInfo.fighting
|
|
for k,v in pairs(value) do
|
|
v.dis_lv = math.abs(level - v.level)
|
|
v.dis_sex = sex == v.sex and 0 or 1
|
|
end
|
|
-------------------------
|
|
if #value > 1 then
|
|
local function sort_call( a,b )
|
|
if a.type > b.type then
|
|
--置顶信息在普通信息之下
|
|
return true
|
|
elseif a.type == b.type then
|
|
if a.dis_lv < b.dis_lv then
|
|
--等级与玩家当前等级差值从小到大排序
|
|
return true
|
|
elseif a.dis_lv == b.dis_lv then
|
|
if a.dis_sex > b.dis_sex then
|
|
-- 性别与玩家不同的在上
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
table.sort( value, sort_call )
|
|
end
|
|
self.find_friend_data = value
|
|
end
|
|
|
|
--通过类型id判读是否是羁绊信物
|
|
function MateModel:GetIsMateShipByTypeId( type_id )
|
|
if not type_id then return false end
|
|
if not self.ship_list_by_typeid then
|
|
self.ship_list_by_typeid = {}
|
|
for k,v in pairs(Config.Mateboat) do
|
|
self.ship_list_by_typeid[v.goods_id] = true
|
|
end
|
|
end
|
|
return self.ship_list_by_typeid[type_id] and true or false
|
|
end
|
|
|
|
--获得已激活的羁绊信物技能
|
|
function MateModel:GetActiveSkillList( stage,star )
|
|
local list_info = self:GetSkillList( )
|
|
local result = {}
|
|
for k,v in pairs(list_info) do
|
|
table.insert( result, {skill_id = v.skill_id, skill_lv = 1, is_lock = self:GetSkillIsLock(v.skill_id, stage)} )
|
|
end
|
|
return result
|
|
end
|
|
|
|
--羁绊拍照活动信息
|
|
function MateModel:GetPhotoActInfo( )
|
|
return self.photo_act_info
|
|
end
|
|
function MateModel:SetPhotoActInfo( value )
|
|
self.photo_act_info = value
|
|
end
|
|
|
|
--增送/收 羁绊点红点
|
|
function MateModel:GetGiftRedDot( check_new )
|
|
if check_new then
|
|
self.red_gift = false
|
|
local basic = self:GetBasicInfo( )
|
|
for k,v in pairs(basic) do
|
|
local have_get = SocialityModel.getInstance():IsInGiftRoleList(v.role_id,SocialityModel.TicketType.Mate)--对方已经赠送
|
|
local no_send = not SocialityModel.getInstance():IsInSendRoleList(v.role_id,SocialityModel.TicketType.Mate)--未赠送给对方
|
|
if have_get and SocialityModel.getInstance():GetTicketsGiftState(v.role_id,SocialityModel.TicketType.Mate) == 0 then
|
|
--好友有赠送--未领取
|
|
self.red_gift = true
|
|
break
|
|
elseif no_send then
|
|
--未赠送给对方
|
|
self.red_gift = true
|
|
break
|
|
end
|
|
end
|
|
end
|
|
return self.red_gift
|
|
end
|
|
|
|
|
|
|
|
--14953 日常任务列表信息
|
|
function MateModel:SetMateDailyListInfo(vo)
|
|
--前端给随机任务描述,如果重新那协议数据发现任务内容没变,就保持跟之前的随机数一致
|
|
for k,v in pairs(vo.mate_list) do
|
|
for m,n in pairs(self.mate_daily_list_info) do
|
|
if n.role_id == v.role_id and n.task_id == v.task_id then
|
|
if n.random_num then
|
|
v.random_num = n.random_num
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
self.mate_daily_list_info = vo.mate_list
|
|
self.mate_daily_other_list_info = vo.list
|
|
|
|
local sort_func = function ( a, b )
|
|
return a.role_id < b.role_id
|
|
end
|
|
table.sort(self.mate_daily_list_info, sort_func)
|
|
table.sort(self.mate_daily_other_list_info, sort_func)
|
|
|
|
for k,v in pairs(self.mate_daily_list_info) do
|
|
if v.task_id == 2 and v.state == 0 then--找到私聊任务,私聊任务需要前端去判断是否触发并通知后端
|
|
self.mate_daily_task_need_chat_role[v.role_id] = true
|
|
else
|
|
self.mate_daily_task_need_chat_role[v.role_id] = nil
|
|
end
|
|
|
|
if v.task_id == 4 and v.state == 0 then--找到分享羁绊任务,同私聊任务,需要前端判断触发并通知后端
|
|
self.mate_daily_task_need_share_mate_role[v.role_id] = true
|
|
else
|
|
self.mate_daily_task_need_share_mate_role[v.role_id] = nil
|
|
end
|
|
|
|
if not v.random_num then
|
|
local task_cfg = self:GetMateDailyTaskCfgById(v.task_id)
|
|
local condition_tb = stringtotable(Trim(task_cfg.condition))
|
|
v.random_num = math.random(1, TableSize(condition_tb))
|
|
end
|
|
end
|
|
end
|
|
|
|
function MateModel:GetMateDailyTaskNeedChatData( )
|
|
return self.mate_daily_task_need_chat_role
|
|
end
|
|
|
|
function MateModel:GetMateDailyTaskNeedShareData( )
|
|
return self.mate_daily_task_need_share_mate_role
|
|
end
|
|
|
|
function MateModel:GetMateDailyListInfo( )
|
|
return self.mate_daily_list_info
|
|
end
|
|
|
|
function MateModel:GetMateDailyOtherListInfo( )
|
|
return self.mate_daily_other_list_info
|
|
end
|
|
|
|
--14954 更新日常任务状态
|
|
function MateModel:UpdateMateDailyState(vo)
|
|
for k,v in pairs(vo.mate_list) do
|
|
for m,n in pairs(self.mate_daily_list_info) do
|
|
if n.role_id == v.role_id then
|
|
n.progress = v.progress
|
|
n.state = v.state
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
--获取日常任务对应配置
|
|
function MateModel:GetMateDailyTaskCfgById(task_id)
|
|
return Config.Matedailytask[task_id] and Config.Matedailytask[task_id] or nil
|
|
end
|
|
|
|
--更新任务领奖状态
|
|
function MateModel:UpdateMateDailyRewardState(vo)
|
|
for k,v in pairs(self.mate_daily_list_info) do
|
|
if vo.role_id == v.role_id and v.state == 1 then
|
|
v.state = 2
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
function MateModel:SetMateAdBtnWorldPos(x, y)
|
|
self.mate_ad_btn_pos_x = x
|
|
self.mate_ad_btn_pos_y = y
|
|
end
|
|
|
|
function MateModel:GetMateAdBtnWorldPos()
|
|
return self.mate_ad_btn_pos_x, self.mate_ad_btn_pos_y
|
|
end
|
|
|
|
function MateModel:SetMateAdRewardStatus(bool)
|
|
self.have_get_matead_reward = bool or false
|
|
end
|
|
|
|
function MateModel:GetMateAdRewardStatus()
|
|
return self.have_get_matead_reward
|
|
end
|