|
require("game.sociality.SocialityView")
|
|
require("game.sociality.SocialityModel")
|
|
require("game.sociality.SocialityFriendView")
|
|
require("game.sociality.SocialityMailView")
|
|
require("game.sociality.SocialityTabBar")
|
|
require("game.sociality.SocialityTabBtn")
|
|
require("game.sociality.SocialityTabSubBtn")
|
|
require("game.sociality.OperationView")
|
|
require("game.sociality.OperationItem")
|
|
require("game.sociality.SocialityAddFriendView")
|
|
require("game.sociality.SocialityAddFriendItem")
|
|
require("game.sociality.SocialityApplyItem")
|
|
require("game.sociality.SocialityFlowerView")
|
|
require("game.sociality.SocialityFlowerItem")
|
|
require("game.sociality.SocialityFriendSelectItem")
|
|
require("game.sociality.SocialityFriendSelectView")
|
|
require("game.sociality.SocialityFriendMsg")
|
|
require("game.sociality.SocialityReceiveItem")
|
|
require("game.sociality.SocialityAssistantChatItem")
|
|
require("game.sociality.SocialityAssistanChatBar")
|
|
require("game.sociality.SocialityGiftRecordView")
|
|
require("game.sociality.SocialityGiftRecordReceiveView")
|
|
require("game.sociality.SocialityGiftRecordGiveView")
|
|
require("game.sociality.SocialityGiveItem")
|
|
require("game.sociality.SocialityGiftAdditionItem")
|
|
require("game.sociality.SocialityGiftRecordIntimacyView")
|
|
require("game.sociality.SocialityGiftRecordFameView")
|
|
|
|
require("game.proto.140.Require140")
|
|
require("game.proto.223.Require223")
|
|
|
|
SocialityController = SocialityController or BaseClass(BaseController)
|
|
|
|
function SocialityController:__init()
|
|
SocialityController.Instance = self
|
|
|
|
self.model = SocialityModel:getInstance()
|
|
|
|
self:InitEvent()
|
|
self:RegisterAllProtocals()
|
|
end
|
|
|
|
function SocialityController:InitEvent()
|
|
local function onRequestHandler(...)
|
|
local args_list = {...}
|
|
if args_list[1] == 14000 then
|
|
self:SendFmtToGame(args_list[1], "c", args_list[2])
|
|
elseif args_list[1] == 14001 then
|
|
self:SendFmtToGame(args_list[1], "c", args_list[2])
|
|
elseif args_list[1] == 14002 then
|
|
self:SendFmtToGame(args_list[1], "s", args_list[2])
|
|
elseif args_list[1] == 14003 then
|
|
self:SendFmtToGame(args_list[1], "l", args_list[2])
|
|
elseif args_list[1] == 14004 then
|
|
self:SendFmtToGame(args_list[1], "c", args_list[2])
|
|
elseif args_list[1] == 14005 then
|
|
self:SendFmtToGame(args_list[1], "lc", args_list[2], args_list[3])
|
|
elseif args_list[1] == 14006 then
|
|
self:SendFmtToGame(args_list[1])
|
|
elseif args_list[1] == 14007 then
|
|
self:SendFmtToGame(args_list[1], "cl", args_list[2], args_list[3])
|
|
elseif args_list[1] == 14008 then
|
|
self:SendFmtToGame(args_list[1], "lshi", args_list[2],args_list[3], args_list[4], args_list[5])
|
|
elseif args_list[1] == 14009 then
|
|
self:SendFmtToGame(args_list[1], "lscc", args_list[2],args_list[3], args_list[4], args_list[5])
|
|
elseif args_list[1] == 14010 then
|
|
local role_id = tonumber(args_list[2])
|
|
if role_id and RoleManager.Instance.mainRoleInfo.role_id ~= role_id then
|
|
self:SendFmtToGame(args_list[1], "l",role_id)
|
|
end
|
|
elseif args_list[1] == 14011 then
|
|
local role_id = tonumber(args_list[2])
|
|
self:SendFmtToGame(args_list[1],"l",role_id)
|
|
elseif args_list[1] == 22301 then
|
|
self:SendFmtToGame(args_list[1], "licc", args_list[2],args_list[3], args_list[4], args_list[5])
|
|
elseif args_list[1] == 14015 then
|
|
self:SendFmtToGame(args_list[1])
|
|
elseif args_list[1] == 14017 then
|
|
self:SendFmtToGame(args_list[1], "lc", args_list[2],args_list[3])
|
|
elseif args_list[1] == 14018 then
|
|
self:SendFmtToGame(args_list[1], "lc", args_list[2],args_list[3])
|
|
elseif args_list[1] == 14020 then
|
|
self:SendFmtToGame(args_list[1], "l", args_list[2])
|
|
elseif args_list[1] == 14021 then
|
|
local data = args_list[2]
|
|
UserMsgAdapter.WriteBegin(14021)
|
|
UserMsgAdapter.WriteFMT("h", #data)
|
|
for k,v in ipairs(data) do
|
|
UserMsgAdapter.WriteFMT("l", v)
|
|
end
|
|
UserMsgAdapter.SendToGame()
|
|
elseif args_list[1] == 14022 then
|
|
local data = args_list[2]
|
|
UserMsgAdapter.WriteBegin(14022)
|
|
UserMsgAdapter.WriteFMT("h", #data)
|
|
for k,v in ipairs(data) do
|
|
UserMsgAdapter.WriteFMT("l", v)
|
|
end
|
|
UserMsgAdapter.SendToGame()
|
|
elseif args_list[1] == 14024 then
|
|
self:SendFmtToGame(args_list[1], "l", args_list[2])
|
|
elseif args_list[1] == 22309 then
|
|
self:SendFmtToGame(args_list[1], "l", args_list[2])
|
|
else
|
|
self:SendFmtToGame(args_list[1])
|
|
end
|
|
end
|
|
self.model:Bind(SocialityModel.REQUEST_CCMD_EVENT,onRequestHandler)
|
|
|
|
local function gameStartHandler( )
|
|
self.model:InitRelaList()
|
|
self.model:Fire(SocialityModel.REQUEST_SOCIAL_LIST)
|
|
self.model:Fire(SocialityModel.REQUEST_CCMD_EVENT,22307)
|
|
self.model:Fire(SocialityModel.REQUEST_CCMD_EVENT,22303)
|
|
self.model:Fire(SocialityModel.REQUEST_CCMD_EVENT,14016)
|
|
self.model:Fire(SocialityModel.REQUEST_CCMD_EVENT,22308)
|
|
self.game_start_req_handler = true
|
|
end
|
|
GlobalEventSystem:Bind(EventName.GAME_START, gameStartHandler)
|
|
|
|
-- 满足等级后请求信息
|
|
local function onLevelUp(level)
|
|
-- local lv = RoleManager.Instance.mainRoleInfo.level
|
|
if level == GetModuleOpenLevel(140) then
|
|
gameStartHandler()
|
|
end
|
|
|
|
--小助手消息推送
|
|
for k,v in pairs(Config.AssistantChat.LevelPushMsg) do
|
|
if v.lv == level then
|
|
self.model:AssistantSendMsg(v.msg)
|
|
end
|
|
end
|
|
end
|
|
RoleManager.Instance.mainRoleInfo:Bind(EventName.CHANGE_LEVEL, onLevelUp)
|
|
|
|
local function OnTaskSuccess(task_id)
|
|
--小助手消息推送
|
|
for k,v in pairs(Config.AssistantChat.TaskPushMsg) do
|
|
if task_id == v.task_id then
|
|
self.model:AssistantSendMsg(v.msg)
|
|
end
|
|
end
|
|
end
|
|
GlobalEventSystem:Bind(TaskEvent.ANS_FINISHED_TASK_LIST, OnTaskSuccess)
|
|
|
|
--绑定打开界面方法
|
|
local function onOpenSocialityView(tab_index)
|
|
local is_open = GetModuleIsOpen(140) or GetModuleIsOpen(190)
|
|
local open_min_lv = GetModuleOpenLevel(140) <= GetModuleOpenLevel(190) and GetModuleOpenLevel(140) or GetModuleOpenLevel(190)
|
|
if not is_open then
|
|
Message.show(string.format("%d级开放", open_min_lv))
|
|
return
|
|
end
|
|
if self.SocialityView == nil then
|
|
self.SocialityView = SocialityView.New()
|
|
end
|
|
self.SocialityView:Open(tab_index)
|
|
-- GlobalEventSystem:Fire(EventName.SOCIAL_CHAT_SEL) --在打开界面的情况下要选中私聊好友
|
|
MailModel:getInstance():Fire(MailEvent.UPDATE_TOP_BAR_RED)--打开界面时刷新一下主界面的邮件图标红点
|
|
end
|
|
GlobalEventSystem:Bind(EventName.OPEN_SOCIALITY_VIEW, onOpenSocialityView)
|
|
|
|
local function onCloseSocialityView()
|
|
if self.SocialityView and self.SocialityView:HasOpen() then
|
|
self.SocialityView:Close()
|
|
end
|
|
end
|
|
GlobalEventSystem:Bind(EventName.CLOSE_SOCIALITY_VIEW, onCloseSocialityView)
|
|
|
|
local function onOpenOperationView(info)
|
|
if self.OperationView == nil then
|
|
self.OperationView = OperationView.New()
|
|
end
|
|
-- if self.OperationView:HasOpen() then
|
|
-- self.OperationView:Close()
|
|
-- else
|
|
self.OperationView:Open(info)
|
|
-- end
|
|
end
|
|
GlobalEventSystem:Bind(EventName.OPEN_OPERATION_VIEW,onOpenOperationView)
|
|
|
|
local function onOpenSocialityFlowerView(roleVo, select_goods_id)
|
|
if roleVo and RoleManager.Instance.mainRoleInfo.role_id == roleVo.role_id then
|
|
Message.show("不能给自己送花")
|
|
return
|
|
end
|
|
if self.SocialityFlowerView == nil then
|
|
self.SocialityFlowerView = SocialityFlowerView.New()
|
|
end
|
|
self.SocialityFlowerView:Open(roleVo, select_goods_id)
|
|
end
|
|
GlobalEventSystem:Bind(EventName.OPEN_SOCIAL_FLOWER_VIEW, onOpenSocialityFlowerView)
|
|
|
|
local function onCloseSocialityFlowerView()
|
|
if self.SocialityFlowerView and self.SocialityFlowerView:HasOpen() then
|
|
self.SocialityFlowerView:Close()
|
|
end
|
|
end
|
|
GlobalEventSystem:Bind(EventName.CLOSE_SOCIAL_FLOWER_VIEW, onCloseSocialityFlowerView)
|
|
|
|
local function onOpenSocialityFriendSelView(flag, friend_list, op_type)
|
|
op_type = op_type or 1--点击类型,1为显示右侧按钮,2为不显示按钮,整个区域做点击热区
|
|
if flag then
|
|
if self.SocialityFriendSelectView == nil then
|
|
self.SocialityFriendSelectView = SocialityFriendSelectView.New()
|
|
end
|
|
self.SocialityFriendSelectView:Open(friend_list,op_type)
|
|
else
|
|
if self.SocialityFriendSelectView and self.SocialityFriendSelectView:HasOpen() then
|
|
self.SocialityFriendSelectView:Close()
|
|
end
|
|
end
|
|
end
|
|
GlobalEventSystem:Bind(EventName.OPEN_SOCIAL_FRIEND_SEL_VIEW, onOpenSocialityFriendSelView)
|
|
|
|
local function RequestSocialList()
|
|
self.wait_update = 3
|
|
-- self.wait_update = 1
|
|
self.model:Fire(SocialityModel.REQUEST_CCMD_EVENT, 14000, 1)--请求好友
|
|
self.model:Fire(SocialityModel.REQUEST_CCMD_EVENT, 14000, 2)--请求羁绊
|
|
self.model:Fire(SocialityModel.REQUEST_CCMD_EVENT, 14000, 5)--请求最近联系人
|
|
self.model:Fire(SocialityModel.REQUEST_CCMD_EVENT, 14000, 6)--请求单向好友列表
|
|
end
|
|
self.model:Bind(SocialityModel.REQUEST_SOCIAL_LIST, RequestSocialList)
|
|
|
|
--初始化界面时请求一部分需要红点判断的数据
|
|
local onInitMainUIHandler = function ()
|
|
self.model:Fire(SocialityModel.REQUEST_CCMD_EVENT, 14006) --好友列表
|
|
self.model:Fire(SocialityModel.REQUEST_CCMD_EVENT, 22302) --送花收花记录
|
|
self.model:Fire(SocialityModel.REQUEST_CCMD_EVENT, 22304) --上线之后下线期间的送花提醒
|
|
end
|
|
self:Bind(EventName.INIT_MAINUI_EVENT, onInitMainUIHandler)
|
|
|
|
local function onRequestOther( role_id, x, y, chat_info, force_x, force_y )
|
|
--记录点击坐标
|
|
SocialityModel:getInstance().mousePos = Vector2(x, y)
|
|
if force_x and force_y then
|
|
SocialityModel:getInstance().operationPos = Vector2(force_x, force_y)
|
|
else
|
|
SocialityModel:getInstance().operationPos = false
|
|
end
|
|
self.model.need_show_operation = true--重置为14010协议回调后打开好友互动面板
|
|
if chat_info and chat_info.ser_id ~= RoleManager.Instance:GetMainRoleServerId() then -- 外服玩家时仅显示“查看信息按钮”
|
|
chat_info.rela = 1 -- OPERATION_VIEW查看时展示出来的需要这个参
|
|
GlobalEventSystem:Fire(EventName.OPEN_OPERATION_VIEW, chat_info)
|
|
self.model.need_show_operation = false
|
|
else
|
|
SocialityModel:getInstance():Fire(SocialityModel.REQUEST_CCMD_EVENT, 14010, role_id)
|
|
end
|
|
end
|
|
self.model:Bind(SocialityModel.REQUEST_OTHER_INFO, onRequestOther)
|
|
|
|
--和指定id的人私聊(如陌生人聊天)
|
|
local function onChatWithRoleId(role_id, msg_content)
|
|
--不在最近联系人列表中人发来消息时加入最近联系人列表
|
|
if role_id ~= RoleManager.Instance.mainRoleInfo.role_id and
|
|
not self.model:IsRelaviveType(role_id,Config.ConfigSocial.RelativeType.recent) then
|
|
self.model:Fire(SocialityModel.REQUEST_CCMD_EVENT,14020,role_id)
|
|
end
|
|
ChatModel:getInstance().need_chat_key = role_id
|
|
self.model.only_request_recent_flag = true--标识:只请求最近联系人列表
|
|
if msg_content then
|
|
self.model.temp_chat_msg_content = msg_content
|
|
else
|
|
self.model.temp_chat_msg_content = nil
|
|
end
|
|
self.model:Fire(SocialityModel.REQUEST_CCMD_EVENT, 14000, 5)--请求最近联系人
|
|
-- GlobalEventSystem:Fire(EventName.OPEN_SOCIALITY_VIEW, 1)
|
|
end
|
|
self.model:Bind(SocialityModel.CHAT_WITH_ROLEID,onChatWithRoleId)
|
|
|
|
--intimacy 只在查看好友的亲密度时才传
|
|
local function onOpenSocialityGiftRecordView(index,intimacy,info,figure)
|
|
if self.sociality_gift_record_view == nil then
|
|
self.sociality_gift_record_view = SocialityGiftRecordView.New()
|
|
end
|
|
-- if self.sociality_gift_record_view:HasOpen() then
|
|
-- self.sociality_gift_record_view:Close()
|
|
-- else
|
|
self.sociality_gift_record_view:Open(index,intimacy,info,figure)
|
|
-- end
|
|
end
|
|
GlobalEventSystem:Bind(EventName.OPEN_SOCIAL_GIFT_RECORD_VIEW, onOpenSocialityGiftRecordView)
|
|
end
|
|
|
|
function SocialityController:RegisterAllProtocals()
|
|
self:RegisterProtocal(14000,"handle14000")
|
|
self:RegisterProtocal(14001,"handle14001")
|
|
self:RegisterProtocal(14002,"handle14002")
|
|
self:RegisterProtocal(14003,"handle14003")
|
|
self:RegisterProtocal(14004,"handle14004")
|
|
self:RegisterProtocal(14005,"handle14005")
|
|
self:RegisterProtocal(14006,"handle14006")
|
|
self:RegisterProtocal(14007,"handle14007")
|
|
self:RegisterProtocal(14008,"handle14008")
|
|
self:RegisterProtocal(14009,"handle14009")
|
|
self:RegisterProtocal(14010,"handle14010")
|
|
self:RegisterProtocal(14011,"handle14011")
|
|
self:RegisterProtocal(14013,"handle14013")
|
|
self:RegisterProtocal(14014,"handle14014")
|
|
self:RegisterProtocal(14015,"handle14015")
|
|
self:RegisterProtocal(14016,"handle14016")
|
|
self:RegisterProtocal(14017,"handle14017")
|
|
self:RegisterProtocal(14018,"handle14018")
|
|
self:RegisterProtocal(14019,"handle14019")
|
|
self:RegisterProtocal(14021,"handle14021")
|
|
self:RegisterProtocal(14022,"handle14022")
|
|
self:RegisterProtocal(14023,"handle14023")
|
|
self:RegisterProtocal(14024,"handle14024")
|
|
|
|
self:RegisterProtocal(22300,"handle22300")
|
|
self:RegisterProtocal(22301,"handle22301")
|
|
self:RegisterProtocal(22302,"handle22302")
|
|
self:RegisterProtocal(22303,"handle22303")
|
|
self:RegisterProtocal(22304,"handle22304")
|
|
self:RegisterProtocal(22308,"handle22308")
|
|
self:RegisterProtocal(22309,"handle22309")
|
|
end
|
|
|
|
function SocialityController:handle14000()
|
|
local vo = SCMD14000.New(true)
|
|
--14007删除好友时不重新刷新最近联系人列表,防止最近联系人列表顺序立刻刷新
|
|
if self.model.not_update_recent and vo.type == 5 then
|
|
self.model.not_update_recent = false -- 重置刷新的flag
|
|
else
|
|
self.model:SetRelativeInfo(vo.type, vo.rela_list)
|
|
end
|
|
|
|
if self.model.only_request_recent_flag then--如果是单独只请求了最近联系人的情况,不需要等待其他列表返回再刷新界面
|
|
self.model.only_request_recent_flag = false
|
|
if self.SocialityView == nil then
|
|
self.SocialityView = SocialityView.New()
|
|
self.SocialityView:Open(1)
|
|
end
|
|
self.model.only_show_recent_view = true--单独给从外部私聊他人的情况处理界面刷新
|
|
self.model:Fire(SocialityModel.UPDATE_SOCIALITY_RECENT_VIEW)
|
|
return
|
|
end
|
|
|
|
if self.model.only_request_mate_flag then--如果是单独只请求了羁绊好友的情况,直接记录好数据就行
|
|
self.model.only_request_mate_flag = false
|
|
return
|
|
end
|
|
|
|
if self.wait_update and self.wait_update > 0 then
|
|
self.wait_update = self.wait_update - 1
|
|
else
|
|
--发送14021协议请求自己对好友的状态列表
|
|
if self.game_start_req_handler then
|
|
local friend_data = {}
|
|
for k,v in pairs(self.model:GetRelativeInfoByType(1)) do
|
|
if v.role_id ~= 1 then--ai管家排除
|
|
table.insert(friend_data,v.role_id)
|
|
end
|
|
end
|
|
self.model:Fire(SocialityModel.REQUEST_CCMD_EVENT, 14021, friend_data)
|
|
end
|
|
self.game_start_req_handler = false
|
|
|
|
if not self.model.only_rqeuest_data then
|
|
self.model:Fire(SocialityModel.UPDATE_SOCIALITY_VIEW)
|
|
end
|
|
self.model.only_rqeuest_data = false
|
|
end
|
|
end
|
|
|
|
--请求添加好友界面的随机可添加的数据
|
|
function SocialityController:handle14001()
|
|
local vo = SCMD14001.New(true)
|
|
if vo.code == 1 then
|
|
--先过滤一遍,防止好友进入推荐列表中
|
|
local true_recommended_list = {}
|
|
for k,v in pairs(vo.recommended_list) do
|
|
local is_friend = self.model:IsRelaviveType(v.role_id,Config.ConfigSocial.RelativeType.friend)
|
|
if not is_friend then
|
|
true_recommended_list[#true_recommended_list+1] = v
|
|
end
|
|
end
|
|
self.model:Fire(SocialityModel.UPDATE_ADD_FRIEND_VIEW, true_recommended_list)
|
|
else
|
|
ErrorCodeShow(vo.code)
|
|
end
|
|
end
|
|
|
|
--在发送添加成功后刷新添加好友的界面
|
|
function SocialityController:handle14002()
|
|
local vo = SCMD14002.New(true)
|
|
self.model:SetSearchInfo(vo)
|
|
if vo.code == 1 then
|
|
local is_friend = self.model:IsRelaviveType(vo.role_id,Config.ConfigSocial.RelativeType.friend)
|
|
if is_friend then
|
|
Message.show("对方已经是好友了")
|
|
else
|
|
self.model:Fire(SocialityModel.UPDATE_ADD_FRIEND_VIEW, {[1] = vo})
|
|
self.model:Fire(SocialityModel.UPDATE_RECOMMEND_TEXT)
|
|
end
|
|
else
|
|
ErrorCodeShow(vo.code)
|
|
end
|
|
end
|
|
|
|
--点击一键添加所有好友之后的添加好友界面的刷新
|
|
function SocialityController:handle14015()
|
|
-- body
|
|
end
|
|
|
|
function SocialityController:handle14003()
|
|
local vo = SCMD14003.New(true)
|
|
if vo.code == 1 then
|
|
Message.show("您已成功添加对方为好友")
|
|
self.model:Fire(SocialityModel.UPDATE_ADD_FRIEND_BTN_STATE)
|
|
else
|
|
ErrorCodeShow(vo.code)
|
|
end
|
|
end
|
|
|
|
function SocialityController:handle14004()
|
|
local vo = SCMD14004.New(true)
|
|
ErrorCodeShow(vo.code)
|
|
--请求好友申请列表
|
|
if vo.code == 1 then
|
|
self.model:Fire(SocialityModel.REQUEST_CCMD_EVENT, 14006)
|
|
end
|
|
end
|
|
|
|
function SocialityController:handle14005()
|
|
local vo = SCMD14005.New(true)
|
|
ErrorCodeShow(vo.code)
|
|
--请求好友申请列表
|
|
if vo.code == 1 then
|
|
self.model:Fire(SocialityModel.REQUEST_CCMD_EVENT, 14006)
|
|
end
|
|
end
|
|
|
|
function SocialityController:handle14006()
|
|
local vo = SCMD14006.New(true)
|
|
-------------------------
|
|
-- local tb = {type = Config.ConfigMainIcon.TipType.friend}
|
|
-- if TableSize(vo.ask_list) > 0 then
|
|
-- if self.model:CheckIsFullFriend() then
|
|
-- if MsgManager:getInstance():IsMsgTypeShow(tb.type) then
|
|
-- MsgManager:getInstance():Remove(tb.type)
|
|
-- end
|
|
-- else
|
|
-- MsgManager:getInstance():Add(tb)
|
|
-- end
|
|
-- else
|
|
-- MsgManager:getInstance():Remove(tb.type)
|
|
-- end
|
|
-------------------------
|
|
|
|
--先过滤一遍,防止好友进入推荐列表中
|
|
local true_recommended_list = {}
|
|
true_recommended_list.ask_list = {}
|
|
for k,v in pairs(vo.ask_list) do
|
|
local is_friend = self.model:IsRelaviveType(v.role_id,Config.ConfigSocial.RelativeType.friend)
|
|
if not is_friend then
|
|
true_recommended_list.ask_list[#true_recommended_list.ask_list+1] = v
|
|
end
|
|
end
|
|
self.model:SetApplyInfo(true_recommended_list)
|
|
self.model:Fire(SocialityModel.UPDATE_APPLY_FRIEND_VIEW)
|
|
self.model:Fire(SocialityModel.UPDATE_ADD_FRIEND_BTN_STATE)
|
|
GlobalEventSystem:Fire(EventName.REFRESH_SOCIAL_RED_DOT) --刷新红点
|
|
|
|
if #true_recommended_list.ask_list > 0 then
|
|
MsgManager:getInstance():Add({type=Config.ConfigMainIcon.TipType.friend})
|
|
else
|
|
MsgManager:getInstance():Remove(Config.ConfigMainIcon.TipType.friend)
|
|
end
|
|
end
|
|
|
|
function SocialityController:handle14007()
|
|
local vo = SCMD14007.New(true)
|
|
ErrorCodeShow(vo.code)
|
|
if vo.code == 1 then
|
|
self.model.not_update_recent = true -- 删除好友时不要立刻刷新最近联系人的顺序
|
|
self.model:Fire(SocialityModel.REQUEST_SOCIAL_LIST)
|
|
end
|
|
end
|
|
|
|
function SocialityController:handle14008()
|
|
local vo = SCMD14008.New(true)
|
|
if GetModuleIsOpen(140,0) then
|
|
local is_friend = self.model:IsRelaviveType(vo.role_id,Config.ConfigSocial.RelativeType.friend)
|
|
if not is_friend then
|
|
self.model:Fire(SocialityModel.REQUEST_CCMD_EVENT, 14006)
|
|
end
|
|
end
|
|
end
|
|
|
|
function SocialityController:handle14009()
|
|
local vo = SCMD14009.New(true)
|
|
local strName = ""
|
|
local strType = ""
|
|
local rela_id = 1
|
|
|
|
--不管后端发过来rela是1还是6,他都是好友
|
|
if vo.rela_type == 1 or vo.rela_type == 6 then
|
|
vo.rela_type = 1
|
|
end
|
|
if vo.rela_type == 1 then
|
|
strName = "好友"
|
|
end
|
|
|
|
-- 最近联系人列表也要刷新其在线状态
|
|
local recent_list = self.model:GetRelativeInfoByType(Config.ConfigSocial.RelativeType.recent)
|
|
for i,v in ipairs(recent_list) do
|
|
if v.role_id == vo.role_id then
|
|
recent_list[i].online_flag = vo.online_flag
|
|
end
|
|
end
|
|
|
|
rela_id = Config.ConfigSocial.OnAndOffLine[vo.rela_type].relative_list_id
|
|
if vo.online_flag == 0 then
|
|
strType = "下线了"
|
|
elseif vo.online_flag == 1 then
|
|
strType = "上线了"
|
|
end
|
|
|
|
if self.model:IsRelaviveType(vo.role_id, Config.ConfigSocial.RelativeType.friend) then
|
|
Message.show(string.format("您的%s%s%s", strName, vo.role_name, strType))
|
|
end
|
|
|
|
--更新数据
|
|
local role = self.model:GetVoById(rela_id, vo.role_id) --公用的更新
|
|
if role then
|
|
role.online_flag = vo.online_flag
|
|
if vo.online_flag == 0 then --玩家下线时 更新上次登录的时间为当前的时间
|
|
role.last_logout_time = TimeUtil:getServerTime()
|
|
end
|
|
end
|
|
local info = self.model:GetRelativeInfoByType(rela_id)
|
|
if info then
|
|
self.model:SetRelativeInfo(rela_id, info,true)--不排序了,重新打开界面才排序
|
|
end
|
|
--特殊标记:有好友上下线通知时,会重排序好友列表,此标记避免选中其他好友
|
|
self.model.special_flag_online_changed = true
|
|
-- self.model:Fire(SocialityModel.UPDATE_SOCIALITY_VIEW, true)--重新刷列表太浪费了,改成单独刷item吧
|
|
self.model:Fire(SocialityModel.UPDATE_TAB_SUB_ITEM,vo.role_id)
|
|
end
|
|
|
|
function SocialityController:handle14010( )
|
|
local vo = SCMD14010.New(true)
|
|
if vo.code == 1 then
|
|
if self.model.need_show_operation == "none" then
|
|
--什麽都不用做的版本
|
|
elseif self.model.need_show_operation == "showLookView" then
|
|
--直接打开查看界面
|
|
GlobalEventSystem:Fire(EventName.OPEN_LOOK_ROLE_INFO_VIEW,vo.role_id,vo.rela)
|
|
elseif not self.model.need_show_operation then
|
|
GlobalEventSystem:Fire(EventName.OPEN_SOCIAL_FLOWER_VIEW, vo)
|
|
else
|
|
GlobalEventSystem:Fire(EventName.OPEN_OPERATION_VIEW, vo)
|
|
self.model.need_show_operation = false
|
|
end
|
|
self.model:Fire(SocialityModel.ANS_FRIEND_SHOW_DATA,vo)
|
|
self.model.need_show_operation = nil
|
|
else
|
|
ErrorCodeShow(vo.code)
|
|
GlobalEventSystem:Fire(EventName.SHOW_OTHER_HEAD, false)
|
|
end
|
|
end
|
|
|
|
function SocialityController:handle14013( )
|
|
local vo = SCMD14013.New(true)
|
|
for m,n in pairs(vo.update_list) do
|
|
local list = self.model:GetRelativeInfoByType(n.type)
|
|
for k,t in pairs(n.role_list) do
|
|
local find = false
|
|
for i,v in ipairs(list) do
|
|
if v.role_id == t.role_id then
|
|
list[i] = t
|
|
find = true
|
|
break
|
|
end
|
|
end
|
|
if not find then
|
|
table.insert(list, t)
|
|
end
|
|
-------------------------
|
|
--如果是好友,需要去羁绊数据同步修改
|
|
if n.type == 1 then
|
|
local mate_list = self.model:GetRelativeInfoByType(2)
|
|
for i,v in ipairs(mate_list) do
|
|
if v.role_id == t.role_id then
|
|
mate_list[i] = t
|
|
break
|
|
end
|
|
end
|
|
end
|
|
-------------------------
|
|
-------------------------
|
|
--如果是从单向好友变成好友,需要去单向好友列表修改
|
|
if n.type == 1 then
|
|
local one_way_list = self.model:GetRelativeInfoByType(6)
|
|
for i,v in ipairs(one_way_list) do
|
|
if v.role_id == t.role_id then
|
|
TableRemove(one_way_list,v)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
--如果是从好友变成单向好友,需要去删除好友列表中的数据
|
|
if n.type == 6 then
|
|
local friend_list = self.model:GetRelativeInfoByType(1)
|
|
for i,v in ipairs(friend_list) do
|
|
if v.role_id == t.role_id then
|
|
TableRemove(friend_list,v)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
-------------------------
|
|
-- 最近联系人列表也要刷新,但是聊天时间不要变
|
|
local recent_list = self.model:GetRelativeInfoByType(Config.ConfigSocial.RelativeType.recent)
|
|
for i,v in ipairs(recent_list) do
|
|
if v.role_id == t.role_id then
|
|
local old_chat_time = v.last_chat_time
|
|
recent_list[i] = t
|
|
recent_list[i].last_chat_time = old_chat_time
|
|
end
|
|
end
|
|
end
|
|
end
|
|
for i=1,3 do --列表排序
|
|
local info = self.model:GetRelativeInfoByType(i)
|
|
if info then
|
|
-- self.model:SetRelativeInfo(i, info)
|
|
self.model:SetRelativeInfo(i, info,true)
|
|
end
|
|
end
|
|
self.model.tab_sub_btn_do_not_scroll_to = true
|
|
self.model:Fire(SocialityModel.UPDATE_SOCIALITY_VIEW, false)
|
|
self.model:Fire(SocialityModel.REQUEST_CCMD_EVENT, 14006)
|
|
end
|
|
|
|
function SocialityController:handle14014( )
|
|
local vo = SCMD14014.New(true)
|
|
for m,n in pairs(vo.update_list) do
|
|
local delete_list = nil
|
|
local list = self.model:GetRelativeInfoByType(n.type)
|
|
for k,t in pairs(n.role_ids) do
|
|
for i,v in ipairs(list) do
|
|
if v.role_id == t.role_id then
|
|
delete_list = delete_list or {}
|
|
table.insert(delete_list, i)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
if delete_list then
|
|
for i, id in ipairs(delete_list) do
|
|
list[id] = nil
|
|
end
|
|
end
|
|
--重新排列
|
|
local temp = DeepCopy(list)
|
|
self.model.relative_info[n.type] = {}
|
|
for k,v in pairs(temp) do
|
|
table.insert(self.model.relative_info[n.type], v)
|
|
end
|
|
end
|
|
-- self.model:SaveRelativeInfo(vo)
|
|
self.model:Fire(SocialityModel.UPDATE_SOCIALITY_VIEW)
|
|
end
|
|
|
|
function SocialityController:handle14011( )
|
|
local vo = SCMD14011.New(true)
|
|
self.model:Fire(SocialityModel.UPDATE_OTHER_ROLE_RELA, vo)
|
|
end
|
|
|
|
function SocialityController:handle14016( )
|
|
local vo = SCMD14016.New(true)
|
|
self.model:SetTicketsData(vo)
|
|
GlobalEventSystem:Fire(EventName.REFRESH_SOCIAL_RED_DOT)
|
|
end
|
|
|
|
function SocialityController:handle14017( )
|
|
local vo = SCMD14017.New(true)
|
|
if vo.errcode == 1 then
|
|
if vo.type == SocialityModel.TicketType.Friend then--赠送名望券
|
|
Message.show("赠送成功!","success")
|
|
elseif vo.type == SocialityModel.TicketType.Mate then--赠送羁绊点
|
|
Message.show("赠送羁绊点成功","success")
|
|
end
|
|
self.model:UpdateTicketsState(1,vo.torole,vo.type)
|
|
self.model:Fire(SocialityModel.UPDATE_TICKETS_STATE,vo.torole)
|
|
GlobalEventSystem:Fire(EventName.REFRESH_SOCIAL_RED_DOT)
|
|
else
|
|
ErrorCodeShow(vo.errcode)
|
|
end
|
|
end
|
|
|
|
function SocialityController:handle14018( )
|
|
local vo = SCMD14018.New(true)
|
|
if vo.errcode == 1 then
|
|
if vo.type == SocialityModel.TicketType.Friend then
|
|
-- local goods_type_id = 100003
|
|
-- local goods_name = GoodsModel:getInstance():getGoodsName(goods_type_id,true,true)
|
|
-- local message_str = string.format("领取 %s x%s",goods_name,5)
|
|
-- Message.show(message_str,"award")
|
|
elseif vo.type == SocialityModel.TicketType.Mate then
|
|
Message.show("领取羁绊点成功","award")
|
|
end
|
|
self.model:UpdateTicketsState(2,vo.fromid,vo.type)
|
|
self.model:Fire(SocialityModel.UPDATE_TICKETS_STATE,vo.fromid)
|
|
GlobalEventSystem:Fire(EventName.REFRESH_SOCIAL_RED_DOT)
|
|
else
|
|
ErrorCodeShow(vo.errcode)
|
|
end
|
|
end
|
|
|
|
function SocialityController:handle14019( )
|
|
local vo = SCMD14019.New(true)
|
|
self.model:UpdateGiftRoleList(vo.from_id,vo.type)
|
|
self.model:Fire(SocialityModel.UPDATE_TICKETS_STATE,vo.from_id)
|
|
GlobalEventSystem:Fire(EventName.REFRESH_SOCIAL_RED_DOT)
|
|
end
|
|
|
|
function SocialityController:handle22300( )
|
|
local vo = SCMD22300.New(true)
|
|
ErrorCodeShow(vo.code)
|
|
end
|
|
|
|
function SocialityController:handle22301( )
|
|
local vo = SCMD22301.New(true)
|
|
|
|
if vo.code~=1 then
|
|
ErrorCodeShow(vo.code)
|
|
lua_soundM:PlayEffect(self, "fault",false,LuaSoundManager.SOUND_TYPE.UI)
|
|
else
|
|
Message.show("赠送成功","success")
|
|
self.model:Fire(SocialityModel.REQUEST_CCMD_EVENT, 22302)
|
|
self.model:Fire(SocialityModel.REQUEST_CCMD_EVENT, 22303)
|
|
self.model:Fire(SocialityModel.UPDATE_FLOWER_NUM,vo.receive_id,vo.week_charm,vo.intimacy)
|
|
end
|
|
end
|
|
|
|
function SocialityController:handle22302( )
|
|
local vo = SCMD22302.New(true)
|
|
-- print("==WQ==:SocialityController [start:743] vo:", vo)
|
|
-- PrintTable(vo)
|
|
-- print("==WQ==:SocialityController [end]")
|
|
if vo then
|
|
self.model:SetReceiveInfo(vo)
|
|
self.model:Fire(SocialityModel.UPDATE_RECEIVE_VIEW)
|
|
end
|
|
end
|
|
|
|
function SocialityController:handle22303( )
|
|
local vo = SCMD22303.New(true)
|
|
self.model:SetCharmInfo(vo)
|
|
self.model:Fire(SocialityModel.UPDATE_CHARM_VIEW)
|
|
end
|
|
|
|
function SocialityController:handle22304()
|
|
local vo = SCMD22304.New(true)
|
|
if vo.code == 1 then --在下线时有新的送花礼物 就显示提示
|
|
local tb = {}
|
|
tb.type = Config.ConfigMainIcon.TipType.flower
|
|
MsgManager:getInstance():Add(tb)
|
|
self.model.has_new_flower_record = true
|
|
end
|
|
end
|
|
|
|
-- ############ 陌生人私聊将其加入到最近联系人列表中 ##############
|
|
-- protocol=14020
|
|
-- {
|
|
-- c2s{
|
|
-- role_id:int64 // 将要私聊的陌生人id
|
|
-- }
|
|
-- }
|
|
function SocialityController:handle14020()
|
|
local vo = SCMD14020.New(true)
|
|
|
|
end
|
|
|
|
-- ############ 双向好友一方删除好友更新对方前端亲密度 ##############
|
|
-- protocol=14021
|
|
-- {
|
|
-- c2s{
|
|
-- friend_list:array{
|
|
-- role_id:int64 // 存在好友关系的角色Id
|
|
-- }
|
|
-- }
|
|
-- s2c{
|
|
-- type:int8 // 操作类型 1-客户端主动请求 2-服务端推送
|
|
-- opp_rela_list:array{
|
|
-- role_id:int64 // 存在好友关系的角色Id
|
|
-- opp_rela_type:int8 // 我在对方所处的关系
|
|
-- ask_response_status:int8 // 我在对方申请列表里面的处理状态 0-未响应 1-已拒绝 2-同意加好友
|
|
-- }
|
|
-- }
|
|
-- }
|
|
function SocialityController:handle14021()
|
|
local vo = SCMD14021.New(true)
|
|
self.model:SetFriendStateList(vo)
|
|
if vo.type == 1 then
|
|
-- if not self.model.only_rqeuest_data then
|
|
-- self.model:Fire(SocialityModel.UPDATE_SOCIALITY_VIEW)
|
|
-- end
|
|
-- self.model.only_rqeuest_data = false
|
|
elseif vo.type == 2 then
|
|
for k,v in pairs(vo.opp_rela_list) do
|
|
self.model:Fire(SocialityModel.UPDATE_TICKETS_STATE,v.role_id)
|
|
end
|
|
end
|
|
end
|
|
|
|
function SocialityController:handle14022( )
|
|
local vo = SCMD14022.New(true)
|
|
if vo.errcode~=1 then
|
|
ErrorCodeShow(vo.errcode)
|
|
else
|
|
self.model:Fire(SocialityModel.REQUEST_CCMD_EVENT, 14016)
|
|
end
|
|
end
|
|
|
|
function SocialityController:handle14023( )
|
|
local vo = SCMD14023.New(true)
|
|
if vo.errcode~=1 then
|
|
ErrorCodeShow(vo.errcode)
|
|
else
|
|
self.model:Fire(SocialityModel.REQUEST_CCMD_EVENT, 14016)
|
|
end
|
|
end
|
|
|
|
function SocialityController:handle14024( )
|
|
local vo = SCMD14024.New(true)
|
|
if vo.errcode~=1 then
|
|
ErrorCodeShow(vo.errcode)
|
|
else
|
|
self.model:Fire(SocialityModel.OPEN_SOCIALITY_INTIMACY_ADDITION_AFTER_FIGURE,vo)
|
|
end
|
|
end
|
|
|
|
function SocialityController:handle22308( )
|
|
local vo = SCMD22308.New(true)
|
|
self.model:SetSpGiftLimitData(vo)
|
|
self.model:Fire(SocialityModel.REFRESH_SOCIALITY_SP_GIFT_LIMIT)
|
|
end
|
|
|
|
function SocialityController:handle22309( )
|
|
local vo = SCMD22309.New(true)
|
|
-- print("==WQ==:SocialityController [start:847] vo:", vo)
|
|
-- PrintTable(vo)
|
|
-- print("==WQ==:SocialityController [end]")
|
|
if vo.errcode == 1 then
|
|
Message.show("感谢成功!")
|
|
self.model:UpdateGiftReciveThankState(vo)
|
|
self.model:Fire(SocialityModel.UPDATE_RECEIVE_RECORD_THANK_STATE)
|
|
else
|
|
ErrorCodeShow(vo.errcode)
|
|
end
|
|
end
|