Network and Frontend #10

Merged
lgc merged 29 commits from ole into main 2024-12-03 12:13:28 +00:00
4 changed files with 75 additions and 2 deletions
Showing only changes of commit 6a4e157605 - Show all commits

View File

@ -9,6 +9,15 @@ public class HitResponse {
this.point = point; this.point = point;
} }
public HitResponse (int typeIndex, Point point) {
if (typeIndex >= 0 && typeIndex < HitResponseType.values().length) {
this.type = HitResponseType.values()[typeIndex];
this.point = point;
} else {
throw new IllegalArgumentException();
}
}
public HitResponseType getHitResponse() { public HitResponseType getHitResponse() {
return this.type; return this.type;
} }
@ -20,4 +29,9 @@ public class HitResponse {
public void setType(HitResponseType type) { public void setType(HitResponseType type) {
this.type = type; this.type = type;
} }
@Override
public String toString() {
return this.getPoint().toString() + " " + this.type.ordinal();
}
} }

View File

@ -4,5 +4,19 @@ public class LocalPlayer extends Player {
super(size); super(size);
} }
@Override
public synchronized void receiveShoot(Point point) {
HitResponse hitResponse = board.getHitResponsOnPoint(point);
if (!(hitResponse == null)){
enemy.receiveHit(hitResponse);
} else {
enemy.receiveHit(this.board.hit(point));
}
}
@Override
public synchronized void receiveHit(HitResponse hitResponse) {
enemy.board.addHits(hitResponse);
}
} }

View File

@ -1,12 +1,19 @@
public abstract class OnlinePlayer extends Player implements AsyncSocketListener{ public abstract class OnlinePlayer extends Player implements AsyncSocketListener{
private AsyncSocket socket; protected AsyncSocket socket;
public OnlinePlayer(int size, AsyncSocket socket) { public OnlinePlayer(int size, AsyncSocket socket) {
super(size); super(size);
this.socket = socket; this.socket = socket;
socket.setHandler(this);
//TODO Auto-generated constructor stub //TODO Auto-generated constructor stub
} }
public abstract void receive(String message); public abstract void receive(String message);
@Override
public abstract void receiveShoot(Point point);
@Override
public abstract void receiveHit(HitResponse hitResponse);
} }

View File

@ -5,11 +5,49 @@ public class OnlinePlayer_1_1_0 extends OnlinePlayer {
super(size, socket); super(size, socket);
} }
@Override @Override
public void receive(String message) { public void receive(String message) {
SocketPackage p = new SocketPackage(message); SocketPackage p = new SocketPackage(message);
// TODO: parse package // TODO: parse package
switch (p.getName()) {
case "SHOOT":
if (Point.isValidSyntax(p.getData())){
Point point = new Point(p.getData());
this.enemy.receiveShoot(point);
}
break;
case "HIT":
List<String> data = p.splitData();
if (data.size()==2){
Point point = new Point(data.get(0));
int typeIndex = Integer.parseInt(data.get(1));
if (Point.isValidSyntax(data.get(0)) && typeIndex >= 0 && typeIndex < HitResponseType.values().length){
this.enemy.receiveHit(new HitResponse(typeIndex, point));
}
}
break;
case "CHAT":
//TODO CHAT
break;
default:
//nichts passier da Paket ungültig
break;
}
} }
@Override
public synchronized void receiveShoot(Point point){
super.socket.send(new SocketPackage("SHOOT",point.toString()));
}
@Override
public synchronized void receiveHit(HitResponse hitResponse) {
super.socket.send(new SocketPackage("HIT", hitResponse.toString()));
}
} }