aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/pokemon/Server.java
diff options
context:
space:
mode:
authorcirakg <ciraboxkg@gmail.com>2022-12-30 07:27:32 +0100
committercirakg <ciraboxkg@gmail.com>2022-12-30 07:27:32 +0100
commite5476a4f36551f11db0dc33e972a906adf0e0b5b (patch)
treecdc05bf1a3098f926188be0a3ae58a0399074dfa /src/main/java/pokemon/Server.java
parent8d493c16f4bcfcb5c9f9754c999915ad00e650dd (diff)
Omoguceno slanje zahteva za igru. Omoguceno accept i refuse zahteva(TODO ISPRAVITI).
Diffstat (limited to 'src/main/java/pokemon/Server.java')
-rw-r--r--src/main/java/pokemon/Server.java88
1 files changed, 87 insertions, 1 deletions
diff --git a/src/main/java/pokemon/Server.java b/src/main/java/pokemon/Server.java
index 2e51a69..555d040 100644
--- a/src/main/java/pokemon/Server.java
+++ b/src/main/java/pokemon/Server.java
@@ -15,13 +15,14 @@ import java.util.Iterator;
import java.util.Map.Entry;
import models.CONSTS;
+import models.GameStatus;
import models.User;
import models.UserListWrapper;
public class Server implements Runnable {
private ServerSocketChannel serverSocketChannel;
private Selector selector;
- private ArrayList<Game> games;
+ private ArrayList<Game> games=new ArrayList<>();
HashMap<SocketChannel,Long > players = new HashMap<SocketChannel,Long>();
ArrayList<SocketChannel> inGame=new ArrayList<SocketChannel>();
IService s;
@@ -138,6 +139,7 @@ public class Server implements Runnable {
else {
if(!res.admin) {
message="ACCEPTED"+":"+res.id;
+ System.out.println(message);
players.put(sc,res.id);
ByteBuffer buff = ByteBuffer.wrap(message.getBytes());
sc.write(buff);
@@ -170,6 +172,90 @@ public class Server implements Runnable {
sc.write(buff);
+ }else if(msg[0].equals("SELECTOPPONENT")) {
+ long opponentId=Long.parseLong(msg[1]);
+ SocketChannel opponentSocket=null;
+ for(Entry<SocketChannel, Long> player : players.entrySet()) {
+ if(player.getValue()==opponentId) {
+ opponentSocket=player.getKey();
+ break;
+ }
+ }
+ inGame.add(sc);
+ inGame.add(opponentSocket);
+ sendAvailablePlayers();
+ User player1=s.getUserById(players.get(sc));
+ User player2=s.getUserById(opponentId);
+ System.out.println(player1);
+ Game game=new Game();
+ game.setPlayer1Id(player1.id);
+ game.setPlayer2Id(player2.id);
+ game.player1Turn=true;
+ game.status=GameStatus.WAITING_FOR_SECOND_PLAYER;
+ game.monster1=s.getMonsterViewModel(player1.monsterId);
+ game.monster2=s.getMonsterViewModel(player2.monsterId);
+ game.currentHp1=game.monster1.hp;
+ game.currentHp2=game.monster2.hp;
+ game.shield1=0;
+ game.shield2=0;
+ games.add(game);
+ System.out.println(game);
+ ByteBuffer buff = ByteBuffer.wrap(("GAMEREQUEST:"+player1.id).getBytes());
+ opponentSocket.write(buff);
+
+
+ }
+ else if(msg[0].equals("ACCEPTOPPONENT")) {
+ long opponentId=Long.parseLong(msg[1]);
+ SocketChannel opponentSocket=null;
+ for(Entry<SocketChannel, Long> player : players.entrySet()) {
+ if(player.getValue()==opponentId) {
+ opponentSocket=player.getKey();
+ break;
+ }
+ }
+ System.out.println(opponentId);
+ Game game=null;
+ for(Game tempGame :games) {
+ if(tempGame.player1Id==opponentId)
+ game=tempGame;
+ break;
+ }
+ game.status=GameStatus.PLAYING;
+ ByteBuffer buff = ByteBuffer.wrap(game.toString().getBytes());
+ sc.write(buff);
+ buff = ByteBuffer.wrap(game.toString().getBytes());
+ opponentSocket.write(buff);
+
+
+ }
+ else if(msg[0].equals("REFUSEOPPONENT")) {
+ long opponentId=Long.parseLong(msg[1]);
+ Game game=null;
+ for(Game tempGame :games) {
+ if(tempGame.player1Id==opponentId)
+ game=tempGame;
+ break;
+ }
+ SocketChannel opponentSocket=null;
+ for(Entry<SocketChannel, Long> player : players.entrySet()) {
+ if(player.getValue()==opponentId) {
+ opponentSocket=player.getKey();
+ break;
+ }
+ }
+
+ inGame.remove(sc);
+ inGame.remove(opponentSocket);
+ games.remove(game);
+ sendAvailablePlayers();
+ ByteBuffer buff = ByteBuffer.wrap("REFUSEGAME".getBytes());
+ sc.write(buff);
+ ByteBuffer buff1 = ByteBuffer.wrap("REFUSEGAME".getBytes());
+ opponentSocket.write(buff1);
+
+
+
}