543 lines
19 KiB
C#
543 lines
19 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 = "13699802230";
|
||
public string password = "YYL2230!";
|
||
}
|
||
//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);
|
||
|
||
//}
|
||
//登录
|
||
void lodingWebSocket()
|
||
{
|
||
LoginRequest data = new LoginRequest();
|
||
data.UserId = "1845037177556934657";
|
||
data.Account = "17311259169";
|
||
|
||
|
||
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);
|
||
}
|
||
//加入房间
|
||
void JoinRoom()
|
||
{
|
||
JoinRoomRequest data = new JoinRoomRequest();
|
||
data.RoomId = "168888";
|
||
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);
|
||
|
||
// 等待一秒
|
||
await Task.Delay(1000);
|
||
}
|
||
}
|
||
//帧存储操作输入
|
||
//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);
|
||
//}
|
||
|
||
|
||
|
||
//开始计时
|
||
void RoomStartTime()
|
||
{
|
||
JoinRoomRequest data = new JoinRoomRequest();
|
||
data.RoomId = "168888";
|
||
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);
|
||
}
|
||
|
||
void Location()
|
||
{
|
||
MoveResponse data = new MoveResponse();
|
||
data.RoomId = "168888";
|
||
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);
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
// 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());
|
||
break;
|
||
|
||
//广播
|
||
case "hall.BroadcastMessage":
|
||
UserJoinResponse userJoinResponse = ProtoBufffer.DeSerialize<UserJoinResponse>(bytes);
|
||
|
||
|
||
|
||
//Debug.Log(userJoinResponse.IncidentPosition);
|
||
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)//火势
|
||
{
|
||
|
||
}
|
||
if(userJoinResponse.MessageType == 6)//任务
|
||
{
|
||
TaskInfoResponse taskInfoResponse = userJoinResponse.TaskResponse;
|
||
if (long.Parse(taskInfoResponse.ToUserId) == userJoinResponse.UserId)//当这个任务是当前玩家的时显示任务
|
||
{
|
||
TaskPanel.instance.SetInfo(int.Parse(taskInfoResponse.TaskId));
|
||
}
|
||
}
|
||
|
||
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);
|
||
float x = npcData.X;
|
||
float y = npcData.Y;
|
||
float z = npcData.Z;
|
||
GameObject npc = GameObject.CreatePrimitive(PrimitiveType.Cube);
|
||
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.TaskTrigger":
|
||
Debug.Log("-----------task.TaskTrigger");
|
||
TaskTrigger taskTrigger = ProtoBufffer.DeSerialize<TaskTrigger>(bytes);
|
||
Debug.Log(taskTrigger);
|
||
|
||
|
||
break;
|
||
//更新任务
|
||
case "task.UpdateTask":
|
||
Debug.Log("-----------task.TaskTrigger");
|
||
TaskUpdateRequest taskUpdateRequest = ProtoBufffer.DeSerialize<TaskUpdateRequest>(bytes);
|
||
Debug.Log(taskUpdateRequest);
|
||
|
||
break;
|
||
|
||
//对象触发操作
|
||
case "object.HandleObject":
|
||
Debug.Log("-----------object.HandleObject");
|
||
RequestObject requestObject = ProtoBufffer.DeSerialize<RequestObject>(bytes);
|
||
Debug.Log(requestObject);
|
||
|
||
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;
|
||
|
||
|
||
|
||
}
|
||
}
|
||
|
||
}
|