add: Network implementation
This commit is contained in:
parent
22950cd155
commit
6a4e157605
|
@ -9,6 +9,15 @@ public class HitResponse {
|
|||
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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,5 +4,19 @@ public class LocalPlayer extends Player {
|
|||
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);
|
||||
}
|
||||
|
||||
}
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
|
|
@ -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()));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue