public void playAgain() { if (CurrentRoom != null) { if (CurrentRoom.FirstUser.Username == Message) { CurrentRoom.FirstUser.Player.PlayAgain = true; if (!CurrentRoom.SecondUser.Player.PlayAgain) { BasicPacket bp = new BasicPacket(GameProtocol.PlayAgain()); Othello.Server.SendPacket(CurrentRoom.SecondUser.Socket, bp.getData()); } } else if (CurrentRoom.SecondUser.Username == Message) { CurrentRoom.SecondUser.Player.PlayAgain = true; if (!CurrentRoom.FirstUser.Player.PlayAgain) { BasicPacket bp = new BasicPacket(GameProtocol.PlayAgain()); Othello.Server.SendPacket(CurrentRoom.FirstUser.Socket, bp.getData()); } } if (CurrentRoom.isAblePlayAgain()) { CurrentRoom.PlayAgain(); CurrentRoom.resetPlayAgain(); } } }
public void playerReady() { if (CurrentRoom != null) { if (CurrentRoom.FirstUser != null && CurrentRoom.FirstUser.Username == Message) { CurrentRoom.FirstUser.Player.ReadyToStart = true; if (!CurrentRoom.SecondUser.Player.ReadyToStart) { BasicPacket p = new BasicPacket(GameProtocol.PlayerReady()); Othello.Server.SendPacket(CurrentRoom.SecondUser.Socket, p.getData()); } } else if (CurrentRoom.SecondUser != null && CurrentRoom.SecondUser.Username == Message) { CurrentRoom.SecondUser.Player.ReadyToStart = true; if (!CurrentRoom.FirstUser.Player.ReadyToStart) { BasicPacket p = new BasicPacket(GameProtocol.PlayerReady()); Othello.Server.SendPacket(CurrentRoom.FirstUser.Socket, p.getData()); } } if (CurrentRoom.areBothPlayersReady()) { CurrentRoom.startGame(); CurrentRoom.FirstUser.Player.ReadyToStart = false; CurrentRoom.SecondUser.Player.ReadyToStart = false; } } }
public void doLogin(Socket clientSocket) { string[] fields = Message.Split('|'); string username = fields[0]; string password = fields[1]; User user = Singleton.Singleton.Instance.DatabaseConnection.isPasswordRight(username, password); if (user != null) { if (Singleton.Singleton.Instance.isUserLogged(username)) { BasicPacket bp = new BasicPacket(GameProtocol.AlreadyOnlinePacketID()); Othello.Server.SendPacket(clientSocket, bp.getData()); } else { user.InGame = false; user.Socket = clientSocket; Singleton.Singleton.Instance.ListOfUsersLogged.Add(user); //Send to current user logged the list with all the users logged and the status of them string PacketMessage = ""; foreach (User u in Singleton.Singleton.Instance.ListOfUsersLogged) { if (u.Username == username) { continue; } PacketMessage += u.Username + ":" + u.IsChallenged + ":" + u.InGame + "|"; MessagePacket messagePacket = new MessagePacket(GameProtocol.AlertUsersNewUserLoggedID(), username + ":False"); Othello.Server.SendPacket(u.Socket, messagePacket.getData()); } MessagePacket packet = new MessagePacket(GameProtocol.UsersLoggedListPacketID(), PacketMessage); Othello.Server.SendPacket(user.Socket, packet.getData()); } } else { BasicPacket bp = new BasicPacket(GameProtocol.FailedLoginPacketID()); Othello.Server.SendPacket(clientSocket, bp.getData()); } }
public static void Handle(byte[] packet, Socket clientSocket) { ushort packetType = BitConverter.ToUInt16(packet, 0); ushort packetLength = BitConverter.ToUInt16(packet, 2); switch (packetType) { case 100: //Login MessagePacket MessagePacket = new MessagePacket(packet); MessagePacket.doLogin(clientSocket); break; case 110: // Register MessagePacket = new MessagePacket(packet); MessagePacket.registerAccount(clientSocket); break; case 200: // GLOBAL CHAT MESSAGE MessagePacket = new MessagePacket(packet); MessagePacket.doGlobalChat(); break; case 201: // ROOM CHAT MESSAGE MessageRoomPacket MessageRoomPacket = new MessageRoomPacket(packet); MessageRoomPacket.doRoomChat(clientSocket, packet); break; case 250: // CHALLENGE PACKET (USERNAME CHALLANGED YOU ... ) MessagePacket = new MessagePacket(packet); MessagePacket.sendAfterChallengeAction(); break; case 257: // USER ACCEPTED THE CHALLENGE MessagePacket = new MessagePacket(packet); MessagePacket.playerAcceptedTheChallenge(); break; case 258: // USER REFUSED THE CHALLENGE MessagePacket = new MessagePacket(packet); MessagePacket.notifyUsersAfterChallengeRefuse(); break; case 260: // USER IGNORED THE CHALLENGE MessagePacket = new MessagePacket(packet); MessagePacket.notifyUsersAfterChallengeIgnore(); break; case 403: // Turn Move MessageRoomPacket = new MessageRoomPacket(packet); MessageRoomPacket.doChangesAfterTurn(); break; case 406: //Play Again MessageRoomPacket = new MessageRoomPacket(packet); MessageRoomPacket.playAgain(); break; case 407: //Surrender MessageRoomPacket = new MessageRoomPacket(packet); MessageRoomPacket.surrender(); break; case 501: // PLAYER READY MessageRoomPacket = new MessageRoomPacket(packet); MessageRoomPacket.playerReady(); break; case 995: // Back to lobby after gameover MessageRoomPacket = new MessageRoomPacket(packet); MessageRoomPacket.backToLobby(); break; case 997: // User quit while in game -> send surr to opponent and disc to other users MessageRoomPacket = new MessageRoomPacket(packet); MessageRoomPacket.opponentQuitWhileInGame(); break; case 996: // User quit after game -> send user left the room MessageRoomPacket = new MessageRoomPacket(packet); MessageRoomPacket.opponentQuitAfterEndGame(); break; case 998: // User logout BasicPacket basicPacket = new BasicPacket(packet); basicPacket.userLogout(clientSocket); break; case 999: // User apllication close basicPacket = new BasicPacket(packet); basicPacket.applicationClose(clientSocket); break; } }