|
|
- SocialityModel = SocialityModel or BaseClass(BaseModel)
-
- SocialityModel.REFRESH_RED_POINT = "REFRESH_RED_POINT"
- SocialityModel.REQUEST_CCMD_EVENT = "SocialityModel.REQUEST_CCMD_EVENT" --请求协议
- SocialityModel.UPDATE_ADD_FRIEND_VIEW = "SocialityModel.UPDATE_ADD_FRIEND_VIEW" --更新推荐好友或搜索好友
- SocialityModel.UPDATE_APPLY_FRIEND_VIEW = "SocialityModel.UPDATE_APPLY_FRIEND_VIEW" --更新好友申请列表
- SocialityModel.REQUEST_SOCIAL_LIST = "SocialityModel.REQUEST_SOCIAL_LIST" --请求社交关系列表
- SocialityModel.UPDATE_SOCIALITY_VIEW = "SocialityModel.UPDATE_SOCIALITY_VIEW" --更新社交列表
- SocialityModel.SELECT_FIREND = "SocialityModel.SELECT_FIREND" --选中好友
- SocialityModel.UPDATE_RECEIVE_VIEW = "SocialityModel.UPDATE_RECEIVE_VIEW" --更新收到鲜花界面
- SocialityModel.SHOW_FLOWER_EFFECT = "SocialityModel.SHOW_FLOWER_EFFECT" --播放特效
- SocialityModel.STOP_FLOWER_EFFECT = "SocialityModel.STOP_FLOWER_EFFECT" --停止播放特效
- SocialityModel.UPDATE_CHARM_VIEW = "SocialityModel.UPDATE_CHARM_VIEW" --更新魅力值
- SocialityModel.REQUEST_OTHER_INFO = "SocialityModel.REQUEST_OTHER_INFO" --请求他人信息,弹框
- SocialityModel.UPDATE_OTHER_ROLE_RELA = "SocialityModel.UPDATE_OTHER_ROLE_RELA" --更新他人信息
-
- SocialityModel.UPDATE_ALL_ADD_FRIEND_VIEW = "SocialityModel.UPDATE_ALL_ADD_FRIEND_VIEW" --在添加好友界面中点"一键添加好友"后刷新界面
- SocialityModel.UPDATE_SMASH_EGG_MAIN_VIEW = "SocialityModel.UPDATE_SMASH_EGG_MAIN_VIEW" --在砸蛋完之后的更新界面
- SocialityModel.UPDATE_EGG_VIEW_CAHRM = "SocialityModel.UPDATE_EGG_VIEW_CAHRM" --更新砸蛋界面中的对方的魅力值
- SocialityModel.UPDATE_SMASH_EGG_NUM = "SocialityModel.UPDATE_SMASH_EGG_NUM" --更新砸蛋界面中的砸蛋次数
-
- SocialityModel.OPEN_FRIEND_MSG_VIEW = "SocialityModel.OPEN_FRIEND_MSG_VIEW" --打开聊天界面上方的好友信息栏
- SocialityModel.REFRESH_SUB_BTN_RED = "SocialityModel.REFRESH_SUB_BTN_RED" --刷新subBtn的红点
- SocialityModel.UPDATE_TICKETS_STATE = "SocialityModel.UPDATE_TICKETS_STATE" --刷新票券状态
- SocialityModel.UPDATE_FLOWER_NUM = "SocialityModel.UPDATE_FLOWER_NUM" --送礼后刷新送礼界面
- SocialityModel.ANS_FRIEND_SHOW_DATA = "SocialityModel.ANS_FRIEND_SHOW_DATA" --查询好友信息返回形象
-
- SocialityModel.UPDATE_ALL_TICKETS_STATE = "SocialityModel.UPDATE_ALL_TICKETS_STATE"
-
- SocialityModel.CLOSE_ASSISTANT_CONTENT_BAR = "SocialityModel.CLOSE_ASSISTANT_BAR" --关闭小助手的上拉栏
- SocialityModel.UPDATE_RECOMMEND_TEXT = "SocialityModel.UPDATE_RECOMMEND_TEXT" --刷新推荐好友文本为查找结果
- SocialityModel.CHAT_WITH_ROLEID = "SocialityModel.CHAT_WITH_ROLEID"--和指定id的人聊天
- SocialityModel.UPDATE_SOCIALITY_RECENT_VIEW = "SocialityModel.UPDATE_SOCIALITY_RECENT_VIEW"--刷新最近联系人界面
-
- SocialityModel.UPDATE_ONE_WAY_SCROLL_VIEW_SIZE = "SocialityModel.UPDATE_ONE_WAY_SCROLL_VIEW_SIZE" -- 刷新聊天框大小
- SocialityModel.UPDATE_TAB_SUB_ITEM = "SocialityModel.UPDATE_TAB_SUB_ITEM"
- SocialityModel.BROADCAST_MIDDLE_MESSAGE = "SocialityModel.BROADCAST_MIDDLE_MESSAGE" -- 广播指定系统提示
-
- SocialityModel.UPDATE_ADD_FRIEND_BTN_STATE = "SocialityModel.UPDATE_ADD_FRIEND_BTN_STATE" --添加好友后更新添加按钮的状态
-
- SocialityModel.OPEN_SOCIALITY_INTIMACY_ADDITION_AFTER_FIGURE = "SocialityModel.OPEN_SOCIALITY_INTIMACY_ADDITION_AFTER_FIGURE"
-
- SocialityModel.REFRESH_SOCIALITY_SP_GIFT_LIMIT = "SocialityModel.REFRESH_SOCIALITY_SP_GIFT_LIMIT"
- SocialityModel.UPDATE_RECEIVE_RECORD_THANK_STATE = "SocialityModel.UPDATE_RECEIVE_RECORD_THANK_STATE"--刷新收礼记录感谢状态
-
- SocialityModel.Index2Name =
- {
- [1] = {id = 1, name = "好友",module_id = 140, sub_id = 0},
- [2] = {id = 2, name = "添加",module_id = 140, sub_id = 0},
- [3] = {id = 3, name = "邮件",module_id = 190, sub_id = 0},
- }
-
- SocialityModel.TicketType =
- {
- Friend = 1,--好友互送名望券
- Mate = 2,--羁绊点
- }
-
- function SocialityModel:__init()
- SocialityModel.Instance = self
- self:Reset()
- end
-
- function SocialityModel:Reset( )
- self.relative_info = {} --关系列表
- self.apply_info = {} --好友申请列表
- self.receive_info = {} --收到鲜花信息
- self.flower_effect_list = {}
- self.charm_info = {} --魅力值,名誉,鲜花数信息
- self.sociality_is_open = false --社交界面是否打开
- self.has_private_chat = false --社交 是否有人私聊
-
- self.last_give_flower_info = nil --上次送礼的一个玩家记录
- self.search_info = {} --通过搜索得到的玩家信息
- self.is_open_give_view = false --是否打开送花界面
- self.has_new_flower_record = false --是否有新的送花记录
-
- self.not_update_recent = false
-
- self.last_inform_id = nil --本次登录中上次举报的人
-
- self.temp_chat_msg_content = nil --私聊好友的临时文本
-
- self.friend_tab_index = 2 --联系人列表的页签 1:最近 2:好友
-
- self.egg_info = nil --砸蛋次数等信息
-
- self.red_dot_list = {}
-
- self.thank_list = {}
-
- self.friend_state_list = {} --存放好友对自己的状态的列表,状态1:自己在对方好友列表中,状态6:自己不在对方好友列表中
-
- self.sp_gift_limit_data = {}
-
- self:ResetTickInfo()
- end
-
- --设置存放好友对自己的状态的列表,状态1:自己在对方好友列表中,状态6:自己不在对方好友列表中
- function SocialityModel:SetFriendStateList(vo)
- for k,v in pairs(vo.opp_rela_list) do
- self.friend_state_list[v.role_id] = {}
- self.friend_state_list[v.role_id].role_id = v.role_id
- self.friend_state_list[v.role_id].opp_rela_type = v.opp_rela_type
- self.friend_state_list[v.role_id].ask_response_status = v.ask_response_status
- end
- end
-
- --判断自己是否是对方的单向好友
- function SocialityModel:IsOneWayToFriend(role_id)
- if self.friend_state_list[role_id] and self.friend_state_list[role_id].opp_rela_type == 6 then
- return true
- end
- return false
- end
-
- --获取好友处理自己好友请求的处理状态 0-未响应 1-已拒绝 (主要用于单向好友的处理)
- function SocialityModel:GetAskResponseStatus(role_id)
- if self.friend_state_list[role_id] then
- return self.friend_state_list[role_id].ask_response_status
- end
- return 0
- end
-
-
- function SocialityModel:ResetTickInfo( )
- self.tickets_send_count = 0 --票券每日赠送次数
- self.tickets_gift_count = 0 --票券每日收礼次数
- self.send_role_list = {
- [SocialityModel.TicketType.Friend] = {},
- [SocialityModel.TicketType.Mate] = {}
- } --票券已赠玩家列表
- self.gift_role_list = {
- [SocialityModel.TicketType.Friend] = {},
- [SocialityModel.TicketType.Mate] = {}
- } --票券收礼玩家列表
- end
-
- function SocialityModel:getInstance()
- if SocialityModel.Instance == nil then
- SocialityModel.New()
- end
- return SocialityModel.Instance
- end
-
- function SocialityModel:GetSocialSubView( index )
- local sub_view = nil
- if index == 1 then
- sub_view = SocialityFriendView
- elseif index == 3 then
- sub_view = SocialityMailView
- elseif index == 2 then
- sub_view = SocialityAddFriendView
- end
- return sub_view
- end
-
- function SocialityModel:GetTabData( )
- local tab_data = {}
- for i,v in ipairs(SocialityModel.Index2Name) do
- table.insert(tab_data, SocialityModel.Index2Name[i])
- end
- -- local tab_data = {"好友","邮件",}
- -- if ClientConfig.alpha_mode then --审核状态屏蔽邮件 --暂时不需要屏蔽
- -- tab_data = {{name = "好友", light_res = "", dark_res = ""}}
- -- end
- return tab_data
- end
-
- -- 判断是否到达好友数量上限
- function SocialityModel:CheckIsFullFriend()
- local is_full = false
- local cfg = Config.Relaconfig
- if cfg and cfg[1] then
- local list = self:GetRelativeInfoByType(Config.ConfigSocial.RelativeType.friend)
- if list then
- is_full = TableSize(list) == cfg[1].value
- end
- end
- return is_full
- end
-
- function SocialityModel:GetFriendTabData( )
- local tab_data = {
- -- [1] = {main_tab = "最近联系", sub_tab = {}, info = {}},
- -- [2] = {main_tab = "我的好友", sub_tab = {}, info = {}},
- -- [3] = {main_tab = "社团成员", sub_tab = {}, info = {}},
- -- [4] = {main_tab = "我的仇人", sub_tab = {}, info = {}},
- -- [5] = {main_tab = "黑名单", sub_tab = {}, info = {}},
-
- [1] = {main_tab = "我的好友", sub_tab = {}, info = {}},
- [2] = {main_tab = "羁绊", sub_tab = {}, info = {}},
- [3] = {main_tab = "黑名单", sub_tab = {}, info = {}},
- }
-
- local function setInfo( index, type )
- local list = self:GetRelativeInfoByType(type)
- tab_data[index].sub_tab = list
- local info = tab_data[index].info
- info.totalNum = #list
- info.onLineNum = self:GetOnLineNumByType(type)
- end
- -- --最近联系
- -- local list, num = self:GetRecentFriendList()
- -- tab_data[1].sub_tab = list
- -- local info = tab_data[1].info
- -- info.totalNum = #list
- -- info.onLineNum = num
- --好友
- setInfo(1, Config.ConfigSocial.RelativeType.friend)
- --羁绊
- setInfo(2, Config.ConfigSocial.RelativeType.magee)
- --黑名单
- setInfo(3, Config.ConfigSocial.RelativeType.black)
- return tab_data
- end
-
- function SocialityModel:GetRecentFriendTabData()
- local tab_data = {
- [1] = {main_tab = "最近联系", sub_tab = {}, info = {}},
- }
-
- --最近联系
- local list, num = self:GetRecentFriendList()
- tab_data[1].sub_tab = list
- local info = tab_data[1].info
- info.totalNum = #list
- info.onLineNum = num
-
- return tab_data
- end
-
- function SocialityModel:GetInfoByIndex( index, sub_index )
- local list = {}
- --如果传进来的index是1要分两种情况,当前栏是最近联系人和当前栏是联系人
- if index == 1 then
- if self.friend_tab_index == 1 then
- list = self:GetRecentFriendList()
- else
- list = self:GetRelativeInfoByType(Config.ConfigSocial.RelativeType.friend)
- end
- elseif index == 2 then
- list = self:GetRelativeInfoByType(Config.ConfigSocial.RelativeType.magee)
- elseif index == 3 then
- list = self:GetRelativeInfoByType(Config.ConfigSocial.RelativeType.black)
- -- elseif index == 5 then
- -- list = self:GetRelativeInfoByType(Config.ConfigSocial.RelativeType.black)
- end
- return list[sub_index]
- end
-
- --根据私聊id查找索引
- function SocialityModel:GetIndexByChatKey( key )
- local list = self:GetRelativeInfoByType(Config.ConfigSocial.RelativeType.friend)
- for k,v in pairs(list) do
- if v.role_id == key then
- return 1, k
- end
- end
- list = self:GetRelativeInfoByType(Config.ConfigSocial.RelativeType.magee)
- for k,v in pairs(list) do
- if v.role_id == key then
- return 2, k
- end
- end
- list = self:GetRelativeInfoByType(Config.ConfigSocial.RelativeType.black)
- for k,v in pairs(list) do
- if v.role_id == key then
- return 3, k
- end
- end
- end
-
- function SocialityModel:GetRecentListIndex(key)
- local list = self:GetRecentFriendList()
- for k,v in pairs(list) do
- if v.role_id == key then
- return 1, k
- end
- end
- end
-
-
- function SocialityModel:InitRelaList( )
- self.relative_info[1] = {}
- self.relative_info[2] = {}
- self.relative_info[5] = {}
- self.relative_info[6] = {}
- end
-
- function SocialityModel:SetRelativeInfo(type,list,do_not_sort)
- self.relative_info[type] = {}
- --排序 online_flag为2是离线挂机,当成0来排序
- for k,v in pairs(list) do
- if v.online_flag==2 then
- v.isOnline = 0
- else
- v.isOnline = v.online_flag
- end
- -- if type == Config.ConfigSocial.RelativeType.black then
- -- v.intimacy = 0
- -- end
- end
- if not do_not_sort then
- if type == Config.ConfigSocial.RelativeType.friend then
- local arg = {"isOnline", "intimacy", "lv", "add_time"}
- local condition = {Array.UPPER, Array.UPPER, Array.UPPER, Array.LOWER,}
- SortTools.MoreKeysSorter(list, arg, condition)
- elseif type == Config.ConfigSocial.RelativeType.magee then
- local arg = {"isOnline", "intimacy", "lv", "add_time"}
- local condition = {Array.UPPER, Array.UPPER, Array.UPPER, Array.LOWER,}
- SortTools.MoreKeysSorter(list, arg, condition)
- -- elseif type == Config.ConfigSocial.RelativeType.enemy then
- -- local arg = {"isOnline", "add_time"}
- -- local condition = {Array.UPPER, Array.LOWER,}
- -- SortTools.MoreKeysSorter(list, arg, condition)
- -- elseif type == Config.ConfigSocial.RelativeType.black then
- -- local arg = {"add_time"}
- -- local condition = {Array.LOWER,}
- -- SortTools.MoreKeysSorter(list, arg, condition)
- end
- end
- --如果是type=5最近联系人的时候,在GetRecentFriendList中单独进行排序
- --如果type=6单向好友时,不做处理,存起来就行,单向好友不做单独列表展示,只用于最近联系人里查询
-
-
- if type == 1 then
- --添加“小助手”联系人
- local assistant = {}
- assistant.lv = 0
- assistant.guild_name = ""
- assistant.marriage_type = 0
- assistant.last_logout_time = 0
- assistant.sup_vip_type = 0
- assistant.profile_photo_id = 999999
- assistant.add_time = 0
- assistant.vip_flag = 0
- assistant.isOnline = 1
- assistant.sex = 2
- assistant.role_id = 1
- assistant.role_name = "AI管家"
- assistant.career = 0
- assistant.intimacy = 0
- assistant.online_flag = 1
- assistant.turn = 0
- assistant.last_chat_time = 0
-
- local is_have = false
- for k,v in pairs(list) do
- if v.role_id == 1 then
- is_have = true
- end
- end
- if not is_have then
- table.insert(list,1,assistant)
- end
- end
-
- self.relative_info[type] = list
- end
-
- function SocialityModel:GetRelativeInfoByType( type )
- return self.relative_info[type] or {}
- end
-
- function SocialityModel:UpdateShieldList( action_type,data)
- -- local list = self:GetRelativeInfoByType(Config.ConfigSocial.RelativeType.black)
- self.relative_info[Config.ConfigSocial.RelativeType.black] = self.relative_info[Config.ConfigSocial.RelativeType.black] or {}
- if not data then return end
- data.isOnline = 0
- -- data.intimacy = 0
- if action_type == 1 then
- --先对figuredata进行一次参数的转化,使其和好友的info信息匹配
- local new_data = self:TranslateFigureData(data)
- table.insert(self.relative_info[Config.ConfigSocial.RelativeType.black],new_data)
- else
- for k,v in pairs(self.relative_info[Config.ConfigSocial.RelativeType.black]) do
- if v.role_id == data.role_id then
- -- self.relative_info[Config.ConfigSocial.RelativeType.black][k] = nil
- table.remove(self.relative_info[Config.ConfigSocial.RelativeType.black],k)
- break
- end
- end
- end
- end
-
- --收到私聊消息后更新和该好友的最后私聊时间
- function SocialityModel:UpdateLastChatTime(role_id, last_chat_time)
- if self.relative_info and self.relative_info[Config.ConfigSocial.RelativeType.friend] then
- for k,v in pairs(self.relative_info[Config.ConfigSocial.RelativeType.friend]) do
- if v.role_id == role_id then
- v.last_chat_time = last_chat_time
- break
- end
- end
- end
- end
-
- --获取好友的信息
- function SocialityModel:GetFriendData(role_id)
- if self.relative_info then
- for k,v in pairs(self.relative_info) do
- for kk,vv in pairs(v) do
- if vv.role_id == role_id then
- return vv
- end
- end
- end
- end
- return nil
- end
-
- --有可能会遗漏,屏蔽名单数据再出现问题的话来这里和figureProtocol对照一下
- function SocialityModel:TranslateFigureData( data )
- local new_data = {}
- new_data.role_id = data.role_id
- new_data.role_name = data.name
- new_data.career = data.career
- new_data.sex = data.sex
- new_data.turn = data.turn
- new_data.lv = data.level
- new_data.sup_vip_type = data.sup_vip_type
- new_data.vip = data.vip_flag
- new_data.picture = data.picture
- new_data.picture_ver = data.picture_ver
- new_data.online_flag = 0
- new_data.intimacy = 0
- new_data.marriage_type = data.is_marriage
- new_data.last_chat_time = 0
- new_data.add_time = 0
- new_data.guild_name = data.guild_name
- new_data.last_logout_time = 0
- new_data.profile_photo_id = data.profile_photo_id
- return new_data
- end
-
- function SocialityModel:SetApplyInfo( info )
- self.apply_info = info
- end
-
- function SocialityModel:GetApplyInfo( )
- return self.apply_info
- end
-
- --获取请求好友的红点数量
- function SocialityModel:GetApplyInfoRedNum( )
- if self.apply_info and self.apply_info.ask_list then
- return #self.apply_info.ask_list
- else
- return 0
- end
- end
-
- function SocialityModel:SetReceiveInfo( info )
- self.receive_info = info
- self:GetRecentGiveFlowerInfo() --筛选出最近送花的一个
- end
-
- function SocialityModel:GetReceiveInfo(type)
- local data = {}
- if type == 1 or type == 2 then
- for i,v in ipairs(self.receive_info.record_list) do
- if v.code == type then
- table.insert(data,v)
- end
- end
- end
- return #data ~= 0 and data or nil
- end
-
- --22309
- function SocialityModel:UpdateGiftReciveThankState(vo)
- for i,v in ipairs(self.receive_info.record_list) do
- if v.code == 2 and v.id == vo.id then
- v.thank = 1
- end
- end
- end
-
- function SocialityModel:SetCharmInfo( info )
- self.charm_info = info
- end
-
- function SocialityModel:GetCharmInfo( )
- return self.charm_info
- end
-
- function SocialityModel:SetSearchInfo( vo )
- self.search_info =
- {role_id = vo.role_id, role_name = vo.role_name, career = vo.career, sex = vo.sex,
- turn = vo.turn, lv = vo.lv, vip = vo.vip,picture = vo.picture,
- picture_ver = vo.picture_ver, online_flag = vo.online_flag,sup_vip_type = vo.sup_vip_type}
-
- end
-
- --获取某类型好友的在线人数
- function SocialityModel:GetOnLineNumByType( type )
- local count = 0
- local list = self:GetRelativeInfoByType(type)
- for k,v in pairs(list) do
- if v.online_flag == 1 then
- count = count + 1
- end
- end
- return count
- end
-
- --获取最近联系的10个好友 与在线人数
- function SocialityModel:GetRecentFriendList( )
- local tb = {}
- local count = 0
-
- -- local list = self:GetRelativeInfoByType(Config.ConfigSocial.RelativeType.friend)
- local tb = DeepCopy(self:GetRelativeInfoByType(Config.ConfigSocial.RelativeType.recent))
- -- for k,v in pairs(list) do
- -- -- if v.last_chat_time~=0 then
- -- table.insert(tb, v)
- -- -- end
- -- end
- local arg = {"last_chat_time","last_logout_time"}
- local condition = {Array.UPPER,Array.UPPER}
- SortTools.MoreKeysSorter(tb, arg, condition)
-
- local result = {}
- local len = #tb>10 and 10 or #tb
- for i=1, len do
- if tb[i].online_flag==1 then
- count = count + 1
- end
- table.insert(result, tb[i])
- end
- --在最近联系人一栏中添加“小助手”联系人
- local assistant = {}
- assistant.lv = 0
- assistant.guild_name = ""
- assistant.marriage_type = 0
- assistant.last_logout_time = 0
- assistant.sup_vip_type = 0
- assistant.profile_photo_id = 999999
- assistant.add_time = 0
- assistant.vip_flag = 0
- assistant.isOnline = 1
- assistant.sex = 2
- assistant.role_id = 1
- assistant.role_name = "AI管家"
- assistant.career = 0
- assistant.intimacy = 0
- assistant.online_flag = 1
- assistant.turn = 0
- assistant.last_chat_time = 0
-
- table.insert(result,1,assistant)
-
-
- return result, count
- end
-
- --是否好友, 仇人, 黑名单
- function SocialityModel:IsRelaviveType( id, type )
- local list = self:GetRelativeInfoByType(type)
- for k,v in ipairs(list) do
- if v.role_id == id then
- return true
- end
- end
- end
-
- --获得和该玩家的亲密度
- function SocialityModel:GetIntimacyByRoleID(role_id,relavive_type)
- local temp_list = self:GetRelativeInfoByType(relavive_type)
- for i,v in ipairs(temp_list) do
- if v.role_id == role_id then
- return v.intimacy
- end
- end
- return 0
- end
-
- --根据亲密度获取花语等级
- function SocialityModel:GetLvByIntimacy( intimacy )
- local lv = #Config.Intimacylv
- for k,v in ipairs(Config.Intimacylv) do
- if v.intimacy > intimacy then
- lv = tonumber(v.lv) - 1
- break
- end
- end
- return lv
- end
-
- --获取最大亲密度等级
- function SocialityModel:GetMaxIntimacyLv( )
- return #Config.Intimacylv
- end
-
- function SocialityModel:GetMaxIntimacyByLv( lv )
- intimacy = 999999999
- for k,v in pairs(Config.Intimacylv) do
- if v.lv == lv+1 then
- intimacy = v.intimacy
- break
- end
- end
- return intimacy
- end
-
- --获取指定亲密等级的初始亲密度
- function SocialityModel:GetIntimacyByLv(lv)
- for k,v in pairs(Config.Intimacylv) do
- if v.lv == lv then
- return v.intimacy
- end
- end
- return nil
- end
-
- function SocialityModel:GetIntimacyAttrByLv( lv )
- local data = {}
- if lv then
- for k,v in pairs(Config.Intimacylv) do
- if v.lv == lv then
- data = stringtotable(v.attr)
- break
- end
- end
- end
- return data
- end
-
- --根据亲密度等级获取颜色
- function SocialityModel:GetColorByIntimacyLv( lv )
- local color_id = 0
- for k,v in pairs(Config.Intimacylv) do
- if v.lv == lv then
- color_id = v.color
- break
- end
- end
- return ColorUtil:GetGoodsColor(color_id),color_id
- end
-
- --播放送花特效
- function SocialityModel:PlayFlowerEffect(vo)
- if #self.flower_effect_list >= 20 then
- table.remove(self.flower_effect_list,1)
- table.insert(self.flower_effect_list,vo)
- else
- table.insert(self.flower_effect_list,vo)
- end
- self:Fire(SocialityModel.SHOW_FLOWER_EFFECT)
- end
-
- --获取当前名誉名字
- function SocialityModel:GetFameName( )
- local info = self:GetCharmInfo()
- local name = ""
- if info and info.fame then
-
- for i,v in ipairs(Config.Famelv) do
- if info.fame>=v.fame then
- name = v.name
- else
- break
- end
- end
- end
- return name
- end
-
- --获取当前名誉级别
- function SocialityModel:GetFameIndex( )
- local info = self:GetCharmInfo()
- local index = 1
- if info and info.fame then
- for i,v in ipairs(Config.Famelv) do
- if info.fame>=v.fame then
- index = v.lv
- else
- break
- end
- end
- end
- return index
- end
-
-
- function SocialityModel:GetFriendOnLine()
- local list = {}
- local friendList = self:GetRelativeInfoByType(Config.ConfigSocial.RelativeType.friend)
- for i,v in ipairs(friendList) do
- if v.online_flag == 1 then
- table.insert(list,v)
- end
- end
- return list
- end
-
- function SocialityModel:GetVoById(type, role_id)
- local list = self:GetRelativeInfoByType(type)
- for i,v in ipairs(list) do
- if v.role_id == role_id then
- return v
- end
- end
- end
-
- function SocialityModel:GetVoByOnlyId(role_id)
- local list = self:GetRelativeInfoByType(Config.ConfigSocial.RelativeType.friend)
- for i,v in ipairs(list) do
- if v.role_id == role_id then
- return v
- end
- end
- list = self:GetRelativeInfoByType(Config.ConfigSocial.RelativeType.magee)
- for i,v in ipairs(list) do
- if v.role_id == role_id then
- return v
- end
- end
- -- list = self:GetRelativeInfoByType(Config.ConfigSocial.RelativeType.enemy)
- -- for i,v in ipairs(list) do
- -- if v.role_id == role_id then
- -- return v
- -- end
- -- end
- list = self:GetRelativeInfoByType(Config.ConfigSocial.RelativeType.black)
- for i,v in ipairs(list) do
- if v.role_id == role_id then
- return v
- end
- end
- end
-
- function SocialityModel:GetGiveList(new_list)
- local is_true = false
- local list = {}
- local friend_list = self:GetRelativeInfoByType(Config.ConfigSocial.RelativeType.friend)
- for i,v in pairs(new_list) do
- if v ~= nil then
- is_true = true
- break
- end
- end
- if not is_true then --new_list or #new_list <= 0 --判断table内有没有数据不能用# 可以用TableSize
- list = friend_list
- else
- table.insert(list, new_list)
- for i,v in ipairs(friend_list) do
- -- if v.role_id == new_list.role_id then
- -- table.remove(friend_list, i)
- -- end
- if v.role_id ~= new_list.role_id then --这里因为table的引用机制,所以不能用table.remove,会将关系列表中的好友删除
- table.insert(list, v)
- end
- end
- end
- -- table.insert(list, new_list)
- -- for i,v in ipairs(friend_list) do
- -- table.insert(list, v)
- -- end
-
- return list
- end
-
- function SocialityModel:GetRecentGiveFlowerInfo()
- if not self.receive_info.record_list or #self.receive_info.record_list < 0 then return end
-
- local has_record = false --先判断有没有送花记录先
- for i,v in pairs(self.receive_info.record_list) do
- if v and v.code == 1 then
- has_record = true
- break
- end
- end
- if has_record == false then return end
- local min_time_list = self.receive_info.record_list[1]
- for i,v in pairs(self.receive_info.record_list) do
- if (v.time >= min_time_list.time and v.code == 1) then
- min_time_list = v
- end
- end
- self.last_give_flower_info = min_time_list
- end
-
- function SocialityModel:GetSearchInfo()
- return self.search_info
- end
-
- function SocialityModel:SetLastGive(list)
- self.last_give_flower_info = list
- end
-
- function SocialityModel:GetLastInfo()
- return self.last_give_flower_info
- end
-
- --设置票券数据
- function SocialityModel:SetTicketsData(vo)
- self:ResetTickInfo()
- -------------------------
- self.tickets_send_count = vo.send_count
- self.tickets_gift_count = vo.gift_count
- for k,v in pairs(vo.send_info) do
- table.insert(self.send_role_list[v.type],v)
- end
- for k,v in pairs(vo.gift_info) do
- table.insert(self.gift_role_list[v.type],v)
- end
- self:Fire(SocialityModel.UPDATE_ALL_TICKETS_STATE)
- end
-
- --获取还没赠送票券的好友id列表
- function SocialityModel:GetCanSendTicketFriendIdList( )
- local need_id_list = {}
- local friend_list = DeepCopy(self:GetRelativeInfoByType(Config.ConfigSocial.RelativeType.friend))
-
- local arg = {"isOnline", "intimacy", "lv", "add_time"}
- local condition = {Array.UPPER, Array.UPPER, Array.UPPER, Array.LOWER,}
- SortTools.MoreKeysSorter(friend_list, arg, condition)
-
- local left_send_times = Config.Relaconfig[2].value-self.tickets_send_count
-
- local special_flag = left_send_times <= 0
-
- for i,v in ipairs(friend_list) do
- if v.role_id~=1 and not self:IsOneWayToFriend(v.role_id) and not self:IsInSendRoleList(v.role_id,SocialityModel.TicketType.Friend) and #need_id_list<left_send_times then
- table.insert(need_id_list,v.role_id)
- end
- end
- return need_id_list,special_flag
- end
-
- --获取还没领票券的好友id列表
- function SocialityModel:GetCanGetTicketFriendIdList( )
- local need_id_list = {}
- local friend_list = self:GetRelativeInfoByType(Config.ConfigSocial.RelativeType.friend)
- for i,v in ipairs(friend_list) do
- if v.role_id~=1 and not self:IsOneWayToFriend(v.role_id) and self:IsInGiftRoleList(v.role_id,SocialityModel.TicketType.Friend) then
- if self:GetTicketsGiftState(v.role_id) == 0 then
- table.insert(need_id_list,v.role_id)
- end
- end
- end
- return need_id_list
- end
-
- --判断是否送了该好友票券
- function SocialityModel:IsInSendRoleList(role_id,op_type)
- op_type = op_type or SocialityModel.TicketType.Friend
- for k,v in pairs(self.send_role_list[op_type]) do
- if role_id == v.role_id0 then
- return true
- end
- end
- return false
- end
-
- --判断该好友是否赠送了自己票券
- function SocialityModel:IsInGiftRoleList(role_id,op_type)
- op_type = op_type or SocialityModel.TicketType.Friend
- for k,v in pairs(self.gift_role_list[op_type]) do
- if role_id == v.role_id1 then
- return true
- end
- end
- return false
- end
-
- --收送票券后刷新票券状态
- function SocialityModel:UpdateTicketsState(state_type,role_id,op_type)
- op_type = op_type or SocialityModel.TicketType.Friend
- if state_type == 1 then--送票券之后
- local tb = {}
- tb.role_id0 = role_id
- table.insert(self.send_role_list[op_type],tb)
- if op_type == SocialityModel.TicketType.Friend then
- self.tickets_send_count = self.tickets_send_count+1 <= Config.Relaconfig[2].value and self.tickets_send_count+1 or Config.Relaconfig[2].value
- end
- elseif state_type == 2 then--领票券之后
- for k,v in pairs(self.gift_role_list[op_type]) do
- if role_id == v.role_id1 then
- v.val = 1
- end
- end
- if op_type == SocialityModel.TicketType.Friend then
- self.tickets_gift_count = self.tickets_gift_count+1 <= Config.Relaconfig[3].value and self.tickets_gift_count+1 or Config.Relaconfig[3].value
- end
- end
- end
-
- function SocialityModel:UpdateGiftRoleList(role_id,op_type)
- op_type = op_type or SocialityModel.TicketType.Friend
- local tb = {}
- tb.role_id1 = role_id
- tb.val = 0
- table.insert(self.gift_role_list[op_type],tb)
- end
-
- --获取该角色送礼给我的领取情况
- function SocialityModel:GetTicketsGiftState(role_id,op_type)
- op_type = op_type or SocialityModel.TicketType.Friend
- for k,v in pairs(self.gift_role_list[op_type]) do
- if role_id == v.role_id1 then
- return v.val
- end
- end
- end
-
- function SocialityModel:GetThankList( )
- return self.thank_list
- end
-
- function SocialityModel:SetThankList( value )
- self.thank_list[value] = value
- end
-
- function SocialityModel:AssistantSendMsg(msg)
- local mainVo = RoleManager.Instance.mainRoleInfo
-
- local info_assistant = {}
- info_assistant.channel = ChatModel.CHANNEL_CECRET
- info_assistant.ser_id = mainVo.server_id
- info_assistant.ser_num = 0
- info_assistant.ser_name = LoginController.Instance:GetPlatUserInfo().server_name
- info_assistant.player_list = {}
- local tb2 = {}
- tb2.player_id = mainVo.role_id
- tb2.name = mainVo.name
- tb2.level = mainVo.level
- tb2.career = mainVo.career
- tb2.dress_list = nil
- tb2.guild_id = mainVo.guild_id
- tb2.sex = mainVo.sex
- tb2.vip_flag = VipModel:getInstance():GetVipLevel()
- tb2.sup_vip_type = mainVo.sup_vip_type
- tb2.turn = mainVo.turn
- tb2.ser_id = mainVo.server_id
- -- tb2.picture_ver = mainVo.picture_ver
- -- tb2.picture = mainVo.picture
- tb2.profile_photo_id = mainVo.profile_photo_id
- -- ser_num = 0
- tb2.ser_name = LoginController.Instance:GetPlatUserInfo().server_name
- tb2.GM = mainVo.gm_flag
- local tb1 = {}
- tb1.player_id = 1
- tb1.name = "AI管家"
- tb1.level = 0
- tb1.career = 0
- tb1.dress_list = nil
- tb1.guild_id = 0
- tb1.sex = 2
- tb1.vip_flag = 0
- tb1.sup_vip_type = 0
- tb1.turn = 0
- tb1.ser_id = mainVo.server_id
- tb1.profile_photo_id = 999999
- -- ser_num = 0
- tb1.ser_name = LoginController.Instance:GetPlatUserInfo().server_name
- tb1.GM = 0
- table.insert(info_assistant.player_list,tb1)
- table.insert(info_assistant.player_list,tb2)
- info_assistant.msg = msg
-
- info_assistant.time = TimeUtil:getServerTime()
- ChatModel:getInstance():AddMsg(info_assistant)
-
- ChatModel:getInstance():Fire(ChatModel.CHANGE_CHANNEL_SEND_INTERVAL, info_assistant)
- ChatModel:getInstance():Fire(ChatModel.UPDATE_SEND_TIME)
- ChatModel:getInstance():AddMainRoleChatContent(info_assistant.msg, info_assistant.player_id)
-
- local player_id = info_assistant.player_list[1].player_id --取出私聊对象的id
- if player_id ~= RoleManager.Instance.mainRoleInfo.role_id then
- --收到私聊消息后更新和该好友的最后私聊时间
- SocialityModel:getInstance():UpdateLastChatTime(player_id,info_assistant.time)
- ChatModel:getInstance():SetChatInfo(true,info_assistant)
- ChatModel:getInstance():SetPriateChatInfo(info_assistant)--存储私聊对象的消息
- SocialityModel:getInstance():Fire(SocialityModel.REFRESH_SUB_BTN_RED)--刷新subBtn红点
- GlobalEventSystem:Fire(EventName.REFRESH_SOCIAL_RED_DOT)--更新外部红点
- end
- end
-
- function SocialityModel:SetSpGiftLimitData(vo)
- self.sp_gift_limit_data = vo.goods_list
- end
-
- function SocialityModel:GetSpGiftLimitData( )
- return self.sp_gift_limit_data
- end
|