public void Login(string userID, int clientID) { bool loggedIn; AckLogin ack = new AckLogin { UserID = userID, Success = false, }; if (_loggedIn.TryGetValue(userID, out loggedIn)) { if (loggedIn) { Debug.Log(string.Format("User attempted to login as {0} but {0} is already logged in", userID)); Socket.Instance.SendPacket(ack, Packets.AckLogin, clientID); return; } } Player player = World.Instance.GetPlayer(userID); bool firstLogin = false; if (player == null) { player = World.Instance.AddPlayer(userID); firstLogin = true; } player.Spawn(); _users[userID] = clientID; _userClientIDs[clientID] = userID; _loggedIn[userID] = true; Debug.Log(string.Format("Event: Log In, UserID: {0}, ClientID: {1}", userID, clientID)); ack.Success = true; ack.FirstLogin = firstLogin; Socket.Instance.SendPacket(ack, Packets.AckLogin, clientID); }
internal static void SendLogin(AsyncUserToken asyncUserToken, string nickname, uint userid) { AckLogin nLogin = new AckLogin(); nLogin.nickname = nickname; nLogin.userid = userid; using (MemoryStream stream = new MemoryStream()) { Serializer.Serialize <AckLogin>(stream, nLogin); Send(asyncUserToken, Protocol.AckLogin, stream.ToArray()); } }
public void Receive(byte[] bytes) { using (MemoryStream stream = new MemoryStream(bytes)) { GameMessage message = Serializer.Deserialize <GameMessage>(stream); Protocol protocol = (Protocol)message.type[0]; switch (protocol) { case Protocol.AckLogin: using (MemoryStream stream2 = new MemoryStream(message.data)) { AckLogin login = Serializer.Deserialize <AckLogin>(stream2); Debug.Log("userid = " + login.userid); Debug.Log("nickname = " + login.nickname); NetData.Instance.mUserData.Userid = login.userid; NetData.Instance.mUserData.Nickname = login.nickname; _ViewManager.ClearView(); _ViewManager.LoadView("prefab/ui/matchview_prefab"); break; } case Protocol.NtfMatch: using (MemoryStream stream2 = new MemoryStream(message.data)) { NtfMatch match = Serializer.Deserialize <NtfMatch>(stream2); Debug.Log("match.playerinfoList.Count = " + match.playerinfoList.Count); NetData.Instance.mFightData.PlayerInfoList = match.playerinfoList; NetData.Instance.mFightData.RoomId = match.roomid; _TcpSendManager.SendSelectHero(1); break; } case Protocol.NtfSelectHeroFinish: using (MemoryStream stream2 = new MemoryStream(message.data)) { NtfSelectHeroFinish selectHeroFinish = Serializer.Deserialize <NtfSelectHeroFinish>(stream2); Debug.Log("selectHeroFinish.select_herolist.Count = " + selectHeroFinish.select_herolist.Count); NetData.Instance.mFightData.PlayerHeroInfoList = selectHeroFinish.select_herolist; LoadingManager.LoadSceneAsync(SceneConfig.Fight); break; } } if (_UnityTcpSocket.ReceiveAction != null) { _UnityTcpSocket.ReceiveAction(protocol); } } }
private static void HandleAckLogin(AckLogin ack) { if (ack == null) { throw new WrongPacketTypeException(); } if (!ack.Success) { Debug.Log(string.Format("Unsuccessful login for UserID {0}", ack.UserID)); UIManager.Instance.SetWarningText(string.Format("User {0} already logged in", ack.UserID)); return; } ConnectionManager.Instance.LoggedIn(ack.UserID); if (ack.FirstLogin) { UIManager.Instance.OpenCustomize(); UIManager.Instance.OpenHowToPlay(); } UIManager.Instance.SetWarningText("", -1); }
public static void ReadMessage(byte[] message) { Envelope envelope = SerializationHandler.Deserialize <Envelope>(message); if (envelope == null) { throw new NotAnEnvelopeException(); } switch (envelope.PacketType) { case Packets.None: Debug.Log("None"); break; case Packets.String: string stringVal = SerializationHandler.Deserialize <string>(envelope.Packet); Debug.Log(stringVal); break; case Packets.AckLogin: AckLogin ackLogin = SerializationHandler.Deserialize <AckLogin>(envelope.Packet); HandleAckLogin(ackLogin); break; case Packets.AckJoinTeam: AckJoinTeam ackJoinTeam = SerializationHandler.Deserialize <AckJoinTeam>(envelope.Packet); HandleAckJoinTeam(ackJoinTeam); break; case Packets.DestroyObject: DestroyObject destroyObject = SerializationHandler.Deserialize <DestroyObject>(envelope.Packet); HandleDestroyObject(destroyObject); break; case Packets.PlayerSync: PlayerSync playerSync = SerializationHandler.Deserialize <PlayerSync>(envelope.Packet); HandlePlayerSync(playerSync); break; case Packets.SnowballSync: SnowballSync snowballSync = SerializationHandler.Deserialize <SnowballSync>(envelope.Packet); HandleSnowballSync(snowballSync); break; case Packets.SnowPileSync: SnowPileSync snowPileSync = SerializationHandler.Deserialize <SnowPileSync>(envelope.Packet); HandleSnowPileSync(snowPileSync); break; case Packets.LeaderboardData: LeaderboardDataEntry leaderboardDataResponse = SerializationHandler.Deserialize <LeaderboardDataEntry>(envelope.Packet); HandleLeaderboardDataEntry(leaderboardDataResponse); break; case Packets.EndLeaderboardResponse: HandleEndLeaderboardResponse(); break; case Packets.AckConnection: HandleAckConnection(); break; default: break; } }