/// <summary> /// 向玩家发送单个玩家的IP,枪械情况 /// </summary> /// <param name="ip"></param> /// <param name="info"></param> public void SendPlayrMessageInfo(string ip, PlayerInfoMessage info) { byte[] bytes = PlayerInfoMessage.GetBytes(info); NetworkMessage sendM = new NetworkMessage(17, NetworkTools.GetLocalIP(), bytes); SendMsg(ip, NetworkConstent.UDPClientPort, NetworkMessage.GetBytes(sendM)); }
/// <summary> /// 发送可以开始 /// </summary> public void SendWaitStart() { //byte[] bytes = RoomPlayerInfoMessage.GetBytes(new RoomPlayerInfoMessage("", true)); byte[] bytes = PlayerInfoMessage.GetBytes(playerInfo); SendMsg(RoomSingle.roomIP, NetworkConstent.UDPServerPort, NetworkMessage.GetBytes(new NetworkMessage(10, NetworkTools.GetLocalIP(), bytes))); }
/// <summary> /// 发送退出房间 /// </summary> public void SendQuitRoom() { if (client != null) { SendMsg(RoomSingle.roomIP, NetworkConstent.UDPServerPort, NetworkMessage.GetBytes(new NetworkMessage(9, NetworkTools.GetLocalIP(), new byte[0]))); } }
/// <summary> /// 向所有客户端发送房间关闭信息 /// </summary> void SendAllClose() { server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1); EndPoint point = new IPEndPoint(IPAddress.Broadcast, NetworkConstent.UDPClientPort); NetworkMessage m = new NetworkMessage(3, NetworkTools.GetLocalIP(), Encoding.UTF8.GetBytes(NetworkTools.GetLocalIP())); server.SendTo(NetworkMessage.GetBytes(m), point); }
/// <summary> /// 向玩家发送房间内所有玩家信息 /// </summary> /// <param name="ip"></param> public void SendPlayerInfosToClient(string ip) { foreach (var item in playerData.GetPlayersInfo().Keys) { byte[] bytes = RoomPlayerInfoMessage.GetBytes(playerData.GetPlayersInfo()[item]); NetworkMessage sendM = new NetworkMessage(15, NetworkTools.GetLocalIP(), bytes); SendMsg(ip, NetworkConstent.UDPClientPort, NetworkMessage.GetBytes(sendM)); } }
/// <summary> /// 发送Boss的位置信息 /// </summary> /// <param name="t"></param> /// <param name="id"></param> /// <param name="listNum"></param> public void SendBossTransformMsg(Transform t, int id) { byte[] by = EnemyInfoMessage.GetBytes( new EnemyInfoMessage(t.position, t.rotation.eulerAngles, id, 0)); NetworkMessage message = new NetworkMessage(70, NetworkTools.GetLocalIP(), by); byte[] bytes = NetworkMessage.GetBytes(message); SendMsg(RoomSingle.roomIP, NetworkConstent.UDPServerPort, bytes); }
/// <summary> /// 同步小怪的目标 /// </summary> /// <param name="hurt"></param> /// <param name="id"></param> /// <param name="listNum"></param> public void SendEnemyTargetMsg(string ip, int id, int listNum) { byte[] by = EnemyTargetMessage.GetBytes( new EnemyTargetMessage(ip, id, listNum)); NetworkMessage message = new NetworkMessage(63, NetworkTools.GetLocalIP(), by); byte[] bytes = NetworkMessage.GetBytes(message); SendMsg(RoomSingle.roomIP, NetworkConstent.UDPServerPort, bytes); }
/// <summary> /// 发送Boss受到伤害 /// </summary> /// <param name="hurt"></param> /// <param name="id"></param> /// <param name="listNum"></param> public void SendBossHurtMsg(float hurt, int id) { byte[] by = EnemyHurtMessge.GetBytes( new EnemyHurtMessge(hurt, id, 0)); NetworkMessage message = new NetworkMessage(72, NetworkTools.GetLocalIP(), by); byte[] bytes = NetworkMessage.GetBytes(message); SendMsg(RoomSingle.roomIP, NetworkConstent.UDPServerPort, bytes); }
/// <summary> /// Boss的状态信息 /// </summary> /// <param name="state"></param> /// <param name="id"></param> /// <param name="listNum"></param> public void SendBossStateMsg(BossState state, BossAtkState s, int id) { byte[] by = BossStateMessage.GetBytes( new BossStateMessage(state, s)); NetworkMessage message = new NetworkMessage(71, NetworkTools.GetLocalIP(), by); byte[] bytes = NetworkMessage.GetBytes(message); SendMsg(RoomSingle.roomIP, NetworkConstent.UDPServerPort, bytes); }
/// <summary> /// 向房间内的玩家发送开始游戏请求 /// </summary> public void SendOtherPlayerStartGame() { RoomSingle.AddPlayer(playerInfo); byte[] infos = PlayerInfoMessage.GetBytes(RoomSingle.GetInfos()[NetworkTools.GetLocalIP()]); byte[] bytes = NetworkMessage. GetBytes(new NetworkMessage(13, NetworkTools.GetLocalIP(), infos)); foreach (var ip in playerData.GetPlayersInfo().Keys) { SendMsg(ip, NetworkConstent.UDPClientPort, bytes); } }
public override void StartServer(int port) { base.StartServer(port); NetworkMessage m = new NetworkMessage(2, NetworkTools.GetLocalIP(), Encoding.UTF8.GetBytes(NetworkTools.GetLocalIP())); NetworkManager._Instance.AddCallBack(1, GetRoomMsgCallBack); NetworkManager._Instance.AddCallBack(3, GetCloseRoomMsgCallBack); rooms = new RoomData(); message = NetworkMessage.GetBytes(m); }
/// <summary> /// 向客户端发送房间信息 /// </summary> /// <param name="obj_arr"></param> void SendRoomMsg(params object[] obj_arr) { NetworkMessage m = (NetworkMessage)obj_arr[0]; NetworkMessage rom = new NetworkMessage(1, room.ip, RoomMessage.GetBytes(room)); message = NetworkMessage.GetBytes(rom); string ip = Encoding.UTF8.GetString(m.message); //NetworkTools.PrintMessage("发送房间信息" + ip); SendMsg(ip, NetworkConstent.UDPClientPort, message); }
public void SendPlayerShootToServer() { try { NetworkMessage message = new NetworkMessage(18, NetworkTools.GetLocalIP(), new byte[0]); byte[] bytes = NetworkMessage.GetBytes(message); SendMsg(RoomSingle.roomIP, NetworkConstent.UDPServerPort, bytes); } catch (Exception e) { Debug.LogError(e.ToString()); } }
/// <summary> /// 同步状态的方法 /// </summary> /// <param name="state"></param> public void SendPlayerHurtToServer(float hurt) { try { NetworkMessage message = new NetworkMessage(6, NetworkTools.GetLocalIP(), PlayerHurtMessage.GetBytes(new PlayerHurtMessage(hurt))); byte[] bytes = NetworkMessage.GetBytes(message); SendMsg(RoomSingle.roomIP, NetworkConstent.UDPServerPort, bytes); } catch (Exception e) { Debug.LogError(e.ToString()); } }
/// <summary> /// 想要加入的房间 /// </summary> /// <param name="ip"></param> public void SendAddRoom(string ip) { try { IPAddress.Parse(ip); Debug.Log("请求加入: " + ip); } catch (System.Exception) { Debug.LogError("请输入有效IP"); return; } byte[] info = RoomPlayerInfoMessage.GetBytes(new RoomPlayerInfoMessage("", false, NetworkTools.GetLocalIP())); SendMsg(ip, NetworkConstent.UDPServerPort, NetworkMessage.GetBytes(new NetworkMessage(7, NetworkTools.GetLocalIP(), info))); }
/// <summary> /// 同步状态的方法 /// </summary> /// <param name="state"></param> public void SendPlayerStateToServer(PlayerState playerState, AtkState atkState) { try { NetworkMessage message = new NetworkMessage(5, NetworkTools.GetLocalIP(), PlayerStateMessage.GetBytes(new PlayerStateMessage(playerState, atkState))); byte[] bytes = NetworkMessage.GetBytes(message); //Debug.Log("发送位置数据"); //测试 SendMsg(RoomSingle.roomIP, NetworkConstent.UDPServerPort, bytes); } catch (Exception e) { Debug.LogError(e.ToString()); } }
/// <summary> /// 同步位置方法 /// </summary> /// <param name="trans"></param> public void SendTranfromToServer(Transform trans, float gunAngle) { try { NetworkMessage message = new NetworkMessage(4, NetworkTools.GetLocalIP(), TransformMessage.GetBytes(new TransformMessage( trans.position, trans.rotation.eulerAngles, gunAngle))); byte[] bytes = NetworkMessage.GetBytes(message); //Debug.Log("发送位置数据"); //测试 SendMsg(RoomSingle.roomIP, NetworkConstent.UDPServerPort, bytes); } catch (Exception e) { Debug.LogError(e.ToString()); } }
/// <summary> /// 向所有的客户端发送同步消息 /// </summary> /// <param name="obj_arr"></param> void SendMsgToAllClient(params object[] obj_arr) { try { NetworkMessage message = (NetworkMessage)obj_arr[0]; //Debug.Log("收到客户端发来消息" + message.type); byte[] bytes = NetworkMessage.GetBytes(message); for (int i = 0; i < players.Count; i++) { // Debug.Log("向ip" + players[i] + "发送数据"); SendMsg(players[i], NetworkConstent.UDPBattleClientPort, bytes); } } catch (Exception e) { Debug.LogError(e.ToString()); } }
/// <summary> /// 向客户端发送可以加入信息 /// </summary> /// <param name="obj_arr"></param> void AddRoomMsgCallBack(params object[] obj_arr) { //房间最多4个人 if (playerData.GetPlayersInfo().Count < 4) { NetworkMessage m = (NetworkMessage)obj_arr[0]; RoomPlayerInfoMessage info = RoomPlayerInfoMessage.GetMessage(m.message); playerData.AddPlayerInfo(m.ip, info); NetworkManager._Instance.AddMessage(102, playerData); Debug.Log("房间加入玩家" + m.ip + " --- " + playerData.GetPlayersInfo().Count); byte[] bytes = NetworkMessage.GetBytes(new NetworkMessage(8, NetworkTools.GetLocalIP(), new byte[0])); SendMsg(m.ip, NetworkConstent.UDPClientPort, bytes); //向所有玩家发送加入信息 foreach (var item in playerData.GetPlayersInfo().Keys) { if (!item.Equals(NetworkTools.GetLocalIP())) { SendPlayerInfosToClient(item); } } } }
public void SendGetRoomPlayerInfos() { SendMsg(RoomSingle.roomIP, NetworkConstent.UDPServerPort, NetworkMessage.GetBytes(new NetworkMessage(14, NetworkTools.GetLocalIP(), null))); }
/// <summary> /// 子弹爆炸 /// </summary> /// <param name="p"></param> /// <param name="r"></param> /// <param name="type"></param> /// <param name="num"></param> public void SendExplosion(Vector3 p, Vector3 r, int type, int num) { byte[] b = BulletMessage.GetBytes(new BulletMessage(p, r, type, num)); byte[] m = NetworkMessage.GetBytes(new NetworkMessage(51, NetworkTools.GetLocalIP(), b)); SendMsg(RoomSingle.roomIP, NetworkConstent.UDPServerPort, m); }