|
|
- 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
|