Skip to content

Commit 173937d

Browse files
committed
Multiplayer: Player direction
1 parent dd74bf4 commit 173937d

File tree

6 files changed

+59
-16
lines changed

6 files changed

+59
-16
lines changed

src/com/redomar/game/entities/Mob.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,17 @@ protected boolean isSolid(int xa, int ya, int x, int y) {
6969
public String getName() {
7070
return name;
7171
}
72+
73+
public void setNumSteps(int numSteps) {
74+
this.numSteps = numSteps;
75+
}
76+
77+
public void setMoving(boolean isMoving) {
78+
this.isMoving = isMoving;
79+
}
80+
81+
public void setMovingDir(int movingDir) {
82+
this.movingDir = movingDir;
83+
}
84+
7285
}

src/com/redomar/game/entities/Player.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public void tick() {
4545
move(xa, ya);
4646
isMoving = true;
4747

48-
Packet02Move packet = new Packet02Move(this.getUsername(), this.x, this.y);
48+
Packet02Move packet = new Packet02Move(this.getUsername(), this.x, this.y, this.numSteps, this.isMoving, this.movingDir);
4949
packet.writeData(Game.game.getSocketClient());
5050

5151
} else {

src/com/redomar/game/level/LevelHandler.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import javax.imageio.ImageIO;
1111

1212
import com.redomar.game.entities.Entity;
13+
import com.redomar.game.entities.Player;
1314
import com.redomar.game.entities.PlayerMP;
1415
import com.redomar.game.gfx.Screen;
1516
import com.redomar.game.level.tiles.Tile;
@@ -172,10 +173,14 @@ private int getPlayerMPIndex(String username){
172173
return index;
173174
}
174175

175-
public void movePlayer(String username, int x, int y){
176+
public void movePlayer(String username, int x, int y, int numSteps, boolean isMoving, int movingDir){
176177
int index = getPlayerMPIndex(username);
177-
this.getEntities().get(index).x = x;
178-
this.getEntities().get(index).y = y;
178+
PlayerMP player = (PlayerMP)this.getEntities().get(index);
179+
player.x = x;
180+
player.y = y;
181+
player.setNumSteps(numSteps);
182+
player.setMoving(isMoving);
183+
player.setMovingDir(movingDir);
179184
}
180185

181186
}

src/com/redomar/game/net/GameClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ private void handleLogin(Packet00Login packet, InetAddress address, int port) {
8383
}
8484

8585
private void handleMove(Packet02Move packet) {
86-
this.game.level.movePlayer(packet.getUsername(), packet.getX(), packet.getY());
86+
this.game.level.movePlayer(packet.getUsername(), packet.getX(), packet.getY(), packet.getNumSteps(), packet.isMoving(), packet.getMovingDir());
8787
}
8888

8989
public void sendData(byte[] data) {

src/com/redomar/game/net/GameServer.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,18 +79,19 @@ private void parsePacket(byte[] data, InetAddress address, int port) {
7979
break;
8080
case MOVE:
8181
packet = new Packet02Move(data);
82-
System.out.println(((Packet02Move) packet).getUsername()
83-
+ " has moved to " + ((Packet02Move) packet).getX() + ", "
84-
+ ((Packet02Move) packet).getY());
8582
this.handleMove(((Packet02Move)packet));
8683
}
8784
}
8885

8986
private void handleMove(Packet02Move packet) {
9087
if(getPlayerMP(packet.getUsername()) != null){
9188
int index = getPlayerMPIndex(packet.getUsername());
92-
this.connectedPlayers.get(index).x = packet.getX();
93-
this.connectedPlayers.get(index).y = packet.getY();
89+
PlayerMP player = this.connectedPlayers.get(index);
90+
player.x = packet.getX();
91+
player.y = packet.getY();
92+
player.setNumSteps(packet.getNumSteps());
93+
player.setMoving(packet.isMoving());
94+
player.setMovingDir(packet.getMovingDir());
9495
packet.writeData(this);
9596
}
9697
}

src/com/redomar/game/net/packets/Packet02Move.java

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,37 @@ public class Packet02Move extends Packet {
77

88
private String username;
99
private int x, y;
10+
private int numSteps = 0;
11+
private boolean isMoving;
12+
private int movingDir = 1;
1013

1114
public Packet02Move(byte[] data) {
1215
super(02);
1316
String[] dataArray = readData(data).split(",");
1417
this.username = dataArray[0];
1518
this.x = Integer.parseInt(dataArray[1]);
1619
this.y = Integer.parseInt(dataArray[2]);
20+
this.numSteps = Integer.parseInt(dataArray[3]);
21+
this.isMoving = Integer.parseInt(dataArray[4]) == 1;
22+
this.movingDir = Integer.parseInt(dataArray[5]);
1723
}
1824

19-
public Packet02Move(String username, int x, int y) {
25+
public Packet02Move(String username, int x, int y, int numSteps,
26+
boolean isMoving, int movingDir) {
2027
super(02);
2128
this.username = username;
2229
this.x = x;
2330
this.y = y;
31+
this.numSteps = numSteps;
32+
this.isMoving = isMoving;
33+
this.movingDir = movingDir;
2434
}
2535

2636
@Override
2737
public byte[] getData() {
28-
return ("02" + this.username + "," + this.x + "," + this.y).getBytes();
38+
return ("02" + this.username + "," + this.x + "," + this.y + ","
39+
+ this.getNumSteps() + "," + (this.isMoving ? 1 : 0) + "," + this
40+
.getMovingDir()).getBytes();
2941
}
3042

3143
@Override
@@ -41,12 +53,24 @@ public void writeData(GameServer server) {
4153
public String getUsername() {
4254
return username;
4355
}
44-
45-
public int getX(){
56+
57+
public int getX() {
4658
return this.x;
4759
}
48-
49-
public int getY(){
60+
61+
public int getY() {
5062
return this.y;
5163
}
64+
65+
public int getNumSteps() {
66+
return numSteps;
67+
}
68+
69+
public boolean isMoving() {
70+
return isMoving;
71+
}
72+
73+
public int getMovingDir() {
74+
return movingDir;
75+
}
5276
}

0 commit comments

Comments
 (0)