1028 lines
38 KiB
C#
1028 lines
38 KiB
C#
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using UnityEngine;
|
||
using Newtonsoft.Json;
|
||
using System.Net.Sockets;
|
||
using UnityWebSocket;
|
||
using System.Text;
|
||
using Google.Protobuf;
|
||
using System.Net.WebSockets;
|
||
using System;
|
||
using System.Threading.Tasks;
|
||
|
||
public class test : MonoBehaviour
|
||
{
|
||
public string token;
|
||
public WEBScriptListener wEBScriptListener;
|
||
|
||
public class auth_login
|
||
{
|
||
public string clientId = "e5cd7e4891bf95d1d19206ce24a7b32e";
|
||
public string grantType = "password";
|
||
public string userType = "company_user";
|
||
public string username = "13006065371";
|
||
public string password = "YYL5371!";
|
||
}
|
||
//public async void loging()
|
||
//{
|
||
// auth_login auth_Login = new auth_login();
|
||
// string response = await web.SendRequest(web.URL + "/auth/login", "POST", JsonUtility.ToJson(auth_Login));
|
||
|
||
// // 解析服务器返回的数据
|
||
// server serverData = JsonConvert.DeserializeObject<server>(response);
|
||
// token = serverData.data.access_token;
|
||
// //Debug.Log(setverData.msg);
|
||
|
||
//}
|
||
|
||
//登录
|
||
public void lodingWebSocket()
|
||
{
|
||
LoginRequest data = new LoginRequest();
|
||
data.UserId = GlobalData.ServerData.data.userId ;
|
||
data.Account = GlobalData.ServerData.data.openId;
|
||
|
||
|
||
WSMessage msg = new WSMessage();
|
||
msg.Module = "hall";
|
||
msg.ServiceName = "Login";
|
||
msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
LoginRequest login = ProtoBufffer.DeSerialize<LoginRequest>(deinfo.Data.ToByteArray());
|
||
Debug.Log("登录");
|
||
|
||
wEBScriptListener.SendMessageByte(sendData);
|
||
}
|
||
|
||
|
||
//加入房间
|
||
public void JoinRoom(string roomid)
|
||
{
|
||
JoinRoomRequest data = new JoinRoomRequest();
|
||
|
||
data.RoomId = roomid;
|
||
WSMessage msg = new WSMessage();
|
||
msg.Module = "hall";
|
||
msg.ServiceName = "JoinRoom";
|
||
msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
JoinRoomRequest login = ProtoBufffer.DeSerialize<JoinRoomRequest>(deinfo.Data.ToByteArray());
|
||
Debug.Log("加入房间");
|
||
//BroadcastFrameMsg.FramesFieldNumber
|
||
|
||
|
||
wEBScriptListener.SendMessageByte(sendData);
|
||
}
|
||
|
||
//void BroadcastMessage()
|
||
//{
|
||
// WSMessage msg = new WSMessage();
|
||
// msg.Module = "hall";
|
||
// msg.ServiceName = "BroadcastMessage";
|
||
// //msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
// byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
// WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
// JoinRoomRequest login = ProtoBufffer.DeSerialize<JoinRoomRequest>(deinfo.Data.ToByteArray());
|
||
// Debug.Log("加入房间");
|
||
// //BroadcastFrameMsg.FramesFieldNumber
|
||
|
||
|
||
// wEBScriptListener.SendMessageByte(sendData);
|
||
//}
|
||
|
||
//心跳
|
||
async void Heartbeat()
|
||
{
|
||
//WSMessage msg = new WSMessage();
|
||
//msg.Data = ByteString.CopyFrom(new byte[] { 1 });
|
||
//byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
//Debug.Log("");
|
||
while (true)
|
||
{
|
||
WSMessage msg = new WSMessage();
|
||
msg.Module = "ping";
|
||
//msg.Data = ByteString.CopyFrom(new byte[] { 1 });
|
||
byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
// 每秒执行的任务
|
||
Debug.Log("每秒执行一次");
|
||
wEBScriptListener.SendMessageByte(sendData);
|
||
|
||
// 等待2秒
|
||
await Task.Delay(2000);
|
||
}
|
||
}
|
||
//帧存储操作输入
|
||
void UpFps()
|
||
{
|
||
InputData data = new InputData();
|
||
data.RoomId = "168888";
|
||
data.Id = "778899";
|
||
data.SId = "7";
|
||
data.X = 7f;
|
||
data.Y = 5f;
|
||
data.Z = 4f;
|
||
data.RoomSeatId = 5;
|
||
WSMessage msg = new WSMessage();
|
||
msg.Module = "fps";
|
||
msg.ServiceName = "UpFps";
|
||
msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
InputData login = ProtoBufffer.DeSerialize<InputData>(deinfo.Data.ToByteArray());
|
||
Debug.Log("帧存储操作输入");
|
||
//BroadcastFrameMsg.FramesFieldNumber
|
||
|
||
wEBScriptListener.SendMessageByte(sendData);
|
||
}
|
||
|
||
//拾取道具
|
||
void PickUpProp()
|
||
{
|
||
PropRequest data = new PropRequest();
|
||
data.PropId = 1001;
|
||
data.RoomId = "168888";
|
||
WSMessage msg = new WSMessage();
|
||
msg.Module = "prop";
|
||
msg.ServiceName = "PickUpProp";
|
||
msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
PropRequest login = ProtoBufffer.DeSerialize<PropRequest>(deinfo.Data.ToByteArray());
|
||
Debug.Log("拾取道具");
|
||
//BroadcastFrameMsg.FramesFieldNumber
|
||
|
||
wEBScriptListener.SendMessageByte(sendData);
|
||
}
|
||
|
||
//使用道具
|
||
void StartUseProp()
|
||
{
|
||
PropRequest data = new PropRequest();
|
||
data.RoomId = "168888";
|
||
data.PropId = 1001;
|
||
data.Action = 1;
|
||
data.PropServerId = "MTg1OTc5MDMwOTIyODc4OTc2MA==";
|
||
WSMessage msg = new WSMessage();
|
||
msg.Module = "prop";
|
||
msg.ServiceName = "StartUseProp";
|
||
msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
PropRequest login = ProtoBufffer.DeSerialize<PropRequest>(deinfo.Data.ToByteArray());
|
||
Debug.Log("使用道具");
|
||
//BroadcastFrameMsg.FramesFieldNumber
|
||
|
||
wEBScriptListener.SendMessageByte(sendData);
|
||
}
|
||
//停止使用道具
|
||
void StopUseProp()
|
||
{
|
||
PropRequest data = new PropRequest();
|
||
data.RoomId = "168888";
|
||
data.PropId = 1001;
|
||
data.PropServerId = "MTg1OTc5MDMwOTIyODc4OTc2MA==";
|
||
WSMessage msg = new WSMessage();
|
||
msg.Module = "prop";
|
||
msg.ServiceName = "StopUseProp";
|
||
msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
PropRequest login = ProtoBufffer.DeSerialize<PropRequest>(deinfo.Data.ToByteArray());
|
||
Debug.Log("停止使用道具");
|
||
//BroadcastFrameMsg.FramesFieldNumber
|
||
|
||
wEBScriptListener.SendMessageByte(sendData);
|
||
}
|
||
|
||
//创建NPC ========================暂时不需要
|
||
//void CreateNpc()
|
||
//{
|
||
// PropRequest data = new PropRequest();
|
||
// data.RoomId = "168888";
|
||
// WSMessage msg = new WSMessage();
|
||
// msg.Module = "move";
|
||
// msg.ServiceName = "CreateNpc";
|
||
// msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
// byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
// WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
// PropRequest login = ProtoBufffer.DeSerialize<PropRequest>(deinfo.Data.ToByteArray());
|
||
// Debug.Log("创建NPC");
|
||
// //BroadcastFrameMsg.FramesFieldNumber
|
||
|
||
// wEBScriptListener.SendMessageByte(sendData);
|
||
//}
|
||
|
||
//推送npc和玩家的信息 ===============只需要收消息
|
||
//void Location()
|
||
//{
|
||
// PropRequest data = new PropRequest();
|
||
// data.RoomId = "168888";
|
||
// WSMessage msg = new WSMessage();
|
||
// msg.Module = "prop";
|
||
// msg.ServiceName = "CreateNpc";
|
||
// msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
// byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
// WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
// PropRequest login = ProtoBufffer.DeSerialize<PropRequest>(deinfo.Data.ToByteArray());
|
||
// Debug.Log("推送npc和玩家的信息");
|
||
// //BroadcastFrameMsg.FramesFieldNumber
|
||
|
||
// wEBScriptListener.SendMessageByte(sendData);
|
||
//}
|
||
|
||
|
||
//11.开始计时
|
||
void RoomStartTime(string rooid)
|
||
{
|
||
JoinRoomRequest data = new JoinRoomRequest();
|
||
data.RoomId = rooid;
|
||
WSMessage msg = new WSMessage();
|
||
msg.Module = "hall";
|
||
msg.ServiceName = "RoomStartTime";
|
||
msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
JoinRoomRequest login = ProtoBufffer.DeSerialize<JoinRoomRequest>(deinfo.Data.ToByteArray());
|
||
Debug.Log("推送npc和玩家的信息");
|
||
//BroadcastFrameMsg.FramesFieldNumber
|
||
|
||
wEBScriptListener.SendMessageByte(sendData);
|
||
}
|
||
|
||
//推送npc和玩家的信息
|
||
void Location(string userId = "2", string roomId = "3")
|
||
{
|
||
MoveResponse data = new MoveResponse();
|
||
data.RoomId = roomId;
|
||
data.UserId = userId;
|
||
|
||
|
||
|
||
WSMessage msg = new WSMessage();
|
||
msg.Module = "move";
|
||
msg.ServiceName = "Location";
|
||
msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
MoveResponse login = ProtoBufffer.DeSerialize<MoveResponse>(deinfo.Data.ToByteArray());
|
||
Debug.Log("推送npc和玩家的信息");
|
||
//BroadcastFrameMsg.FramesFieldNumber
|
||
|
||
wEBScriptListener.SendMessageByte(sendData);
|
||
}
|
||
|
||
|
||
void TaskTrigger()
|
||
{
|
||
TaskTrigger data = new TaskTrigger();
|
||
data.RoomId = "168888";
|
||
data.TriggerId = "10006";
|
||
data.UserId = "1845037177556934659";
|
||
data.TypeStr = "selector";
|
||
WSMessage msg = new WSMessage();
|
||
msg.Module = "task";
|
||
msg.ServiceName = "TaskTrigger";
|
||
msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
TaskTrigger login = ProtoBufffer.DeSerialize<TaskTrigger>(deinfo.Data.ToByteArray());
|
||
Debug.Log("==========任务触发");
|
||
//BroadcastFrameMsg.FramesFieldNumber
|
||
|
||
wEBScriptListener.SendMessageByte(sendData);
|
||
}
|
||
|
||
void TaskUpdateRequest()
|
||
{
|
||
TaskUpdateRequest data = new TaskUpdateRequest();
|
||
data.RoomId = "168888";
|
||
data.TaskId = "d9608224-18b4-4d68-af45-82b3c843e3c3";
|
||
data.UserId = "1845037177556934659";
|
||
data.PropId = "3005";
|
||
WSMessage msg = new WSMessage();
|
||
msg.Module = "task";
|
||
msg.ServiceName = "UpdateTask";
|
||
msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
TaskUpdateRequest login = ProtoBufffer.DeSerialize<TaskUpdateRequest>(deinfo.Data.ToByteArray());
|
||
Debug.Log("==========任务触发");
|
||
//BroadcastFrameMsg.FramesFieldNumber
|
||
|
||
wEBScriptListener.SendMessageByte(sendData);
|
||
}
|
||
|
||
//NPC路线选择
|
||
public void NpcMove(string roomId = "1", int moveType = 2, int selectId = 3)
|
||
{
|
||
MoveRequest data = new MoveRequest();
|
||
data.RoomId = roomId;
|
||
data.MoveType = moveType;
|
||
data.SelectId = selectId;
|
||
|
||
WSMessage msg = new WSMessage();
|
||
msg.Module = "move";
|
||
msg.ServiceName = "MoveNpc";
|
||
msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
MoveRequest login = ProtoBufffer.DeSerialize<MoveRequest>(deinfo.Data.ToByteArray());
|
||
Debug.Log("==========选择路线");
|
||
//BroadcastFrameMsg.FramesFieldNumber
|
||
|
||
wEBScriptListener.SendMessageByte(sendData);
|
||
}
|
||
|
||
//12.消息转发
|
||
public void MessageToUser()
|
||
{
|
||
MessageBroadcastRequest data = new MessageBroadcastRequest();
|
||
data.RoomId = "168888";
|
||
data.Type = 1;
|
||
data.RoleId = "8002";
|
||
data.Cmd = "55";
|
||
WSMessage msg = new WSMessage();
|
||
msg.Module = "hall";
|
||
msg.ServiceName = "MessageToUser";
|
||
msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
MessageBroadcastRequest login = ProtoBufffer.DeSerialize<MessageBroadcastRequest>(deinfo.Data.ToByteArray());
|
||
Debug.Log("==========消息转发函数调用");
|
||
//BroadcastFrameMsg.FramesFieldNumber
|
||
|
||
wEBScriptListener.SendMessageByte(sendData);
|
||
}
|
||
|
||
public void CreateNpcHandler()
|
||
{
|
||
NpcCreateRequest data = new NpcCreateRequest();
|
||
data.RoomId = "168888";
|
||
data.SceneId = "9003";
|
||
data.TemplateId = 2;
|
||
WSMessage msg = new WSMessage();
|
||
msg.Module = "move";
|
||
msg.ServiceName = "CreateNpcHandler";
|
||
msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
NpcCreateRequest login = ProtoBufffer.DeSerialize<NpcCreateRequest>(deinfo.Data.ToByteArray());
|
||
Debug.Log("==========消息转发函数调用");
|
||
//BroadcastFrameMsg.FramesFieldNumber
|
||
|
||
wEBScriptListener.SendMessageByte(sendData);
|
||
}
|
||
|
||
//创建语音频道
|
||
public void RtcTokenHandler()
|
||
{
|
||
VoiceRequest data = new VoiceRequest();
|
||
data.Uid = 1;
|
||
data.RoomId = "8";
|
||
data.ChannelName = "2";
|
||
data.ChannelType = "5";
|
||
data.Role = "6";
|
||
|
||
WSMessage msg = new WSMessage();
|
||
msg.Module = "voice";
|
||
msg.ServiceName = "RtcTokenHandler";
|
||
msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
VoiceRequest login = ProtoBufffer.DeSerialize<VoiceRequest>(deinfo.Data.ToByteArray());
|
||
Debug.Log("==========消息转发函数调用");
|
||
//BroadcastFrameMsg.FramesFieldNumber
|
||
|
||
wEBScriptListener.SendMessageByte(sendData);
|
||
}
|
||
|
||
//NPC是否进入烟雾区域
|
||
public void EnterFogArea()
|
||
{
|
||
npcRequest data = new npcRequest();
|
||
data.RoomId = "8";
|
||
data.Action = 3;
|
||
|
||
WSMessage msg = new WSMessage();
|
||
msg.Module = "voice";
|
||
msg.ServiceName = "RtcTokenHandler";
|
||
msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
VoiceRequest login = ProtoBufffer.DeSerialize<VoiceRequest>(deinfo.Data.ToByteArray());
|
||
Debug.Log("==========消息转发函数调用");
|
||
//BroadcastFrameMsg.FramesFieldNumber
|
||
|
||
wEBScriptListener.SendMessageByte(sendData);
|
||
}
|
||
|
||
|
||
//界面选项操作
|
||
public void SelectTrigger()
|
||
{
|
||
SelectRequest data = new SelectRequest();
|
||
data.SelectId = "1";
|
||
data.UserId = "2";
|
||
data.RoomId = "3";
|
||
data.TaskId = "4";
|
||
data.RoleId = "5";
|
||
|
||
|
||
WSMessage msg = new WSMessage();
|
||
msg.Module = "voice";
|
||
msg.ServiceName = "RtcTokenHandler";
|
||
msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
SelectRequest login = ProtoBufffer.DeSerialize<SelectRequest>(deinfo.Data.ToByteArray());
|
||
Debug.Log("==========消息转发函数调用");
|
||
//BroadcastFrameMsg.FramesFieldNumber
|
||
|
||
wEBScriptListener.SendMessageByte(sendData);
|
||
}
|
||
|
||
|
||
//
|
||
public void GetSelectHistoryList()
|
||
{
|
||
SelectHistoryRequest data = new SelectHistoryRequest();
|
||
data.SelectId = "1";
|
||
data.UserId = "2";
|
||
data.RoomId = "3";
|
||
|
||
|
||
|
||
WSMessage msg = new WSMessage();
|
||
msg.Module = "select";
|
||
msg.ServiceName = "GetSelectHistoryList";
|
||
msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
SelectHistoryRequest login = ProtoBufffer.DeSerialize<SelectHistoryRequest>(deinfo.Data.ToByteArray());
|
||
Debug.Log("==========消息转发函数调用");
|
||
//BroadcastFrameMsg.FramesFieldNumber
|
||
|
||
wEBScriptListener.SendMessageByte(sendData);
|
||
}
|
||
|
||
//
|
||
public void GetTaskList(string userID, string roomID)
|
||
{
|
||
TaskTrigger data = new TaskTrigger();
|
||
data.UserId = "2";
|
||
data.RoomId = "3";
|
||
|
||
|
||
|
||
WSMessage msg = new WSMessage();
|
||
msg.Module = "select";
|
||
msg.ServiceName = "GetSelectHistoryList";
|
||
msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
TaskTrigger login = ProtoBufffer.DeSerialize<TaskTrigger>(deinfo.Data.ToByteArray());
|
||
Debug.Log("==========消息转发函数调用");
|
||
//BroadcastFrameMsg.FramesFieldNumber
|
||
|
||
wEBScriptListener.SendMessageByte(sendData);
|
||
}
|
||
|
||
//推送玩家信息
|
||
public void ThatUser(PlayerJoinResponse player)
|
||
{
|
||
PlayerJoinResponse data = new PlayerJoinResponse();
|
||
data = player;
|
||
|
||
|
||
WSMessage msg = new WSMessage();
|
||
msg.Module = "select";
|
||
msg.ServiceName = "GetSelectHistoryList";
|
||
msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
PlayerJoinResponse login = ProtoBufffer.DeSerialize<PlayerJoinResponse>(deinfo.Data.ToByteArray());
|
||
Debug.Log("==========消息转发函数调用");
|
||
//BroadcastFrameMsg.FramesFieldNumber
|
||
|
||
wEBScriptListener.SendMessageByte(sendData);
|
||
}
|
||
public void TriggerNpcArrive()
|
||
{
|
||
MoveRoomAoiRequest data = new MoveRoomAoiRequest();
|
||
data.RoomId = "1";
|
||
data.UserId = 2;
|
||
data.X = 3f;
|
||
data.Y = 4f;
|
||
data.Z = 5f;
|
||
data.SceneId = "6";
|
||
data.NpcId = "7";
|
||
data.Action = 8;
|
||
|
||
|
||
WSMessage msg = new WSMessage();
|
||
msg.Module = "select";
|
||
msg.ServiceName = "GetSelectHistoryList";
|
||
msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
MoveRoomAoiRequest login = ProtoBufffer.DeSerialize<MoveRoomAoiRequest>(deinfo.Data.ToByteArray());
|
||
Debug.Log("==========消息转发函数调用");
|
||
//BroadcastFrameMsg.FramesFieldNumber
|
||
|
||
wEBScriptListener.SendMessageByte(sendData);
|
||
}
|
||
|
||
|
||
public void PlayerReady(string roomId,bool isready)
|
||
{
|
||
PlayerReadyRequest data = new PlayerReadyRequest();
|
||
data.RoomId = roomId;
|
||
data.IsReady = isready;
|
||
|
||
Debug.Log("==========玩家准备,,,,,,,,,,,,,,");
|
||
WSMessage msg = new WSMessage();
|
||
msg.Module = "hall";
|
||
msg.ServiceName = "PlayerReady";
|
||
msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
PlayerReadyRequest login = ProtoBufffer.DeSerialize<PlayerReadyRequest>(deinfo.Data.ToByteArray());
|
||
Debug.Log("==========消息转发函数调用");
|
||
//BroadcastFrameMsg.FramesFieldNumber
|
||
|
||
wEBScriptListener.SendMessageByte(sendData);
|
||
}
|
||
|
||
public void StartGameDrill(string roomId)
|
||
{
|
||
JoinRoomRequest data = new JoinRoomRequest();
|
||
data.RoomId = roomId;
|
||
|
||
|
||
|
||
WSMessage msg = new WSMessage();
|
||
msg.Module = "hall";
|
||
msg.ServiceName = "StartGameDrill";
|
||
msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
JoinRoomRequest login = ProtoBufffer.DeSerialize<JoinRoomRequest>(deinfo.Data.ToByteArray());
|
||
Debug.Log("==========消息转发函数调用");
|
||
//BroadcastFrameMsg.FramesFieldNumber
|
||
|
||
wEBScriptListener.SendMessageByte(sendData);
|
||
}
|
||
public void PlayerSituation(string roomId)
|
||
{
|
||
JoinRoomRequest data = new JoinRoomRequest();
|
||
data.RoomId = roomId;
|
||
|
||
|
||
|
||
WSMessage msg = new WSMessage();
|
||
msg.Module = "hall";
|
||
msg.ServiceName = "PlayerSituation";
|
||
msg.Data = ByteString.CopyFrom(ProtoBufffer.Serialize(data));
|
||
byte[] sendData = ProtoBufffer.Serialize(msg);
|
||
WSMessage deinfo = ProtoBufffer.DeSerialize<WSMessage>(sendData);
|
||
JoinRoomRequest login = ProtoBufffer.DeSerialize<JoinRoomRequest>(deinfo.Data.ToByteArray());
|
||
Debug.Log("==========消息转发函数调用");
|
||
//BroadcastFrameMsg.FramesFieldNumber
|
||
|
||
wEBScriptListener.SendMessageByte(sendData);
|
||
}
|
||
|
||
|
||
|
||
// Start is called before the first frame update
|
||
async void Start()
|
||
{
|
||
//loging();
|
||
wEBScriptListener.ConcatWEBSocket();
|
||
wEBScriptListener.OnCallback += callback;
|
||
if (wEBScriptListener != null)
|
||
{
|
||
//lodingWebSocket();
|
||
//JoinRoom();
|
||
Heartbeat();
|
||
//BroadcastMessage();
|
||
//UpFps();
|
||
//PickUpProp();
|
||
//StartUseProp();
|
||
//StopUseProp();
|
||
//RoomStartTime();
|
||
//Location();
|
||
//TaskTrigger();
|
||
//TaskUpdateRequest();
|
||
|
||
}
|
||
//int index = 0;
|
||
//while (true)
|
||
//{
|
||
// index++;
|
||
// NpcData moveData = new NpcData();
|
||
// moveData.X = index;
|
||
// moveData.Y = 1;
|
||
// moveData.Z = 1;
|
||
|
||
// MoveResponse data = new MoveResponse();
|
||
// data.MoveData.Add(moveData);
|
||
|
||
|
||
// WSResponse ws = new WSResponse();
|
||
// ws.MessageType = "move.Location";
|
||
// ws.Data = ByteString.CopyFrom(data.ToByteArray());
|
||
|
||
|
||
// callback(ProtoBufffer.Serialize(ws));
|
||
|
||
|
||
|
||
// //PlayerJoinResponse pj = new PlayerJoinResponse();
|
||
// //pj.UserName = "abc";
|
||
// //pj.RoomId = "2";
|
||
// //pj.Status = 0;
|
||
// //pj.RoleName = "ABC";
|
||
// //pj.IsLeadingNPC = 5;
|
||
// //pj.Online = true;
|
||
// //pj.RoleId = 7;
|
||
// //pj.GroupLeader = 0;
|
||
// //pj.ActionMode = 2;
|
||
// //pj.Group = -1;
|
||
// //pj.X = 11;
|
||
// //pj.Y = 12;
|
||
// //pj.Z = 13;
|
||
// //pj.OverseeCond = "14";
|
||
// //pj.SendFrameCount = 15;
|
||
// //pj.MoveSpeedFirst = 16;
|
||
// //pj.MoveSpeedSecond = 17;
|
||
// //pj.MoveSpeedThird = 18;
|
||
// //pj.BearLoad = 19;
|
||
// //pj.Protection = 20;
|
||
// //pj.Health = 21;
|
||
// //pj.RoleStatus = 22;
|
||
// //pj.UserId = 23;
|
||
|
||
|
||
// //JoinRoomResponse data = new JoinRoomResponse();
|
||
// //data.Data = pj;
|
||
|
||
// //WSResponse ws = new WSResponse();
|
||
// //ws.MessageType = "hall.JoinRoom";
|
||
// //ws.Data = ByteString.CopyFrom(data.ToByteArray());
|
||
|
||
// //callback(ProtoBufffer.Serialize(ws));
|
||
|
||
// await Task.Delay(1000);
|
||
//}
|
||
}
|
||
|
||
void callback(byte[] data)
|
||
{
|
||
WSResponse deinfo = ProtoBufffer.DeSerialize<WSResponse>(data);
|
||
Debug.Log("返回数据类型:" + deinfo.MessageType);
|
||
byte[] bytes = deinfo.Data.ToByteArray();
|
||
switch (deinfo.MessageType)
|
||
{
|
||
//监听
|
||
//登录
|
||
case "hall.Login":
|
||
Debug.Log("-=====--");
|
||
LoginResponse user = ProtoBufffer.DeSerialize<LoginResponse>(bytes);
|
||
Debug.Log(user);
|
||
//这里是测试阶段用的,在登录之后调用加入房间,后续会删掉
|
||
|
||
break;
|
||
|
||
//进入房间
|
||
case "hall.JoinRoom":
|
||
JoinRoomResponse joinRoomResponse = ProtoBufffer.DeSerialize<JoinRoomResponse>(bytes);
|
||
byte[] joinByte = joinRoomResponse.Data.ToByteArray();
|
||
PlayerJoinResponse playerJoinResponse = ProtoBufffer.DeSerialize<PlayerJoinResponse>(joinByte);
|
||
Debug.Log("玩家:" + playerJoinResponse.UserName + "加入房间:" + playerJoinResponse.RoomId.ToString());
|
||
GameObject.Find("player").transform.position = new Vector3((float)playerJoinResponse.X, (float)playerJoinResponse.Y, (float)playerJoinResponse.Z);
|
||
Debug.Log(playerJoinResponse.IsReady);//是否准备的判断
|
||
|
||
Debug.Log("玩家位置");
|
||
|
||
break;
|
||
|
||
//广播
|
||
case "hall.BroadcastMessage":
|
||
UserJoinResponse userJoinResponse = ProtoBufffer.DeSerialize<UserJoinResponse>(bytes);
|
||
/*
|
||
这里是userJoinResponse带的数据信息
|
||
int64 userId =1;//用户id
|
||
string nickName=2;//用户名
|
||
string roleName=3;//用户角色
|
||
string roomId=4;//房间号
|
||
bool online =5;//状态 接收这个用户是不是掉线了
|
||
事件状态 1 用户上线 2用户下线 3 用户加入房间 4 事故发生 5 火势6 任务7 对象操作 8 NPc 属性更新 9 语音信息、 10 用户信息更新 11 房间开始
|
||
int32 messageType = 6;
|
||
string cmd =7;//操作指令
|
||
string incidentPosition=8://事件发生位置
|
||
float fireRadius =9;//火势半径
|
||
int32 firevalue = 10;//火势值
|
||
TaskInfoResponse taskResponse=11;//任务信息
|
||
0bjectInfoResponse objectResponse=12;//对象信息
|
||
NpcInfoResponse npcResponse=13;//npc信息
|
||
VoiceTransportResponse voiceResponse =14;//语音信息
|
||
PlayerJoinResponse playerResponse=15;//玩家信息
|
||
*/
|
||
//Debug.Log(userJoinResponse);
|
||
if (userJoinResponse.MessageType == 1)//用户上线
|
||
{
|
||
Debug.Log("玩家:" + userJoinResponse.NickName + "上线");
|
||
}
|
||
if (userJoinResponse.MessageType == 2)//用户下线
|
||
{
|
||
Debug.Log("玩家:" + userJoinResponse.NickName + "下线");
|
||
}
|
||
if (userJoinResponse.MessageType == 3)//加入房间
|
||
{
|
||
Debug.Log("玩家" + userJoinResponse.NickName + "加入房间:" + userJoinResponse.RoomId.ToString() + ",用户角色" + userJoinResponse.RoleName);
|
||
}
|
||
if (userJoinResponse.MessageType == 4)//事故发生
|
||
{
|
||
|
||
}
|
||
if (userJoinResponse.MessageType == 5)//火势
|
||
{
|
||
//这里写更新火势的信息 半径userJoinResponse.FireRadius 位置userJoinResponse.IncidentPosition 火势值userJoinResponse.FireValue
|
||
|
||
|
||
}
|
||
if (userJoinResponse.MessageType == 6)//任务
|
||
{
|
||
//解析出任务信息到taskInfoResponse 里面有TaskId 状态Status 房间id 坐标x,y,z 类型Type 时间限制Timelimit 描述Des 触发条件Trigger 下一步任务NextTask 目标类型TargetType 奖励Reward 备注Note 创建时间CreatTime 更新时间UpdateTime 目标用户id ToUserId 基础任务的id BaseTaskid
|
||
TaskInfoResponse taskInfoResponse = userJoinResponse.TaskResponse;
|
||
if (long.Parse(taskInfoResponse.ToUserId) == userJoinResponse.UserId)//当这个任务是当前玩家的任务时显示任务
|
||
{
|
||
TaskPanel.instance.Taskad(int.Parse(taskInfoResponse.TaskId));
|
||
}
|
||
}
|
||
if (userJoinResponse.MessageType == 7)//对象操作
|
||
{
|
||
//解析出的对象信息objectInfoResponse里面有
|
||
/*
|
||
string RoomId=1;//对象id
|
||
string Id=2://ID
|
||
string objectId=3;//对象ID
|
||
string Note =4;//状态
|
||
string Type =5;// 对象类型lilubing,2024/11/2716:37·对象物体及任务:Changes
|
||
|
||
|
||
string Name=6;//对象文本Id
|
||
int64 Nameshowoffset=7;//对象文本显示偏移量
|
||
int64 showRadius=8;//对象显示半径
|
||
string Icon =9;//对象图标
|
||
string Role =10;//对象角色
|
||
string ItemDepend =11;//依赖物品
|
||
int64 Takerime = 12;// 交互、读条时间 -1 立即执行
|
||
string Needplayers = 13;// 判定范围,玩家数量,是否可操作(当人数不满足时)
|
||
string Taskstatus=14;//对应事件ID
|
||
string selectList=15;//选择列表
|
||
int64 onoff =16;// 操作状态 0不可操作1 可操作
|
||
|
||
string status=17;//状态
|
||
string ResChange =18;//资源变化
|
||
|
||
int64 ParallelControl=19;//是否支持多人操作
|
||
string ExtraValue=20;//额外参数
|
||
string UserIds = 21;// 玩家id列表 逗号分隔
|
||
|
||
string Createrime =22;//创建时间
|
||
|
||
string Updaterime =23;//更新时间
|
||
|
||
*/
|
||
ObjectInfoResponse objectInfoResponse = userJoinResponse.ObjectResponse;
|
||
}
|
||
if (userJoinResponse.MessageType == 8)//NPC属性更新
|
||
{
|
||
|
||
}
|
||
if (userJoinResponse.MessageType == 9)//语音信息
|
||
{
|
||
//解析出的语音信息voiceTransportResponse里面有 应用id AppId 用户id channelName
|
||
VoiceTransportResponse voiceTransportResponse = userJoinResponse.VoiceResponse;
|
||
}
|
||
if (userJoinResponse.MessageType == 10)//用户信息更新
|
||
{
|
||
//
|
||
|
||
}
|
||
if (userJoinResponse.MessageType == 11)//房间开始
|
||
{
|
||
test111.instance.Oppanel();
|
||
}
|
||
if (userJoinResponse.MessageType == 12)//玩家准备
|
||
{
|
||
Debug.Log("服务器给准备好消息");
|
||
GameObject.Find("HostCanvas").GetComponent<Starthost>().isSatisfy=true;
|
||
}
|
||
|
||
break;
|
||
|
||
//
|
||
case "fps.UpFps":
|
||
InputData inputData = ProtoBufffer.DeSerialize<InputData>(bytes);
|
||
Debug.Log("Id:" + inputData.Id + ",sId :" + inputData.SId + ",X:" + inputData.X.ToString() + ",Y:" + inputData.Y.ToString() + ",roomSeatId :" + inputData.RoomSeatId + ",z:" + inputData.Z.ToString() + ",roomId:" + inputData.RoomId);
|
||
break;
|
||
|
||
case "prop.PickUpProp":
|
||
PropRequest propRequest = ProtoBufffer.DeSerialize<PropRequest>(bytes);
|
||
Debug.Log("PropId:" + propRequest.PropId);
|
||
break;
|
||
|
||
case "prop.StartUseProp":
|
||
PropResponse useProp = ProtoBufffer.DeSerialize<PropResponse>(bytes);
|
||
|
||
Debug.Log("PropId:" + useProp);
|
||
break;
|
||
|
||
case "prop.StopUseProp":
|
||
PropResponse stopuseProp = ProtoBufffer.DeSerialize<PropResponse>(bytes);
|
||
|
||
Debug.Log("PropId:" + stopuseProp);
|
||
break;
|
||
|
||
case "move.Location":
|
||
//Debug.Log("move.Location接受到了");
|
||
NpcData npcData = ProtoBufffer.DeSerialize<NpcData>(bytes);
|
||
//Debug.Log(npcData);
|
||
if (npcData.Type == 1)//npc创建
|
||
{
|
||
float x = -float.Parse(npcData.X.ToString());
|
||
float y = float.Parse(npcData.Y.ToString());
|
||
float z = float.Parse(npcData.Z.ToString());
|
||
Vector3 position = new Vector3(x, y, z);
|
||
|
||
NPCController.instance.InitNPC(position, npcData);
|
||
|
||
}
|
||
if (npcData.Type == 2)//npc移动
|
||
{
|
||
Vector3 v = new Vector3(float.Parse(npcData.X.ToString()), float.Parse(npcData.Y.ToString()) + 0.5f, float.Parse(npcData.Z.ToString()));
|
||
//NPCController.instance.npcposition.Add(v);
|
||
//foreach (RecuseNpc item in NPCController.instance.npcsList)
|
||
//{
|
||
// if (npcData.UserId == item.npcId)
|
||
// {
|
||
// //Debug.Log("================" + v);
|
||
// item.SetNpcDes(v);
|
||
// }
|
||
//}
|
||
foreach (var npcDict in NPCController.instance.npcsList)
|
||
{
|
||
foreach (var kvp in npcDict)
|
||
{
|
||
RecuseNpc npc = kvp.Key; // 获取 NPC 脚本(键)
|
||
Vector3 position = kvp.Value; // 获取 NPC 的位置(值)
|
||
|
||
if (npcData.UserId == npc.npcId)
|
||
{
|
||
npc.SetNpcDes(v);
|
||
Debug.Log($"NPCID{npcData.UserId}NPCPOSITION{v}");
|
||
}
|
||
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
//npc.transform.name = npcData.UserId;
|
||
//npc.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
|
||
//npc.transform.position = new Vector3(x, y + 0.25f, z);
|
||
//npc.transform.parent = GameObject.Find("schoo103").transform;
|
||
|
||
break;
|
||
|
||
case "task.InitStart":
|
||
|
||
|
||
break;
|
||
|
||
|
||
//13(1)任务触发
|
||
case "task.TaskTrigger":
|
||
Debug.Log("-----------task.TaskTrigger");
|
||
TaskTrigger taskTrigger = ProtoBufffer.DeSerialize<TaskTrigger>(bytes);
|
||
Debug.Log(taskTrigger);
|
||
|
||
|
||
break;
|
||
//13(2)更新任务
|
||
case "task.UpdateTask":
|
||
Debug.Log("-----------task.TaskTrigger");
|
||
MoveRequest taskUpdateRequest = ProtoBufffer.DeSerialize<MoveRequest>(bytes);
|
||
Debug.Log(taskUpdateRequest);
|
||
|
||
|
||
break;
|
||
|
||
//对象触发操作
|
||
case "object.HandleObject":
|
||
Debug.Log("-----------object.HandleObject");
|
||
RequestObject requestObject = ProtoBufffer.DeSerialize<RequestObject>(bytes);
|
||
Debug.Log(requestObject);
|
||
|
||
break;
|
||
//
|
||
case "move.MoveNpc":
|
||
Debug.Log("-----------move.MoveNpc");
|
||
MoveRequest moveRequest = ProtoBufffer.DeSerialize<MoveRequest>(bytes);
|
||
Debug.Log(moveRequest);
|
||
|
||
break;
|
||
|
||
//17.语音频道v
|
||
case "voice.RtcTokenHandler":
|
||
Debug.Log("-----------move.MoveNpc");
|
||
VoiceResponse voiceResponse = ProtoBufffer.DeSerialize<VoiceResponse>(bytes);
|
||
Debug.Log(voiceResponse);
|
||
|
||
break;
|
||
|
||
//15.对象触发操作
|
||
case "hall.ThatUser":
|
||
Debug.Log("-----------move.MoveNpc");
|
||
PlayerJoinResponse PlayerJoinResponse = ProtoBufffer.DeSerialize<PlayerJoinResponse>(bytes);
|
||
Debug.Log(PlayerJoinResponse);
|
||
|
||
break;
|
||
|
||
//16.获取任务列表
|
||
case "hall.GetTaskList":
|
||
Debug.Log("-----------move.MoveNpc");
|
||
TaskListResponse TaskListResponse = ProtoBufffer.DeSerialize<TaskListResponse>(bytes);
|
||
foreach (var task in TaskListResponse.Tasks)
|
||
{
|
||
Debug.Log(task.TaskId);
|
||
}
|
||
|
||
break;
|
||
//19. 界面选项操作
|
||
case "select.SelectTrigger":
|
||
Debug.Log("select.SelectTrigger");
|
||
SelectResponse selectRequest = ProtoBufffer.DeSerialize<SelectResponse>(bytes);
|
||
Debug.Log(selectRequest);
|
||
|
||
break;
|
||
|
||
//20. 选项操作记录
|
||
case "select.GetSelectHistoryList":
|
||
Debug.Log("select.GetSelectHistoryList");
|
||
SelectHistoryResponse selectHistoryResponse = ProtoBufffer.DeSerialize<SelectHistoryResponse>(bytes);
|
||
foreach (var selectRes in selectHistoryResponse.Selects)
|
||
{
|
||
Debug.Log(selectRes.Id);
|
||
}
|
||
break;
|
||
|
||
//21.NPC是否被扛起
|
||
case "move.TriggerNpcArrive":
|
||
SelectResponse selectResponse = ProtoBufffer.DeSerialize<SelectResponse>(bytes);
|
||
|
||
|
||
break;
|
||
|
||
|
||
case "move.PlayerSituation":
|
||
Debug.LogError("玩家状态11111111111111111");
|
||
PlayerStatisticsResponse playerStatisticsResponse = ProtoBufffer.DeSerialize<PlayerStatisticsResponse>(bytes);
|
||
foreach(var item in playerStatisticsResponse.Data)
|
||
{
|
||
Debug.Log(item.RoleId);
|
||
Debug.Log(item.IsReady);
|
||
}
|
||
Personnelpreparation.instance.playerStatisticsResponse = playerStatisticsResponse;
|
||
Personnelpreparation.instance.UpdateSubObjectList();
|
||
break;
|
||
|
||
|
||
//case "prop.CreateNpc":
|
||
// MoveResponse moveResponse = ProtoBufffer.DeSerialize<MoveResponse>(bytes);
|
||
// Debug.Log("UserId:" + moveResponse.UserId + ",RoomId:" + moveResponse.RoomId + ",x:" + moveResponse.MoveData);
|
||
// break;
|
||
|
||
|
||
|
||
//case "hall.RoomStartTime":
|
||
// JoinRoomRequest joinRoomRequest = ProtoBufffer.DeSerialize<JoinRoomRequest>(bytes);
|
||
// Debug.Log("PropId:" + joinRoomRequest.RoomId);
|
||
// break;
|
||
//case " hall.MessageToUser":
|
||
// //JoinRoomRequest joinRoomRequest = ProtoBufffer.DeSerialize<JoinRoomRequest>(bytes);
|
||
// //Debug.Log("PropId:" + joinRoomRequest.RoomId);
|
||
// break;
|
||
|
||
|
||
|
||
}
|
||
}
|
||
|
||
}
|