源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

1069 lines
28 KiB

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