diff options
author | cirakg <ciraboxkg@gmail.com> | 2023-01-04 17:49:53 +0100 |
---|---|---|
committer | cirakg <ciraboxkg@gmail.com> | 2023-01-04 17:49:53 +0100 |
commit | ffcda75a9b417cdc8b6c1c3f7046edb62b9c30a5 (patch) | |
tree | 43fc832ac199b9b79792d88b0082c3e2e5936a47 | |
parent | b0cf9f4b0c4eece41cb5e3542ab8c54f6dd3d32e (diff) |
Omocueno ukolko igrac izadje iz aplikacije u toku igre da se igra prekine i drugi korisnik se obavesti o tome.
-rw-r--r-- | pokemon.sql | 33 | ||||
-rw-r--r-- | src/main/java/pokemon/Server.java | 42 | ||||
-rw-r--r-- | src/main/java/ui/MainFrame.java | 5 |
3 files changed, 73 insertions, 7 deletions
diff --git a/pokemon.sql b/pokemon.sql index 63abc1c..1cc6b14 100644 --- a/pokemon.sql +++ b/pokemon.sql @@ -3,7 +3,7 @@ -- https://www.phpmyadmin.net/ -- -- Host: 127.0.0.1 --- Generation Time: Jan 02, 2023 at 04:34 PM +-- Generation Time: Jan 04, 2023 at 05:48 PM -- Server version: 10.4.27-MariaDB -- PHP Version: 8.1.12 @@ -80,7 +80,23 @@ INSERT INTO `history` (`id`, `player`, `pokemon`, `time`, `result`) VALUES (3, 5, 2, '2023-01-02', 0), (4, 2, 1, '2023-01-02', 1), (5, 2, 1, '2023-01-02', 1), -(6, 4, 3, '2023-01-02', 0); +(6, 4, 3, '2023-01-02', 0), +(7, 5, 2, '2023-01-02', 0), +(8, 2, 1, '2023-01-02', 1), +(9, 7, 3, '2023-01-02', 0), +(10, 5, 2, '2023-01-02', 1), +(11, 2, 1, '2023-01-02', 1), +(12, 7, 3, '2023-01-02', 0), +(13, 5, 2, '2023-01-04', 1), +(14, 2, 1, '2023-01-04', 0), +(15, 2, 1, '2023-01-04', 0), +(16, 5, 2, '2023-01-04', 1), +(17, 7, 3, '2023-01-04', 1), +(18, 4, 3, '2023-01-04', 0), +(19, 12, 1, '2023-01-04', 1), +(20, 4, 3, '2023-01-04', 0), +(21, 12, 1, '2023-01-04', 0), +(22, 4, 3, '2023-01-04', 1); -- -------------------------------------------------------- @@ -128,7 +144,10 @@ INSERT INTO `user` (`id`, `username`, `password`, `admin`, `pokemonId`) VALUES (2, 'cirakg1', '$2a$10$TJHJfYbgZO97r0CJi2eKpeEhOW8wKEO5BGXQBpR33js3R5rM98Y3W', 0, 1), (4, 'cirakg2', '$2a$10$LQsWtrn7OqrNU8wSSfg/6uo47lzQqw27T3ubUDRqFQVZhI6F0uBli', 0, 3), (5, 'cirakg5', '$2a$10$cO0oAPi5O4hoVQWTHuw0fOXXBYLqwJ2V5qrHy32ZjpmR9fTpNBGHy', 0, 2), -(6, 'cirakg10', '$2a$10$IiK5l7wFvi/KPliiCpNMCOAuehXvJFofN6ARotiSN.5FuRpjke32G', 0, NULL); +(6, 'cirakg10', '$2a$10$IiK5l7wFvi/KPliiCpNMCOAuehXvJFofN6ARotiSN.5FuRpjke32G', 0, NULL), +(7, 'cirakg3', '$2a$10$AA9ttGxJSoikQk2CBIcCnufCiy0SlLfBB5FsNmW3PWcgVKDW9wbk6', 0, 3), +(9, 'cirakg6', '$2a$10$V.d8RxW.scb/q3B2bGTt/e1guq1RMCZTF840eKe559KkiuC9fxmFC', 0, 3), +(12, 'cirakg4', '$2a$10$GPbmdub8HTtTCXOnVPB8au8lAcI1jxVO1eTCDg.io32Zxsd0R/jkG', 0, 1); -- -- Indexes for dumped tables @@ -166,25 +185,25 @@ ALTER TABLE `user` -- AUTO_INCREMENT for table `ability` -- ALTER TABLE `ability` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13; + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=17; -- -- AUTO_INCREMENT for table `history` -- ALTER TABLE `history` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7; + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=23; -- -- AUTO_INCREMENT for table `monster` -- ALTER TABLE `monster` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4; + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5; -- -- AUTO_INCREMENT for table `user` -- ALTER TABLE `user` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7; + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13; COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; diff --git a/src/main/java/pokemon/Server.java b/src/main/java/pokemon/Server.java index 77b7fad..09ced57 100644 --- a/src/main/java/pokemon/Server.java +++ b/src/main/java/pokemon/Server.java @@ -89,6 +89,46 @@ public class Server implements Runnable { } } + private void leftGame(SocketChannel sc)throws Exception { + long id=players.get(sc); + Game game=null; + for(Game tempGame :games) { + if(tempGame.player1Id==id || tempGame.player2Id==id) { + game=tempGame; + break; + } + } + if(game==null) + return; + long notifyId=-1; + if(game.player1Id==id) + notifyId=game.player2Id; + else if(game.player2Id==id) + notifyId=game.player1Id; + + if(notifyId==-1) + return; + + SocketChannel notifySocket=null; + for(Entry<SocketChannel, Long> player : players.entrySet()) { + if(player.getValue()==notifyId) { + notifySocket=player.getKey(); + break; + } + } + if(notifySocket==null) + return; + + inGame.remove(sc); + inGame.remove(notifySocket); + games.remove(game); + ByteBuffer buff = ByteBuffer.wrap("OPPONENTLEFT".getBytes()); + notifySocket.write(buff); + + + + + } private void readMessage(SelectionKey key)throws Exception { SocketChannel sc = (SocketChannel) key.channel(); StringBuilder sb = new StringBuilder(); @@ -105,6 +145,7 @@ public class Server implements Runnable { } catch (Exception e) { Long closedId=players.get(sc); + leftGame(sc); players.remove(sc); System.out.println("Client dissconnected: "+closedId ); System.out.println("Remaining clients: "+players.size() ); @@ -115,6 +156,7 @@ public class Server implements Runnable { if(read==-1) { Long closedId=players.get(sc); + leftGame(sc); players.remove(sc); System.out.println("Client dissconnected: "+closedId ); System.out.println("Remaining clients: "+players.size() ); diff --git a/src/main/java/ui/MainFrame.java b/src/main/java/ui/MainFrame.java index ef5f304..dc4b7f5 100644 --- a/src/main/java/ui/MainFrame.java +++ b/src/main/java/ui/MainFrame.java @@ -135,6 +135,11 @@ public class MainFrame extends JFrame implements Runnable { String msg=response[1]+":"+response[2]+"\n"; this.gamePanel.chat+=msg; this.gamePanel.refreshChat(); + }else if(response[0].trim().equals("OPPONENTLEFT")){ + System.out.println("OPPONENTLEFT"); + this.getContentPane().removeAll(); + this.getContentPane().add(this.chooseOpponentPanel,BorderLayout.CENTER); + SwingUtilities.updateComponentTreeUI(this); }else { //XML OBJECTS XMLDecoder decoder = null; |