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

@ -8,6 +8,15 @@ public class HitResponse {
this.type = type;
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() {
return this.type;
@ -20,4 +29,9 @@ public class HitResponse {
public void setType(HitResponseType type) {
this.type = type;
}
@Override
public String toString() {
return this.getPoint().toString() + " " + this.type.ordinal();
}
}

View File

@ -3,6 +3,20 @@ public class LocalPlayer extends Player {
LocalPlayer(int 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{
private AsyncSocket socket;
protected AsyncSocket socket;
public OnlinePlayer(int size, AsyncSocket socket) {
super(size);
this.socket = socket;
socket.setHandler(this);
//TODO Auto-generated constructor stub
}
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);
}
@Override
public void receive(String message) {
SocketPackage p = new SocketPackage(message);
// 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()));
}
}