123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- /// <summary>
- /// 专门发消息的模块
- /// </summary>
- public class SocketMsgSendManager {
- public void Init()
- {
- CDebug.Log("SocketMsgSendManager Init");
- MessageCenterController.Instance.Register(GameEnum.MESSAGE_SEND_PLAYER_SOCKET_DATA, SendPlayerData);
- MessageCenterController.Instance.Register(GameEnum.MESSAGE_SEND_CREATE_ROOM_SOCKET_DATA, SendCreateRoomData);
- MessageCenterController.Instance.Register(GameEnum.MESSAGE_SEND_STUDENT_SELECT_SOCKET_DATA, SendStudentCoreOperateData);
- MessageCenterController.Instance.Register(GameEnum.MESSAGE_SEND_TEACHER_LINE_POS_SOCKET_DATA, SendTeacherLinePosData);
- MessageCenterController.Instance.Register(GameEnum.MESSAGE_SEND_MSG_TO_NEW_STUDENT, RefreshTeacherCurData);
- MessageCenterController.Instance.Register(GameEnum.MESSAGE_SEND_CHANGE_MASTER_SOCKET_DATA, SendChangeRoomOwnerClick);
- MessageCenterController.Instance.Register(GameEnum.MESSAGE_SEND_CREATE_PUBLIC_ROOM_SOCKET_DATA, SendCreatePublicRoomData);
- MessageCenterController.Instance.Register(GameEnum.MESSAGE_SEND_AUDIO_DATA, SendAudio);
- MessageCenterController.Instance.Register(GameEnum.MESSAGE_SEND_DRAW_SOCKET_DATA, SendTeacherDrawClick);
- MessageCenterController.Instance.Register(GameEnum.MESSAGE_SEND_AUDIO_SOCKET_DATA, SendTeacherAudioChange);
- MessageCenterController.Instance.Register(GameEnum.MESSAGE_SEND_MR_CLICK_DATA, MRBtnClick);
- //UI同步的新逻辑实现
- MessageCenterController.Instance.Register(GameEnum.MESSAGE_SEND_UI_CHANGE_DATA, SendUIChange);
- }
- public void Dispose()
- {
- MessageCenterController.Instance.UnRegister(GameEnum.MESSAGE_SEND_PLAYER_SOCKET_DATA, SendPlayerData);
- MessageCenterController.Instance.UnRegister(GameEnum.MESSAGE_SEND_CREATE_ROOM_SOCKET_DATA, SendCreateRoomData);
- MessageCenterController.Instance.UnRegister(GameEnum.MESSAGE_SEND_STUDENT_SELECT_SOCKET_DATA, SendStudentCoreOperateData);
- MessageCenterController.Instance.UnRegister(GameEnum.MESSAGE_SEND_TEACHER_LINE_POS_SOCKET_DATA, SendTeacherLinePosData);
- MessageCenterController.Instance.UnRegister(GameEnum.MESSAGE_SEND_MSG_TO_NEW_STUDENT, RefreshTeacherCurData);
- MessageCenterController.Instance.UnRegister(GameEnum.MESSAGE_SEND_CHANGE_MASTER_SOCKET_DATA, SendChangeRoomOwnerClick);
- MessageCenterController.Instance.UnRegister(GameEnum.MESSAGE_SEND_CREATE_PUBLIC_ROOM_SOCKET_DATA, SendCreatePublicRoomData);
- MessageCenterController.Instance.UnRegister(GameEnum.MESSAGE_SEND_AUDIO_DATA, SendAudio);
- MessageCenterController.Instance.UnRegister(GameEnum.MESSAGE_SEND_DRAW_SOCKET_DATA, SendTeacherDrawClick);
- MessageCenterController.Instance.UnRegister(GameEnum.MESSAGE_SEND_AUDIO_SOCKET_DATA, SendTeacherAudioChange);
- MessageCenterController.Instance.UnRegister(GameEnum.MESSAGE_SEND_MR_CLICK_DATA, MRBtnClick);
- //UI同步的新逻辑实现
- MessageCenterController.Instance.UnRegister(GameEnum.MESSAGE_SEND_UI_CHANGE_DATA, SendUIChange);
- }
- //向服务器发送个人信息
- private void SendPlayerData(System.Object datas)
- {
- Engine.Net.NetMsg sendMsg = Engine.Net.NetMsg.OnCreateNetMsg(MsgConst.MSG_CTS_USER_DATA_SEND);
- StartConnectData data = new StartConnectData();
- data.user_name = GamePlayerData.Instance.user_name;
- var len = System.Text.Encoding.UTF8.GetByteCount(data.user_name);
- //CDebug.Log("名字的长度 " + len);
- data.user_type = short.Parse(GamePlayerData.Instance.user_type.ToString());
- data.school_id = short.Parse(GamePlayerData.Instance.school_id.ToString());
- //data.device_id = SystemInfo.deviceUniqueIdentifier;//设备号
- CDebug.Log("个人信息 用户类型 " + data.user_type);
- sendMsg.PackMsg(data);
- SendMsg(sendMsg);
- //IvChatManager.Instance.ConnectToHost(GamePlayerData.Instance.user_name, GamePlayerData.Instance.user_name);
- }
- //发送创建房间的数据
- private void SendCreateRoomData(System.Object datas)
- {
- InitRoomData();
- SocketRoomItemData data = datas as SocketRoomItemData;
- Engine.Net.NetMsg sendMsg = Engine.Net.NetMsg.OnCreateNetMsg(MsgConst.MSG_CTS_ROOM_CREATE_SEND);
- sendMsg.PackMsg(data);
- SendMsg(sendMsg);
- }
- private void SendCreatePublicRoomData(System.Object datas)
- {
- InitRoomData();
- CourseConfigData c_data = (CourseConfigData)GameConfigData.Instance.course_data.GetList()[0];
- SocketRoomItemData data = new SocketRoomItemData();
- data.course_name = c_data.course_name;
- //data.course_name = "四地5G公开课";
- data.subject_id = short.Parse(c_data.subject_id);
- data.course_id = short.Parse(c_data.id);
- data.is_public = true;
- data.owner_id = GamePlayerData.Instance.user_id;
- data.owner_name = GamePlayerData.Instance.user_name;
- Engine.Net.NetMsg sendMsg = Engine.Net.NetMsg.OnCreateNetMsg(MsgConst.MSG_CTS_ROOM_CREATE_SEND);
- sendMsg.PackMsg(data);
- SendMsg(sendMsg);
- }
- //初始化房间的数据记录
- private void InitRoomData()
- {
-
- }
- //发送老师的手柄指示的信息
- public void SendTeacherLinePosData(System.Object datas)
- {
- Engine.Net.NetMsg sendMsg = Engine.Net.NetMsg.OnCreateNetMsg(MsgConst.MSG_CTS_SEND_LINE_DATA_TO_STUDENT);
- MoveData data = new MoveData();
- data.pos = (Vector3)datas;
- sendMsg.PackMsg(data);
- SendMsg(sendMsg);
- }
- public void SendStudentCoreOperateData(System.Object datas)
- {
- QuestionImageView item = datas as QuestionImageView;
- SelectData data = new SelectData();
- data.index = short.Parse(item.ConfigId);
- data.res = (short)item.SelectIndex;
- data.costTime = item.CostTime;
- data.timeStamp = CStaticMethod.CurTimeStamp();
- CDebug.Log("我提交的答案是" + data.res);
- //本地也进行记录
- StudentTaskReceiveManager.Instance.AddLocalTask(data, UserReport.ReportType.Default);
- //SendCoreData(BrocastClassType.CoreData, FengzhuangCoreData(new object[1] { data }));
- SendMessageToAll(BrocastClassType.CoreData, FengzhuangCoreData(new object[1] { data }));
- }
- /*
- public void SendStudentScoreData(System.Object datas)
- {
- ScoreData data = datas as ScoreData;
- SendCoreData(BrocastClassType.StudentScore, data);
- }
- */
- private void SendMessageToAll(BrocastClassType mType, System.Object o_data)
- {
- if(o_data == null)
- {
- CDebug.Log(mType.ToString() + "严重错误");
- return;
- }
- Engine.Net.NetMsg sendMsg = Engine.Net.NetMsg.OnCreateNetMsg(MsgConst.MSG_CTS_TEACHER_CORE_DATA_SEND);
- BrocastClass data = new BrocastClass();
- data.mType = (short)mType;
- sendMsg.PackMsg(data);
- sendMsg.PackMsg(o_data);
- SendMsg(sendMsg);
- //CDebug.Log("广播 " + mType.ToString() + " --- " + sendMsg.UserId);
- }
- //发送给老师的
- private void SendCoreData(BrocastClassType mType, System.Object o_data)
- {
- Engine.Net.NetMsg sendMsg = Engine.Net.NetMsg.OnCreateNetMsg(MsgConst.MSG_CTS_SEND_DATA_TO_TEACHER);
- BrocastClass data = new BrocastClass();
- data.mType = (short)mType;
- sendMsg.PackMsg(data);
- sendMsg.PackMsg(o_data);
- SendMsg(sendMsg);
- CDebug.Log("学生发送 Socket " + mType.ToString() + " --- " + sendMsg.UserId);
- }
- private void SendMsg(Engine.Net.NetMsg sendMsg)
- {
- Engine.Net.NetWorkManager.GetInstance().SendMessage(sendMsg, Engine.Net.ESockeType.Game, GamePlayerData.Instance.user_id);
- }
- /// <summary>
- /// 发送给学生 告知我当前所处的状态
- /// </summary>
- private void RefreshTeacherCurData(System.Object o_data)
- {
- int ccc_id = (int)o_data;//学生的ID号
- CDebug.Log("同步给学生的UIChange数据" + ccc_id);
- //告诉这个学生当前的UI信息
- SendTeacherToStudentById(BrocastClassType.UIChange, UIDataManager.Instance.GetCurAllUIDataToStudent(), ccc_id);
- //告诉他 语音消息
- //SendTeacherToStudentById(BrocastClassType.Audio, AudioDataManager.Instance.CurAudioData, ccc_id);
- }
- //老法师发送给单个学生的信息
- private void SendTeacherToStudentById(BrocastClassType mType, System.Object o_data, int targetId)
- {
- Engine.Net.NetMsg sendMsg = Engine.Net.NetMsg.OnCreateNetMsg(MsgConst.MSG_CTS_SEND_REFRESH_DATA_TO_STUDENT);
- BrocastClass data = new BrocastClass();
- data.mType = (short)mType;
- sendMsg.PackMsg(data);
- sendMsg.PackMsg(o_data);
- Engine.Net.NetWorkManager.GetInstance().SendMessage(sendMsg, Engine.Net.ESockeType.Game, targetId);
- }
- //更换房主
- private void SendChangeRoomOwnerClick(System.Object datas)
- {
- ChangeOwner data = new ChangeOwner();
- UserData user_data = datas as UserData;
- data.owner_id = user_data.user_id;
- data.room_id = GamePlayerData.Instance.room_data.CurRoomId;//当前的房间号
- Engine.Net.NetMsg sendMsg = Engine.Net.NetMsg.OnCreateNetMsg(MsgConst.MSG_CTS_SEND_CHANGE_MASTER_DATA_TO_TEACHER);
- sendMsg.PackMsg(data);
- SendMsg(sendMsg);
- CDebug.Log("发送换房 Socket " + data.owner_id);
- }
- //发送语音包
- private void SendAudio(System.Object datas)
- {
- VoiceChatPacket data = datas as VoiceChatPacket;
- Engine.Net.NetMsg sendMsg = Engine.Net.NetMsg.OnCreateNetMsg(MsgConst.MSG_CTS_SEND_AUDIO_DATA_TO_STUDENT);
- sendMsg.PackMsg(data);
- SendMsg(sendMsg);
- }
- private void SendTeacherDrawClick(System.Object datas)
- {
- SendMessageToAll(BrocastClassType.DrawData, FengzhuangCoreData(new object[1] { datas }));
- }
- private void SendTeacherAudioChange(System.Object datas)
- {
- CDebug.Log("发送 SendTeacherAudioChange");
- SendMessageToAll(BrocastClassType.Audio, datas);
- }
- //MR游戏里的点击事件发送 这里是
- protected virtual void MRBtnClick(System.Object datas)
- {
- MRData data = datas as MRData;
- if(data.test == (int)MRGameMode.Refresh)
- {
- //SendCoreData(BrocastClassType.CoreData, FengzhuangCoreData(new object[1] { data }));
- SendMessageToAll(BrocastClassType.CoreData, FengzhuangCoreData(new object[1] { data }));
- return;
- }
- CDebug.Log("这里有重大错误出现");
- //SendTeacherToStudent(BrocastClassType.MR, datas);
- //MessageCenter.Instance.Broadcast(GameEnum.MESSAGE_MR_PLAY_DATA, data);
- }
- protected virtual void SendUIChange(System.Object datas)
- {
- SocketUIChangeData data = datas as SocketUIChangeData;
- SendMessageToAll(BrocastClassType.UIChange, datas);
- }
- private SocketCoreData FengzhuangCoreData(System.Object[] datas)
- {
- SocketCoreData send_data = new SocketCoreData();
- send_data.ct = (short)datas.Length;
- send_data.classes = new SocketClassData[send_data.ct];
- send_data.datas = datas;
- for (int i = 0; i< send_data.ct; i++)
- {
- send_data.classes[i] = new SocketClassData();
- send_data.classes[i].DataClassName = (datas[i].GetType()).ToString();
- }
- return send_data;
- }
- /*
- protected virtual void SendCoreData(System.Object datas)
- {
- SocketCoreData data = datas as SocketCoreData;
- SendMessageToAll(BrocastClassType.CoreData, datas);
- }
- */
- }
|